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 @2017-05-31@ 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.MigrationHub](http://hackage.haskell.org/package/amazonka-migrationhub/docs/Network-AWS-MigrationHub.html)
+See [Amazonka.MigrationHub](http://hackage.haskell.org/package/amazonka-migrationhub/docs/Amazonka-MigrationHub.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-migrationhub.cabal b/amazonka-migrationhub.cabal
--- a/amazonka-migrationhub.cabal
+++ b/amazonka-migrationhub.cabal
@@ -1,101 +1,111 @@
-name:                  amazonka-migrationhub
-version:               1.6.1
-synopsis:              Amazon Migration Hub 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-migrationhub
+version:            2.0
+synopsis:           Amazon Migration Hub 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.MigrationHub" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2017-05-31@ 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.MigrationHub.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.MigrationHub" 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-migrationhub
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-migrationhub
 
 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.MigrationHub
-        , Network.AWS.MigrationHub.AssociateCreatedArtifact
-        , Network.AWS.MigrationHub.AssociateDiscoveredResource
-        , Network.AWS.MigrationHub.CreateProgressUpdateStream
-        , Network.AWS.MigrationHub.DeleteProgressUpdateStream
-        , Network.AWS.MigrationHub.DescribeApplicationState
-        , Network.AWS.MigrationHub.DescribeMigrationTask
-        , Network.AWS.MigrationHub.DisassociateCreatedArtifact
-        , Network.AWS.MigrationHub.DisassociateDiscoveredResource
-        , Network.AWS.MigrationHub.ImportMigrationTask
-        , Network.AWS.MigrationHub.ListCreatedArtifacts
-        , Network.AWS.MigrationHub.ListDiscoveredResources
-        , Network.AWS.MigrationHub.ListMigrationTasks
-        , Network.AWS.MigrationHub.ListProgressUpdateStreams
-        , Network.AWS.MigrationHub.NotifyApplicationState
-        , Network.AWS.MigrationHub.NotifyMigrationTaskState
-        , Network.AWS.MigrationHub.PutResourceAttributes
-        , Network.AWS.MigrationHub.Types
-        , Network.AWS.MigrationHub.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.MigrationHub.Types.Product
-        , Network.AWS.MigrationHub.Types.Sum
+  exposed-modules:
+    Amazonka.MigrationHub
+    Amazonka.MigrationHub.AssociateCreatedArtifact
+    Amazonka.MigrationHub.AssociateDiscoveredResource
+    Amazonka.MigrationHub.CreateProgressUpdateStream
+    Amazonka.MigrationHub.DeleteProgressUpdateStream
+    Amazonka.MigrationHub.DescribeApplicationState
+    Amazonka.MigrationHub.DescribeMigrationTask
+    Amazonka.MigrationHub.DisassociateCreatedArtifact
+    Amazonka.MigrationHub.DisassociateDiscoveredResource
+    Amazonka.MigrationHub.ImportMigrationTask
+    Amazonka.MigrationHub.Lens
+    Amazonka.MigrationHub.ListApplicationStates
+    Amazonka.MigrationHub.ListCreatedArtifacts
+    Amazonka.MigrationHub.ListDiscoveredResources
+    Amazonka.MigrationHub.ListMigrationTasks
+    Amazonka.MigrationHub.ListProgressUpdateStreams
+    Amazonka.MigrationHub.NotifyApplicationState
+    Amazonka.MigrationHub.NotifyMigrationTaskState
+    Amazonka.MigrationHub.PutResourceAttributes
+    Amazonka.MigrationHub.Types
+    Amazonka.MigrationHub.Types.ApplicationState
+    Amazonka.MigrationHub.Types.ApplicationStatus
+    Amazonka.MigrationHub.Types.CreatedArtifact
+    Amazonka.MigrationHub.Types.DiscoveredResource
+    Amazonka.MigrationHub.Types.MigrationStatus
+    Amazonka.MigrationHub.Types.MigrationTask
+    Amazonka.MigrationHub.Types.MigrationTaskSummary
+    Amazonka.MigrationHub.Types.ProgressUpdateStreamSummary
+    Amazonka.MigrationHub.Types.ResourceAttribute
+    Amazonka.MigrationHub.Types.ResourceAttributeType
+    Amazonka.MigrationHub.Types.Task
+    Amazonka.MigrationHub.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-migrationhub-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.MigrationHub
-        , Test.AWS.Gen.MigrationHub
-        , Test.AWS.MigrationHub.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.Gen.MigrationHub
+    Test.Amazonka.MigrationHub
+    Test.Amazonka.MigrationHub.Internal
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-migrationhub
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core          >=2.0 && <2.1
+    , amazonka-migrationhub
+    , amazonka-test          >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/ListApplicationStates.yaml b/fixture/ListApplicationStates.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListApplicationStates.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mgh/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mgh.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/ListApplicationStatesResponse.proto b/fixture/ListApplicationStatesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListApplicationStatesResponse.proto
diff --git a/gen/Amazonka/MigrationHub.hs b/gen/Amazonka/MigrationHub.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub.hs
@@ -0,0 +1,257 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.MigrationHub
+-- 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 @2017-05-31@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- The AWS Migration Hub API methods help to obtain server and application
+-- migration status and integrate your resource-specific migration tool by
+-- providing a programmatic interface to Migration Hub.
+--
+-- Remember that you must set your AWS Migration Hub home region before you
+-- call any of these APIs, or a @HomeRegionNotSetException@ error will be
+-- returned. Also, you must make the API calls while in your home region.
+module Amazonka.MigrationHub
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** DryRunOperation
+    _DryRunOperation,
+
+    -- ** HomeRegionNotSetException
+    _HomeRegionNotSetException,
+
+    -- ** InternalServerError
+    _InternalServerError,
+
+    -- ** InvalidInputException
+    _InvalidInputException,
+
+    -- ** PolicyErrorException
+    _PolicyErrorException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceUnavailableException
+    _ServiceUnavailableException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** UnauthorizedOperation
+    _UnauthorizedOperation,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateCreatedArtifact
+    AssociateCreatedArtifact (AssociateCreatedArtifact'),
+    newAssociateCreatedArtifact,
+    AssociateCreatedArtifactResponse (AssociateCreatedArtifactResponse'),
+    newAssociateCreatedArtifactResponse,
+
+    -- ** AssociateDiscoveredResource
+    AssociateDiscoveredResource (AssociateDiscoveredResource'),
+    newAssociateDiscoveredResource,
+    AssociateDiscoveredResourceResponse (AssociateDiscoveredResourceResponse'),
+    newAssociateDiscoveredResourceResponse,
+
+    -- ** CreateProgressUpdateStream
+    CreateProgressUpdateStream (CreateProgressUpdateStream'),
+    newCreateProgressUpdateStream,
+    CreateProgressUpdateStreamResponse (CreateProgressUpdateStreamResponse'),
+    newCreateProgressUpdateStreamResponse,
+
+    -- ** DeleteProgressUpdateStream
+    DeleteProgressUpdateStream (DeleteProgressUpdateStream'),
+    newDeleteProgressUpdateStream,
+    DeleteProgressUpdateStreamResponse (DeleteProgressUpdateStreamResponse'),
+    newDeleteProgressUpdateStreamResponse,
+
+    -- ** DescribeApplicationState
+    DescribeApplicationState (DescribeApplicationState'),
+    newDescribeApplicationState,
+    DescribeApplicationStateResponse (DescribeApplicationStateResponse'),
+    newDescribeApplicationStateResponse,
+
+    -- ** DescribeMigrationTask
+    DescribeMigrationTask (DescribeMigrationTask'),
+    newDescribeMigrationTask,
+    DescribeMigrationTaskResponse (DescribeMigrationTaskResponse'),
+    newDescribeMigrationTaskResponse,
+
+    -- ** DisassociateCreatedArtifact
+    DisassociateCreatedArtifact (DisassociateCreatedArtifact'),
+    newDisassociateCreatedArtifact,
+    DisassociateCreatedArtifactResponse (DisassociateCreatedArtifactResponse'),
+    newDisassociateCreatedArtifactResponse,
+
+    -- ** DisassociateDiscoveredResource
+    DisassociateDiscoveredResource (DisassociateDiscoveredResource'),
+    newDisassociateDiscoveredResource,
+    DisassociateDiscoveredResourceResponse (DisassociateDiscoveredResourceResponse'),
+    newDisassociateDiscoveredResourceResponse,
+
+    -- ** ImportMigrationTask
+    ImportMigrationTask (ImportMigrationTask'),
+    newImportMigrationTask,
+    ImportMigrationTaskResponse (ImportMigrationTaskResponse'),
+    newImportMigrationTaskResponse,
+
+    -- ** ListApplicationStates (Paginated)
+    ListApplicationStates (ListApplicationStates'),
+    newListApplicationStates,
+    ListApplicationStatesResponse (ListApplicationStatesResponse'),
+    newListApplicationStatesResponse,
+
+    -- ** ListCreatedArtifacts (Paginated)
+    ListCreatedArtifacts (ListCreatedArtifacts'),
+    newListCreatedArtifacts,
+    ListCreatedArtifactsResponse (ListCreatedArtifactsResponse'),
+    newListCreatedArtifactsResponse,
+
+    -- ** ListDiscoveredResources (Paginated)
+    ListDiscoveredResources (ListDiscoveredResources'),
+    newListDiscoveredResources,
+    ListDiscoveredResourcesResponse (ListDiscoveredResourcesResponse'),
+    newListDiscoveredResourcesResponse,
+
+    -- ** ListMigrationTasks (Paginated)
+    ListMigrationTasks (ListMigrationTasks'),
+    newListMigrationTasks,
+    ListMigrationTasksResponse (ListMigrationTasksResponse'),
+    newListMigrationTasksResponse,
+
+    -- ** ListProgressUpdateStreams (Paginated)
+    ListProgressUpdateStreams (ListProgressUpdateStreams'),
+    newListProgressUpdateStreams,
+    ListProgressUpdateStreamsResponse (ListProgressUpdateStreamsResponse'),
+    newListProgressUpdateStreamsResponse,
+
+    -- ** NotifyApplicationState
+    NotifyApplicationState (NotifyApplicationState'),
+    newNotifyApplicationState,
+    NotifyApplicationStateResponse (NotifyApplicationStateResponse'),
+    newNotifyApplicationStateResponse,
+
+    -- ** NotifyMigrationTaskState
+    NotifyMigrationTaskState (NotifyMigrationTaskState'),
+    newNotifyMigrationTaskState,
+    NotifyMigrationTaskStateResponse (NotifyMigrationTaskStateResponse'),
+    newNotifyMigrationTaskStateResponse,
+
+    -- ** PutResourceAttributes
+    PutResourceAttributes (PutResourceAttributes'),
+    newPutResourceAttributes,
+    PutResourceAttributesResponse (PutResourceAttributesResponse'),
+    newPutResourceAttributesResponse,
+
+    -- * Types
+
+    -- ** ApplicationStatus
+    ApplicationStatus (..),
+
+    -- ** MigrationStatus
+    MigrationStatus (..),
+
+    -- ** ResourceAttributeType
+    ResourceAttributeType (..),
+
+    -- ** ApplicationState
+    ApplicationState (ApplicationState'),
+    newApplicationState,
+
+    -- ** CreatedArtifact
+    CreatedArtifact (CreatedArtifact'),
+    newCreatedArtifact,
+
+    -- ** DiscoveredResource
+    DiscoveredResource (DiscoveredResource'),
+    newDiscoveredResource,
+
+    -- ** MigrationTask
+    MigrationTask (MigrationTask'),
+    newMigrationTask,
+
+    -- ** MigrationTaskSummary
+    MigrationTaskSummary (MigrationTaskSummary'),
+    newMigrationTaskSummary,
+
+    -- ** ProgressUpdateStreamSummary
+    ProgressUpdateStreamSummary (ProgressUpdateStreamSummary'),
+    newProgressUpdateStreamSummary,
+
+    -- ** ResourceAttribute
+    ResourceAttribute (ResourceAttribute'),
+    newResourceAttribute,
+
+    -- ** Task
+    Task (Task'),
+    newTask,
+  )
+where
+
+import Amazonka.MigrationHub.AssociateCreatedArtifact
+import Amazonka.MigrationHub.AssociateDiscoveredResource
+import Amazonka.MigrationHub.CreateProgressUpdateStream
+import Amazonka.MigrationHub.DeleteProgressUpdateStream
+import Amazonka.MigrationHub.DescribeApplicationState
+import Amazonka.MigrationHub.DescribeMigrationTask
+import Amazonka.MigrationHub.DisassociateCreatedArtifact
+import Amazonka.MigrationHub.DisassociateDiscoveredResource
+import Amazonka.MigrationHub.ImportMigrationTask
+import Amazonka.MigrationHub.Lens
+import Amazonka.MigrationHub.ListApplicationStates
+import Amazonka.MigrationHub.ListCreatedArtifacts
+import Amazonka.MigrationHub.ListDiscoveredResources
+import Amazonka.MigrationHub.ListMigrationTasks
+import Amazonka.MigrationHub.ListProgressUpdateStreams
+import Amazonka.MigrationHub.NotifyApplicationState
+import Amazonka.MigrationHub.NotifyMigrationTaskState
+import Amazonka.MigrationHub.PutResourceAttributes
+import Amazonka.MigrationHub.Types
+import Amazonka.MigrationHub.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 'MigrationHub'.
+
+-- $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/MigrationHub/AssociateCreatedArtifact.hs b/gen/Amazonka/MigrationHub/AssociateCreatedArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/AssociateCreatedArtifact.hs
@@ -0,0 +1,237 @@
+{-# 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.MigrationHub.AssociateCreatedArtifact
+-- 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 a created artifact of an AWS cloud resource, the target
+-- receiving the migration, with the migration task performed by a
+-- migration tool. This API has the following traits:
+--
+-- -   Migration tools can call the @AssociateCreatedArtifact@ operation to
+--     indicate which AWS artifact is associated with a migration task.
+--
+-- -   The created artifact name must be provided in ARN (Amazon Resource
+--     Name) format which will contain information about type and region;
+--     for example:
+--     @arn:aws:ec2:us-east-1:488216288981:image\/ami-6d0ba87b@.
+--
+-- -   Examples of the AWS resource behind the created artifact are,
+--     AMI\'s, EC2 instance, or DMS endpoint, etc.
+module Amazonka.MigrationHub.AssociateCreatedArtifact
+  ( -- * Creating a Request
+    AssociateCreatedArtifact (..),
+    newAssociateCreatedArtifact,
+
+    -- * Request Lenses
+    associateCreatedArtifact_dryRun,
+    associateCreatedArtifact_progressUpdateStream,
+    associateCreatedArtifact_migrationTaskName,
+    associateCreatedArtifact_createdArtifact,
+
+    -- * Destructuring the Response
+    AssociateCreatedArtifactResponse (..),
+    newAssociateCreatedArtifactResponse,
+
+    -- * Response Lenses
+    associateCreatedArtifactResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateCreatedArtifact' smart constructor.
+data AssociateCreatedArtifact = AssociateCreatedArtifact'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | Unique identifier that references the migration task. /Do not store
+    -- personal data in this field./
+    migrationTaskName :: Prelude.Text,
+    -- | An ARN of the AWS resource related to the migration (e.g., AMI, EC2
+    -- instance, RDS instance, etc.)
+    createdArtifact :: CreatedArtifact
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateCreatedArtifact' 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:
+--
+-- 'dryRun', 'associateCreatedArtifact_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStream', 'associateCreatedArtifact_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'associateCreatedArtifact_migrationTaskName' - Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+--
+-- 'createdArtifact', 'associateCreatedArtifact_createdArtifact' - An ARN of the AWS resource related to the migration (e.g., AMI, EC2
+-- instance, RDS instance, etc.)
+newAssociateCreatedArtifact ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  -- | 'createdArtifact'
+  CreatedArtifact ->
+  AssociateCreatedArtifact
+newAssociateCreatedArtifact
+  pProgressUpdateStream_
+  pMigrationTaskName_
+  pCreatedArtifact_ =
+    AssociateCreatedArtifact'
+      { dryRun = Prelude.Nothing,
+        progressUpdateStream = pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_,
+        createdArtifact = pCreatedArtifact_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+associateCreatedArtifact_dryRun :: Lens.Lens' AssociateCreatedArtifact (Prelude.Maybe Prelude.Bool)
+associateCreatedArtifact_dryRun = Lens.lens (\AssociateCreatedArtifact' {dryRun} -> dryRun) (\s@AssociateCreatedArtifact' {} a -> s {dryRun = a} :: AssociateCreatedArtifact)
+
+-- | The name of the ProgressUpdateStream.
+associateCreatedArtifact_progressUpdateStream :: Lens.Lens' AssociateCreatedArtifact Prelude.Text
+associateCreatedArtifact_progressUpdateStream = Lens.lens (\AssociateCreatedArtifact' {progressUpdateStream} -> progressUpdateStream) (\s@AssociateCreatedArtifact' {} a -> s {progressUpdateStream = a} :: AssociateCreatedArtifact)
+
+-- | Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+associateCreatedArtifact_migrationTaskName :: Lens.Lens' AssociateCreatedArtifact Prelude.Text
+associateCreatedArtifact_migrationTaskName = Lens.lens (\AssociateCreatedArtifact' {migrationTaskName} -> migrationTaskName) (\s@AssociateCreatedArtifact' {} a -> s {migrationTaskName = a} :: AssociateCreatedArtifact)
+
+-- | An ARN of the AWS resource related to the migration (e.g., AMI, EC2
+-- instance, RDS instance, etc.)
+associateCreatedArtifact_createdArtifact :: Lens.Lens' AssociateCreatedArtifact CreatedArtifact
+associateCreatedArtifact_createdArtifact = Lens.lens (\AssociateCreatedArtifact' {createdArtifact} -> createdArtifact) (\s@AssociateCreatedArtifact' {} a -> s {createdArtifact = a} :: AssociateCreatedArtifact)
+
+instance Core.AWSRequest AssociateCreatedArtifact where
+  type
+    AWSResponse AssociateCreatedArtifact =
+      AssociateCreatedArtifactResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AssociateCreatedArtifactResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateCreatedArtifact where
+  hashWithSalt _salt AssociateCreatedArtifact' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+      `Prelude.hashWithSalt` createdArtifact
+
+instance Prelude.NFData AssociateCreatedArtifact where
+  rnf AssociateCreatedArtifact' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+      `Prelude.seq` Prelude.rnf createdArtifact
+
+instance Data.ToHeaders AssociateCreatedArtifact where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.AssociateCreatedArtifact" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateCreatedArtifact where
+  toJSON AssociateCreatedArtifact' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName),
+            Prelude.Just
+              ("CreatedArtifact" Data..= createdArtifact)
+          ]
+      )
+
+instance Data.ToPath AssociateCreatedArtifact where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AssociateCreatedArtifact where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateCreatedArtifactResponse' smart constructor.
+data AssociateCreatedArtifactResponse = AssociateCreatedArtifactResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateCreatedArtifactResponse' 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', 'associateCreatedArtifactResponse_httpStatus' - The response's http status code.
+newAssociateCreatedArtifactResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateCreatedArtifactResponse
+newAssociateCreatedArtifactResponse pHttpStatus_ =
+  AssociateCreatedArtifactResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+associateCreatedArtifactResponse_httpStatus :: Lens.Lens' AssociateCreatedArtifactResponse Prelude.Int
+associateCreatedArtifactResponse_httpStatus = Lens.lens (\AssociateCreatedArtifactResponse' {httpStatus} -> httpStatus) (\s@AssociateCreatedArtifactResponse' {} a -> s {httpStatus = a} :: AssociateCreatedArtifactResponse)
+
+instance
+  Prelude.NFData
+    AssociateCreatedArtifactResponse
+  where
+  rnf AssociateCreatedArtifactResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/AssociateDiscoveredResource.hs b/gen/Amazonka/MigrationHub/AssociateDiscoveredResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/AssociateDiscoveredResource.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.MigrationHub.AssociateDiscoveredResource
+-- 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 a discovered resource ID from Application Discovery Service
+-- with a migration task.
+module Amazonka.MigrationHub.AssociateDiscoveredResource
+  ( -- * Creating a Request
+    AssociateDiscoveredResource (..),
+    newAssociateDiscoveredResource,
+
+    -- * Request Lenses
+    associateDiscoveredResource_dryRun,
+    associateDiscoveredResource_progressUpdateStream,
+    associateDiscoveredResource_migrationTaskName,
+    associateDiscoveredResource_discoveredResource,
+
+    -- * Destructuring the Response
+    AssociateDiscoveredResourceResponse (..),
+    newAssociateDiscoveredResourceResponse,
+
+    -- * Response Lenses
+    associateDiscoveredResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateDiscoveredResource' smart constructor.
+data AssociateDiscoveredResource = AssociateDiscoveredResource'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | The identifier given to the MigrationTask. /Do not store personal data
+    -- in this field./
+    migrationTaskName :: Prelude.Text,
+    -- | Object representing a Resource.
+    discoveredResource :: DiscoveredResource
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateDiscoveredResource' 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:
+--
+-- 'dryRun', 'associateDiscoveredResource_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStream', 'associateDiscoveredResource_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'associateDiscoveredResource_migrationTaskName' - The identifier given to the MigrationTask. /Do not store personal data
+-- in this field./
+--
+-- 'discoveredResource', 'associateDiscoveredResource_discoveredResource' - Object representing a Resource.
+newAssociateDiscoveredResource ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  -- | 'discoveredResource'
+  DiscoveredResource ->
+  AssociateDiscoveredResource
+newAssociateDiscoveredResource
+  pProgressUpdateStream_
+  pMigrationTaskName_
+  pDiscoveredResource_ =
+    AssociateDiscoveredResource'
+      { dryRun =
+          Prelude.Nothing,
+        progressUpdateStream = pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_,
+        discoveredResource = pDiscoveredResource_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+associateDiscoveredResource_dryRun :: Lens.Lens' AssociateDiscoveredResource (Prelude.Maybe Prelude.Bool)
+associateDiscoveredResource_dryRun = Lens.lens (\AssociateDiscoveredResource' {dryRun} -> dryRun) (\s@AssociateDiscoveredResource' {} a -> s {dryRun = a} :: AssociateDiscoveredResource)
+
+-- | The name of the ProgressUpdateStream.
+associateDiscoveredResource_progressUpdateStream :: Lens.Lens' AssociateDiscoveredResource Prelude.Text
+associateDiscoveredResource_progressUpdateStream = Lens.lens (\AssociateDiscoveredResource' {progressUpdateStream} -> progressUpdateStream) (\s@AssociateDiscoveredResource' {} a -> s {progressUpdateStream = a} :: AssociateDiscoveredResource)
+
+-- | The identifier given to the MigrationTask. /Do not store personal data
+-- in this field./
+associateDiscoveredResource_migrationTaskName :: Lens.Lens' AssociateDiscoveredResource Prelude.Text
+associateDiscoveredResource_migrationTaskName = Lens.lens (\AssociateDiscoveredResource' {migrationTaskName} -> migrationTaskName) (\s@AssociateDiscoveredResource' {} a -> s {migrationTaskName = a} :: AssociateDiscoveredResource)
+
+-- | Object representing a Resource.
+associateDiscoveredResource_discoveredResource :: Lens.Lens' AssociateDiscoveredResource DiscoveredResource
+associateDiscoveredResource_discoveredResource = Lens.lens (\AssociateDiscoveredResource' {discoveredResource} -> discoveredResource) (\s@AssociateDiscoveredResource' {} a -> s {discoveredResource = a} :: AssociateDiscoveredResource)
+
+instance Core.AWSRequest AssociateDiscoveredResource where
+  type
+    AWSResponse AssociateDiscoveredResource =
+      AssociateDiscoveredResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AssociateDiscoveredResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateDiscoveredResource where
+  hashWithSalt _salt AssociateDiscoveredResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+      `Prelude.hashWithSalt` discoveredResource
+
+instance Prelude.NFData AssociateDiscoveredResource where
+  rnf AssociateDiscoveredResource' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+      `Prelude.seq` Prelude.rnf discoveredResource
+
+instance Data.ToHeaders AssociateDiscoveredResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.AssociateDiscoveredResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateDiscoveredResource where
+  toJSON AssociateDiscoveredResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName),
+            Prelude.Just
+              ("DiscoveredResource" Data..= discoveredResource)
+          ]
+      )
+
+instance Data.ToPath AssociateDiscoveredResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AssociateDiscoveredResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateDiscoveredResourceResponse' smart constructor.
+data AssociateDiscoveredResourceResponse = AssociateDiscoveredResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateDiscoveredResourceResponse' 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', 'associateDiscoveredResourceResponse_httpStatus' - The response's http status code.
+newAssociateDiscoveredResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateDiscoveredResourceResponse
+newAssociateDiscoveredResourceResponse pHttpStatus_ =
+  AssociateDiscoveredResourceResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+associateDiscoveredResourceResponse_httpStatus :: Lens.Lens' AssociateDiscoveredResourceResponse Prelude.Int
+associateDiscoveredResourceResponse_httpStatus = Lens.lens (\AssociateDiscoveredResourceResponse' {httpStatus} -> httpStatus) (\s@AssociateDiscoveredResourceResponse' {} a -> s {httpStatus = a} :: AssociateDiscoveredResourceResponse)
+
+instance
+  Prelude.NFData
+    AssociateDiscoveredResourceResponse
+  where
+  rnf AssociateDiscoveredResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/CreateProgressUpdateStream.hs b/gen/Amazonka/MigrationHub/CreateProgressUpdateStream.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/CreateProgressUpdateStream.hs
@@ -0,0 +1,194 @@
+{-# 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.MigrationHub.CreateProgressUpdateStream
+-- 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 a progress update stream which is an AWS resource used for
+-- access control as well as a namespace for migration task names that is
+-- implicitly linked to your AWS account. It must uniquely identify the
+-- migration tool as it is used for all updates made by the tool; however,
+-- it does not need to be unique for each AWS account because it is scoped
+-- to the AWS account.
+module Amazonka.MigrationHub.CreateProgressUpdateStream
+  ( -- * Creating a Request
+    CreateProgressUpdateStream (..),
+    newCreateProgressUpdateStream,
+
+    -- * Request Lenses
+    createProgressUpdateStream_dryRun,
+    createProgressUpdateStream_progressUpdateStreamName,
+
+    -- * Destructuring the Response
+    CreateProgressUpdateStreamResponse (..),
+    newCreateProgressUpdateStreamResponse,
+
+    -- * Response Lenses
+    createProgressUpdateStreamResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateProgressUpdateStream' smart constructor.
+data CreateProgressUpdateStream = CreateProgressUpdateStream'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream. /Do not store personal data in
+    -- this field./
+    progressUpdateStreamName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateProgressUpdateStream' 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:
+--
+-- 'dryRun', 'createProgressUpdateStream_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStreamName', 'createProgressUpdateStream_progressUpdateStreamName' - The name of the ProgressUpdateStream. /Do not store personal data in
+-- this field./
+newCreateProgressUpdateStream ::
+  -- | 'progressUpdateStreamName'
+  Prelude.Text ->
+  CreateProgressUpdateStream
+newCreateProgressUpdateStream
+  pProgressUpdateStreamName_ =
+    CreateProgressUpdateStream'
+      { dryRun =
+          Prelude.Nothing,
+        progressUpdateStreamName =
+          pProgressUpdateStreamName_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+createProgressUpdateStream_dryRun :: Lens.Lens' CreateProgressUpdateStream (Prelude.Maybe Prelude.Bool)
+createProgressUpdateStream_dryRun = Lens.lens (\CreateProgressUpdateStream' {dryRun} -> dryRun) (\s@CreateProgressUpdateStream' {} a -> s {dryRun = a} :: CreateProgressUpdateStream)
+
+-- | The name of the ProgressUpdateStream. /Do not store personal data in
+-- this field./
+createProgressUpdateStream_progressUpdateStreamName :: Lens.Lens' CreateProgressUpdateStream Prelude.Text
+createProgressUpdateStream_progressUpdateStreamName = Lens.lens (\CreateProgressUpdateStream' {progressUpdateStreamName} -> progressUpdateStreamName) (\s@CreateProgressUpdateStream' {} a -> s {progressUpdateStreamName = a} :: CreateProgressUpdateStream)
+
+instance Core.AWSRequest CreateProgressUpdateStream where
+  type
+    AWSResponse CreateProgressUpdateStream =
+      CreateProgressUpdateStreamResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          CreateProgressUpdateStreamResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateProgressUpdateStream where
+  hashWithSalt _salt CreateProgressUpdateStream' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` progressUpdateStreamName
+
+instance Prelude.NFData CreateProgressUpdateStream where
+  rnf CreateProgressUpdateStream' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStreamName
+
+instance Data.ToHeaders CreateProgressUpdateStream where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.CreateProgressUpdateStream" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateProgressUpdateStream where
+  toJSON CreateProgressUpdateStream' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStreamName"
+                  Data..= progressUpdateStreamName
+              )
+          ]
+      )
+
+instance Data.ToPath CreateProgressUpdateStream where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateProgressUpdateStream where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateProgressUpdateStreamResponse' smart constructor.
+data CreateProgressUpdateStreamResponse = CreateProgressUpdateStreamResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateProgressUpdateStreamResponse' 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', 'createProgressUpdateStreamResponse_httpStatus' - The response's http status code.
+newCreateProgressUpdateStreamResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateProgressUpdateStreamResponse
+newCreateProgressUpdateStreamResponse pHttpStatus_ =
+  CreateProgressUpdateStreamResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+createProgressUpdateStreamResponse_httpStatus :: Lens.Lens' CreateProgressUpdateStreamResponse Prelude.Int
+createProgressUpdateStreamResponse_httpStatus = Lens.lens (\CreateProgressUpdateStreamResponse' {httpStatus} -> httpStatus) (\s@CreateProgressUpdateStreamResponse' {} a -> s {httpStatus = a} :: CreateProgressUpdateStreamResponse)
+
+instance
+  Prelude.NFData
+    CreateProgressUpdateStreamResponse
+  where
+  rnf CreateProgressUpdateStreamResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/DeleteProgressUpdateStream.hs b/gen/Amazonka/MigrationHub/DeleteProgressUpdateStream.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/DeleteProgressUpdateStream.hs
@@ -0,0 +1,211 @@
+{-# 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.MigrationHub.DeleteProgressUpdateStream
+-- 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 progress update stream, including all of its tasks, which was
+-- previously created as an AWS resource used for access control. This API
+-- has the following traits:
+--
+-- -   The only parameter needed for @DeleteProgressUpdateStream@ is the
+--     stream name (same as a @CreateProgressUpdateStream@ call).
+--
+-- -   The call will return, and a background process will asynchronously
+--     delete the stream and all of its resources (tasks, associated
+--     resources, resource attributes, created artifacts).
+--
+-- -   If the stream takes time to be deleted, it might still show up on a
+--     @ListProgressUpdateStreams@ call.
+--
+-- -   @CreateProgressUpdateStream@, @ImportMigrationTask@,
+--     @NotifyMigrationTaskState@, and all Associate[*] APIs related to the
+--     tasks belonging to the stream will throw \"InvalidInputException\"
+--     if the stream of the same name is in the process of being deleted.
+--
+-- -   Once the stream and all of its resources are deleted,
+--     @CreateProgressUpdateStream@ for a stream of the same name will
+--     succeed, and that stream will be an entirely new logical resource
+--     (without any resources associated with the old stream).
+module Amazonka.MigrationHub.DeleteProgressUpdateStream
+  ( -- * Creating a Request
+    DeleteProgressUpdateStream (..),
+    newDeleteProgressUpdateStream,
+
+    -- * Request Lenses
+    deleteProgressUpdateStream_dryRun,
+    deleteProgressUpdateStream_progressUpdateStreamName,
+
+    -- * Destructuring the Response
+    DeleteProgressUpdateStreamResponse (..),
+    newDeleteProgressUpdateStreamResponse,
+
+    -- * Response Lenses
+    deleteProgressUpdateStreamResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteProgressUpdateStream' smart constructor.
+data DeleteProgressUpdateStream = DeleteProgressUpdateStream'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream. /Do not store personal data in
+    -- this field./
+    progressUpdateStreamName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteProgressUpdateStream' 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:
+--
+-- 'dryRun', 'deleteProgressUpdateStream_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStreamName', 'deleteProgressUpdateStream_progressUpdateStreamName' - The name of the ProgressUpdateStream. /Do not store personal data in
+-- this field./
+newDeleteProgressUpdateStream ::
+  -- | 'progressUpdateStreamName'
+  Prelude.Text ->
+  DeleteProgressUpdateStream
+newDeleteProgressUpdateStream
+  pProgressUpdateStreamName_ =
+    DeleteProgressUpdateStream'
+      { dryRun =
+          Prelude.Nothing,
+        progressUpdateStreamName =
+          pProgressUpdateStreamName_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+deleteProgressUpdateStream_dryRun :: Lens.Lens' DeleteProgressUpdateStream (Prelude.Maybe Prelude.Bool)
+deleteProgressUpdateStream_dryRun = Lens.lens (\DeleteProgressUpdateStream' {dryRun} -> dryRun) (\s@DeleteProgressUpdateStream' {} a -> s {dryRun = a} :: DeleteProgressUpdateStream)
+
+-- | The name of the ProgressUpdateStream. /Do not store personal data in
+-- this field./
+deleteProgressUpdateStream_progressUpdateStreamName :: Lens.Lens' DeleteProgressUpdateStream Prelude.Text
+deleteProgressUpdateStream_progressUpdateStreamName = Lens.lens (\DeleteProgressUpdateStream' {progressUpdateStreamName} -> progressUpdateStreamName) (\s@DeleteProgressUpdateStream' {} a -> s {progressUpdateStreamName = a} :: DeleteProgressUpdateStream)
+
+instance Core.AWSRequest DeleteProgressUpdateStream where
+  type
+    AWSResponse DeleteProgressUpdateStream =
+      DeleteProgressUpdateStreamResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteProgressUpdateStreamResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteProgressUpdateStream where
+  hashWithSalt _salt DeleteProgressUpdateStream' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` progressUpdateStreamName
+
+instance Prelude.NFData DeleteProgressUpdateStream where
+  rnf DeleteProgressUpdateStream' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStreamName
+
+instance Data.ToHeaders DeleteProgressUpdateStream where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.DeleteProgressUpdateStream" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteProgressUpdateStream where
+  toJSON DeleteProgressUpdateStream' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStreamName"
+                  Data..= progressUpdateStreamName
+              )
+          ]
+      )
+
+instance Data.ToPath DeleteProgressUpdateStream where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteProgressUpdateStream where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteProgressUpdateStreamResponse' smart constructor.
+data DeleteProgressUpdateStreamResponse = DeleteProgressUpdateStreamResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteProgressUpdateStreamResponse' 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', 'deleteProgressUpdateStreamResponse_httpStatus' - The response's http status code.
+newDeleteProgressUpdateStreamResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteProgressUpdateStreamResponse
+newDeleteProgressUpdateStreamResponse pHttpStatus_ =
+  DeleteProgressUpdateStreamResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteProgressUpdateStreamResponse_httpStatus :: Lens.Lens' DeleteProgressUpdateStreamResponse Prelude.Int
+deleteProgressUpdateStreamResponse_httpStatus = Lens.lens (\DeleteProgressUpdateStreamResponse' {httpStatus} -> httpStatus) (\s@DeleteProgressUpdateStreamResponse' {} a -> s {httpStatus = a} :: DeleteProgressUpdateStreamResponse)
+
+instance
+  Prelude.NFData
+    DeleteProgressUpdateStreamResponse
+  where
+  rnf DeleteProgressUpdateStreamResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/DescribeApplicationState.hs b/gen/Amazonka/MigrationHub/DescribeApplicationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/DescribeApplicationState.hs
@@ -0,0 +1,192 @@
+{-# 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.MigrationHub.DescribeApplicationState
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the migration status of an application.
+module Amazonka.MigrationHub.DescribeApplicationState
+  ( -- * Creating a Request
+    DescribeApplicationState (..),
+    newDescribeApplicationState,
+
+    -- * Request Lenses
+    describeApplicationState_applicationId,
+
+    -- * Destructuring the Response
+    DescribeApplicationStateResponse (..),
+    newDescribeApplicationStateResponse,
+
+    -- * Response Lenses
+    describeApplicationStateResponse_applicationStatus,
+    describeApplicationStateResponse_lastUpdatedTime,
+    describeApplicationStateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeApplicationState' smart constructor.
+data DescribeApplicationState = DescribeApplicationState'
+  { -- | The configurationId in Application Discovery Service that uniquely
+    -- identifies the grouped application.
+    applicationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeApplicationState' 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:
+--
+-- 'applicationId', 'describeApplicationState_applicationId' - The configurationId in Application Discovery Service that uniquely
+-- identifies the grouped application.
+newDescribeApplicationState ::
+  -- | 'applicationId'
+  Prelude.Text ->
+  DescribeApplicationState
+newDescribeApplicationState pApplicationId_ =
+  DescribeApplicationState'
+    { applicationId =
+        pApplicationId_
+    }
+
+-- | The configurationId in Application Discovery Service that uniquely
+-- identifies the grouped application.
+describeApplicationState_applicationId :: Lens.Lens' DescribeApplicationState Prelude.Text
+describeApplicationState_applicationId = Lens.lens (\DescribeApplicationState' {applicationId} -> applicationId) (\s@DescribeApplicationState' {} a -> s {applicationId = a} :: DescribeApplicationState)
+
+instance Core.AWSRequest DescribeApplicationState where
+  type
+    AWSResponse DescribeApplicationState =
+      DescribeApplicationStateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeApplicationStateResponse'
+            Prelude.<$> (x Data..?> "ApplicationStatus")
+            Prelude.<*> (x Data..?> "LastUpdatedTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeApplicationState where
+  hashWithSalt _salt DescribeApplicationState' {..} =
+    _salt `Prelude.hashWithSalt` applicationId
+
+instance Prelude.NFData DescribeApplicationState where
+  rnf DescribeApplicationState' {..} =
+    Prelude.rnf applicationId
+
+instance Data.ToHeaders DescribeApplicationState where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.DescribeApplicationState" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeApplicationState where
+  toJSON DescribeApplicationState' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ApplicationId" Data..= applicationId)
+          ]
+      )
+
+instance Data.ToPath DescribeApplicationState where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeApplicationState where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeApplicationStateResponse' smart constructor.
+data DescribeApplicationStateResponse = DescribeApplicationStateResponse'
+  { -- | Status of the application - Not Started, In-Progress, Complete.
+    applicationStatus :: Prelude.Maybe ApplicationStatus,
+    -- | The timestamp when the application status was last updated.
+    lastUpdatedTime :: 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 'DescribeApplicationStateResponse' 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:
+--
+-- 'applicationStatus', 'describeApplicationStateResponse_applicationStatus' - Status of the application - Not Started, In-Progress, Complete.
+--
+-- 'lastUpdatedTime', 'describeApplicationStateResponse_lastUpdatedTime' - The timestamp when the application status was last updated.
+--
+-- 'httpStatus', 'describeApplicationStateResponse_httpStatus' - The response's http status code.
+newDescribeApplicationStateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeApplicationStateResponse
+newDescribeApplicationStateResponse pHttpStatus_ =
+  DescribeApplicationStateResponse'
+    { applicationStatus =
+        Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Status of the application - Not Started, In-Progress, Complete.
+describeApplicationStateResponse_applicationStatus :: Lens.Lens' DescribeApplicationStateResponse (Prelude.Maybe ApplicationStatus)
+describeApplicationStateResponse_applicationStatus = Lens.lens (\DescribeApplicationStateResponse' {applicationStatus} -> applicationStatus) (\s@DescribeApplicationStateResponse' {} a -> s {applicationStatus = a} :: DescribeApplicationStateResponse)
+
+-- | The timestamp when the application status was last updated.
+describeApplicationStateResponse_lastUpdatedTime :: Lens.Lens' DescribeApplicationStateResponse (Prelude.Maybe Prelude.UTCTime)
+describeApplicationStateResponse_lastUpdatedTime = Lens.lens (\DescribeApplicationStateResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@DescribeApplicationStateResponse' {} a -> s {lastUpdatedTime = a} :: DescribeApplicationStateResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+describeApplicationStateResponse_httpStatus :: Lens.Lens' DescribeApplicationStateResponse Prelude.Int
+describeApplicationStateResponse_httpStatus = Lens.lens (\DescribeApplicationStateResponse' {httpStatus} -> httpStatus) (\s@DescribeApplicationStateResponse' {} a -> s {httpStatus = a} :: DescribeApplicationStateResponse)
+
+instance
+  Prelude.NFData
+    DescribeApplicationStateResponse
+  where
+  rnf DescribeApplicationStateResponse' {..} =
+    Prelude.rnf applicationStatus
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/DescribeMigrationTask.hs b/gen/Amazonka/MigrationHub/DescribeMigrationTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/DescribeMigrationTask.hs
@@ -0,0 +1,199 @@
+{-# 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.MigrationHub.DescribeMigrationTask
+-- 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 all attributes associated with a specific migration
+-- task.
+module Amazonka.MigrationHub.DescribeMigrationTask
+  ( -- * Creating a Request
+    DescribeMigrationTask (..),
+    newDescribeMigrationTask,
+
+    -- * Request Lenses
+    describeMigrationTask_progressUpdateStream,
+    describeMigrationTask_migrationTaskName,
+
+    -- * Destructuring the Response
+    DescribeMigrationTaskResponse (..),
+    newDescribeMigrationTaskResponse,
+
+    -- * Response Lenses
+    describeMigrationTaskResponse_migrationTask,
+    describeMigrationTaskResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeMigrationTask' smart constructor.
+data DescribeMigrationTask = DescribeMigrationTask'
+  { -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | The identifier given to the MigrationTask. /Do not store personal data
+    -- in this field./
+    migrationTaskName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeMigrationTask' 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:
+--
+-- 'progressUpdateStream', 'describeMigrationTask_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'describeMigrationTask_migrationTaskName' - The identifier given to the MigrationTask. /Do not store personal data
+-- in this field./
+newDescribeMigrationTask ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  DescribeMigrationTask
+newDescribeMigrationTask
+  pProgressUpdateStream_
+  pMigrationTaskName_ =
+    DescribeMigrationTask'
+      { progressUpdateStream =
+          pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_
+      }
+
+-- | The name of the ProgressUpdateStream.
+describeMigrationTask_progressUpdateStream :: Lens.Lens' DescribeMigrationTask Prelude.Text
+describeMigrationTask_progressUpdateStream = Lens.lens (\DescribeMigrationTask' {progressUpdateStream} -> progressUpdateStream) (\s@DescribeMigrationTask' {} a -> s {progressUpdateStream = a} :: DescribeMigrationTask)
+
+-- | The identifier given to the MigrationTask. /Do not store personal data
+-- in this field./
+describeMigrationTask_migrationTaskName :: Lens.Lens' DescribeMigrationTask Prelude.Text
+describeMigrationTask_migrationTaskName = Lens.lens (\DescribeMigrationTask' {migrationTaskName} -> migrationTaskName) (\s@DescribeMigrationTask' {} a -> s {migrationTaskName = a} :: DescribeMigrationTask)
+
+instance Core.AWSRequest DescribeMigrationTask where
+  type
+    AWSResponse DescribeMigrationTask =
+      DescribeMigrationTaskResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeMigrationTaskResponse'
+            Prelude.<$> (x Data..?> "MigrationTask")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeMigrationTask where
+  hashWithSalt _salt DescribeMigrationTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+
+instance Prelude.NFData DescribeMigrationTask where
+  rnf DescribeMigrationTask' {..} =
+    Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+
+instance Data.ToHeaders DescribeMigrationTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.DescribeMigrationTask" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeMigrationTask where
+  toJSON DescribeMigrationTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName)
+          ]
+      )
+
+instance Data.ToPath DescribeMigrationTask where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeMigrationTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeMigrationTaskResponse' smart constructor.
+data DescribeMigrationTaskResponse = DescribeMigrationTaskResponse'
+  { -- | Object encapsulating information about the migration task.
+    migrationTask :: Prelude.Maybe MigrationTask,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeMigrationTaskResponse' 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:
+--
+-- 'migrationTask', 'describeMigrationTaskResponse_migrationTask' - Object encapsulating information about the migration task.
+--
+-- 'httpStatus', 'describeMigrationTaskResponse_httpStatus' - The response's http status code.
+newDescribeMigrationTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeMigrationTaskResponse
+newDescribeMigrationTaskResponse pHttpStatus_ =
+  DescribeMigrationTaskResponse'
+    { migrationTask =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Object encapsulating information about the migration task.
+describeMigrationTaskResponse_migrationTask :: Lens.Lens' DescribeMigrationTaskResponse (Prelude.Maybe MigrationTask)
+describeMigrationTaskResponse_migrationTask = Lens.lens (\DescribeMigrationTaskResponse' {migrationTask} -> migrationTask) (\s@DescribeMigrationTaskResponse' {} a -> s {migrationTask = a} :: DescribeMigrationTaskResponse)
+
+-- | The response's http status code.
+describeMigrationTaskResponse_httpStatus :: Lens.Lens' DescribeMigrationTaskResponse Prelude.Int
+describeMigrationTaskResponse_httpStatus = Lens.lens (\DescribeMigrationTaskResponse' {httpStatus} -> httpStatus) (\s@DescribeMigrationTaskResponse' {} a -> s {httpStatus = a} :: DescribeMigrationTaskResponse)
+
+instance Prelude.NFData DescribeMigrationTaskResponse where
+  rnf DescribeMigrationTaskResponse' {..} =
+    Prelude.rnf migrationTask
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/DisassociateCreatedArtifact.hs b/gen/Amazonka/MigrationHub/DisassociateCreatedArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/DisassociateCreatedArtifact.hs
@@ -0,0 +1,239 @@
+{-# 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.MigrationHub.DisassociateCreatedArtifact
+-- 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 a created artifact of an AWS resource with a migration
+-- task performed by a migration tool that was previously associated. This
+-- API has the following traits:
+--
+-- -   A migration user can call the @DisassociateCreatedArtifacts@
+--     operation to disassociate a created AWS Artifact from a migration
+--     task.
+--
+-- -   The created artifact name must be provided in ARN (Amazon Resource
+--     Name) format which will contain information about type and region;
+--     for example:
+--     @arn:aws:ec2:us-east-1:488216288981:image\/ami-6d0ba87b@.
+--
+-- -   Examples of the AWS resource behind the created artifact are,
+--     AMI\'s, EC2 instance, or RDS instance, etc.
+module Amazonka.MigrationHub.DisassociateCreatedArtifact
+  ( -- * Creating a Request
+    DisassociateCreatedArtifact (..),
+    newDisassociateCreatedArtifact,
+
+    -- * Request Lenses
+    disassociateCreatedArtifact_dryRun,
+    disassociateCreatedArtifact_progressUpdateStream,
+    disassociateCreatedArtifact_migrationTaskName,
+    disassociateCreatedArtifact_createdArtifactName,
+
+    -- * Destructuring the Response
+    DisassociateCreatedArtifactResponse (..),
+    newDisassociateCreatedArtifactResponse,
+
+    -- * Response Lenses
+    disassociateCreatedArtifactResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateCreatedArtifact' smart constructor.
+data DisassociateCreatedArtifact = DisassociateCreatedArtifact'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | Unique identifier that references the migration task to be disassociated
+    -- with the artifact. /Do not store personal data in this field./
+    migrationTaskName :: Prelude.Text,
+    -- | An ARN of the AWS resource related to the migration (e.g., AMI, EC2
+    -- instance, RDS instance, etc.)
+    createdArtifactName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateCreatedArtifact' 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:
+--
+-- 'dryRun', 'disassociateCreatedArtifact_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStream', 'disassociateCreatedArtifact_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'disassociateCreatedArtifact_migrationTaskName' - Unique identifier that references the migration task to be disassociated
+-- with the artifact. /Do not store personal data in this field./
+--
+-- 'createdArtifactName', 'disassociateCreatedArtifact_createdArtifactName' - An ARN of the AWS resource related to the migration (e.g., AMI, EC2
+-- instance, RDS instance, etc.)
+newDisassociateCreatedArtifact ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  -- | 'createdArtifactName'
+  Prelude.Text ->
+  DisassociateCreatedArtifact
+newDisassociateCreatedArtifact
+  pProgressUpdateStream_
+  pMigrationTaskName_
+  pCreatedArtifactName_ =
+    DisassociateCreatedArtifact'
+      { dryRun =
+          Prelude.Nothing,
+        progressUpdateStream = pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_,
+        createdArtifactName = pCreatedArtifactName_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+disassociateCreatedArtifact_dryRun :: Lens.Lens' DisassociateCreatedArtifact (Prelude.Maybe Prelude.Bool)
+disassociateCreatedArtifact_dryRun = Lens.lens (\DisassociateCreatedArtifact' {dryRun} -> dryRun) (\s@DisassociateCreatedArtifact' {} a -> s {dryRun = a} :: DisassociateCreatedArtifact)
+
+-- | The name of the ProgressUpdateStream.
+disassociateCreatedArtifact_progressUpdateStream :: Lens.Lens' DisassociateCreatedArtifact Prelude.Text
+disassociateCreatedArtifact_progressUpdateStream = Lens.lens (\DisassociateCreatedArtifact' {progressUpdateStream} -> progressUpdateStream) (\s@DisassociateCreatedArtifact' {} a -> s {progressUpdateStream = a} :: DisassociateCreatedArtifact)
+
+-- | Unique identifier that references the migration task to be disassociated
+-- with the artifact. /Do not store personal data in this field./
+disassociateCreatedArtifact_migrationTaskName :: Lens.Lens' DisassociateCreatedArtifact Prelude.Text
+disassociateCreatedArtifact_migrationTaskName = Lens.lens (\DisassociateCreatedArtifact' {migrationTaskName} -> migrationTaskName) (\s@DisassociateCreatedArtifact' {} a -> s {migrationTaskName = a} :: DisassociateCreatedArtifact)
+
+-- | An ARN of the AWS resource related to the migration (e.g., AMI, EC2
+-- instance, RDS instance, etc.)
+disassociateCreatedArtifact_createdArtifactName :: Lens.Lens' DisassociateCreatedArtifact Prelude.Text
+disassociateCreatedArtifact_createdArtifactName = Lens.lens (\DisassociateCreatedArtifact' {createdArtifactName} -> createdArtifactName) (\s@DisassociateCreatedArtifact' {} a -> s {createdArtifactName = a} :: DisassociateCreatedArtifact)
+
+instance Core.AWSRequest DisassociateCreatedArtifact where
+  type
+    AWSResponse DisassociateCreatedArtifact =
+      DisassociateCreatedArtifactResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DisassociateCreatedArtifactResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociateCreatedArtifact where
+  hashWithSalt _salt DisassociateCreatedArtifact' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+      `Prelude.hashWithSalt` createdArtifactName
+
+instance Prelude.NFData DisassociateCreatedArtifact where
+  rnf DisassociateCreatedArtifact' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+      `Prelude.seq` Prelude.rnf createdArtifactName
+
+instance Data.ToHeaders DisassociateCreatedArtifact where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.DisassociateCreatedArtifact" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateCreatedArtifact where
+  toJSON DisassociateCreatedArtifact' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName),
+            Prelude.Just
+              ("CreatedArtifactName" Data..= createdArtifactName)
+          ]
+      )
+
+instance Data.ToPath DisassociateCreatedArtifact where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DisassociateCreatedArtifact where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateCreatedArtifactResponse' smart constructor.
+data DisassociateCreatedArtifactResponse = DisassociateCreatedArtifactResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateCreatedArtifactResponse' 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', 'disassociateCreatedArtifactResponse_httpStatus' - The response's http status code.
+newDisassociateCreatedArtifactResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateCreatedArtifactResponse
+newDisassociateCreatedArtifactResponse pHttpStatus_ =
+  DisassociateCreatedArtifactResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+disassociateCreatedArtifactResponse_httpStatus :: Lens.Lens' DisassociateCreatedArtifactResponse Prelude.Int
+disassociateCreatedArtifactResponse_httpStatus = Lens.lens (\DisassociateCreatedArtifactResponse' {httpStatus} -> httpStatus) (\s@DisassociateCreatedArtifactResponse' {} a -> s {httpStatus = a} :: DisassociateCreatedArtifactResponse)
+
+instance
+  Prelude.NFData
+    DisassociateCreatedArtifactResponse
+  where
+  rnf DisassociateCreatedArtifactResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/DisassociateDiscoveredResource.hs b/gen/Amazonka/MigrationHub/DisassociateDiscoveredResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/DisassociateDiscoveredResource.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.MigrationHub.DisassociateDiscoveredResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociate an Application Discovery Service discovered resource from a
+-- migration task.
+module Amazonka.MigrationHub.DisassociateDiscoveredResource
+  ( -- * Creating a Request
+    DisassociateDiscoveredResource (..),
+    newDisassociateDiscoveredResource,
+
+    -- * Request Lenses
+    disassociateDiscoveredResource_dryRun,
+    disassociateDiscoveredResource_progressUpdateStream,
+    disassociateDiscoveredResource_migrationTaskName,
+    disassociateDiscoveredResource_configurationId,
+
+    -- * Destructuring the Response
+    DisassociateDiscoveredResourceResponse (..),
+    newDisassociateDiscoveredResourceResponse,
+
+    -- * Response Lenses
+    disassociateDiscoveredResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateDiscoveredResource' smart constructor.
+data DisassociateDiscoveredResource = DisassociateDiscoveredResource'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | The identifier given to the MigrationTask. /Do not store personal data
+    -- in this field./
+    migrationTaskName :: Prelude.Text,
+    -- | ConfigurationId of the Application Discovery Service resource to be
+    -- disassociated.
+    configurationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateDiscoveredResource' 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:
+--
+-- 'dryRun', 'disassociateDiscoveredResource_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStream', 'disassociateDiscoveredResource_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'disassociateDiscoveredResource_migrationTaskName' - The identifier given to the MigrationTask. /Do not store personal data
+-- in this field./
+--
+-- 'configurationId', 'disassociateDiscoveredResource_configurationId' - ConfigurationId of the Application Discovery Service resource to be
+-- disassociated.
+newDisassociateDiscoveredResource ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  -- | 'configurationId'
+  Prelude.Text ->
+  DisassociateDiscoveredResource
+newDisassociateDiscoveredResource
+  pProgressUpdateStream_
+  pMigrationTaskName_
+  pConfigurationId_ =
+    DisassociateDiscoveredResource'
+      { dryRun =
+          Prelude.Nothing,
+        progressUpdateStream =
+          pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_,
+        configurationId = pConfigurationId_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+disassociateDiscoveredResource_dryRun :: Lens.Lens' DisassociateDiscoveredResource (Prelude.Maybe Prelude.Bool)
+disassociateDiscoveredResource_dryRun = Lens.lens (\DisassociateDiscoveredResource' {dryRun} -> dryRun) (\s@DisassociateDiscoveredResource' {} a -> s {dryRun = a} :: DisassociateDiscoveredResource)
+
+-- | The name of the ProgressUpdateStream.
+disassociateDiscoveredResource_progressUpdateStream :: Lens.Lens' DisassociateDiscoveredResource Prelude.Text
+disassociateDiscoveredResource_progressUpdateStream = Lens.lens (\DisassociateDiscoveredResource' {progressUpdateStream} -> progressUpdateStream) (\s@DisassociateDiscoveredResource' {} a -> s {progressUpdateStream = a} :: DisassociateDiscoveredResource)
+
+-- | The identifier given to the MigrationTask. /Do not store personal data
+-- in this field./
+disassociateDiscoveredResource_migrationTaskName :: Lens.Lens' DisassociateDiscoveredResource Prelude.Text
+disassociateDiscoveredResource_migrationTaskName = Lens.lens (\DisassociateDiscoveredResource' {migrationTaskName} -> migrationTaskName) (\s@DisassociateDiscoveredResource' {} a -> s {migrationTaskName = a} :: DisassociateDiscoveredResource)
+
+-- | ConfigurationId of the Application Discovery Service resource to be
+-- disassociated.
+disassociateDiscoveredResource_configurationId :: Lens.Lens' DisassociateDiscoveredResource Prelude.Text
+disassociateDiscoveredResource_configurationId = Lens.lens (\DisassociateDiscoveredResource' {configurationId} -> configurationId) (\s@DisassociateDiscoveredResource' {} a -> s {configurationId = a} :: DisassociateDiscoveredResource)
+
+instance
+  Core.AWSRequest
+    DisassociateDiscoveredResource
+  where
+  type
+    AWSResponse DisassociateDiscoveredResource =
+      DisassociateDiscoveredResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DisassociateDiscoveredResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociateDiscoveredResource
+  where
+  hashWithSalt
+    _salt
+    DisassociateDiscoveredResource' {..} =
+      _salt
+        `Prelude.hashWithSalt` dryRun
+        `Prelude.hashWithSalt` progressUpdateStream
+        `Prelude.hashWithSalt` migrationTaskName
+        `Prelude.hashWithSalt` configurationId
+
+instance
+  Prelude.NFData
+    DisassociateDiscoveredResource
+  where
+  rnf DisassociateDiscoveredResource' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+      `Prelude.seq` Prelude.rnf configurationId
+
+instance
+  Data.ToHeaders
+    DisassociateDiscoveredResource
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.DisassociateDiscoveredResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateDiscoveredResource where
+  toJSON DisassociateDiscoveredResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName),
+            Prelude.Just
+              ("ConfigurationId" Data..= configurationId)
+          ]
+      )
+
+instance Data.ToPath DisassociateDiscoveredResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DisassociateDiscoveredResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateDiscoveredResourceResponse' smart constructor.
+data DisassociateDiscoveredResourceResponse = DisassociateDiscoveredResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateDiscoveredResourceResponse' 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', 'disassociateDiscoveredResourceResponse_httpStatus' - The response's http status code.
+newDisassociateDiscoveredResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateDiscoveredResourceResponse
+newDisassociateDiscoveredResourceResponse
+  pHttpStatus_ =
+    DisassociateDiscoveredResourceResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+disassociateDiscoveredResourceResponse_httpStatus :: Lens.Lens' DisassociateDiscoveredResourceResponse Prelude.Int
+disassociateDiscoveredResourceResponse_httpStatus = Lens.lens (\DisassociateDiscoveredResourceResponse' {httpStatus} -> httpStatus) (\s@DisassociateDiscoveredResourceResponse' {} a -> s {httpStatus = a} :: DisassociateDiscoveredResourceResponse)
+
+instance
+  Prelude.NFData
+    DisassociateDiscoveredResourceResponse
+  where
+  rnf DisassociateDiscoveredResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/ImportMigrationTask.hs b/gen/Amazonka/MigrationHub/ImportMigrationTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/ImportMigrationTask.hs
@@ -0,0 +1,206 @@
+{-# 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.MigrationHub.ImportMigrationTask
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Registers a new migration task which represents a server, database,
+-- etc., being migrated to AWS by a migration tool.
+--
+-- This API is a prerequisite to calling the @NotifyMigrationTaskState@ API
+-- as the migration tool must first register the migration task with
+-- Migration Hub.
+module Amazonka.MigrationHub.ImportMigrationTask
+  ( -- * Creating a Request
+    ImportMigrationTask (..),
+    newImportMigrationTask,
+
+    -- * Request Lenses
+    importMigrationTask_dryRun,
+    importMigrationTask_progressUpdateStream,
+    importMigrationTask_migrationTaskName,
+
+    -- * Destructuring the Response
+    ImportMigrationTaskResponse (..),
+    newImportMigrationTaskResponse,
+
+    -- * Response Lenses
+    importMigrationTaskResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newImportMigrationTask' smart constructor.
+data ImportMigrationTask = ImportMigrationTask'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream. >
+    progressUpdateStream :: Prelude.Text,
+    -- | Unique identifier that references the migration task. /Do not store
+    -- personal data in this field./
+    migrationTaskName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportMigrationTask' 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:
+--
+-- 'dryRun', 'importMigrationTask_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStream', 'importMigrationTask_progressUpdateStream' - The name of the ProgressUpdateStream. >
+--
+-- 'migrationTaskName', 'importMigrationTask_migrationTaskName' - Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+newImportMigrationTask ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  ImportMigrationTask
+newImportMigrationTask
+  pProgressUpdateStream_
+  pMigrationTaskName_ =
+    ImportMigrationTask'
+      { dryRun = Prelude.Nothing,
+        progressUpdateStream = pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+importMigrationTask_dryRun :: Lens.Lens' ImportMigrationTask (Prelude.Maybe Prelude.Bool)
+importMigrationTask_dryRun = Lens.lens (\ImportMigrationTask' {dryRun} -> dryRun) (\s@ImportMigrationTask' {} a -> s {dryRun = a} :: ImportMigrationTask)
+
+-- | The name of the ProgressUpdateStream. >
+importMigrationTask_progressUpdateStream :: Lens.Lens' ImportMigrationTask Prelude.Text
+importMigrationTask_progressUpdateStream = Lens.lens (\ImportMigrationTask' {progressUpdateStream} -> progressUpdateStream) (\s@ImportMigrationTask' {} a -> s {progressUpdateStream = a} :: ImportMigrationTask)
+
+-- | Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+importMigrationTask_migrationTaskName :: Lens.Lens' ImportMigrationTask Prelude.Text
+importMigrationTask_migrationTaskName = Lens.lens (\ImportMigrationTask' {migrationTaskName} -> migrationTaskName) (\s@ImportMigrationTask' {} a -> s {migrationTaskName = a} :: ImportMigrationTask)
+
+instance Core.AWSRequest ImportMigrationTask where
+  type
+    AWSResponse ImportMigrationTask =
+      ImportMigrationTaskResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          ImportMigrationTaskResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ImportMigrationTask where
+  hashWithSalt _salt ImportMigrationTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+
+instance Prelude.NFData ImportMigrationTask where
+  rnf ImportMigrationTask' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+
+instance Data.ToHeaders ImportMigrationTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.ImportMigrationTask" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ImportMigrationTask where
+  toJSON ImportMigrationTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName)
+          ]
+      )
+
+instance Data.ToPath ImportMigrationTask where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ImportMigrationTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newImportMigrationTaskResponse' smart constructor.
+data ImportMigrationTaskResponse = ImportMigrationTaskResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportMigrationTaskResponse' 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', 'importMigrationTaskResponse_httpStatus' - The response's http status code.
+newImportMigrationTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ImportMigrationTaskResponse
+newImportMigrationTaskResponse pHttpStatus_ =
+  ImportMigrationTaskResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+importMigrationTaskResponse_httpStatus :: Lens.Lens' ImportMigrationTaskResponse Prelude.Int
+importMigrationTaskResponse_httpStatus = Lens.lens (\ImportMigrationTaskResponse' {httpStatus} -> httpStatus) (\s@ImportMigrationTaskResponse' {} a -> s {httpStatus = a} :: ImportMigrationTaskResponse)
+
+instance Prelude.NFData ImportMigrationTaskResponse where
+  rnf ImportMigrationTaskResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/Lens.hs b/gen/Amazonka/MigrationHub/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Lens.hs
@@ -0,0 +1,205 @@
+{-# 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.MigrationHub.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.MigrationHub.Lens
+  ( -- * Operations
+
+    -- ** AssociateCreatedArtifact
+    associateCreatedArtifact_dryRun,
+    associateCreatedArtifact_progressUpdateStream,
+    associateCreatedArtifact_migrationTaskName,
+    associateCreatedArtifact_createdArtifact,
+    associateCreatedArtifactResponse_httpStatus,
+
+    -- ** AssociateDiscoveredResource
+    associateDiscoveredResource_dryRun,
+    associateDiscoveredResource_progressUpdateStream,
+    associateDiscoveredResource_migrationTaskName,
+    associateDiscoveredResource_discoveredResource,
+    associateDiscoveredResourceResponse_httpStatus,
+
+    -- ** CreateProgressUpdateStream
+    createProgressUpdateStream_dryRun,
+    createProgressUpdateStream_progressUpdateStreamName,
+    createProgressUpdateStreamResponse_httpStatus,
+
+    -- ** DeleteProgressUpdateStream
+    deleteProgressUpdateStream_dryRun,
+    deleteProgressUpdateStream_progressUpdateStreamName,
+    deleteProgressUpdateStreamResponse_httpStatus,
+
+    -- ** DescribeApplicationState
+    describeApplicationState_applicationId,
+    describeApplicationStateResponse_applicationStatus,
+    describeApplicationStateResponse_lastUpdatedTime,
+    describeApplicationStateResponse_httpStatus,
+
+    -- ** DescribeMigrationTask
+    describeMigrationTask_progressUpdateStream,
+    describeMigrationTask_migrationTaskName,
+    describeMigrationTaskResponse_migrationTask,
+    describeMigrationTaskResponse_httpStatus,
+
+    -- ** DisassociateCreatedArtifact
+    disassociateCreatedArtifact_dryRun,
+    disassociateCreatedArtifact_progressUpdateStream,
+    disassociateCreatedArtifact_migrationTaskName,
+    disassociateCreatedArtifact_createdArtifactName,
+    disassociateCreatedArtifactResponse_httpStatus,
+
+    -- ** DisassociateDiscoveredResource
+    disassociateDiscoveredResource_dryRun,
+    disassociateDiscoveredResource_progressUpdateStream,
+    disassociateDiscoveredResource_migrationTaskName,
+    disassociateDiscoveredResource_configurationId,
+    disassociateDiscoveredResourceResponse_httpStatus,
+
+    -- ** ImportMigrationTask
+    importMigrationTask_dryRun,
+    importMigrationTask_progressUpdateStream,
+    importMigrationTask_migrationTaskName,
+    importMigrationTaskResponse_httpStatus,
+
+    -- ** ListApplicationStates
+    listApplicationStates_applicationIds,
+    listApplicationStates_maxResults,
+    listApplicationStates_nextToken,
+    listApplicationStatesResponse_applicationStateList,
+    listApplicationStatesResponse_nextToken,
+    listApplicationStatesResponse_httpStatus,
+
+    -- ** ListCreatedArtifacts
+    listCreatedArtifacts_maxResults,
+    listCreatedArtifacts_nextToken,
+    listCreatedArtifacts_progressUpdateStream,
+    listCreatedArtifacts_migrationTaskName,
+    listCreatedArtifactsResponse_createdArtifactList,
+    listCreatedArtifactsResponse_nextToken,
+    listCreatedArtifactsResponse_httpStatus,
+
+    -- ** ListDiscoveredResources
+    listDiscoveredResources_maxResults,
+    listDiscoveredResources_nextToken,
+    listDiscoveredResources_progressUpdateStream,
+    listDiscoveredResources_migrationTaskName,
+    listDiscoveredResourcesResponse_discoveredResourceList,
+    listDiscoveredResourcesResponse_nextToken,
+    listDiscoveredResourcesResponse_httpStatus,
+
+    -- ** ListMigrationTasks
+    listMigrationTasks_maxResults,
+    listMigrationTasks_nextToken,
+    listMigrationTasks_resourceName,
+    listMigrationTasksResponse_migrationTaskSummaryList,
+    listMigrationTasksResponse_nextToken,
+    listMigrationTasksResponse_httpStatus,
+
+    -- ** ListProgressUpdateStreams
+    listProgressUpdateStreams_maxResults,
+    listProgressUpdateStreams_nextToken,
+    listProgressUpdateStreamsResponse_nextToken,
+    listProgressUpdateStreamsResponse_progressUpdateStreamSummaryList,
+    listProgressUpdateStreamsResponse_httpStatus,
+
+    -- ** NotifyApplicationState
+    notifyApplicationState_dryRun,
+    notifyApplicationState_updateDateTime,
+    notifyApplicationState_applicationId,
+    notifyApplicationState_status,
+    notifyApplicationStateResponse_httpStatus,
+
+    -- ** NotifyMigrationTaskState
+    notifyMigrationTaskState_dryRun,
+    notifyMigrationTaskState_progressUpdateStream,
+    notifyMigrationTaskState_migrationTaskName,
+    notifyMigrationTaskState_task,
+    notifyMigrationTaskState_updateDateTime,
+    notifyMigrationTaskState_nextUpdateSeconds,
+    notifyMigrationTaskStateResponse_httpStatus,
+
+    -- ** PutResourceAttributes
+    putResourceAttributes_dryRun,
+    putResourceAttributes_progressUpdateStream,
+    putResourceAttributes_migrationTaskName,
+    putResourceAttributes_resourceAttributeList,
+    putResourceAttributesResponse_httpStatus,
+
+    -- * Types
+
+    -- ** ApplicationState
+    applicationState_applicationId,
+    applicationState_applicationStatus,
+    applicationState_lastUpdatedTime,
+
+    -- ** CreatedArtifact
+    createdArtifact_description,
+    createdArtifact_name,
+
+    -- ** DiscoveredResource
+    discoveredResource_description,
+    discoveredResource_configurationId,
+
+    -- ** MigrationTask
+    migrationTask_migrationTaskName,
+    migrationTask_progressUpdateStream,
+    migrationTask_resourceAttributeList,
+    migrationTask_task,
+    migrationTask_updateDateTime,
+
+    -- ** MigrationTaskSummary
+    migrationTaskSummary_migrationTaskName,
+    migrationTaskSummary_progressPercent,
+    migrationTaskSummary_progressUpdateStream,
+    migrationTaskSummary_status,
+    migrationTaskSummary_statusDetail,
+    migrationTaskSummary_updateDateTime,
+
+    -- ** ProgressUpdateStreamSummary
+    progressUpdateStreamSummary_progressUpdateStreamName,
+
+    -- ** ResourceAttribute
+    resourceAttribute_type,
+    resourceAttribute_value,
+
+    -- ** Task
+    task_progressPercent,
+    task_statusDetail,
+    task_status,
+  )
+where
+
+import Amazonka.MigrationHub.AssociateCreatedArtifact
+import Amazonka.MigrationHub.AssociateDiscoveredResource
+import Amazonka.MigrationHub.CreateProgressUpdateStream
+import Amazonka.MigrationHub.DeleteProgressUpdateStream
+import Amazonka.MigrationHub.DescribeApplicationState
+import Amazonka.MigrationHub.DescribeMigrationTask
+import Amazonka.MigrationHub.DisassociateCreatedArtifact
+import Amazonka.MigrationHub.DisassociateDiscoveredResource
+import Amazonka.MigrationHub.ImportMigrationTask
+import Amazonka.MigrationHub.ListApplicationStates
+import Amazonka.MigrationHub.ListCreatedArtifacts
+import Amazonka.MigrationHub.ListDiscoveredResources
+import Amazonka.MigrationHub.ListMigrationTasks
+import Amazonka.MigrationHub.ListProgressUpdateStreams
+import Amazonka.MigrationHub.NotifyApplicationState
+import Amazonka.MigrationHub.NotifyMigrationTaskState
+import Amazonka.MigrationHub.PutResourceAttributes
+import Amazonka.MigrationHub.Types.ApplicationState
+import Amazonka.MigrationHub.Types.CreatedArtifact
+import Amazonka.MigrationHub.Types.DiscoveredResource
+import Amazonka.MigrationHub.Types.MigrationTask
+import Amazonka.MigrationHub.Types.MigrationTaskSummary
+import Amazonka.MigrationHub.Types.ProgressUpdateStreamSummary
+import Amazonka.MigrationHub.Types.ResourceAttribute
+import Amazonka.MigrationHub.Types.Task
diff --git a/gen/Amazonka/MigrationHub/ListApplicationStates.hs b/gen/Amazonka/MigrationHub/ListApplicationStates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/ListApplicationStates.hs
@@ -0,0 +1,255 @@
+{-# 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.MigrationHub.ListApplicationStates
+-- 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 all the migration statuses for your applications. If you use the
+-- optional @ApplicationIds@ parameter, only the migration statuses for
+-- those applications will be returned.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHub.ListApplicationStates
+  ( -- * Creating a Request
+    ListApplicationStates (..),
+    newListApplicationStates,
+
+    -- * Request Lenses
+    listApplicationStates_applicationIds,
+    listApplicationStates_maxResults,
+    listApplicationStates_nextToken,
+
+    -- * Destructuring the Response
+    ListApplicationStatesResponse (..),
+    newListApplicationStatesResponse,
+
+    -- * Response Lenses
+    listApplicationStatesResponse_applicationStateList,
+    listApplicationStatesResponse_nextToken,
+    listApplicationStatesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListApplicationStates' smart constructor.
+data ListApplicationStates = ListApplicationStates'
+  { -- | The configurationIds from the Application Discovery Service that
+    -- uniquely identifies your applications.
+    applicationIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | Maximum number of results to be returned per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If a @NextToken@ was returned by a previous call, there are more results
+    -- available. To retrieve the next page of results, make the call again
+    -- using the returned token in @NextToken@.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListApplicationStates' 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:
+--
+-- 'applicationIds', 'listApplicationStates_applicationIds' - The configurationIds from the Application Discovery Service that
+-- uniquely identifies your applications.
+--
+-- 'maxResults', 'listApplicationStates_maxResults' - Maximum number of results to be returned per page.
+--
+-- 'nextToken', 'listApplicationStates_nextToken' - If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+newListApplicationStates ::
+  ListApplicationStates
+newListApplicationStates =
+  ListApplicationStates'
+    { applicationIds =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The configurationIds from the Application Discovery Service that
+-- uniquely identifies your applications.
+listApplicationStates_applicationIds :: Lens.Lens' ListApplicationStates (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listApplicationStates_applicationIds = Lens.lens (\ListApplicationStates' {applicationIds} -> applicationIds) (\s@ListApplicationStates' {} a -> s {applicationIds = a} :: ListApplicationStates) Prelude.. Lens.mapping Lens.coerced
+
+-- | Maximum number of results to be returned per page.
+listApplicationStates_maxResults :: Lens.Lens' ListApplicationStates (Prelude.Maybe Prelude.Natural)
+listApplicationStates_maxResults = Lens.lens (\ListApplicationStates' {maxResults} -> maxResults) (\s@ListApplicationStates' {} a -> s {maxResults = a} :: ListApplicationStates)
+
+-- | If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+listApplicationStates_nextToken :: Lens.Lens' ListApplicationStates (Prelude.Maybe Prelude.Text)
+listApplicationStates_nextToken = Lens.lens (\ListApplicationStates' {nextToken} -> nextToken) (\s@ListApplicationStates' {} a -> s {nextToken = a} :: ListApplicationStates)
+
+instance Core.AWSPager ListApplicationStates where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listApplicationStatesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listApplicationStatesResponse_applicationStateList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listApplicationStates_nextToken
+          Lens..~ rs
+          Lens.^? listApplicationStatesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListApplicationStates where
+  type
+    AWSResponse ListApplicationStates =
+      ListApplicationStatesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListApplicationStatesResponse'
+            Prelude.<$> ( x
+                            Data..?> "ApplicationStateList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListApplicationStates where
+  hashWithSalt _salt ListApplicationStates' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationIds
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListApplicationStates where
+  rnf ListApplicationStates' {..} =
+    Prelude.rnf applicationIds
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListApplicationStates where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.ListApplicationStates" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListApplicationStates where
+  toJSON ListApplicationStates' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ApplicationIds" Data..=)
+              Prelude.<$> applicationIds,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListApplicationStates where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListApplicationStates where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListApplicationStatesResponse' smart constructor.
+data ListApplicationStatesResponse = ListApplicationStatesResponse'
+  { -- | A list of Applications that exist in Application Discovery Service.
+    applicationStateList :: Prelude.Maybe [ApplicationState],
+    -- | If a @NextToken@ was returned by a previous call, there are more results
+    -- available. To retrieve the next page of results, make the call again
+    -- using the returned token in @NextToken@.
+    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 'ListApplicationStatesResponse' 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:
+--
+-- 'applicationStateList', 'listApplicationStatesResponse_applicationStateList' - A list of Applications that exist in Application Discovery Service.
+--
+-- 'nextToken', 'listApplicationStatesResponse_nextToken' - If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+--
+-- 'httpStatus', 'listApplicationStatesResponse_httpStatus' - The response's http status code.
+newListApplicationStatesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListApplicationStatesResponse
+newListApplicationStatesResponse pHttpStatus_ =
+  ListApplicationStatesResponse'
+    { applicationStateList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of Applications that exist in Application Discovery Service.
+listApplicationStatesResponse_applicationStateList :: Lens.Lens' ListApplicationStatesResponse (Prelude.Maybe [ApplicationState])
+listApplicationStatesResponse_applicationStateList = Lens.lens (\ListApplicationStatesResponse' {applicationStateList} -> applicationStateList) (\s@ListApplicationStatesResponse' {} a -> s {applicationStateList = a} :: ListApplicationStatesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+listApplicationStatesResponse_nextToken :: Lens.Lens' ListApplicationStatesResponse (Prelude.Maybe Prelude.Text)
+listApplicationStatesResponse_nextToken = Lens.lens (\ListApplicationStatesResponse' {nextToken} -> nextToken) (\s@ListApplicationStatesResponse' {} a -> s {nextToken = a} :: ListApplicationStatesResponse)
+
+-- | The response's http status code.
+listApplicationStatesResponse_httpStatus :: Lens.Lens' ListApplicationStatesResponse Prelude.Int
+listApplicationStatesResponse_httpStatus = Lens.lens (\ListApplicationStatesResponse' {httpStatus} -> httpStatus) (\s@ListApplicationStatesResponse' {} a -> s {httpStatus = a} :: ListApplicationStatesResponse)
+
+instance Prelude.NFData ListApplicationStatesResponse where
+  rnf ListApplicationStatesResponse' {..} =
+    Prelude.rnf applicationStateList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/ListCreatedArtifacts.hs b/gen/Amazonka/MigrationHub/ListCreatedArtifacts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/ListCreatedArtifacts.hs
@@ -0,0 +1,286 @@
+{-# 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.MigrationHub.ListCreatedArtifacts
+-- 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 the created artifacts attached to a given migration task in an
+-- update stream. This API has the following traits:
+--
+-- -   Gets the list of the created artifacts while migration is taking
+--     place.
+--
+-- -   Shows the artifacts created by the migration tool that was
+--     associated by the @AssociateCreatedArtifact@ API.
+--
+-- -   Lists created artifacts in a paginated interface.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHub.ListCreatedArtifacts
+  ( -- * Creating a Request
+    ListCreatedArtifacts (..),
+    newListCreatedArtifacts,
+
+    -- * Request Lenses
+    listCreatedArtifacts_maxResults,
+    listCreatedArtifacts_nextToken,
+    listCreatedArtifacts_progressUpdateStream,
+    listCreatedArtifacts_migrationTaskName,
+
+    -- * Destructuring the Response
+    ListCreatedArtifactsResponse (..),
+    newListCreatedArtifactsResponse,
+
+    -- * Response Lenses
+    listCreatedArtifactsResponse_createdArtifactList,
+    listCreatedArtifactsResponse_nextToken,
+    listCreatedArtifactsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListCreatedArtifacts' smart constructor.
+data ListCreatedArtifacts = ListCreatedArtifacts'
+  { -- | Maximum number of results to be returned per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If a @NextToken@ was returned by a previous call, there are more results
+    -- available. To retrieve the next page of results, make the call again
+    -- using the returned token in @NextToken@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | Unique identifier that references the migration task. /Do not store
+    -- personal data in this field./
+    migrationTaskName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCreatedArtifacts' 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', 'listCreatedArtifacts_maxResults' - Maximum number of results to be returned per page.
+--
+-- 'nextToken', 'listCreatedArtifacts_nextToken' - If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+--
+-- 'progressUpdateStream', 'listCreatedArtifacts_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'listCreatedArtifacts_migrationTaskName' - Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+newListCreatedArtifacts ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  ListCreatedArtifacts
+newListCreatedArtifacts
+  pProgressUpdateStream_
+  pMigrationTaskName_ =
+    ListCreatedArtifacts'
+      { maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        progressUpdateStream = pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_
+      }
+
+-- | Maximum number of results to be returned per page.
+listCreatedArtifacts_maxResults :: Lens.Lens' ListCreatedArtifacts (Prelude.Maybe Prelude.Natural)
+listCreatedArtifacts_maxResults = Lens.lens (\ListCreatedArtifacts' {maxResults} -> maxResults) (\s@ListCreatedArtifacts' {} a -> s {maxResults = a} :: ListCreatedArtifacts)
+
+-- | If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+listCreatedArtifacts_nextToken :: Lens.Lens' ListCreatedArtifacts (Prelude.Maybe Prelude.Text)
+listCreatedArtifacts_nextToken = Lens.lens (\ListCreatedArtifacts' {nextToken} -> nextToken) (\s@ListCreatedArtifacts' {} a -> s {nextToken = a} :: ListCreatedArtifacts)
+
+-- | The name of the ProgressUpdateStream.
+listCreatedArtifacts_progressUpdateStream :: Lens.Lens' ListCreatedArtifacts Prelude.Text
+listCreatedArtifacts_progressUpdateStream = Lens.lens (\ListCreatedArtifacts' {progressUpdateStream} -> progressUpdateStream) (\s@ListCreatedArtifacts' {} a -> s {progressUpdateStream = a} :: ListCreatedArtifacts)
+
+-- | Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+listCreatedArtifacts_migrationTaskName :: Lens.Lens' ListCreatedArtifacts Prelude.Text
+listCreatedArtifacts_migrationTaskName = Lens.lens (\ListCreatedArtifacts' {migrationTaskName} -> migrationTaskName) (\s@ListCreatedArtifacts' {} a -> s {migrationTaskName = a} :: ListCreatedArtifacts)
+
+instance Core.AWSPager ListCreatedArtifacts where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCreatedArtifactsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listCreatedArtifactsResponse_createdArtifactList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCreatedArtifacts_nextToken
+          Lens..~ rs
+          Lens.^? listCreatedArtifactsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListCreatedArtifacts where
+  type
+    AWSResponse ListCreatedArtifacts =
+      ListCreatedArtifactsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCreatedArtifactsResponse'
+            Prelude.<$> ( x
+                            Data..?> "CreatedArtifactList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListCreatedArtifacts where
+  hashWithSalt _salt ListCreatedArtifacts' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+
+instance Prelude.NFData ListCreatedArtifacts where
+  rnf ListCreatedArtifacts' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+
+instance Data.ToHeaders ListCreatedArtifacts where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.ListCreatedArtifacts" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListCreatedArtifacts where
+  toJSON ListCreatedArtifacts' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName)
+          ]
+      )
+
+instance Data.ToPath ListCreatedArtifacts where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListCreatedArtifacts where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListCreatedArtifactsResponse' smart constructor.
+data ListCreatedArtifactsResponse = ListCreatedArtifactsResponse'
+  { -- | List of created artifacts up to the maximum number of results specified
+    -- in the request.
+    createdArtifactList :: Prelude.Maybe [CreatedArtifact],
+    -- | If there are more created artifacts than the max result, return the next
+    -- token to be passed to the next call as a bookmark of where to start
+    -- from.
+    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 'ListCreatedArtifactsResponse' 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:
+--
+-- 'createdArtifactList', 'listCreatedArtifactsResponse_createdArtifactList' - List of created artifacts up to the maximum number of results specified
+-- in the request.
+--
+-- 'nextToken', 'listCreatedArtifactsResponse_nextToken' - If there are more created artifacts than the max result, return the next
+-- token to be passed to the next call as a bookmark of where to start
+-- from.
+--
+-- 'httpStatus', 'listCreatedArtifactsResponse_httpStatus' - The response's http status code.
+newListCreatedArtifactsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCreatedArtifactsResponse
+newListCreatedArtifactsResponse pHttpStatus_ =
+  ListCreatedArtifactsResponse'
+    { createdArtifactList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | List of created artifacts up to the maximum number of results specified
+-- in the request.
+listCreatedArtifactsResponse_createdArtifactList :: Lens.Lens' ListCreatedArtifactsResponse (Prelude.Maybe [CreatedArtifact])
+listCreatedArtifactsResponse_createdArtifactList = Lens.lens (\ListCreatedArtifactsResponse' {createdArtifactList} -> createdArtifactList) (\s@ListCreatedArtifactsResponse' {} a -> s {createdArtifactList = a} :: ListCreatedArtifactsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If there are more created artifacts than the max result, return the next
+-- token to be passed to the next call as a bookmark of where to start
+-- from.
+listCreatedArtifactsResponse_nextToken :: Lens.Lens' ListCreatedArtifactsResponse (Prelude.Maybe Prelude.Text)
+listCreatedArtifactsResponse_nextToken = Lens.lens (\ListCreatedArtifactsResponse' {nextToken} -> nextToken) (\s@ListCreatedArtifactsResponse' {} a -> s {nextToken = a} :: ListCreatedArtifactsResponse)
+
+-- | The response's http status code.
+listCreatedArtifactsResponse_httpStatus :: Lens.Lens' ListCreatedArtifactsResponse Prelude.Int
+listCreatedArtifactsResponse_httpStatus = Lens.lens (\ListCreatedArtifactsResponse' {httpStatus} -> httpStatus) (\s@ListCreatedArtifactsResponse' {} a -> s {httpStatus = a} :: ListCreatedArtifactsResponse)
+
+instance Prelude.NFData ListCreatedArtifactsResponse where
+  rnf ListCreatedArtifactsResponse' {..} =
+    Prelude.rnf createdArtifactList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/ListDiscoveredResources.hs b/gen/Amazonka/MigrationHub/ListDiscoveredResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/ListDiscoveredResources.hs
@@ -0,0 +1,281 @@
+{-# 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.MigrationHub.ListDiscoveredResources
+-- 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 discovered resources associated with the given @MigrationTask@.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHub.ListDiscoveredResources
+  ( -- * Creating a Request
+    ListDiscoveredResources (..),
+    newListDiscoveredResources,
+
+    -- * Request Lenses
+    listDiscoveredResources_maxResults,
+    listDiscoveredResources_nextToken,
+    listDiscoveredResources_progressUpdateStream,
+    listDiscoveredResources_migrationTaskName,
+
+    -- * Destructuring the Response
+    ListDiscoveredResourcesResponse (..),
+    newListDiscoveredResourcesResponse,
+
+    -- * Response Lenses
+    listDiscoveredResourcesResponse_discoveredResourceList,
+    listDiscoveredResourcesResponse_nextToken,
+    listDiscoveredResourcesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListDiscoveredResources' smart constructor.
+data ListDiscoveredResources = ListDiscoveredResources'
+  { -- | The maximum number of results returned per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If a @NextToken@ was returned by a previous call, there are more results
+    -- available. To retrieve the next page of results, make the call again
+    -- using the returned token in @NextToken@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | The name of the MigrationTask. /Do not store personal data in this
+    -- field./
+    migrationTaskName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDiscoveredResources' 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', 'listDiscoveredResources_maxResults' - The maximum number of results returned per page.
+--
+-- 'nextToken', 'listDiscoveredResources_nextToken' - If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+--
+-- 'progressUpdateStream', 'listDiscoveredResources_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'listDiscoveredResources_migrationTaskName' - The name of the MigrationTask. /Do not store personal data in this
+-- field./
+newListDiscoveredResources ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  ListDiscoveredResources
+newListDiscoveredResources
+  pProgressUpdateStream_
+  pMigrationTaskName_ =
+    ListDiscoveredResources'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        progressUpdateStream = pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_
+      }
+
+-- | The maximum number of results returned per page.
+listDiscoveredResources_maxResults :: Lens.Lens' ListDiscoveredResources (Prelude.Maybe Prelude.Natural)
+listDiscoveredResources_maxResults = Lens.lens (\ListDiscoveredResources' {maxResults} -> maxResults) (\s@ListDiscoveredResources' {} a -> s {maxResults = a} :: ListDiscoveredResources)
+
+-- | If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+listDiscoveredResources_nextToken :: Lens.Lens' ListDiscoveredResources (Prelude.Maybe Prelude.Text)
+listDiscoveredResources_nextToken = Lens.lens (\ListDiscoveredResources' {nextToken} -> nextToken) (\s@ListDiscoveredResources' {} a -> s {nextToken = a} :: ListDiscoveredResources)
+
+-- | The name of the ProgressUpdateStream.
+listDiscoveredResources_progressUpdateStream :: Lens.Lens' ListDiscoveredResources Prelude.Text
+listDiscoveredResources_progressUpdateStream = Lens.lens (\ListDiscoveredResources' {progressUpdateStream} -> progressUpdateStream) (\s@ListDiscoveredResources' {} a -> s {progressUpdateStream = a} :: ListDiscoveredResources)
+
+-- | The name of the MigrationTask. /Do not store personal data in this
+-- field./
+listDiscoveredResources_migrationTaskName :: Lens.Lens' ListDiscoveredResources Prelude.Text
+listDiscoveredResources_migrationTaskName = Lens.lens (\ListDiscoveredResources' {migrationTaskName} -> migrationTaskName) (\s@ListDiscoveredResources' {} a -> s {migrationTaskName = a} :: ListDiscoveredResources)
+
+instance Core.AWSPager ListDiscoveredResources where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDiscoveredResourcesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listDiscoveredResourcesResponse_discoveredResourceList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDiscoveredResources_nextToken
+          Lens..~ rs
+          Lens.^? listDiscoveredResourcesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDiscoveredResources where
+  type
+    AWSResponse ListDiscoveredResources =
+      ListDiscoveredResourcesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDiscoveredResourcesResponse'
+            Prelude.<$> ( x
+                            Data..?> "DiscoveredResourceList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDiscoveredResources where
+  hashWithSalt _salt ListDiscoveredResources' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+
+instance Prelude.NFData ListDiscoveredResources where
+  rnf ListDiscoveredResources' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+
+instance Data.ToHeaders ListDiscoveredResources where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.ListDiscoveredResources" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListDiscoveredResources where
+  toJSON ListDiscoveredResources' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName)
+          ]
+      )
+
+instance Data.ToPath ListDiscoveredResources where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListDiscoveredResources where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListDiscoveredResourcesResponse' smart constructor.
+data ListDiscoveredResourcesResponse = ListDiscoveredResourcesResponse'
+  { -- | Returned list of discovered resources associated with the given
+    -- MigrationTask.
+    discoveredResourceList :: Prelude.Maybe [DiscoveredResource],
+    -- | If there are more discovered resources than the max result, return the
+    -- next token to be passed to the next call as a bookmark of where to start
+    -- from.
+    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 'ListDiscoveredResourcesResponse' 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:
+--
+-- 'discoveredResourceList', 'listDiscoveredResourcesResponse_discoveredResourceList' - Returned list of discovered resources associated with the given
+-- MigrationTask.
+--
+-- 'nextToken', 'listDiscoveredResourcesResponse_nextToken' - If there are more discovered resources than the max result, return the
+-- next token to be passed to the next call as a bookmark of where to start
+-- from.
+--
+-- 'httpStatus', 'listDiscoveredResourcesResponse_httpStatus' - The response's http status code.
+newListDiscoveredResourcesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDiscoveredResourcesResponse
+newListDiscoveredResourcesResponse pHttpStatus_ =
+  ListDiscoveredResourcesResponse'
+    { discoveredResourceList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returned list of discovered resources associated with the given
+-- MigrationTask.
+listDiscoveredResourcesResponse_discoveredResourceList :: Lens.Lens' ListDiscoveredResourcesResponse (Prelude.Maybe [DiscoveredResource])
+listDiscoveredResourcesResponse_discoveredResourceList = Lens.lens (\ListDiscoveredResourcesResponse' {discoveredResourceList} -> discoveredResourceList) (\s@ListDiscoveredResourcesResponse' {} a -> s {discoveredResourceList = a} :: ListDiscoveredResourcesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If there are more discovered resources than the max result, return the
+-- next token to be passed to the next call as a bookmark of where to start
+-- from.
+listDiscoveredResourcesResponse_nextToken :: Lens.Lens' ListDiscoveredResourcesResponse (Prelude.Maybe Prelude.Text)
+listDiscoveredResourcesResponse_nextToken = Lens.lens (\ListDiscoveredResourcesResponse' {nextToken} -> nextToken) (\s@ListDiscoveredResourcesResponse' {} a -> s {nextToken = a} :: ListDiscoveredResourcesResponse)
+
+-- | The response's http status code.
+listDiscoveredResourcesResponse_httpStatus :: Lens.Lens' ListDiscoveredResourcesResponse Prelude.Int
+listDiscoveredResourcesResponse_httpStatus = Lens.lens (\ListDiscoveredResourcesResponse' {httpStatus} -> httpStatus) (\s@ListDiscoveredResourcesResponse' {} a -> s {httpStatus = a} :: ListDiscoveredResourcesResponse)
+
+instance
+  Prelude.NFData
+    ListDiscoveredResourcesResponse
+  where
+  rnf ListDiscoveredResourcesResponse' {..} =
+    Prelude.rnf discoveredResourceList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/ListMigrationTasks.hs b/gen/Amazonka/MigrationHub/ListMigrationTasks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/ListMigrationTasks.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.MigrationHub.ListMigrationTasks
+-- 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 all, or filtered by resource name, migration tasks associated with
+-- the user account making this call. This API has the following traits:
+--
+-- -   Can show a summary list of the most recent migration tasks.
+--
+-- -   Can show a summary list of migration tasks associated with a given
+--     discovered resource.
+--
+-- -   Lists migration tasks in a paginated interface.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHub.ListMigrationTasks
+  ( -- * Creating a Request
+    ListMigrationTasks (..),
+    newListMigrationTasks,
+
+    -- * Request Lenses
+    listMigrationTasks_maxResults,
+    listMigrationTasks_nextToken,
+    listMigrationTasks_resourceName,
+
+    -- * Destructuring the Response
+    ListMigrationTasksResponse (..),
+    newListMigrationTasksResponse,
+
+    -- * Response Lenses
+    listMigrationTasksResponse_migrationTaskSummaryList,
+    listMigrationTasksResponse_nextToken,
+    listMigrationTasksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListMigrationTasks' smart constructor.
+data ListMigrationTasks = ListMigrationTasks'
+  { -- | Value to specify how many results are returned per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If a @NextToken@ was returned by a previous call, there are more results
+    -- available. To retrieve the next page of results, make the call again
+    -- using the returned token in @NextToken@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Filter migration tasks by discovered resource name.
+    resourceName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMigrationTasks' 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', 'listMigrationTasks_maxResults' - Value to specify how many results are returned per page.
+--
+-- 'nextToken', 'listMigrationTasks_nextToken' - If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+--
+-- 'resourceName', 'listMigrationTasks_resourceName' - Filter migration tasks by discovered resource name.
+newListMigrationTasks ::
+  ListMigrationTasks
+newListMigrationTasks =
+  ListMigrationTasks'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      resourceName = Prelude.Nothing
+    }
+
+-- | Value to specify how many results are returned per page.
+listMigrationTasks_maxResults :: Lens.Lens' ListMigrationTasks (Prelude.Maybe Prelude.Natural)
+listMigrationTasks_maxResults = Lens.lens (\ListMigrationTasks' {maxResults} -> maxResults) (\s@ListMigrationTasks' {} a -> s {maxResults = a} :: ListMigrationTasks)
+
+-- | If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+listMigrationTasks_nextToken :: Lens.Lens' ListMigrationTasks (Prelude.Maybe Prelude.Text)
+listMigrationTasks_nextToken = Lens.lens (\ListMigrationTasks' {nextToken} -> nextToken) (\s@ListMigrationTasks' {} a -> s {nextToken = a} :: ListMigrationTasks)
+
+-- | Filter migration tasks by discovered resource name.
+listMigrationTasks_resourceName :: Lens.Lens' ListMigrationTasks (Prelude.Maybe Prelude.Text)
+listMigrationTasks_resourceName = Lens.lens (\ListMigrationTasks' {resourceName} -> resourceName) (\s@ListMigrationTasks' {} a -> s {resourceName = a} :: ListMigrationTasks)
+
+instance Core.AWSPager ListMigrationTasks where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listMigrationTasksResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listMigrationTasksResponse_migrationTaskSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listMigrationTasks_nextToken
+          Lens..~ rs
+          Lens.^? listMigrationTasksResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListMigrationTasks where
+  type
+    AWSResponse ListMigrationTasks =
+      ListMigrationTasksResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMigrationTasksResponse'
+            Prelude.<$> ( x
+                            Data..?> "MigrationTaskSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMigrationTasks where
+  hashWithSalt _salt ListMigrationTasks' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData ListMigrationTasks where
+  rnf ListMigrationTasks' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders ListMigrationTasks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.ListMigrationTasks" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListMigrationTasks where
+  toJSON ListMigrationTasks' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("ResourceName" Data..=) Prelude.<$> resourceName
+          ]
+      )
+
+instance Data.ToPath ListMigrationTasks where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListMigrationTasks where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListMigrationTasksResponse' smart constructor.
+data ListMigrationTasksResponse = ListMigrationTasksResponse'
+  { -- | Lists the migration task\'s summary which includes: @MigrationTaskName@,
+    -- @ProgressPercent@, @ProgressUpdateStream@, @Status@, and the
+    -- @UpdateDateTime@ for each task.
+    migrationTaskSummaryList :: Prelude.Maybe [MigrationTaskSummary],
+    -- | If there are more migration tasks than the max result, return the next
+    -- token to be passed to the next call as a bookmark of where to start
+    -- from.
+    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 'ListMigrationTasksResponse' 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:
+--
+-- 'migrationTaskSummaryList', 'listMigrationTasksResponse_migrationTaskSummaryList' - Lists the migration task\'s summary which includes: @MigrationTaskName@,
+-- @ProgressPercent@, @ProgressUpdateStream@, @Status@, and the
+-- @UpdateDateTime@ for each task.
+--
+-- 'nextToken', 'listMigrationTasksResponse_nextToken' - If there are more migration tasks than the max result, return the next
+-- token to be passed to the next call as a bookmark of where to start
+-- from.
+--
+-- 'httpStatus', 'listMigrationTasksResponse_httpStatus' - The response's http status code.
+newListMigrationTasksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMigrationTasksResponse
+newListMigrationTasksResponse pHttpStatus_ =
+  ListMigrationTasksResponse'
+    { migrationTaskSummaryList =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Lists the migration task\'s summary which includes: @MigrationTaskName@,
+-- @ProgressPercent@, @ProgressUpdateStream@, @Status@, and the
+-- @UpdateDateTime@ for each task.
+listMigrationTasksResponse_migrationTaskSummaryList :: Lens.Lens' ListMigrationTasksResponse (Prelude.Maybe [MigrationTaskSummary])
+listMigrationTasksResponse_migrationTaskSummaryList = Lens.lens (\ListMigrationTasksResponse' {migrationTaskSummaryList} -> migrationTaskSummaryList) (\s@ListMigrationTasksResponse' {} a -> s {migrationTaskSummaryList = a} :: ListMigrationTasksResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | If there are more migration tasks than the max result, return the next
+-- token to be passed to the next call as a bookmark of where to start
+-- from.
+listMigrationTasksResponse_nextToken :: Lens.Lens' ListMigrationTasksResponse (Prelude.Maybe Prelude.Text)
+listMigrationTasksResponse_nextToken = Lens.lens (\ListMigrationTasksResponse' {nextToken} -> nextToken) (\s@ListMigrationTasksResponse' {} a -> s {nextToken = a} :: ListMigrationTasksResponse)
+
+-- | The response's http status code.
+listMigrationTasksResponse_httpStatus :: Lens.Lens' ListMigrationTasksResponse Prelude.Int
+listMigrationTasksResponse_httpStatus = Lens.lens (\ListMigrationTasksResponse' {httpStatus} -> httpStatus) (\s@ListMigrationTasksResponse' {} a -> s {httpStatus = a} :: ListMigrationTasksResponse)
+
+instance Prelude.NFData ListMigrationTasksResponse where
+  rnf ListMigrationTasksResponse' {..} =
+    Prelude.rnf migrationTaskSummaryList
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/ListProgressUpdateStreams.hs b/gen/Amazonka/MigrationHub/ListProgressUpdateStreams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/ListProgressUpdateStreams.hs
@@ -0,0 +1,244 @@
+{-# 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.MigrationHub.ListProgressUpdateStreams
+-- 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 progress update streams associated with the user account making
+-- this call.
+--
+-- This operation returns paginated results.
+module Amazonka.MigrationHub.ListProgressUpdateStreams
+  ( -- * Creating a Request
+    ListProgressUpdateStreams (..),
+    newListProgressUpdateStreams,
+
+    -- * Request Lenses
+    listProgressUpdateStreams_maxResults,
+    listProgressUpdateStreams_nextToken,
+
+    -- * Destructuring the Response
+    ListProgressUpdateStreamsResponse (..),
+    newListProgressUpdateStreamsResponse,
+
+    -- * Response Lenses
+    listProgressUpdateStreamsResponse_nextToken,
+    listProgressUpdateStreamsResponse_progressUpdateStreamSummaryList,
+    listProgressUpdateStreamsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListProgressUpdateStreams' smart constructor.
+data ListProgressUpdateStreams = ListProgressUpdateStreams'
+  { -- | Filter to limit the maximum number of results to list per page.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If a @NextToken@ was returned by a previous call, there are more results
+    -- available. To retrieve the next page of results, make the call again
+    -- using the returned token in @NextToken@.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProgressUpdateStreams' 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', 'listProgressUpdateStreams_maxResults' - Filter to limit the maximum number of results to list per page.
+--
+-- 'nextToken', 'listProgressUpdateStreams_nextToken' - If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+newListProgressUpdateStreams ::
+  ListProgressUpdateStreams
+newListProgressUpdateStreams =
+  ListProgressUpdateStreams'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Filter to limit the maximum number of results to list per page.
+listProgressUpdateStreams_maxResults :: Lens.Lens' ListProgressUpdateStreams (Prelude.Maybe Prelude.Natural)
+listProgressUpdateStreams_maxResults = Lens.lens (\ListProgressUpdateStreams' {maxResults} -> maxResults) (\s@ListProgressUpdateStreams' {} a -> s {maxResults = a} :: ListProgressUpdateStreams)
+
+-- | If a @NextToken@ was returned by a previous call, there are more results
+-- available. To retrieve the next page of results, make the call again
+-- using the returned token in @NextToken@.
+listProgressUpdateStreams_nextToken :: Lens.Lens' ListProgressUpdateStreams (Prelude.Maybe Prelude.Text)
+listProgressUpdateStreams_nextToken = Lens.lens (\ListProgressUpdateStreams' {nextToken} -> nextToken) (\s@ListProgressUpdateStreams' {} a -> s {nextToken = a} :: ListProgressUpdateStreams)
+
+instance Core.AWSPager ListProgressUpdateStreams where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listProgressUpdateStreamsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listProgressUpdateStreamsResponse_progressUpdateStreamSummaryList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listProgressUpdateStreams_nextToken
+          Lens..~ rs
+          Lens.^? listProgressUpdateStreamsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListProgressUpdateStreams where
+  type
+    AWSResponse ListProgressUpdateStreams =
+      ListProgressUpdateStreamsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListProgressUpdateStreamsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "ProgressUpdateStreamSummaryList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListProgressUpdateStreams where
+  hashWithSalt _salt ListProgressUpdateStreams' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListProgressUpdateStreams where
+  rnf ListProgressUpdateStreams' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListProgressUpdateStreams where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.ListProgressUpdateStreams" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListProgressUpdateStreams where
+  toJSON ListProgressUpdateStreams' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListProgressUpdateStreams where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListProgressUpdateStreams where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListProgressUpdateStreamsResponse' smart constructor.
+data ListProgressUpdateStreamsResponse = ListProgressUpdateStreamsResponse'
+  { -- | If there are more streams created than the max result, return the next
+    -- token to be passed to the next call as a bookmark of where to start
+    -- from.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of progress update streams up to the max number of results passed
+    -- in the input.
+    progressUpdateStreamSummaryList :: Prelude.Maybe [ProgressUpdateStreamSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListProgressUpdateStreamsResponse' 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', 'listProgressUpdateStreamsResponse_nextToken' - If there are more streams created than the max result, return the next
+-- token to be passed to the next call as a bookmark of where to start
+-- from.
+--
+-- 'progressUpdateStreamSummaryList', 'listProgressUpdateStreamsResponse_progressUpdateStreamSummaryList' - List of progress update streams up to the max number of results passed
+-- in the input.
+--
+-- 'httpStatus', 'listProgressUpdateStreamsResponse_httpStatus' - The response's http status code.
+newListProgressUpdateStreamsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListProgressUpdateStreamsResponse
+newListProgressUpdateStreamsResponse pHttpStatus_ =
+  ListProgressUpdateStreamsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      progressUpdateStreamSummaryList =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If there are more streams created than the max result, return the next
+-- token to be passed to the next call as a bookmark of where to start
+-- from.
+listProgressUpdateStreamsResponse_nextToken :: Lens.Lens' ListProgressUpdateStreamsResponse (Prelude.Maybe Prelude.Text)
+listProgressUpdateStreamsResponse_nextToken = Lens.lens (\ListProgressUpdateStreamsResponse' {nextToken} -> nextToken) (\s@ListProgressUpdateStreamsResponse' {} a -> s {nextToken = a} :: ListProgressUpdateStreamsResponse)
+
+-- | List of progress update streams up to the max number of results passed
+-- in the input.
+listProgressUpdateStreamsResponse_progressUpdateStreamSummaryList :: Lens.Lens' ListProgressUpdateStreamsResponse (Prelude.Maybe [ProgressUpdateStreamSummary])
+listProgressUpdateStreamsResponse_progressUpdateStreamSummaryList = Lens.lens (\ListProgressUpdateStreamsResponse' {progressUpdateStreamSummaryList} -> progressUpdateStreamSummaryList) (\s@ListProgressUpdateStreamsResponse' {} a -> s {progressUpdateStreamSummaryList = a} :: ListProgressUpdateStreamsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listProgressUpdateStreamsResponse_httpStatus :: Lens.Lens' ListProgressUpdateStreamsResponse Prelude.Int
+listProgressUpdateStreamsResponse_httpStatus = Lens.lens (\ListProgressUpdateStreamsResponse' {httpStatus} -> httpStatus) (\s@ListProgressUpdateStreamsResponse' {} a -> s {httpStatus = a} :: ListProgressUpdateStreamsResponse)
+
+instance
+  Prelude.NFData
+    ListProgressUpdateStreamsResponse
+  where
+  rnf ListProgressUpdateStreamsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf progressUpdateStreamSummaryList
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/NotifyApplicationState.hs b/gen/Amazonka/MigrationHub/NotifyApplicationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/NotifyApplicationState.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.MigrationHub.NotifyApplicationState
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the migration state of an application. For a given application
+-- identified by the value passed to @ApplicationId@, its status is set or
+-- updated by passing one of three values to @Status@:
+-- @NOT_STARTED | IN_PROGRESS | COMPLETED@.
+module Amazonka.MigrationHub.NotifyApplicationState
+  ( -- * Creating a Request
+    NotifyApplicationState (..),
+    newNotifyApplicationState,
+
+    -- * Request Lenses
+    notifyApplicationState_dryRun,
+    notifyApplicationState_updateDateTime,
+    notifyApplicationState_applicationId,
+    notifyApplicationState_status,
+
+    -- * Destructuring the Response
+    NotifyApplicationStateResponse (..),
+    newNotifyApplicationStateResponse,
+
+    -- * Response Lenses
+    notifyApplicationStateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newNotifyApplicationState' smart constructor.
+data NotifyApplicationState = NotifyApplicationState'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The timestamp when the application state changed.
+    updateDateTime :: Prelude.Maybe Data.POSIX,
+    -- | The configurationId in Application Discovery Service that uniquely
+    -- identifies the grouped application.
+    applicationId :: Prelude.Text,
+    -- | Status of the application - Not Started, In-Progress, Complete.
+    status :: ApplicationStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotifyApplicationState' 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:
+--
+-- 'dryRun', 'notifyApplicationState_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'updateDateTime', 'notifyApplicationState_updateDateTime' - The timestamp when the application state changed.
+--
+-- 'applicationId', 'notifyApplicationState_applicationId' - The configurationId in Application Discovery Service that uniquely
+-- identifies the grouped application.
+--
+-- 'status', 'notifyApplicationState_status' - Status of the application - Not Started, In-Progress, Complete.
+newNotifyApplicationState ::
+  -- | 'applicationId'
+  Prelude.Text ->
+  -- | 'status'
+  ApplicationStatus ->
+  NotifyApplicationState
+newNotifyApplicationState pApplicationId_ pStatus_ =
+  NotifyApplicationState'
+    { dryRun = Prelude.Nothing,
+      updateDateTime = Prelude.Nothing,
+      applicationId = pApplicationId_,
+      status = pStatus_
+    }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+notifyApplicationState_dryRun :: Lens.Lens' NotifyApplicationState (Prelude.Maybe Prelude.Bool)
+notifyApplicationState_dryRun = Lens.lens (\NotifyApplicationState' {dryRun} -> dryRun) (\s@NotifyApplicationState' {} a -> s {dryRun = a} :: NotifyApplicationState)
+
+-- | The timestamp when the application state changed.
+notifyApplicationState_updateDateTime :: Lens.Lens' NotifyApplicationState (Prelude.Maybe Prelude.UTCTime)
+notifyApplicationState_updateDateTime = Lens.lens (\NotifyApplicationState' {updateDateTime} -> updateDateTime) (\s@NotifyApplicationState' {} a -> s {updateDateTime = a} :: NotifyApplicationState) Prelude.. Lens.mapping Data._Time
+
+-- | The configurationId in Application Discovery Service that uniquely
+-- identifies the grouped application.
+notifyApplicationState_applicationId :: Lens.Lens' NotifyApplicationState Prelude.Text
+notifyApplicationState_applicationId = Lens.lens (\NotifyApplicationState' {applicationId} -> applicationId) (\s@NotifyApplicationState' {} a -> s {applicationId = a} :: NotifyApplicationState)
+
+-- | Status of the application - Not Started, In-Progress, Complete.
+notifyApplicationState_status :: Lens.Lens' NotifyApplicationState ApplicationStatus
+notifyApplicationState_status = Lens.lens (\NotifyApplicationState' {status} -> status) (\s@NotifyApplicationState' {} a -> s {status = a} :: NotifyApplicationState)
+
+instance Core.AWSRequest NotifyApplicationState where
+  type
+    AWSResponse NotifyApplicationState =
+      NotifyApplicationStateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          NotifyApplicationStateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable NotifyApplicationState where
+  hashWithSalt _salt NotifyApplicationState' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` updateDateTime
+      `Prelude.hashWithSalt` applicationId
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData NotifyApplicationState where
+  rnf NotifyApplicationState' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf updateDateTime
+      `Prelude.seq` Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToHeaders NotifyApplicationState where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.NotifyApplicationState" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON NotifyApplicationState where
+  toJSON NotifyApplicationState' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            ("UpdateDateTime" Data..=)
+              Prelude.<$> updateDateTime,
+            Prelude.Just ("ApplicationId" Data..= applicationId),
+            Prelude.Just ("Status" Data..= status)
+          ]
+      )
+
+instance Data.ToPath NotifyApplicationState where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery NotifyApplicationState where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newNotifyApplicationStateResponse' smart constructor.
+data NotifyApplicationStateResponse = NotifyApplicationStateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotifyApplicationStateResponse' 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', 'notifyApplicationStateResponse_httpStatus' - The response's http status code.
+newNotifyApplicationStateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  NotifyApplicationStateResponse
+newNotifyApplicationStateResponse pHttpStatus_ =
+  NotifyApplicationStateResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+notifyApplicationStateResponse_httpStatus :: Lens.Lens' NotifyApplicationStateResponse Prelude.Int
+notifyApplicationStateResponse_httpStatus = Lens.lens (\NotifyApplicationStateResponse' {httpStatus} -> httpStatus) (\s@NotifyApplicationStateResponse' {} a -> s {httpStatus = a} :: NotifyApplicationStateResponse)
+
+instance
+  Prelude.NFData
+    NotifyApplicationStateResponse
+  where
+  rnf NotifyApplicationStateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/NotifyMigrationTaskState.hs b/gen/Amazonka/MigrationHub/NotifyMigrationTaskState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/NotifyMigrationTaskState.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.MigrationHub.NotifyMigrationTaskState
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Notifies Migration Hub of the current status, progress, or other detail
+-- regarding a migration task. This API has the following traits:
+--
+-- -   Migration tools will call the @NotifyMigrationTaskState@ API to
+--     share the latest progress and status.
+--
+-- -   @MigrationTaskName@ is used for addressing updates to the correct
+--     target.
+--
+-- -   @ProgressUpdateStream@ is used for access control and to provide a
+--     namespace for each migration tool.
+module Amazonka.MigrationHub.NotifyMigrationTaskState
+  ( -- * Creating a Request
+    NotifyMigrationTaskState (..),
+    newNotifyMigrationTaskState,
+
+    -- * Request Lenses
+    notifyMigrationTaskState_dryRun,
+    notifyMigrationTaskState_progressUpdateStream,
+    notifyMigrationTaskState_migrationTaskName,
+    notifyMigrationTaskState_task,
+    notifyMigrationTaskState_updateDateTime,
+    notifyMigrationTaskState_nextUpdateSeconds,
+
+    -- * Destructuring the Response
+    NotifyMigrationTaskStateResponse (..),
+    newNotifyMigrationTaskStateResponse,
+
+    -- * Response Lenses
+    notifyMigrationTaskStateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newNotifyMigrationTaskState' smart constructor.
+data NotifyMigrationTaskState = NotifyMigrationTaskState'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | Unique identifier that references the migration task. /Do not store
+    -- personal data in this field./
+    migrationTaskName :: Prelude.Text,
+    -- | Information about the task\'s progress and status.
+    task :: Task,
+    -- | The timestamp when the task was gathered.
+    updateDateTime :: Data.POSIX,
+    -- | Number of seconds after the UpdateDateTime within which the Migration
+    -- Hub can expect an update. If Migration Hub does not receive an update
+    -- within the specified interval, then the migration task will be
+    -- considered stale.
+    nextUpdateSeconds :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotifyMigrationTaskState' 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:
+--
+-- 'dryRun', 'notifyMigrationTaskState_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStream', 'notifyMigrationTaskState_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'notifyMigrationTaskState_migrationTaskName' - Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+--
+-- 'task', 'notifyMigrationTaskState_task' - Information about the task\'s progress and status.
+--
+-- 'updateDateTime', 'notifyMigrationTaskState_updateDateTime' - The timestamp when the task was gathered.
+--
+-- 'nextUpdateSeconds', 'notifyMigrationTaskState_nextUpdateSeconds' - Number of seconds after the UpdateDateTime within which the Migration
+-- Hub can expect an update. If Migration Hub does not receive an update
+-- within the specified interval, then the migration task will be
+-- considered stale.
+newNotifyMigrationTaskState ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  -- | 'task'
+  Task ->
+  -- | 'updateDateTime'
+  Prelude.UTCTime ->
+  -- | 'nextUpdateSeconds'
+  Prelude.Natural ->
+  NotifyMigrationTaskState
+newNotifyMigrationTaskState
+  pProgressUpdateStream_
+  pMigrationTaskName_
+  pTask_
+  pUpdateDateTime_
+  pNextUpdateSeconds_ =
+    NotifyMigrationTaskState'
+      { dryRun = Prelude.Nothing,
+        progressUpdateStream = pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_,
+        task = pTask_,
+        updateDateTime =
+          Data._Time Lens.# pUpdateDateTime_,
+        nextUpdateSeconds = pNextUpdateSeconds_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+notifyMigrationTaskState_dryRun :: Lens.Lens' NotifyMigrationTaskState (Prelude.Maybe Prelude.Bool)
+notifyMigrationTaskState_dryRun = Lens.lens (\NotifyMigrationTaskState' {dryRun} -> dryRun) (\s@NotifyMigrationTaskState' {} a -> s {dryRun = a} :: NotifyMigrationTaskState)
+
+-- | The name of the ProgressUpdateStream.
+notifyMigrationTaskState_progressUpdateStream :: Lens.Lens' NotifyMigrationTaskState Prelude.Text
+notifyMigrationTaskState_progressUpdateStream = Lens.lens (\NotifyMigrationTaskState' {progressUpdateStream} -> progressUpdateStream) (\s@NotifyMigrationTaskState' {} a -> s {progressUpdateStream = a} :: NotifyMigrationTaskState)
+
+-- | Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+notifyMigrationTaskState_migrationTaskName :: Lens.Lens' NotifyMigrationTaskState Prelude.Text
+notifyMigrationTaskState_migrationTaskName = Lens.lens (\NotifyMigrationTaskState' {migrationTaskName} -> migrationTaskName) (\s@NotifyMigrationTaskState' {} a -> s {migrationTaskName = a} :: NotifyMigrationTaskState)
+
+-- | Information about the task\'s progress and status.
+notifyMigrationTaskState_task :: Lens.Lens' NotifyMigrationTaskState Task
+notifyMigrationTaskState_task = Lens.lens (\NotifyMigrationTaskState' {task} -> task) (\s@NotifyMigrationTaskState' {} a -> s {task = a} :: NotifyMigrationTaskState)
+
+-- | The timestamp when the task was gathered.
+notifyMigrationTaskState_updateDateTime :: Lens.Lens' NotifyMigrationTaskState Prelude.UTCTime
+notifyMigrationTaskState_updateDateTime = Lens.lens (\NotifyMigrationTaskState' {updateDateTime} -> updateDateTime) (\s@NotifyMigrationTaskState' {} a -> s {updateDateTime = a} :: NotifyMigrationTaskState) Prelude.. Data._Time
+
+-- | Number of seconds after the UpdateDateTime within which the Migration
+-- Hub can expect an update. If Migration Hub does not receive an update
+-- within the specified interval, then the migration task will be
+-- considered stale.
+notifyMigrationTaskState_nextUpdateSeconds :: Lens.Lens' NotifyMigrationTaskState Prelude.Natural
+notifyMigrationTaskState_nextUpdateSeconds = Lens.lens (\NotifyMigrationTaskState' {nextUpdateSeconds} -> nextUpdateSeconds) (\s@NotifyMigrationTaskState' {} a -> s {nextUpdateSeconds = a} :: NotifyMigrationTaskState)
+
+instance Core.AWSRequest NotifyMigrationTaskState where
+  type
+    AWSResponse NotifyMigrationTaskState =
+      NotifyMigrationTaskStateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          NotifyMigrationTaskStateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable NotifyMigrationTaskState where
+  hashWithSalt _salt NotifyMigrationTaskState' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+      `Prelude.hashWithSalt` task
+      `Prelude.hashWithSalt` updateDateTime
+      `Prelude.hashWithSalt` nextUpdateSeconds
+
+instance Prelude.NFData NotifyMigrationTaskState where
+  rnf NotifyMigrationTaskState' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+      `Prelude.seq` Prelude.rnf task
+      `Prelude.seq` Prelude.rnf updateDateTime
+      `Prelude.seq` Prelude.rnf nextUpdateSeconds
+
+instance Data.ToHeaders NotifyMigrationTaskState where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.NotifyMigrationTaskState" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON NotifyMigrationTaskState where
+  toJSON NotifyMigrationTaskState' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName),
+            Prelude.Just ("Task" Data..= task),
+            Prelude.Just
+              ("UpdateDateTime" Data..= updateDateTime),
+            Prelude.Just
+              ("NextUpdateSeconds" Data..= nextUpdateSeconds)
+          ]
+      )
+
+instance Data.ToPath NotifyMigrationTaskState where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery NotifyMigrationTaskState where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newNotifyMigrationTaskStateResponse' smart constructor.
+data NotifyMigrationTaskStateResponse = NotifyMigrationTaskStateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotifyMigrationTaskStateResponse' 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', 'notifyMigrationTaskStateResponse_httpStatus' - The response's http status code.
+newNotifyMigrationTaskStateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  NotifyMigrationTaskStateResponse
+newNotifyMigrationTaskStateResponse pHttpStatus_ =
+  NotifyMigrationTaskStateResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+notifyMigrationTaskStateResponse_httpStatus :: Lens.Lens' NotifyMigrationTaskStateResponse Prelude.Int
+notifyMigrationTaskStateResponse_httpStatus = Lens.lens (\NotifyMigrationTaskStateResponse' {httpStatus} -> httpStatus) (\s@NotifyMigrationTaskStateResponse' {} a -> s {httpStatus = a} :: NotifyMigrationTaskStateResponse)
+
+instance
+  Prelude.NFData
+    NotifyMigrationTaskStateResponse
+  where
+  rnf NotifyMigrationTaskStateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/PutResourceAttributes.hs b/gen/Amazonka/MigrationHub/PutResourceAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/PutResourceAttributes.hs
@@ -0,0 +1,297 @@
+{-# 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.MigrationHub.PutResourceAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides identifying details of the resource being migrated so that it
+-- can be associated in the Application Discovery Service repository. This
+-- association occurs asynchronously after @PutResourceAttributes@ returns.
+--
+-- -   Keep in mind that subsequent calls to PutResourceAttributes will
+--     override previously stored attributes. For example, if it is first
+--     called with a MAC address, but later, it is desired to /add/ an IP
+--     address, it will then be required to call it with /both/ the IP and
+--     MAC addresses to prevent overriding the MAC address.
+--
+-- -   Note the instructions regarding the special use case of the
+--     <https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#migrationhub-PutResourceAttributes-request-ResourceAttributeList ResourceAttributeList>
+--     parameter when specifying any \"VM\" related value.
+--
+-- Because this is an asynchronous call, it will always return 200, whether
+-- an association occurs or not. To confirm if an association was found
+-- based on the provided details, call @ListDiscoveredResources@.
+module Amazonka.MigrationHub.PutResourceAttributes
+  ( -- * Creating a Request
+    PutResourceAttributes (..),
+    newPutResourceAttributes,
+
+    -- * Request Lenses
+    putResourceAttributes_dryRun,
+    putResourceAttributes_progressUpdateStream,
+    putResourceAttributes_migrationTaskName,
+    putResourceAttributes_resourceAttributeList,
+
+    -- * Destructuring the Response
+    PutResourceAttributesResponse (..),
+    newPutResourceAttributesResponse,
+
+    -- * Response Lenses
+    putResourceAttributesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutResourceAttributes' smart constructor.
+data PutResourceAttributes = PutResourceAttributes'
+  { -- | Optional boolean flag to indicate whether any effect should take place.
+    -- Used to test if the caller has permission to make the call.
+    dryRun :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the ProgressUpdateStream.
+    progressUpdateStream :: Prelude.Text,
+    -- | Unique identifier that references the migration task. /Do not store
+    -- personal data in this field./
+    migrationTaskName :: Prelude.Text,
+    -- | Information about the resource that is being migrated. This data will be
+    -- used to map the task to a resource in the Application Discovery Service
+    -- repository.
+    --
+    -- Takes the object array of @ResourceAttribute@ where the @Type@ field is
+    -- reserved for the following values:
+    -- @IPV4_ADDRESS | IPV6_ADDRESS | MAC_ADDRESS | FQDN | VM_MANAGER_ID | VM_MANAGED_OBJECT_REFERENCE | VM_NAME | VM_PATH | BIOS_ID | MOTHERBOARD_SERIAL_NUMBER@
+    -- where the identifying value can be a string up to 256 characters.
+    --
+    -- -   If any \"VM\" related value is set for a @ResourceAttribute@ object,
+    --     it is required that @VM_MANAGER_ID@, as a minimum, is always set. If
+    --     @VM_MANAGER_ID@ is not set, then all \"VM\" fields will be discarded
+    --     and \"VM\" fields will not be used for matching the migration task
+    --     to a server in Application Discovery Service repository. See the
+    --     <https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#API_PutResourceAttributes_Examples Example>
+    --     section below for a use case of specifying \"VM\" related values.
+    --
+    -- -   If a server you are trying to match has multiple IP or MAC
+    --     addresses, you should provide as many as you know in separate
+    --     type\/value pairs passed to the @ResourceAttributeList@ parameter to
+    --     maximize the chances of matching.
+    resourceAttributeList :: Prelude.NonEmpty ResourceAttribute
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourceAttributes' 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:
+--
+-- 'dryRun', 'putResourceAttributes_dryRun' - Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+--
+-- 'progressUpdateStream', 'putResourceAttributes_progressUpdateStream' - The name of the ProgressUpdateStream.
+--
+-- 'migrationTaskName', 'putResourceAttributes_migrationTaskName' - Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+--
+-- 'resourceAttributeList', 'putResourceAttributes_resourceAttributeList' - Information about the resource that is being migrated. This data will be
+-- used to map the task to a resource in the Application Discovery Service
+-- repository.
+--
+-- Takes the object array of @ResourceAttribute@ where the @Type@ field is
+-- reserved for the following values:
+-- @IPV4_ADDRESS | IPV6_ADDRESS | MAC_ADDRESS | FQDN | VM_MANAGER_ID | VM_MANAGED_OBJECT_REFERENCE | VM_NAME | VM_PATH | BIOS_ID | MOTHERBOARD_SERIAL_NUMBER@
+-- where the identifying value can be a string up to 256 characters.
+--
+-- -   If any \"VM\" related value is set for a @ResourceAttribute@ object,
+--     it is required that @VM_MANAGER_ID@, as a minimum, is always set. If
+--     @VM_MANAGER_ID@ is not set, then all \"VM\" fields will be discarded
+--     and \"VM\" fields will not be used for matching the migration task
+--     to a server in Application Discovery Service repository. See the
+--     <https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#API_PutResourceAttributes_Examples Example>
+--     section below for a use case of specifying \"VM\" related values.
+--
+-- -   If a server you are trying to match has multiple IP or MAC
+--     addresses, you should provide as many as you know in separate
+--     type\/value pairs passed to the @ResourceAttributeList@ parameter to
+--     maximize the chances of matching.
+newPutResourceAttributes ::
+  -- | 'progressUpdateStream'
+  Prelude.Text ->
+  -- | 'migrationTaskName'
+  Prelude.Text ->
+  -- | 'resourceAttributeList'
+  Prelude.NonEmpty ResourceAttribute ->
+  PutResourceAttributes
+newPutResourceAttributes
+  pProgressUpdateStream_
+  pMigrationTaskName_
+  pResourceAttributeList_ =
+    PutResourceAttributes'
+      { dryRun = Prelude.Nothing,
+        progressUpdateStream = pProgressUpdateStream_,
+        migrationTaskName = pMigrationTaskName_,
+        resourceAttributeList =
+          Lens.coerced Lens.# pResourceAttributeList_
+      }
+
+-- | Optional boolean flag to indicate whether any effect should take place.
+-- Used to test if the caller has permission to make the call.
+putResourceAttributes_dryRun :: Lens.Lens' PutResourceAttributes (Prelude.Maybe Prelude.Bool)
+putResourceAttributes_dryRun = Lens.lens (\PutResourceAttributes' {dryRun} -> dryRun) (\s@PutResourceAttributes' {} a -> s {dryRun = a} :: PutResourceAttributes)
+
+-- | The name of the ProgressUpdateStream.
+putResourceAttributes_progressUpdateStream :: Lens.Lens' PutResourceAttributes Prelude.Text
+putResourceAttributes_progressUpdateStream = Lens.lens (\PutResourceAttributes' {progressUpdateStream} -> progressUpdateStream) (\s@PutResourceAttributes' {} a -> s {progressUpdateStream = a} :: PutResourceAttributes)
+
+-- | Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+putResourceAttributes_migrationTaskName :: Lens.Lens' PutResourceAttributes Prelude.Text
+putResourceAttributes_migrationTaskName = Lens.lens (\PutResourceAttributes' {migrationTaskName} -> migrationTaskName) (\s@PutResourceAttributes' {} a -> s {migrationTaskName = a} :: PutResourceAttributes)
+
+-- | Information about the resource that is being migrated. This data will be
+-- used to map the task to a resource in the Application Discovery Service
+-- repository.
+--
+-- Takes the object array of @ResourceAttribute@ where the @Type@ field is
+-- reserved for the following values:
+-- @IPV4_ADDRESS | IPV6_ADDRESS | MAC_ADDRESS | FQDN | VM_MANAGER_ID | VM_MANAGED_OBJECT_REFERENCE | VM_NAME | VM_PATH | BIOS_ID | MOTHERBOARD_SERIAL_NUMBER@
+-- where the identifying value can be a string up to 256 characters.
+--
+-- -   If any \"VM\" related value is set for a @ResourceAttribute@ object,
+--     it is required that @VM_MANAGER_ID@, as a minimum, is always set. If
+--     @VM_MANAGER_ID@ is not set, then all \"VM\" fields will be discarded
+--     and \"VM\" fields will not be used for matching the migration task
+--     to a server in Application Discovery Service repository. See the
+--     <https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#API_PutResourceAttributes_Examples Example>
+--     section below for a use case of specifying \"VM\" related values.
+--
+-- -   If a server you are trying to match has multiple IP or MAC
+--     addresses, you should provide as many as you know in separate
+--     type\/value pairs passed to the @ResourceAttributeList@ parameter to
+--     maximize the chances of matching.
+putResourceAttributes_resourceAttributeList :: Lens.Lens' PutResourceAttributes (Prelude.NonEmpty ResourceAttribute)
+putResourceAttributes_resourceAttributeList = Lens.lens (\PutResourceAttributes' {resourceAttributeList} -> resourceAttributeList) (\s@PutResourceAttributes' {} a -> s {resourceAttributeList = a} :: PutResourceAttributes) Prelude.. Lens.coerced
+
+instance Core.AWSRequest PutResourceAttributes where
+  type
+    AWSResponse PutResourceAttributes =
+      PutResourceAttributesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          PutResourceAttributesResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutResourceAttributes where
+  hashWithSalt _salt PutResourceAttributes' {..} =
+    _salt
+      `Prelude.hashWithSalt` dryRun
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` migrationTaskName
+      `Prelude.hashWithSalt` resourceAttributeList
+
+instance Prelude.NFData PutResourceAttributes where
+  rnf PutResourceAttributes' {..} =
+    Prelude.rnf dryRun
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf migrationTaskName
+      `Prelude.seq` Prelude.rnf resourceAttributeList
+
+instance Data.ToHeaders PutResourceAttributes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMigrationHub.PutResourceAttributes" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutResourceAttributes where
+  toJSON PutResourceAttributes' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DryRun" Data..=) Prelude.<$> dryRun,
+            Prelude.Just
+              ( "ProgressUpdateStream"
+                  Data..= progressUpdateStream
+              ),
+            Prelude.Just
+              ("MigrationTaskName" Data..= migrationTaskName),
+            Prelude.Just
+              ( "ResourceAttributeList"
+                  Data..= resourceAttributeList
+              )
+          ]
+      )
+
+instance Data.ToPath PutResourceAttributes where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery PutResourceAttributes where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutResourceAttributesResponse' smart constructor.
+data PutResourceAttributesResponse = PutResourceAttributesResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourceAttributesResponse' 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', 'putResourceAttributesResponse_httpStatus' - The response's http status code.
+newPutResourceAttributesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutResourceAttributesResponse
+newPutResourceAttributesResponse pHttpStatus_ =
+  PutResourceAttributesResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+putResourceAttributesResponse_httpStatus :: Lens.Lens' PutResourceAttributesResponse Prelude.Int
+putResourceAttributesResponse_httpStatus = Lens.lens (\PutResourceAttributesResponse' {httpStatus} -> httpStatus) (\s@PutResourceAttributesResponse' {} a -> s {httpStatus = a} :: PutResourceAttributesResponse)
+
+instance Prelude.NFData PutResourceAttributesResponse where
+  rnf PutResourceAttributesResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MigrationHub/Types.hs b/gen/Amazonka/MigrationHub/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types.hs
@@ -0,0 +1,264 @@
+{-# 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.MigrationHub.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.MigrationHub.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _DryRunOperation,
+    _HomeRegionNotSetException,
+    _InternalServerError,
+    _InvalidInputException,
+    _PolicyErrorException,
+    _ResourceNotFoundException,
+    _ServiceUnavailableException,
+    _ThrottlingException,
+    _UnauthorizedOperation,
+
+    -- * ApplicationStatus
+    ApplicationStatus (..),
+
+    -- * MigrationStatus
+    MigrationStatus (..),
+
+    -- * ResourceAttributeType
+    ResourceAttributeType (..),
+
+    -- * ApplicationState
+    ApplicationState (..),
+    newApplicationState,
+    applicationState_applicationId,
+    applicationState_applicationStatus,
+    applicationState_lastUpdatedTime,
+
+    -- * CreatedArtifact
+    CreatedArtifact (..),
+    newCreatedArtifact,
+    createdArtifact_description,
+    createdArtifact_name,
+
+    -- * DiscoveredResource
+    DiscoveredResource (..),
+    newDiscoveredResource,
+    discoveredResource_description,
+    discoveredResource_configurationId,
+
+    -- * MigrationTask
+    MigrationTask (..),
+    newMigrationTask,
+    migrationTask_migrationTaskName,
+    migrationTask_progressUpdateStream,
+    migrationTask_resourceAttributeList,
+    migrationTask_task,
+    migrationTask_updateDateTime,
+
+    -- * MigrationTaskSummary
+    MigrationTaskSummary (..),
+    newMigrationTaskSummary,
+    migrationTaskSummary_migrationTaskName,
+    migrationTaskSummary_progressPercent,
+    migrationTaskSummary_progressUpdateStream,
+    migrationTaskSummary_status,
+    migrationTaskSummary_statusDetail,
+    migrationTaskSummary_updateDateTime,
+
+    -- * ProgressUpdateStreamSummary
+    ProgressUpdateStreamSummary (..),
+    newProgressUpdateStreamSummary,
+    progressUpdateStreamSummary_progressUpdateStreamName,
+
+    -- * ResourceAttribute
+    ResourceAttribute (..),
+    newResourceAttribute,
+    resourceAttribute_type,
+    resourceAttribute_value,
+
+    -- * Task
+    Task (..),
+    newTask,
+    task_progressPercent,
+    task_statusDetail,
+    task_status,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.MigrationHub.Types.ApplicationState
+import Amazonka.MigrationHub.Types.ApplicationStatus
+import Amazonka.MigrationHub.Types.CreatedArtifact
+import Amazonka.MigrationHub.Types.DiscoveredResource
+import Amazonka.MigrationHub.Types.MigrationStatus
+import Amazonka.MigrationHub.Types.MigrationTask
+import Amazonka.MigrationHub.Types.MigrationTaskSummary
+import Amazonka.MigrationHub.Types.ProgressUpdateStreamSummary
+import Amazonka.MigrationHub.Types.ResourceAttribute
+import Amazonka.MigrationHub.Types.ResourceAttributeType
+import Amazonka.MigrationHub.Types.Task
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2017-05-31@ of the Amazon Migration Hub SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "MigrationHub",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "mgh",
+      Core.signingName = "mgh",
+      Core.version = "2017-05-31",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "MigrationHub",
+      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
+
+-- | You do not have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+
+-- | Exception raised to indicate a successfully authorized action when the
+-- @DryRun@ flag is set to \"true\".
+_DryRunOperation :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DryRunOperation =
+  Core._MatchServiceError
+    defaultService
+    "DryRunOperation"
+
+-- | 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"
+
+-- | Exception raised when an internal, configuration, or dependency error is
+-- encountered.
+_InternalServerError :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerError =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerError"
+
+-- | Exception raised when the provided input violates a policy constraint or
+-- is entered in the wrong format or data type.
+_InvalidInputException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidInputException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidInputException"
+
+-- | Exception raised when there are problems accessing Application Discovery
+-- Service (Application Discovery Service); most likely due to a
+-- misconfigured policy or the @migrationhub-discovery@ role is missing or
+-- not configured correctly.
+_PolicyErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_PolicyErrorException =
+  Core._MatchServiceError
+    defaultService
+    "PolicyErrorException"
+
+-- | Exception raised when the request references a resource (Application
+-- Discovery Service configuration, update stream, migration task, etc.)
+-- that does not exist in Application Discovery Service (Application
+-- Discovery Service) or in Migration Hub\'s repository.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+
+-- | Exception raised when there is an internal, configuration, or dependency
+-- error encountered.
+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceUnavailableException"
+
+-- | The request was denied due to request throttling.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+
+-- | Exception raised to indicate a request was not authorized when the
+-- @DryRun@ flag is set to \"true\".
+_UnauthorizedOperation :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnauthorizedOperation =
+  Core._MatchServiceError
+    defaultService
+    "UnauthorizedOperation"
diff --git a/gen/Amazonka/MigrationHub/Types/ApplicationState.hs b/gen/Amazonka/MigrationHub/Types/ApplicationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/ApplicationState.hs
@@ -0,0 +1,102 @@
+{-# 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.MigrationHub.Types.ApplicationState
+-- 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.MigrationHub.Types.ApplicationState where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types.ApplicationStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | The state of an application discovered through Migration Hub import, the
+-- AWS Agentless Discovery Connector, or the AWS Application Discovery
+-- Agent.
+--
+-- /See:/ 'newApplicationState' smart constructor.
+data ApplicationState = ApplicationState'
+  { -- | The configurationId from the Application Discovery Service that uniquely
+    -- identifies an application.
+    applicationId :: Prelude.Maybe Prelude.Text,
+    -- | The current status of an application.
+    applicationStatus :: Prelude.Maybe ApplicationStatus,
+    -- | The timestamp when the application status was last updated.
+    lastUpdatedTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplicationState' 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:
+--
+-- 'applicationId', 'applicationState_applicationId' - The configurationId from the Application Discovery Service that uniquely
+-- identifies an application.
+--
+-- 'applicationStatus', 'applicationState_applicationStatus' - The current status of an application.
+--
+-- 'lastUpdatedTime', 'applicationState_lastUpdatedTime' - The timestamp when the application status was last updated.
+newApplicationState ::
+  ApplicationState
+newApplicationState =
+  ApplicationState'
+    { applicationId = Prelude.Nothing,
+      applicationStatus = Prelude.Nothing,
+      lastUpdatedTime = Prelude.Nothing
+    }
+
+-- | The configurationId from the Application Discovery Service that uniquely
+-- identifies an application.
+applicationState_applicationId :: Lens.Lens' ApplicationState (Prelude.Maybe Prelude.Text)
+applicationState_applicationId = Lens.lens (\ApplicationState' {applicationId} -> applicationId) (\s@ApplicationState' {} a -> s {applicationId = a} :: ApplicationState)
+
+-- | The current status of an application.
+applicationState_applicationStatus :: Lens.Lens' ApplicationState (Prelude.Maybe ApplicationStatus)
+applicationState_applicationStatus = Lens.lens (\ApplicationState' {applicationStatus} -> applicationStatus) (\s@ApplicationState' {} a -> s {applicationStatus = a} :: ApplicationState)
+
+-- | The timestamp when the application status was last updated.
+applicationState_lastUpdatedTime :: Lens.Lens' ApplicationState (Prelude.Maybe Prelude.UTCTime)
+applicationState_lastUpdatedTime = Lens.lens (\ApplicationState' {lastUpdatedTime} -> lastUpdatedTime) (\s@ApplicationState' {} a -> s {lastUpdatedTime = a} :: ApplicationState) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON ApplicationState where
+  parseJSON =
+    Data.withObject
+      "ApplicationState"
+      ( \x ->
+          ApplicationState'
+            Prelude.<$> (x Data..:? "ApplicationId")
+            Prelude.<*> (x Data..:? "ApplicationStatus")
+            Prelude.<*> (x Data..:? "LastUpdatedTime")
+      )
+
+instance Prelude.Hashable ApplicationState where
+  hashWithSalt _salt ApplicationState' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationId
+      `Prelude.hashWithSalt` applicationStatus
+      `Prelude.hashWithSalt` lastUpdatedTime
+
+instance Prelude.NFData ApplicationState where
+  rnf ApplicationState' {..} =
+    Prelude.rnf applicationId
+      `Prelude.seq` Prelude.rnf applicationStatus
+      `Prelude.seq` Prelude.rnf lastUpdatedTime
diff --git a/gen/Amazonka/MigrationHub/Types/ApplicationStatus.hs b/gen/Amazonka/MigrationHub/Types/ApplicationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/ApplicationStatus.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.MigrationHub.Types.ApplicationStatus
+-- 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.MigrationHub.Types.ApplicationStatus
+  ( ApplicationStatus
+      ( ..,
+        ApplicationStatus_COMPLETED,
+        ApplicationStatus_IN_PROGRESS,
+        ApplicationStatus_NOT_STARTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ApplicationStatus = ApplicationStatus'
+  { fromApplicationStatus ::
+      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 ApplicationStatus_COMPLETED :: ApplicationStatus
+pattern ApplicationStatus_COMPLETED = ApplicationStatus' "COMPLETED"
+
+pattern ApplicationStatus_IN_PROGRESS :: ApplicationStatus
+pattern ApplicationStatus_IN_PROGRESS = ApplicationStatus' "IN_PROGRESS"
+
+pattern ApplicationStatus_NOT_STARTED :: ApplicationStatus
+pattern ApplicationStatus_NOT_STARTED = ApplicationStatus' "NOT_STARTED"
+
+{-# COMPLETE
+  ApplicationStatus_COMPLETED,
+  ApplicationStatus_IN_PROGRESS,
+  ApplicationStatus_NOT_STARTED,
+  ApplicationStatus'
+  #-}
diff --git a/gen/Amazonka/MigrationHub/Types/CreatedArtifact.hs b/gen/Amazonka/MigrationHub/Types/CreatedArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/CreatedArtifact.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.MigrationHub.Types.CreatedArtifact
+-- 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.MigrationHub.Types.CreatedArtifact 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
+
+-- | An ARN of the AWS cloud resource target receiving the migration (e.g.,
+-- AMI, EC2 instance, RDS instance, etc.).
+--
+-- /See:/ 'newCreatedArtifact' smart constructor.
+data CreatedArtifact = CreatedArtifact'
+  { -- | A description that can be free-form text to record additional detail
+    -- about the artifact for clarity or for later reference.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | An ARN that uniquely identifies the result of a migration task.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatedArtifact' 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', 'createdArtifact_description' - A description that can be free-form text to record additional detail
+-- about the artifact for clarity or for later reference.
+--
+-- 'name', 'createdArtifact_name' - An ARN that uniquely identifies the result of a migration task.
+newCreatedArtifact ::
+  -- | 'name'
+  Prelude.Text ->
+  CreatedArtifact
+newCreatedArtifact pName_ =
+  CreatedArtifact'
+    { description = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | A description that can be free-form text to record additional detail
+-- about the artifact for clarity or for later reference.
+createdArtifact_description :: Lens.Lens' CreatedArtifact (Prelude.Maybe Prelude.Text)
+createdArtifact_description = Lens.lens (\CreatedArtifact' {description} -> description) (\s@CreatedArtifact' {} a -> s {description = a} :: CreatedArtifact)
+
+-- | An ARN that uniquely identifies the result of a migration task.
+createdArtifact_name :: Lens.Lens' CreatedArtifact Prelude.Text
+createdArtifact_name = Lens.lens (\CreatedArtifact' {name} -> name) (\s@CreatedArtifact' {} a -> s {name = a} :: CreatedArtifact)
+
+instance Data.FromJSON CreatedArtifact where
+  parseJSON =
+    Data.withObject
+      "CreatedArtifact"
+      ( \x ->
+          CreatedArtifact'
+            Prelude.<$> (x Data..:? "Description")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable CreatedArtifact where
+  hashWithSalt _salt CreatedArtifact' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreatedArtifact where
+  rnf CreatedArtifact' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON CreatedArtifact where
+  toJSON CreatedArtifact' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/MigrationHub/Types/DiscoveredResource.hs b/gen/Amazonka/MigrationHub/Types/DiscoveredResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/DiscoveredResource.hs
@@ -0,0 +1,102 @@
+{-# 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.MigrationHub.Types.DiscoveredResource
+-- 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.MigrationHub.Types.DiscoveredResource 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
+
+-- | Object representing the on-premises resource being migrated.
+--
+-- /See:/ 'newDiscoveredResource' smart constructor.
+data DiscoveredResource = DiscoveredResource'
+  { -- | A description that can be free-form text to record additional detail
+    -- about the discovered resource for clarity or later reference.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The configurationId in Application Discovery Service that uniquely
+    -- identifies the on-premise resource.
+    configurationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DiscoveredResource' 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', 'discoveredResource_description' - A description that can be free-form text to record additional detail
+-- about the discovered resource for clarity or later reference.
+--
+-- 'configurationId', 'discoveredResource_configurationId' - The configurationId in Application Discovery Service that uniquely
+-- identifies the on-premise resource.
+newDiscoveredResource ::
+  -- | 'configurationId'
+  Prelude.Text ->
+  DiscoveredResource
+newDiscoveredResource pConfigurationId_ =
+  DiscoveredResource'
+    { description = Prelude.Nothing,
+      configurationId = pConfigurationId_
+    }
+
+-- | A description that can be free-form text to record additional detail
+-- about the discovered resource for clarity or later reference.
+discoveredResource_description :: Lens.Lens' DiscoveredResource (Prelude.Maybe Prelude.Text)
+discoveredResource_description = Lens.lens (\DiscoveredResource' {description} -> description) (\s@DiscoveredResource' {} a -> s {description = a} :: DiscoveredResource)
+
+-- | The configurationId in Application Discovery Service that uniquely
+-- identifies the on-premise resource.
+discoveredResource_configurationId :: Lens.Lens' DiscoveredResource Prelude.Text
+discoveredResource_configurationId = Lens.lens (\DiscoveredResource' {configurationId} -> configurationId) (\s@DiscoveredResource' {} a -> s {configurationId = a} :: DiscoveredResource)
+
+instance Data.FromJSON DiscoveredResource where
+  parseJSON =
+    Data.withObject
+      "DiscoveredResource"
+      ( \x ->
+          DiscoveredResource'
+            Prelude.<$> (x Data..:? "Description")
+            Prelude.<*> (x Data..: "ConfigurationId")
+      )
+
+instance Prelude.Hashable DiscoveredResource where
+  hashWithSalt _salt DiscoveredResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` configurationId
+
+instance Prelude.NFData DiscoveredResource where
+  rnf DiscoveredResource' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf configurationId
+
+instance Data.ToJSON DiscoveredResource where
+  toJSON DiscoveredResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            Prelude.Just
+              ("ConfigurationId" Data..= configurationId)
+          ]
+      )
diff --git a/gen/Amazonka/MigrationHub/Types/MigrationStatus.hs b/gen/Amazonka/MigrationHub/Types/MigrationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/MigrationStatus.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.MigrationHub.Types.MigrationStatus
+-- 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.MigrationHub.Types.MigrationStatus
+  ( MigrationStatus
+      ( ..,
+        MigrationStatus_COMPLETED,
+        MigrationStatus_FAILED,
+        MigrationStatus_IN_PROGRESS,
+        MigrationStatus_NOT_STARTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MigrationStatus = MigrationStatus'
+  { fromMigrationStatus ::
+      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 MigrationStatus_COMPLETED :: MigrationStatus
+pattern MigrationStatus_COMPLETED = MigrationStatus' "COMPLETED"
+
+pattern MigrationStatus_FAILED :: MigrationStatus
+pattern MigrationStatus_FAILED = MigrationStatus' "FAILED"
+
+pattern MigrationStatus_IN_PROGRESS :: MigrationStatus
+pattern MigrationStatus_IN_PROGRESS = MigrationStatus' "IN_PROGRESS"
+
+pattern MigrationStatus_NOT_STARTED :: MigrationStatus
+pattern MigrationStatus_NOT_STARTED = MigrationStatus' "NOT_STARTED"
+
+{-# COMPLETE
+  MigrationStatus_COMPLETED,
+  MigrationStatus_FAILED,
+  MigrationStatus_IN_PROGRESS,
+  MigrationStatus_NOT_STARTED,
+  MigrationStatus'
+  #-}
diff --git a/gen/Amazonka/MigrationHub/Types/MigrationTask.hs b/gen/Amazonka/MigrationHub/Types/MigrationTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/MigrationTask.hs
@@ -0,0 +1,134 @@
+{-# 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.MigrationHub.Types.MigrationTask
+-- 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.MigrationHub.Types.MigrationTask where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types.ResourceAttribute
+import Amazonka.MigrationHub.Types.Task
+import qualified Amazonka.Prelude as Prelude
+
+-- | Represents a migration task in a migration tool.
+--
+-- /See:/ 'newMigrationTask' smart constructor.
+data MigrationTask = MigrationTask'
+  { -- | Unique identifier that references the migration task. /Do not store
+    -- personal data in this field./
+    migrationTaskName :: Prelude.Maybe Prelude.Text,
+    -- | A name that identifies the vendor of the migration tool being used.
+    progressUpdateStream :: Prelude.Maybe Prelude.Text,
+    -- | Information about the resource that is being migrated. This data will be
+    -- used to map the task to a resource in the Application Discovery Service
+    -- repository.
+    resourceAttributeList :: Prelude.Maybe [ResourceAttribute],
+    -- | Task object encapsulating task information.
+    task :: Prelude.Maybe Task,
+    -- | The timestamp when the task was gathered.
+    updateDateTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MigrationTask' 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:
+--
+-- 'migrationTaskName', 'migrationTask_migrationTaskName' - Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+--
+-- 'progressUpdateStream', 'migrationTask_progressUpdateStream' - A name that identifies the vendor of the migration tool being used.
+--
+-- 'resourceAttributeList', 'migrationTask_resourceAttributeList' - Information about the resource that is being migrated. This data will be
+-- used to map the task to a resource in the Application Discovery Service
+-- repository.
+--
+-- 'task', 'migrationTask_task' - Task object encapsulating task information.
+--
+-- 'updateDateTime', 'migrationTask_updateDateTime' - The timestamp when the task was gathered.
+newMigrationTask ::
+  MigrationTask
+newMigrationTask =
+  MigrationTask'
+    { migrationTaskName = Prelude.Nothing,
+      progressUpdateStream = Prelude.Nothing,
+      resourceAttributeList = Prelude.Nothing,
+      task = Prelude.Nothing,
+      updateDateTime = Prelude.Nothing
+    }
+
+-- | Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+migrationTask_migrationTaskName :: Lens.Lens' MigrationTask (Prelude.Maybe Prelude.Text)
+migrationTask_migrationTaskName = Lens.lens (\MigrationTask' {migrationTaskName} -> migrationTaskName) (\s@MigrationTask' {} a -> s {migrationTaskName = a} :: MigrationTask)
+
+-- | A name that identifies the vendor of the migration tool being used.
+migrationTask_progressUpdateStream :: Lens.Lens' MigrationTask (Prelude.Maybe Prelude.Text)
+migrationTask_progressUpdateStream = Lens.lens (\MigrationTask' {progressUpdateStream} -> progressUpdateStream) (\s@MigrationTask' {} a -> s {progressUpdateStream = a} :: MigrationTask)
+
+-- | Information about the resource that is being migrated. This data will be
+-- used to map the task to a resource in the Application Discovery Service
+-- repository.
+migrationTask_resourceAttributeList :: Lens.Lens' MigrationTask (Prelude.Maybe [ResourceAttribute])
+migrationTask_resourceAttributeList = Lens.lens (\MigrationTask' {resourceAttributeList} -> resourceAttributeList) (\s@MigrationTask' {} a -> s {resourceAttributeList = a} :: MigrationTask) Prelude.. Lens.mapping Lens.coerced
+
+-- | Task object encapsulating task information.
+migrationTask_task :: Lens.Lens' MigrationTask (Prelude.Maybe Task)
+migrationTask_task = Lens.lens (\MigrationTask' {task} -> task) (\s@MigrationTask' {} a -> s {task = a} :: MigrationTask)
+
+-- | The timestamp when the task was gathered.
+migrationTask_updateDateTime :: Lens.Lens' MigrationTask (Prelude.Maybe Prelude.UTCTime)
+migrationTask_updateDateTime = Lens.lens (\MigrationTask' {updateDateTime} -> updateDateTime) (\s@MigrationTask' {} a -> s {updateDateTime = a} :: MigrationTask) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON MigrationTask where
+  parseJSON =
+    Data.withObject
+      "MigrationTask"
+      ( \x ->
+          MigrationTask'
+            Prelude.<$> (x Data..:? "MigrationTaskName")
+            Prelude.<*> (x Data..:? "ProgressUpdateStream")
+            Prelude.<*> ( x
+                            Data..:? "ResourceAttributeList"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Task")
+            Prelude.<*> (x Data..:? "UpdateDateTime")
+      )
+
+instance Prelude.Hashable MigrationTask where
+  hashWithSalt _salt MigrationTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` migrationTaskName
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` resourceAttributeList
+      `Prelude.hashWithSalt` task
+      `Prelude.hashWithSalt` updateDateTime
+
+instance Prelude.NFData MigrationTask where
+  rnf MigrationTask' {..} =
+    Prelude.rnf migrationTaskName
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf resourceAttributeList
+      `Prelude.seq` Prelude.rnf task
+      `Prelude.seq` Prelude.rnf updateDateTime
diff --git a/gen/Amazonka/MigrationHub/Types/MigrationTaskSummary.hs b/gen/Amazonka/MigrationHub/Types/MigrationTaskSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/MigrationTaskSummary.hs
@@ -0,0 +1,144 @@
+{-# 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.MigrationHub.Types.MigrationTaskSummary
+-- 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.MigrationHub.Types.MigrationTaskSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types.MigrationStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | MigrationTaskSummary includes @MigrationTaskName@, @ProgressPercent@,
+-- @ProgressUpdateStream@, @Status@, and @UpdateDateTime@ for each task.
+--
+-- /See:/ 'newMigrationTaskSummary' smart constructor.
+data MigrationTaskSummary = MigrationTaskSummary'
+  { -- | Unique identifier that references the migration task. /Do not store
+    -- personal data in this field./
+    migrationTaskName :: Prelude.Maybe Prelude.Text,
+    -- | Indication of the percentage completion of the task.
+    progressPercent :: Prelude.Maybe Prelude.Natural,
+    -- | An AWS resource used for access control. It should uniquely identify the
+    -- migration tool as it is used for all updates made by the tool.
+    progressUpdateStream :: Prelude.Maybe Prelude.Text,
+    -- | Status of the task.
+    status :: Prelude.Maybe MigrationStatus,
+    -- | Detail information of what is being done within the overall status
+    -- state.
+    statusDetail :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when the task was gathered.
+    updateDateTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MigrationTaskSummary' 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:
+--
+-- 'migrationTaskName', 'migrationTaskSummary_migrationTaskName' - Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+--
+-- 'progressPercent', 'migrationTaskSummary_progressPercent' - Indication of the percentage completion of the task.
+--
+-- 'progressUpdateStream', 'migrationTaskSummary_progressUpdateStream' - An AWS resource used for access control. It should uniquely identify the
+-- migration tool as it is used for all updates made by the tool.
+--
+-- 'status', 'migrationTaskSummary_status' - Status of the task.
+--
+-- 'statusDetail', 'migrationTaskSummary_statusDetail' - Detail information of what is being done within the overall status
+-- state.
+--
+-- 'updateDateTime', 'migrationTaskSummary_updateDateTime' - The timestamp when the task was gathered.
+newMigrationTaskSummary ::
+  MigrationTaskSummary
+newMigrationTaskSummary =
+  MigrationTaskSummary'
+    { migrationTaskName =
+        Prelude.Nothing,
+      progressPercent = Prelude.Nothing,
+      progressUpdateStream = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusDetail = Prelude.Nothing,
+      updateDateTime = Prelude.Nothing
+    }
+
+-- | Unique identifier that references the migration task. /Do not store
+-- personal data in this field./
+migrationTaskSummary_migrationTaskName :: Lens.Lens' MigrationTaskSummary (Prelude.Maybe Prelude.Text)
+migrationTaskSummary_migrationTaskName = Lens.lens (\MigrationTaskSummary' {migrationTaskName} -> migrationTaskName) (\s@MigrationTaskSummary' {} a -> s {migrationTaskName = a} :: MigrationTaskSummary)
+
+-- | Indication of the percentage completion of the task.
+migrationTaskSummary_progressPercent :: Lens.Lens' MigrationTaskSummary (Prelude.Maybe Prelude.Natural)
+migrationTaskSummary_progressPercent = Lens.lens (\MigrationTaskSummary' {progressPercent} -> progressPercent) (\s@MigrationTaskSummary' {} a -> s {progressPercent = a} :: MigrationTaskSummary)
+
+-- | An AWS resource used for access control. It should uniquely identify the
+-- migration tool as it is used for all updates made by the tool.
+migrationTaskSummary_progressUpdateStream :: Lens.Lens' MigrationTaskSummary (Prelude.Maybe Prelude.Text)
+migrationTaskSummary_progressUpdateStream = Lens.lens (\MigrationTaskSummary' {progressUpdateStream} -> progressUpdateStream) (\s@MigrationTaskSummary' {} a -> s {progressUpdateStream = a} :: MigrationTaskSummary)
+
+-- | Status of the task.
+migrationTaskSummary_status :: Lens.Lens' MigrationTaskSummary (Prelude.Maybe MigrationStatus)
+migrationTaskSummary_status = Lens.lens (\MigrationTaskSummary' {status} -> status) (\s@MigrationTaskSummary' {} a -> s {status = a} :: MigrationTaskSummary)
+
+-- | Detail information of what is being done within the overall status
+-- state.
+migrationTaskSummary_statusDetail :: Lens.Lens' MigrationTaskSummary (Prelude.Maybe Prelude.Text)
+migrationTaskSummary_statusDetail = Lens.lens (\MigrationTaskSummary' {statusDetail} -> statusDetail) (\s@MigrationTaskSummary' {} a -> s {statusDetail = a} :: MigrationTaskSummary)
+
+-- | The timestamp when the task was gathered.
+migrationTaskSummary_updateDateTime :: Lens.Lens' MigrationTaskSummary (Prelude.Maybe Prelude.UTCTime)
+migrationTaskSummary_updateDateTime = Lens.lens (\MigrationTaskSummary' {updateDateTime} -> updateDateTime) (\s@MigrationTaskSummary' {} a -> s {updateDateTime = a} :: MigrationTaskSummary) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON MigrationTaskSummary where
+  parseJSON =
+    Data.withObject
+      "MigrationTaskSummary"
+      ( \x ->
+          MigrationTaskSummary'
+            Prelude.<$> (x Data..:? "MigrationTaskName")
+            Prelude.<*> (x Data..:? "ProgressPercent")
+            Prelude.<*> (x Data..:? "ProgressUpdateStream")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "StatusDetail")
+            Prelude.<*> (x Data..:? "UpdateDateTime")
+      )
+
+instance Prelude.Hashable MigrationTaskSummary where
+  hashWithSalt _salt MigrationTaskSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` migrationTaskName
+      `Prelude.hashWithSalt` progressPercent
+      `Prelude.hashWithSalt` progressUpdateStream
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusDetail
+      `Prelude.hashWithSalt` updateDateTime
+
+instance Prelude.NFData MigrationTaskSummary where
+  rnf MigrationTaskSummary' {..} =
+    Prelude.rnf migrationTaskName
+      `Prelude.seq` Prelude.rnf progressPercent
+      `Prelude.seq` Prelude.rnf progressUpdateStream
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusDetail
+      `Prelude.seq` Prelude.rnf updateDateTime
diff --git a/gen/Amazonka/MigrationHub/Types/ProgressUpdateStreamSummary.hs b/gen/Amazonka/MigrationHub/Types/ProgressUpdateStreamSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/ProgressUpdateStreamSummary.hs
@@ -0,0 +1,77 @@
+{-# 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.MigrationHub.Types.ProgressUpdateStreamSummary
+-- 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.MigrationHub.Types.ProgressUpdateStreamSummary 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
+
+-- | Summary of the AWS resource used for access control that is implicitly
+-- linked to your AWS account.
+--
+-- /See:/ 'newProgressUpdateStreamSummary' smart constructor.
+data ProgressUpdateStreamSummary = ProgressUpdateStreamSummary'
+  { -- | The name of the ProgressUpdateStream. /Do not store personal data in
+    -- this field./
+    progressUpdateStreamName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ProgressUpdateStreamSummary' 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:
+--
+-- 'progressUpdateStreamName', 'progressUpdateStreamSummary_progressUpdateStreamName' - The name of the ProgressUpdateStream. /Do not store personal data in
+-- this field./
+newProgressUpdateStreamSummary ::
+  ProgressUpdateStreamSummary
+newProgressUpdateStreamSummary =
+  ProgressUpdateStreamSummary'
+    { progressUpdateStreamName =
+        Prelude.Nothing
+    }
+
+-- | The name of the ProgressUpdateStream. /Do not store personal data in
+-- this field./
+progressUpdateStreamSummary_progressUpdateStreamName :: Lens.Lens' ProgressUpdateStreamSummary (Prelude.Maybe Prelude.Text)
+progressUpdateStreamSummary_progressUpdateStreamName = Lens.lens (\ProgressUpdateStreamSummary' {progressUpdateStreamName} -> progressUpdateStreamName) (\s@ProgressUpdateStreamSummary' {} a -> s {progressUpdateStreamName = a} :: ProgressUpdateStreamSummary)
+
+instance Data.FromJSON ProgressUpdateStreamSummary where
+  parseJSON =
+    Data.withObject
+      "ProgressUpdateStreamSummary"
+      ( \x ->
+          ProgressUpdateStreamSummary'
+            Prelude.<$> (x Data..:? "ProgressUpdateStreamName")
+      )
+
+instance Prelude.Hashable ProgressUpdateStreamSummary where
+  hashWithSalt _salt ProgressUpdateStreamSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` progressUpdateStreamName
+
+instance Prelude.NFData ProgressUpdateStreamSummary where
+  rnf ProgressUpdateStreamSummary' {..} =
+    Prelude.rnf progressUpdateStreamName
diff --git a/gen/Amazonka/MigrationHub/Types/ResourceAttribute.hs b/gen/Amazonka/MigrationHub/Types/ResourceAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/ResourceAttribute.hs
@@ -0,0 +1,112 @@
+{-# 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.MigrationHub.Types.ResourceAttribute
+-- 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.MigrationHub.Types.ResourceAttribute where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types.ResourceAttributeType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Attribute associated with a resource.
+--
+-- Note the corresponding format required per type listed below:
+--
+-- [IPV4]
+--     @x.x.x.x@
+--
+--     /where x is an integer in the range [0,255]/
+--
+-- [IPV6]
+--     @y : y : y : y : y : y : y : y@
+--
+--     /where y is a hexadecimal between 0 and FFFF. [0, FFFF]/
+--
+-- [MAC_ADDRESS]
+--     @^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$@
+--
+-- [FQDN]
+--     @^[^\<>{}\\\\\\\\\/?,=\\\\p{Cntrl}]{1,256}$@
+--
+-- /See:/ 'newResourceAttribute' smart constructor.
+data ResourceAttribute = ResourceAttribute'
+  { -- | Type of resource.
+    type' :: ResourceAttributeType,
+    -- | Value of the resource type.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceAttribute' 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:
+--
+-- 'type'', 'resourceAttribute_type' - Type of resource.
+--
+-- 'value', 'resourceAttribute_value' - Value of the resource type.
+newResourceAttribute ::
+  -- | 'type''
+  ResourceAttributeType ->
+  -- | 'value'
+  Prelude.Text ->
+  ResourceAttribute
+newResourceAttribute pType_ pValue_ =
+  ResourceAttribute' {type' = pType_, value = pValue_}
+
+-- | Type of resource.
+resourceAttribute_type :: Lens.Lens' ResourceAttribute ResourceAttributeType
+resourceAttribute_type = Lens.lens (\ResourceAttribute' {type'} -> type') (\s@ResourceAttribute' {} a -> s {type' = a} :: ResourceAttribute)
+
+-- | Value of the resource type.
+resourceAttribute_value :: Lens.Lens' ResourceAttribute Prelude.Text
+resourceAttribute_value = Lens.lens (\ResourceAttribute' {value} -> value) (\s@ResourceAttribute' {} a -> s {value = a} :: ResourceAttribute)
+
+instance Data.FromJSON ResourceAttribute where
+  parseJSON =
+    Data.withObject
+      "ResourceAttribute"
+      ( \x ->
+          ResourceAttribute'
+            Prelude.<$> (x Data..: "Type")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable ResourceAttribute where
+  hashWithSalt _salt ResourceAttribute' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData ResourceAttribute where
+  rnf ResourceAttribute' {..} =
+    Prelude.rnf type' `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON ResourceAttribute where
+  toJSON ResourceAttribute' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/MigrationHub/Types/ResourceAttributeType.hs b/gen/Amazonka/MigrationHub/Types/ResourceAttributeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/ResourceAttributeType.hs
@@ -0,0 +1,111 @@
+{-# 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.MigrationHub.Types.ResourceAttributeType
+-- 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.MigrationHub.Types.ResourceAttributeType
+  ( ResourceAttributeType
+      ( ..,
+        ResourceAttributeType_BIOS_ID,
+        ResourceAttributeType_FQDN,
+        ResourceAttributeType_IPV4_ADDRESS,
+        ResourceAttributeType_IPV6_ADDRESS,
+        ResourceAttributeType_MAC_ADDRESS,
+        ResourceAttributeType_MOTHERBOARD_SERIAL_NUMBER,
+        ResourceAttributeType_VM_MANAGED_OBJECT_REFERENCE,
+        ResourceAttributeType_VM_MANAGER_ID,
+        ResourceAttributeType_VM_NAME,
+        ResourceAttributeType_VM_PATH
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResourceAttributeType = ResourceAttributeType'
+  { fromResourceAttributeType ::
+      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 ResourceAttributeType_BIOS_ID :: ResourceAttributeType
+pattern ResourceAttributeType_BIOS_ID = ResourceAttributeType' "BIOS_ID"
+
+pattern ResourceAttributeType_FQDN :: ResourceAttributeType
+pattern ResourceAttributeType_FQDN = ResourceAttributeType' "FQDN"
+
+pattern ResourceAttributeType_IPV4_ADDRESS :: ResourceAttributeType
+pattern ResourceAttributeType_IPV4_ADDRESS = ResourceAttributeType' "IPV4_ADDRESS"
+
+pattern ResourceAttributeType_IPV6_ADDRESS :: ResourceAttributeType
+pattern ResourceAttributeType_IPV6_ADDRESS = ResourceAttributeType' "IPV6_ADDRESS"
+
+pattern ResourceAttributeType_MAC_ADDRESS :: ResourceAttributeType
+pattern ResourceAttributeType_MAC_ADDRESS = ResourceAttributeType' "MAC_ADDRESS"
+
+pattern ResourceAttributeType_MOTHERBOARD_SERIAL_NUMBER :: ResourceAttributeType
+pattern ResourceAttributeType_MOTHERBOARD_SERIAL_NUMBER = ResourceAttributeType' "MOTHERBOARD_SERIAL_NUMBER"
+
+pattern ResourceAttributeType_VM_MANAGED_OBJECT_REFERENCE :: ResourceAttributeType
+pattern ResourceAttributeType_VM_MANAGED_OBJECT_REFERENCE = ResourceAttributeType' "VM_MANAGED_OBJECT_REFERENCE"
+
+pattern ResourceAttributeType_VM_MANAGER_ID :: ResourceAttributeType
+pattern ResourceAttributeType_VM_MANAGER_ID = ResourceAttributeType' "VM_MANAGER_ID"
+
+pattern ResourceAttributeType_VM_NAME :: ResourceAttributeType
+pattern ResourceAttributeType_VM_NAME = ResourceAttributeType' "VM_NAME"
+
+pattern ResourceAttributeType_VM_PATH :: ResourceAttributeType
+pattern ResourceAttributeType_VM_PATH = ResourceAttributeType' "VM_PATH"
+
+{-# COMPLETE
+  ResourceAttributeType_BIOS_ID,
+  ResourceAttributeType_FQDN,
+  ResourceAttributeType_IPV4_ADDRESS,
+  ResourceAttributeType_IPV6_ADDRESS,
+  ResourceAttributeType_MAC_ADDRESS,
+  ResourceAttributeType_MOTHERBOARD_SERIAL_NUMBER,
+  ResourceAttributeType_VM_MANAGED_OBJECT_REFERENCE,
+  ResourceAttributeType_VM_MANAGER_ID,
+  ResourceAttributeType_VM_NAME,
+  ResourceAttributeType_VM_PATH,
+  ResourceAttributeType'
+  #-}
diff --git a/gen/Amazonka/MigrationHub/Types/Task.hs b/gen/Amazonka/MigrationHub/Types/Task.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/Types/Task.hs
@@ -0,0 +1,116 @@
+{-# 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.MigrationHub.Types.Task
+-- 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.MigrationHub.Types.Task where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Types.MigrationStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Task object encapsulating task information.
+--
+-- /See:/ 'newTask' smart constructor.
+data Task = Task'
+  { -- | Indication of the percentage completion of the task.
+    progressPercent :: Prelude.Maybe Prelude.Natural,
+    -- | Details of task status as notified by a migration tool. A tool might use
+    -- this field to provide clarifying information about the status that is
+    -- unique to that tool or that explains an error state.
+    statusDetail :: Prelude.Maybe Prelude.Text,
+    -- | Status of the task - Not Started, In-Progress, Complete.
+    status :: MigrationStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Task' 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:
+--
+-- 'progressPercent', 'task_progressPercent' - Indication of the percentage completion of the task.
+--
+-- 'statusDetail', 'task_statusDetail' - Details of task status as notified by a migration tool. A tool might use
+-- this field to provide clarifying information about the status that is
+-- unique to that tool or that explains an error state.
+--
+-- 'status', 'task_status' - Status of the task - Not Started, In-Progress, Complete.
+newTask ::
+  -- | 'status'
+  MigrationStatus ->
+  Task
+newTask pStatus_ =
+  Task'
+    { progressPercent = Prelude.Nothing,
+      statusDetail = Prelude.Nothing,
+      status = pStatus_
+    }
+
+-- | Indication of the percentage completion of the task.
+task_progressPercent :: Lens.Lens' Task (Prelude.Maybe Prelude.Natural)
+task_progressPercent = Lens.lens (\Task' {progressPercent} -> progressPercent) (\s@Task' {} a -> s {progressPercent = a} :: Task)
+
+-- | Details of task status as notified by a migration tool. A tool might use
+-- this field to provide clarifying information about the status that is
+-- unique to that tool or that explains an error state.
+task_statusDetail :: Lens.Lens' Task (Prelude.Maybe Prelude.Text)
+task_statusDetail = Lens.lens (\Task' {statusDetail} -> statusDetail) (\s@Task' {} a -> s {statusDetail = a} :: Task)
+
+-- | Status of the task - Not Started, In-Progress, Complete.
+task_status :: Lens.Lens' Task MigrationStatus
+task_status = Lens.lens (\Task' {status} -> status) (\s@Task' {} a -> s {status = a} :: Task)
+
+instance Data.FromJSON Task where
+  parseJSON =
+    Data.withObject
+      "Task"
+      ( \x ->
+          Task'
+            Prelude.<$> (x Data..:? "ProgressPercent")
+            Prelude.<*> (x Data..:? "StatusDetail")
+            Prelude.<*> (x Data..: "Status")
+      )
+
+instance Prelude.Hashable Task where
+  hashWithSalt _salt Task' {..} =
+    _salt
+      `Prelude.hashWithSalt` progressPercent
+      `Prelude.hashWithSalt` statusDetail
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData Task where
+  rnf Task' {..} =
+    Prelude.rnf progressPercent
+      `Prelude.seq` Prelude.rnf statusDetail
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToJSON Task where
+  toJSON Task' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ProgressPercent" Data..=)
+              Prelude.<$> progressPercent,
+            ("StatusDetail" Data..=) Prelude.<$> statusDetail,
+            Prelude.Just ("Status" Data..= status)
+          ]
+      )
diff --git a/gen/Amazonka/MigrationHub/Waiters.hs b/gen/Amazonka/MigrationHub/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MigrationHub/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.MigrationHub.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.MigrationHub.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MigrationHub.Lens
+import Amazonka.MigrationHub.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/gen/Network/AWS/MigrationHub.hs b/gen/Network/AWS/MigrationHub.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub.hs
+++ /dev/null
@@ -1,211 +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.MigrationHub
--- 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)
---
--- The AWS Migration Hub API methods help to obtain server and application migration status and integrate your resource-specific migration tool by providing a programmatic interface to Migration Hub.
---
---
-module Network.AWS.MigrationHub
-    (
-    -- * Service Configuration
-      migrationHub
-
-    -- * Errors
-    -- $errors
-
-    -- ** AccessDeniedException
-    , _AccessDeniedException
-
-    -- ** DryRunOperation
-    , _DryRunOperation
-
-    -- ** PolicyErrorException
-    , _PolicyErrorException
-
-    -- ** InternalServerError
-    , _InternalServerError
-
-    -- ** InvalidInputException
-    , _InvalidInputException
-
-    -- ** ServiceUnavailableException
-    , _ServiceUnavailableException
-
-    -- ** ResourceNotFoundException
-    , _ResourceNotFoundException
-
-    -- ** UnauthorizedOperation
-    , _UnauthorizedOperation
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** AssociateDiscoveredResource
-    , module Network.AWS.MigrationHub.AssociateDiscoveredResource
-
-    -- ** CreateProgressUpdateStream
-    , module Network.AWS.MigrationHub.CreateProgressUpdateStream
-
-    -- ** ListCreatedArtifacts
-    , module Network.AWS.MigrationHub.ListCreatedArtifacts
-
-    -- ** DisassociateDiscoveredResource
-    , module Network.AWS.MigrationHub.DisassociateDiscoveredResource
-
-    -- ** NotifyApplicationState
-    , module Network.AWS.MigrationHub.NotifyApplicationState
-
-    -- ** DeleteProgressUpdateStream
-    , module Network.AWS.MigrationHub.DeleteProgressUpdateStream
-
-    -- ** ListProgressUpdateStreams
-    , module Network.AWS.MigrationHub.ListProgressUpdateStreams
-
-    -- ** DisassociateCreatedArtifact
-    , module Network.AWS.MigrationHub.DisassociateCreatedArtifact
-
-    -- ** ImportMigrationTask
-    , module Network.AWS.MigrationHub.ImportMigrationTask
-
-    -- ** DescribeMigrationTask
-    , module Network.AWS.MigrationHub.DescribeMigrationTask
-
-    -- ** PutResourceAttributes
-    , module Network.AWS.MigrationHub.PutResourceAttributes
-
-    -- ** AssociateCreatedArtifact
-    , module Network.AWS.MigrationHub.AssociateCreatedArtifact
-
-    -- ** NotifyMigrationTaskState
-    , module Network.AWS.MigrationHub.NotifyMigrationTaskState
-
-    -- ** DescribeApplicationState
-    , module Network.AWS.MigrationHub.DescribeApplicationState
-
-    -- ** ListMigrationTasks
-    , module Network.AWS.MigrationHub.ListMigrationTasks
-
-    -- ** ListDiscoveredResources
-    , module Network.AWS.MigrationHub.ListDiscoveredResources
-
-    -- * Types
-
-    -- ** ApplicationStatus
-    , ApplicationStatus (..)
-
-    -- ** MigrationStatus
-    , MigrationStatus (..)
-
-    -- ** ResourceAttributeType
-    , ResourceAttributeType (..)
-
-    -- ** CreatedArtifact
-    , CreatedArtifact
-    , createdArtifact
-    , caDescription
-    , caName
-
-    -- ** DiscoveredResource
-    , DiscoveredResource
-    , discoveredResource
-    , drDescription
-    , drConfigurationId
-
-    -- ** MigrationTask
-    , MigrationTask
-    , migrationTask
-    , mtUpdateDateTime
-    , mtResourceAttributeList
-    , mtTask
-    , mtProgressUpdateStream
-    , mtMigrationTaskName
-
-    -- ** MigrationTaskSummary
-    , MigrationTaskSummary
-    , migrationTaskSummary
-    , mtsStatus
-    , mtsUpdateDateTime
-    , mtsProgressPercent
-    , mtsStatusDetail
-    , mtsProgressUpdateStream
-    , mtsMigrationTaskName
-
-    -- ** ProgressUpdateStreamSummary
-    , ProgressUpdateStreamSummary
-    , progressUpdateStreamSummary
-    , pussProgressUpdateStreamName
-
-    -- ** ResourceAttribute
-    , ResourceAttribute
-    , resourceAttribute
-    , raType
-    , raValue
-
-    -- ** Task
-    , Task
-    , task
-    , tProgressPercent
-    , tStatusDetail
-    , tStatus
-    ) where
-
-import Network.AWS.MigrationHub.AssociateCreatedArtifact
-import Network.AWS.MigrationHub.AssociateDiscoveredResource
-import Network.AWS.MigrationHub.CreateProgressUpdateStream
-import Network.AWS.MigrationHub.DeleteProgressUpdateStream
-import Network.AWS.MigrationHub.DescribeApplicationState
-import Network.AWS.MigrationHub.DescribeMigrationTask
-import Network.AWS.MigrationHub.DisassociateCreatedArtifact
-import Network.AWS.MigrationHub.DisassociateDiscoveredResource
-import Network.AWS.MigrationHub.ImportMigrationTask
-import Network.AWS.MigrationHub.ListCreatedArtifacts
-import Network.AWS.MigrationHub.ListDiscoveredResources
-import Network.AWS.MigrationHub.ListMigrationTasks
-import Network.AWS.MigrationHub.ListProgressUpdateStreams
-import Network.AWS.MigrationHub.NotifyApplicationState
-import Network.AWS.MigrationHub.NotifyMigrationTaskState
-import Network.AWS.MigrationHub.PutResourceAttributes
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.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 'MigrationHub'.
--}
-
-{- $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/MigrationHub/AssociateCreatedArtifact.hs b/gen/Network/AWS/MigrationHub/AssociateCreatedArtifact.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/AssociateCreatedArtifact.hs
+++ /dev/null
@@ -1,170 +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.MigrationHub.AssociateCreatedArtifact
--- 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 a created artifact of an AWS cloud resource, the target receiving the migration, with the migration task performed by a migration tool. This API has the following traits:
---
---
---     * Migration tools can call the @AssociateCreatedArtifact@ operation to indicate which AWS artifact is associated with a migration task.
---
---     * The created artifact name must be provided in ARN (Amazon Resource Name) format which will contain information about type and region; for example: @arn:aws:ec2:us-east-1:488216288981:image/ami-6d0ba87b@ .
---
---     * Examples of the AWS resource behind the created artifact are, AMI's, EC2 instance, or DMS endpoint, etc.
---
---
---
-module Network.AWS.MigrationHub.AssociateCreatedArtifact
-    (
-    -- * Creating a Request
-      associateCreatedArtifact
-    , AssociateCreatedArtifact
-    -- * Request Lenses
-    , acaDryRun
-    , acaProgressUpdateStream
-    , acaMigrationTaskName
-    , acaCreatedArtifact
-
-    -- * Destructuring the Response
-    , associateCreatedArtifactResponse
-    , AssociateCreatedArtifactResponse
-    -- * Response Lenses
-    , acarsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'associateCreatedArtifact' smart constructor.
-data AssociateCreatedArtifact = AssociateCreatedArtifact'
-  { _acaDryRun               :: !(Maybe Bool)
-  , _acaProgressUpdateStream :: !Text
-  , _acaMigrationTaskName    :: !Text
-  , _acaCreatedArtifact      :: !CreatedArtifact
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AssociateCreatedArtifact' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acaDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'acaProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'acaMigrationTaskName' - Unique identifier that references the migration task.
---
--- * 'acaCreatedArtifact' - An ARN of the AWS resource related to the migration (e.g., AMI, EC2 instance, RDS instance, etc.)
-associateCreatedArtifact
-    :: Text -- ^ 'acaProgressUpdateStream'
-    -> Text -- ^ 'acaMigrationTaskName'
-    -> CreatedArtifact -- ^ 'acaCreatedArtifact'
-    -> AssociateCreatedArtifact
-associateCreatedArtifact pProgressUpdateStream_ pMigrationTaskName_ pCreatedArtifact_ =
-  AssociateCreatedArtifact'
-    { _acaDryRun = Nothing
-    , _acaProgressUpdateStream = pProgressUpdateStream_
-    , _acaMigrationTaskName = pMigrationTaskName_
-    , _acaCreatedArtifact = pCreatedArtifact_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-acaDryRun :: Lens' AssociateCreatedArtifact (Maybe Bool)
-acaDryRun = lens _acaDryRun (\ s a -> s{_acaDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-acaProgressUpdateStream :: Lens' AssociateCreatedArtifact Text
-acaProgressUpdateStream = lens _acaProgressUpdateStream (\ s a -> s{_acaProgressUpdateStream = a})
-
--- | Unique identifier that references the migration task.
-acaMigrationTaskName :: Lens' AssociateCreatedArtifact Text
-acaMigrationTaskName = lens _acaMigrationTaskName (\ s a -> s{_acaMigrationTaskName = a})
-
--- | An ARN of the AWS resource related to the migration (e.g., AMI, EC2 instance, RDS instance, etc.)
-acaCreatedArtifact :: Lens' AssociateCreatedArtifact CreatedArtifact
-acaCreatedArtifact = lens _acaCreatedArtifact (\ s a -> s{_acaCreatedArtifact = a})
-
-instance AWSRequest AssociateCreatedArtifact where
-        type Rs AssociateCreatedArtifact =
-             AssociateCreatedArtifactResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 AssociateCreatedArtifactResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable AssociateCreatedArtifact where
-
-instance NFData AssociateCreatedArtifact where
-
-instance ToHeaders AssociateCreatedArtifact where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.AssociateCreatedArtifact" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON AssociateCreatedArtifact where
-        toJSON AssociateCreatedArtifact'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _acaDryRun,
-                  Just
-                    ("ProgressUpdateStream" .= _acaProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _acaMigrationTaskName),
-                  Just ("CreatedArtifact" .= _acaCreatedArtifact)])
-
-instance ToPath AssociateCreatedArtifact where
-        toPath = const "/"
-
-instance ToQuery AssociateCreatedArtifact where
-        toQuery = const mempty
-
--- | /See:/ 'associateCreatedArtifactResponse' smart constructor.
-newtype AssociateCreatedArtifactResponse = AssociateCreatedArtifactResponse'
-  { _acarsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AssociateCreatedArtifactResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acarsResponseStatus' - -- | The response status code.
-associateCreatedArtifactResponse
-    :: Int -- ^ 'acarsResponseStatus'
-    -> AssociateCreatedArtifactResponse
-associateCreatedArtifactResponse pResponseStatus_ =
-  AssociateCreatedArtifactResponse' {_acarsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-acarsResponseStatus :: Lens' AssociateCreatedArtifactResponse Int
-acarsResponseStatus = lens _acarsResponseStatus (\ s a -> s{_acarsResponseStatus = a})
-
-instance NFData AssociateCreatedArtifactResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/AssociateDiscoveredResource.hs b/gen/Network/AWS/MigrationHub/AssociateDiscoveredResource.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/AssociateDiscoveredResource.hs
+++ /dev/null
@@ -1,163 +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.MigrationHub.AssociateDiscoveredResource
--- 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 a discovered resource ID from Application Discovery Service (ADS) with a migration task.
---
---
-module Network.AWS.MigrationHub.AssociateDiscoveredResource
-    (
-    -- * Creating a Request
-      associateDiscoveredResource
-    , AssociateDiscoveredResource
-    -- * Request Lenses
-    , adrDryRun
-    , adrProgressUpdateStream
-    , adrMigrationTaskName
-    , adrDiscoveredResource
-
-    -- * Destructuring the Response
-    , associateDiscoveredResourceResponse
-    , AssociateDiscoveredResourceResponse
-    -- * Response Lenses
-    , adrrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'associateDiscoveredResource' smart constructor.
-data AssociateDiscoveredResource = AssociateDiscoveredResource'
-  { _adrDryRun               :: !(Maybe Bool)
-  , _adrProgressUpdateStream :: !Text
-  , _adrMigrationTaskName    :: !Text
-  , _adrDiscoveredResource   :: !DiscoveredResource
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AssociateDiscoveredResource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adrDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'adrProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'adrMigrationTaskName' - The identifier given to the MigrationTask.
---
--- * 'adrDiscoveredResource' - Object representing a Resource.
-associateDiscoveredResource
-    :: Text -- ^ 'adrProgressUpdateStream'
-    -> Text -- ^ 'adrMigrationTaskName'
-    -> DiscoveredResource -- ^ 'adrDiscoveredResource'
-    -> AssociateDiscoveredResource
-associateDiscoveredResource pProgressUpdateStream_ pMigrationTaskName_ pDiscoveredResource_ =
-  AssociateDiscoveredResource'
-    { _adrDryRun = Nothing
-    , _adrProgressUpdateStream = pProgressUpdateStream_
-    , _adrMigrationTaskName = pMigrationTaskName_
-    , _adrDiscoveredResource = pDiscoveredResource_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-adrDryRun :: Lens' AssociateDiscoveredResource (Maybe Bool)
-adrDryRun = lens _adrDryRun (\ s a -> s{_adrDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-adrProgressUpdateStream :: Lens' AssociateDiscoveredResource Text
-adrProgressUpdateStream = lens _adrProgressUpdateStream (\ s a -> s{_adrProgressUpdateStream = a})
-
--- | The identifier given to the MigrationTask.
-adrMigrationTaskName :: Lens' AssociateDiscoveredResource Text
-adrMigrationTaskName = lens _adrMigrationTaskName (\ s a -> s{_adrMigrationTaskName = a})
-
--- | Object representing a Resource.
-adrDiscoveredResource :: Lens' AssociateDiscoveredResource DiscoveredResource
-adrDiscoveredResource = lens _adrDiscoveredResource (\ s a -> s{_adrDiscoveredResource = a})
-
-instance AWSRequest AssociateDiscoveredResource where
-        type Rs AssociateDiscoveredResource =
-             AssociateDiscoveredResourceResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 AssociateDiscoveredResourceResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable AssociateDiscoveredResource where
-
-instance NFData AssociateDiscoveredResource where
-
-instance ToHeaders AssociateDiscoveredResource where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.AssociateDiscoveredResource" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON AssociateDiscoveredResource where
-        toJSON AssociateDiscoveredResource'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _adrDryRun,
-                  Just
-                    ("ProgressUpdateStream" .= _adrProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _adrMigrationTaskName),
-                  Just
-                    ("DiscoveredResource" .= _adrDiscoveredResource)])
-
-instance ToPath AssociateDiscoveredResource where
-        toPath = const "/"
-
-instance ToQuery AssociateDiscoveredResource where
-        toQuery = const mempty
-
--- | /See:/ 'associateDiscoveredResourceResponse' smart constructor.
-newtype AssociateDiscoveredResourceResponse = AssociateDiscoveredResourceResponse'
-  { _adrrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AssociateDiscoveredResourceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adrrsResponseStatus' - -- | The response status code.
-associateDiscoveredResourceResponse
-    :: Int -- ^ 'adrrsResponseStatus'
-    -> AssociateDiscoveredResourceResponse
-associateDiscoveredResourceResponse pResponseStatus_ =
-  AssociateDiscoveredResourceResponse' {_adrrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-adrrsResponseStatus :: Lens' AssociateDiscoveredResourceResponse Int
-adrrsResponseStatus = lens _adrrsResponseStatus (\ s a -> s{_adrrsResponseStatus = a})
-
-instance NFData AssociateDiscoveredResourceResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/CreateProgressUpdateStream.hs b/gen/Network/AWS/MigrationHub/CreateProgressUpdateStream.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/CreateProgressUpdateStream.hs
+++ /dev/null
@@ -1,141 +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.MigrationHub.CreateProgressUpdateStream
--- 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 a progress update stream which is an AWS resource used for access control as well as a namespace for migration task names that is implicitly linked to your AWS account. It must uniquely identify the migration tool as it is used for all updates made by the tool; however, it does not need to be unique for each AWS account because it is scoped to the AWS account.
---
---
-module Network.AWS.MigrationHub.CreateProgressUpdateStream
-    (
-    -- * Creating a Request
-      createProgressUpdateStream
-    , CreateProgressUpdateStream
-    -- * Request Lenses
-    , cpusDryRun
-    , cpusProgressUpdateStreamName
-
-    -- * Destructuring the Response
-    , createProgressUpdateStreamResponse
-    , CreateProgressUpdateStreamResponse
-    -- * Response Lenses
-    , cpusrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'createProgressUpdateStream' smart constructor.
-data CreateProgressUpdateStream = CreateProgressUpdateStream'
-  { _cpusDryRun                   :: !(Maybe Bool)
-  , _cpusProgressUpdateStreamName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateProgressUpdateStream' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpusDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'cpusProgressUpdateStreamName' - The name of the ProgressUpdateStream.
-createProgressUpdateStream
-    :: Text -- ^ 'cpusProgressUpdateStreamName'
-    -> CreateProgressUpdateStream
-createProgressUpdateStream pProgressUpdateStreamName_ =
-  CreateProgressUpdateStream'
-    { _cpusDryRun = Nothing
-    , _cpusProgressUpdateStreamName = pProgressUpdateStreamName_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-cpusDryRun :: Lens' CreateProgressUpdateStream (Maybe Bool)
-cpusDryRun = lens _cpusDryRun (\ s a -> s{_cpusDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-cpusProgressUpdateStreamName :: Lens' CreateProgressUpdateStream Text
-cpusProgressUpdateStreamName = lens _cpusProgressUpdateStreamName (\ s a -> s{_cpusProgressUpdateStreamName = a})
-
-instance AWSRequest CreateProgressUpdateStream where
-        type Rs CreateProgressUpdateStream =
-             CreateProgressUpdateStreamResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 CreateProgressUpdateStreamResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable CreateProgressUpdateStream where
-
-instance NFData CreateProgressUpdateStream where
-
-instance ToHeaders CreateProgressUpdateStream where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.CreateProgressUpdateStream" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateProgressUpdateStream where
-        toJSON CreateProgressUpdateStream'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _cpusDryRun,
-                  Just
-                    ("ProgressUpdateStreamName" .=
-                       _cpusProgressUpdateStreamName)])
-
-instance ToPath CreateProgressUpdateStream where
-        toPath = const "/"
-
-instance ToQuery CreateProgressUpdateStream where
-        toQuery = const mempty
-
--- | /See:/ 'createProgressUpdateStreamResponse' smart constructor.
-newtype CreateProgressUpdateStreamResponse = CreateProgressUpdateStreamResponse'
-  { _cpusrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateProgressUpdateStreamResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpusrsResponseStatus' - -- | The response status code.
-createProgressUpdateStreamResponse
-    :: Int -- ^ 'cpusrsResponseStatus'
-    -> CreateProgressUpdateStreamResponse
-createProgressUpdateStreamResponse pResponseStatus_ =
-  CreateProgressUpdateStreamResponse' {_cpusrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-cpusrsResponseStatus :: Lens' CreateProgressUpdateStreamResponse Int
-cpusrsResponseStatus = lens _cpusrsResponseStatus (\ s a -> s{_cpusrsResponseStatus = a})
-
-instance NFData CreateProgressUpdateStreamResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/DeleteProgressUpdateStream.hs b/gen/Network/AWS/MigrationHub/DeleteProgressUpdateStream.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/DeleteProgressUpdateStream.hs
+++ /dev/null
@@ -1,153 +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.MigrationHub.DeleteProgressUpdateStream
--- 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 progress update stream, including all of its tasks, which was previously created as an AWS resource used for access control. This API has the following traits:
---
---
---     * The only parameter needed for @DeleteProgressUpdateStream@ is the stream name (same as a @CreateProgressUpdateStream@ call).
---
---     * The call will return, and a background process will asynchronously delete the stream and all of its resources (tasks, associated resources, resource attributes, created artifacts).
---
---     * If the stream takes time to be deleted, it might still show up on a @ListProgressUpdateStreams@ call.
---
---     * @CreateProgressUpdateStream@ , @ImportMigrationTask@ , @NotifyMigrationTaskState@ , and all Associate[*] APIs realted to the tasks belonging to the stream will throw "InvalidInputException" if the stream of the same name is in the process of being deleted.
---
---     * Once the stream and all of its resources are deleted, @CreateProgressUpdateStream@ for a stream of the same name will succeed, and that stream will be an entirely new logical resource (without any resources associated with the old stream).
---
---
---
-module Network.AWS.MigrationHub.DeleteProgressUpdateStream
-    (
-    -- * Creating a Request
-      deleteProgressUpdateStream
-    , DeleteProgressUpdateStream
-    -- * Request Lenses
-    , dpusDryRun
-    , dpusProgressUpdateStreamName
-
-    -- * Destructuring the Response
-    , deleteProgressUpdateStreamResponse
-    , DeleteProgressUpdateStreamResponse
-    -- * Response Lenses
-    , dpusrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteProgressUpdateStream' smart constructor.
-data DeleteProgressUpdateStream = DeleteProgressUpdateStream'
-  { _dpusDryRun                   :: !(Maybe Bool)
-  , _dpusProgressUpdateStreamName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteProgressUpdateStream' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dpusDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'dpusProgressUpdateStreamName' - The name of the ProgressUpdateStream.
-deleteProgressUpdateStream
-    :: Text -- ^ 'dpusProgressUpdateStreamName'
-    -> DeleteProgressUpdateStream
-deleteProgressUpdateStream pProgressUpdateStreamName_ =
-  DeleteProgressUpdateStream'
-    { _dpusDryRun = Nothing
-    , _dpusProgressUpdateStreamName = pProgressUpdateStreamName_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-dpusDryRun :: Lens' DeleteProgressUpdateStream (Maybe Bool)
-dpusDryRun = lens _dpusDryRun (\ s a -> s{_dpusDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-dpusProgressUpdateStreamName :: Lens' DeleteProgressUpdateStream Text
-dpusProgressUpdateStreamName = lens _dpusProgressUpdateStreamName (\ s a -> s{_dpusProgressUpdateStreamName = a})
-
-instance AWSRequest DeleteProgressUpdateStream where
-        type Rs DeleteProgressUpdateStream =
-             DeleteProgressUpdateStreamResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteProgressUpdateStreamResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable DeleteProgressUpdateStream where
-
-instance NFData DeleteProgressUpdateStream where
-
-instance ToHeaders DeleteProgressUpdateStream where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.DeleteProgressUpdateStream" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteProgressUpdateStream where
-        toJSON DeleteProgressUpdateStream'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _dpusDryRun,
-                  Just
-                    ("ProgressUpdateStreamName" .=
-                       _dpusProgressUpdateStreamName)])
-
-instance ToPath DeleteProgressUpdateStream where
-        toPath = const "/"
-
-instance ToQuery DeleteProgressUpdateStream where
-        toQuery = const mempty
-
--- | /See:/ 'deleteProgressUpdateStreamResponse' smart constructor.
-newtype DeleteProgressUpdateStreamResponse = DeleteProgressUpdateStreamResponse'
-  { _dpusrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteProgressUpdateStreamResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dpusrsResponseStatus' - -- | The response status code.
-deleteProgressUpdateStreamResponse
-    :: Int -- ^ 'dpusrsResponseStatus'
-    -> DeleteProgressUpdateStreamResponse
-deleteProgressUpdateStreamResponse pResponseStatus_ =
-  DeleteProgressUpdateStreamResponse' {_dpusrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dpusrsResponseStatus :: Lens' DeleteProgressUpdateStreamResponse Int
-dpusrsResponseStatus = lens _dpusrsResponseStatus (\ s a -> s{_dpusrsResponseStatus = a})
-
-instance NFData DeleteProgressUpdateStreamResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/DescribeApplicationState.hs b/gen/Network/AWS/MigrationHub/DescribeApplicationState.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/DescribeApplicationState.hs
+++ /dev/null
@@ -1,149 +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.MigrationHub.DescribeApplicationState
--- 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)
---
--- Gets the migration status of an application.
---
---
-module Network.AWS.MigrationHub.DescribeApplicationState
-    (
-    -- * Creating a Request
-      describeApplicationState
-    , DescribeApplicationState
-    -- * Request Lenses
-    , dasApplicationId
-
-    -- * Destructuring the Response
-    , describeApplicationStateResponse
-    , DescribeApplicationStateResponse
-    -- * Response Lenses
-    , dasrsLastUpdatedTime
-    , dasrsApplicationStatus
-    , dasrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'describeApplicationState' smart constructor.
-newtype DescribeApplicationState = DescribeApplicationState'
-  { _dasApplicationId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeApplicationState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dasApplicationId' - The configurationId in ADS that uniquely identifies the grouped application.
-describeApplicationState
-    :: Text -- ^ 'dasApplicationId'
-    -> DescribeApplicationState
-describeApplicationState pApplicationId_ =
-  DescribeApplicationState' {_dasApplicationId = pApplicationId_}
-
-
--- | The configurationId in ADS that uniquely identifies the grouped application.
-dasApplicationId :: Lens' DescribeApplicationState Text
-dasApplicationId = lens _dasApplicationId (\ s a -> s{_dasApplicationId = a})
-
-instance AWSRequest DescribeApplicationState where
-        type Rs DescribeApplicationState =
-             DescribeApplicationStateResponse
-        request = postJSON migrationHub
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeApplicationStateResponse' <$>
-                   (x .?> "LastUpdatedTime") <*>
-                     (x .?> "ApplicationStatus")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeApplicationState where
-
-instance NFData DescribeApplicationState where
-
-instance ToHeaders DescribeApplicationState where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.DescribeApplicationState" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeApplicationState where
-        toJSON DescribeApplicationState'{..}
-          = object
-              (catMaybes
-                 [Just ("ApplicationId" .= _dasApplicationId)])
-
-instance ToPath DescribeApplicationState where
-        toPath = const "/"
-
-instance ToQuery DescribeApplicationState where
-        toQuery = const mempty
-
--- | /See:/ 'describeApplicationStateResponse' smart constructor.
-data DescribeApplicationStateResponse = DescribeApplicationStateResponse'
-  { _dasrsLastUpdatedTime   :: !(Maybe POSIX)
-  , _dasrsApplicationStatus :: !(Maybe ApplicationStatus)
-  , _dasrsResponseStatus    :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeApplicationStateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dasrsLastUpdatedTime' - The timestamp when the application status was last updated.
---
--- * 'dasrsApplicationStatus' - Status of the application - Not Started, In-Progress, Complete.
---
--- * 'dasrsResponseStatus' - -- | The response status code.
-describeApplicationStateResponse
-    :: Int -- ^ 'dasrsResponseStatus'
-    -> DescribeApplicationStateResponse
-describeApplicationStateResponse pResponseStatus_ =
-  DescribeApplicationStateResponse'
-    { _dasrsLastUpdatedTime = Nothing
-    , _dasrsApplicationStatus = Nothing
-    , _dasrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The timestamp when the application status was last updated.
-dasrsLastUpdatedTime :: Lens' DescribeApplicationStateResponse (Maybe UTCTime)
-dasrsLastUpdatedTime = lens _dasrsLastUpdatedTime (\ s a -> s{_dasrsLastUpdatedTime = a}) . mapping _Time
-
--- | Status of the application - Not Started, In-Progress, Complete.
-dasrsApplicationStatus :: Lens' DescribeApplicationStateResponse (Maybe ApplicationStatus)
-dasrsApplicationStatus = lens _dasrsApplicationStatus (\ s a -> s{_dasrsApplicationStatus = a})
-
--- | -- | The response status code.
-dasrsResponseStatus :: Lens' DescribeApplicationStateResponse Int
-dasrsResponseStatus = lens _dasrsResponseStatus (\ s a -> s{_dasrsResponseStatus = a})
-
-instance NFData DescribeApplicationStateResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/DescribeMigrationTask.hs b/gen/Network/AWS/MigrationHub/DescribeMigrationTask.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/DescribeMigrationTask.hs
+++ /dev/null
@@ -1,149 +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.MigrationHub.DescribeMigrationTask
--- 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 all attributes associated with a specific migration task.
---
---
-module Network.AWS.MigrationHub.DescribeMigrationTask
-    (
-    -- * Creating a Request
-      describeMigrationTask
-    , DescribeMigrationTask
-    -- * Request Lenses
-    , dmtProgressUpdateStream
-    , dmtMigrationTaskName
-
-    -- * Destructuring the Response
-    , describeMigrationTaskResponse
-    , DescribeMigrationTaskResponse
-    -- * Response Lenses
-    , dmtrsMigrationTask
-    , dmtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'describeMigrationTask' smart constructor.
-data DescribeMigrationTask = DescribeMigrationTask'
-  { _dmtProgressUpdateStream :: !Text
-  , _dmtMigrationTaskName    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeMigrationTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmtProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'dmtMigrationTaskName' - The identifier given to the MigrationTask.
-describeMigrationTask
-    :: Text -- ^ 'dmtProgressUpdateStream'
-    -> Text -- ^ 'dmtMigrationTaskName'
-    -> DescribeMigrationTask
-describeMigrationTask pProgressUpdateStream_ pMigrationTaskName_ =
-  DescribeMigrationTask'
-    { _dmtProgressUpdateStream = pProgressUpdateStream_
-    , _dmtMigrationTaskName = pMigrationTaskName_
-    }
-
-
--- | The name of the ProgressUpdateStream.
-dmtProgressUpdateStream :: Lens' DescribeMigrationTask Text
-dmtProgressUpdateStream = lens _dmtProgressUpdateStream (\ s a -> s{_dmtProgressUpdateStream = a})
-
--- | The identifier given to the MigrationTask.
-dmtMigrationTaskName :: Lens' DescribeMigrationTask Text
-dmtMigrationTaskName = lens _dmtMigrationTaskName (\ s a -> s{_dmtMigrationTaskName = a})
-
-instance AWSRequest DescribeMigrationTask where
-        type Rs DescribeMigrationTask =
-             DescribeMigrationTaskResponse
-        request = postJSON migrationHub
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeMigrationTaskResponse' <$>
-                   (x .?> "MigrationTask") <*> (pure (fromEnum s)))
-
-instance Hashable DescribeMigrationTask where
-
-instance NFData DescribeMigrationTask where
-
-instance ToHeaders DescribeMigrationTask where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.DescribeMigrationTask" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeMigrationTask where
-        toJSON DescribeMigrationTask'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("ProgressUpdateStream" .= _dmtProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _dmtMigrationTaskName)])
-
-instance ToPath DescribeMigrationTask where
-        toPath = const "/"
-
-instance ToQuery DescribeMigrationTask where
-        toQuery = const mempty
-
--- | /See:/ 'describeMigrationTaskResponse' smart constructor.
-data DescribeMigrationTaskResponse = DescribeMigrationTaskResponse'
-  { _dmtrsMigrationTask  :: !(Maybe MigrationTask)
-  , _dmtrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeMigrationTaskResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmtrsMigrationTask' - Object encapsulating information about the migration task.
---
--- * 'dmtrsResponseStatus' - -- | The response status code.
-describeMigrationTaskResponse
-    :: Int -- ^ 'dmtrsResponseStatus'
-    -> DescribeMigrationTaskResponse
-describeMigrationTaskResponse pResponseStatus_ =
-  DescribeMigrationTaskResponse'
-    {_dmtrsMigrationTask = Nothing, _dmtrsResponseStatus = pResponseStatus_}
-
-
--- | Object encapsulating information about the migration task.
-dmtrsMigrationTask :: Lens' DescribeMigrationTaskResponse (Maybe MigrationTask)
-dmtrsMigrationTask = lens _dmtrsMigrationTask (\ s a -> s{_dmtrsMigrationTask = a})
-
--- | -- | The response status code.
-dmtrsResponseStatus :: Lens' DescribeMigrationTaskResponse Int
-dmtrsResponseStatus = lens _dmtrsResponseStatus (\ s a -> s{_dmtrsResponseStatus = a})
-
-instance NFData DescribeMigrationTaskResponse where
diff --git a/gen/Network/AWS/MigrationHub/DisassociateCreatedArtifact.hs b/gen/Network/AWS/MigrationHub/DisassociateCreatedArtifact.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/DisassociateCreatedArtifact.hs
+++ /dev/null
@@ -1,171 +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.MigrationHub.DisassociateCreatedArtifact
--- 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 a created artifact of an AWS resource with a migration task performed by a migration tool that was previously associated. This API has the following traits:
---
---
---     * A migration user can call the @DisassociateCreatedArtifacts@ operation to disassociate a created AWS Artifact from a migration task.
---
---     * The created artifact name must be provided in ARN (Amazon Resource Name) format which will contain information about type and region; for example: @arn:aws:ec2:us-east-1:488216288981:image/ami-6d0ba87b@ .
---
---     * Examples of the AWS resource behind the created artifact are, AMI's, EC2 instance, or RDS instance, etc.
---
---
---
-module Network.AWS.MigrationHub.DisassociateCreatedArtifact
-    (
-    -- * Creating a Request
-      disassociateCreatedArtifact
-    , DisassociateCreatedArtifact
-    -- * Request Lenses
-    , dcaDryRun
-    , dcaProgressUpdateStream
-    , dcaMigrationTaskName
-    , dcaCreatedArtifactName
-
-    -- * Destructuring the Response
-    , disassociateCreatedArtifactResponse
-    , DisassociateCreatedArtifactResponse
-    -- * Response Lenses
-    , dcarsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'disassociateCreatedArtifact' smart constructor.
-data DisassociateCreatedArtifact = DisassociateCreatedArtifact'
-  { _dcaDryRun               :: !(Maybe Bool)
-  , _dcaProgressUpdateStream :: !Text
-  , _dcaMigrationTaskName    :: !Text
-  , _dcaCreatedArtifactName  :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DisassociateCreatedArtifact' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcaDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'dcaProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'dcaMigrationTaskName' - Unique identifier that references the migration task to be disassociated with the artifact.
---
--- * 'dcaCreatedArtifactName' - An ARN of the AWS resource related to the migration (e.g., AMI, EC2 instance, RDS instance, etc.)
-disassociateCreatedArtifact
-    :: Text -- ^ 'dcaProgressUpdateStream'
-    -> Text -- ^ 'dcaMigrationTaskName'
-    -> Text -- ^ 'dcaCreatedArtifactName'
-    -> DisassociateCreatedArtifact
-disassociateCreatedArtifact pProgressUpdateStream_ pMigrationTaskName_ pCreatedArtifactName_ =
-  DisassociateCreatedArtifact'
-    { _dcaDryRun = Nothing
-    , _dcaProgressUpdateStream = pProgressUpdateStream_
-    , _dcaMigrationTaskName = pMigrationTaskName_
-    , _dcaCreatedArtifactName = pCreatedArtifactName_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-dcaDryRun :: Lens' DisassociateCreatedArtifact (Maybe Bool)
-dcaDryRun = lens _dcaDryRun (\ s a -> s{_dcaDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-dcaProgressUpdateStream :: Lens' DisassociateCreatedArtifact Text
-dcaProgressUpdateStream = lens _dcaProgressUpdateStream (\ s a -> s{_dcaProgressUpdateStream = a})
-
--- | Unique identifier that references the migration task to be disassociated with the artifact.
-dcaMigrationTaskName :: Lens' DisassociateCreatedArtifact Text
-dcaMigrationTaskName = lens _dcaMigrationTaskName (\ s a -> s{_dcaMigrationTaskName = a})
-
--- | An ARN of the AWS resource related to the migration (e.g., AMI, EC2 instance, RDS instance, etc.)
-dcaCreatedArtifactName :: Lens' DisassociateCreatedArtifact Text
-dcaCreatedArtifactName = lens _dcaCreatedArtifactName (\ s a -> s{_dcaCreatedArtifactName = a})
-
-instance AWSRequest DisassociateCreatedArtifact where
-        type Rs DisassociateCreatedArtifact =
-             DisassociateCreatedArtifactResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DisassociateCreatedArtifactResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable DisassociateCreatedArtifact where
-
-instance NFData DisassociateCreatedArtifact where
-
-instance ToHeaders DisassociateCreatedArtifact where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.DisassociateCreatedArtifact" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DisassociateCreatedArtifact where
-        toJSON DisassociateCreatedArtifact'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _dcaDryRun,
-                  Just
-                    ("ProgressUpdateStream" .= _dcaProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _dcaMigrationTaskName),
-                  Just
-                    ("CreatedArtifactName" .= _dcaCreatedArtifactName)])
-
-instance ToPath DisassociateCreatedArtifact where
-        toPath = const "/"
-
-instance ToQuery DisassociateCreatedArtifact where
-        toQuery = const mempty
-
--- | /See:/ 'disassociateCreatedArtifactResponse' smart constructor.
-newtype DisassociateCreatedArtifactResponse = DisassociateCreatedArtifactResponse'
-  { _dcarsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DisassociateCreatedArtifactResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcarsResponseStatus' - -- | The response status code.
-disassociateCreatedArtifactResponse
-    :: Int -- ^ 'dcarsResponseStatus'
-    -> DisassociateCreatedArtifactResponse
-disassociateCreatedArtifactResponse pResponseStatus_ =
-  DisassociateCreatedArtifactResponse' {_dcarsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dcarsResponseStatus :: Lens' DisassociateCreatedArtifactResponse Int
-dcarsResponseStatus = lens _dcarsResponseStatus (\ s a -> s{_dcarsResponseStatus = a})
-
-instance NFData DisassociateCreatedArtifactResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/DisassociateDiscoveredResource.hs b/gen/Network/AWS/MigrationHub/DisassociateDiscoveredResource.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/DisassociateDiscoveredResource.hs
+++ /dev/null
@@ -1,167 +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.MigrationHub.DisassociateDiscoveredResource
--- 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)
---
--- Disassociate an Application Discovery Service (ADS) discovered resource from a migration task.
---
---
-module Network.AWS.MigrationHub.DisassociateDiscoveredResource
-    (
-    -- * Creating a Request
-      disassociateDiscoveredResource
-    , DisassociateDiscoveredResource
-    -- * Request Lenses
-    , ddrDryRun
-    , ddrProgressUpdateStream
-    , ddrMigrationTaskName
-    , ddrConfigurationId
-
-    -- * Destructuring the Response
-    , disassociateDiscoveredResourceResponse
-    , DisassociateDiscoveredResourceResponse
-    -- * Response Lenses
-    , ddrrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'disassociateDiscoveredResource' smart constructor.
-data DisassociateDiscoveredResource = DisassociateDiscoveredResource'
-  { _ddrDryRun               :: !(Maybe Bool)
-  , _ddrProgressUpdateStream :: !Text
-  , _ddrMigrationTaskName    :: !Text
-  , _ddrConfigurationId      :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DisassociateDiscoveredResource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddrDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'ddrProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'ddrMigrationTaskName' - The identifier given to the MigrationTask.
---
--- * 'ddrConfigurationId' - ConfigurationId of the ADS resource to be disassociated.
-disassociateDiscoveredResource
-    :: Text -- ^ 'ddrProgressUpdateStream'
-    -> Text -- ^ 'ddrMigrationTaskName'
-    -> Text -- ^ 'ddrConfigurationId'
-    -> DisassociateDiscoveredResource
-disassociateDiscoveredResource pProgressUpdateStream_ pMigrationTaskName_ pConfigurationId_ =
-  DisassociateDiscoveredResource'
-    { _ddrDryRun = Nothing
-    , _ddrProgressUpdateStream = pProgressUpdateStream_
-    , _ddrMigrationTaskName = pMigrationTaskName_
-    , _ddrConfigurationId = pConfigurationId_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-ddrDryRun :: Lens' DisassociateDiscoveredResource (Maybe Bool)
-ddrDryRun = lens _ddrDryRun (\ s a -> s{_ddrDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-ddrProgressUpdateStream :: Lens' DisassociateDiscoveredResource Text
-ddrProgressUpdateStream = lens _ddrProgressUpdateStream (\ s a -> s{_ddrProgressUpdateStream = a})
-
--- | The identifier given to the MigrationTask.
-ddrMigrationTaskName :: Lens' DisassociateDiscoveredResource Text
-ddrMigrationTaskName = lens _ddrMigrationTaskName (\ s a -> s{_ddrMigrationTaskName = a})
-
--- | ConfigurationId of the ADS resource to be disassociated.
-ddrConfigurationId :: Lens' DisassociateDiscoveredResource Text
-ddrConfigurationId = lens _ddrConfigurationId (\ s a -> s{_ddrConfigurationId = a})
-
-instance AWSRequest DisassociateDiscoveredResource
-         where
-        type Rs DisassociateDiscoveredResource =
-             DisassociateDiscoveredResourceResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DisassociateDiscoveredResourceResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable DisassociateDiscoveredResource
-         where
-
-instance NFData DisassociateDiscoveredResource where
-
-instance ToHeaders DisassociateDiscoveredResource
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.DisassociateDiscoveredResource" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DisassociateDiscoveredResource where
-        toJSON DisassociateDiscoveredResource'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _ddrDryRun,
-                  Just
-                    ("ProgressUpdateStream" .= _ddrProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _ddrMigrationTaskName),
-                  Just ("ConfigurationId" .= _ddrConfigurationId)])
-
-instance ToPath DisassociateDiscoveredResource where
-        toPath = const "/"
-
-instance ToQuery DisassociateDiscoveredResource where
-        toQuery = const mempty
-
--- | /See:/ 'disassociateDiscoveredResourceResponse' smart constructor.
-newtype DisassociateDiscoveredResourceResponse = DisassociateDiscoveredResourceResponse'
-  { _ddrrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DisassociateDiscoveredResourceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddrrsResponseStatus' - -- | The response status code.
-disassociateDiscoveredResourceResponse
-    :: Int -- ^ 'ddrrsResponseStatus'
-    -> DisassociateDiscoveredResourceResponse
-disassociateDiscoveredResourceResponse pResponseStatus_ =
-  DisassociateDiscoveredResourceResponse'
-    {_ddrrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ddrrsResponseStatus :: Lens' DisassociateDiscoveredResourceResponse Int
-ddrrsResponseStatus = lens _ddrrsResponseStatus (\ s a -> s{_ddrrsResponseStatus = a})
-
-instance NFData
-           DisassociateDiscoveredResourceResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/ImportMigrationTask.hs b/gen/Network/AWS/MigrationHub/ImportMigrationTask.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/ImportMigrationTask.hs
+++ /dev/null
@@ -1,151 +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.MigrationHub.ImportMigrationTask
--- 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)
---
--- Registers a new migration task which represents a server, database, etc., being migrated to AWS by a migration tool.
---
---
--- This API is a prerequisite to calling the @NotifyMigrationTaskState@ API as the migration tool must first register the migration task with Migration Hub.
---
-module Network.AWS.MigrationHub.ImportMigrationTask
-    (
-    -- * Creating a Request
-      importMigrationTask
-    , ImportMigrationTask
-    -- * Request Lenses
-    , imtDryRun
-    , imtProgressUpdateStream
-    , imtMigrationTaskName
-
-    -- * Destructuring the Response
-    , importMigrationTaskResponse
-    , ImportMigrationTaskResponse
-    -- * Response Lenses
-    , imtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'importMigrationTask' smart constructor.
-data ImportMigrationTask = ImportMigrationTask'
-  { _imtDryRun               :: !(Maybe Bool)
-  , _imtProgressUpdateStream :: !Text
-  , _imtMigrationTaskName    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ImportMigrationTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'imtDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'imtProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'imtMigrationTaskName' - Unique identifier that references the migration task.
-importMigrationTask
-    :: Text -- ^ 'imtProgressUpdateStream'
-    -> Text -- ^ 'imtMigrationTaskName'
-    -> ImportMigrationTask
-importMigrationTask pProgressUpdateStream_ pMigrationTaskName_ =
-  ImportMigrationTask'
-    { _imtDryRun = Nothing
-    , _imtProgressUpdateStream = pProgressUpdateStream_
-    , _imtMigrationTaskName = pMigrationTaskName_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-imtDryRun :: Lens' ImportMigrationTask (Maybe Bool)
-imtDryRun = lens _imtDryRun (\ s a -> s{_imtDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-imtProgressUpdateStream :: Lens' ImportMigrationTask Text
-imtProgressUpdateStream = lens _imtProgressUpdateStream (\ s a -> s{_imtProgressUpdateStream = a})
-
--- | Unique identifier that references the migration task.
-imtMigrationTaskName :: Lens' ImportMigrationTask Text
-imtMigrationTaskName = lens _imtMigrationTaskName (\ s a -> s{_imtMigrationTaskName = a})
-
-instance AWSRequest ImportMigrationTask where
-        type Rs ImportMigrationTask =
-             ImportMigrationTaskResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 ImportMigrationTaskResponse' <$> (pure (fromEnum s)))
-
-instance Hashable ImportMigrationTask where
-
-instance NFData ImportMigrationTask where
-
-instance ToHeaders ImportMigrationTask where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.ImportMigrationTask" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ImportMigrationTask where
-        toJSON ImportMigrationTask'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _imtDryRun,
-                  Just
-                    ("ProgressUpdateStream" .= _imtProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _imtMigrationTaskName)])
-
-instance ToPath ImportMigrationTask where
-        toPath = const "/"
-
-instance ToQuery ImportMigrationTask where
-        toQuery = const mempty
-
--- | /See:/ 'importMigrationTaskResponse' smart constructor.
-newtype ImportMigrationTaskResponse = ImportMigrationTaskResponse'
-  { _imtrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ImportMigrationTaskResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'imtrsResponseStatus' - -- | The response status code.
-importMigrationTaskResponse
-    :: Int -- ^ 'imtrsResponseStatus'
-    -> ImportMigrationTaskResponse
-importMigrationTaskResponse pResponseStatus_ =
-  ImportMigrationTaskResponse' {_imtrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-imtrsResponseStatus :: Lens' ImportMigrationTaskResponse Int
-imtrsResponseStatus = lens _imtrsResponseStatus (\ s a -> s{_imtrsResponseStatus = a})
-
-instance NFData ImportMigrationTaskResponse where
diff --git a/gen/Network/AWS/MigrationHub/ListCreatedArtifacts.hs b/gen/Network/AWS/MigrationHub/ListCreatedArtifacts.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/ListCreatedArtifacts.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.MigrationHub.ListCreatedArtifacts
--- 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 the created artifacts attached to a given migration task in an update stream. This API has the following traits:
---
---
---     * Gets the list of the created artifacts while migration is taking place.
---
---     * Shows the artifacts created by the migration tool that was associated by the @AssociateCreatedArtifact@ API.
---
---     * Lists created artifacts in a paginated interface.
---
---
---
-module Network.AWS.MigrationHub.ListCreatedArtifacts
-    (
-    -- * Creating a Request
-      listCreatedArtifacts
-    , ListCreatedArtifacts
-    -- * Request Lenses
-    , lcaNextToken
-    , lcaMaxResults
-    , lcaProgressUpdateStream
-    , lcaMigrationTaskName
-
-    -- * Destructuring the Response
-    , listCreatedArtifactsResponse
-    , ListCreatedArtifactsResponse
-    -- * Response Lenses
-    , lcarsNextToken
-    , lcarsCreatedArtifactList
-    , lcarsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listCreatedArtifacts' smart constructor.
-data ListCreatedArtifacts = ListCreatedArtifacts'
-  { _lcaNextToken            :: !(Maybe Text)
-  , _lcaMaxResults           :: !(Maybe Nat)
-  , _lcaProgressUpdateStream :: !Text
-  , _lcaMigrationTaskName    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListCreatedArtifacts' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcaNextToken' - If a @NextToken@ was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in @NextToken@ .
---
--- * 'lcaMaxResults' - Maximum number of results to be returned per page.
---
--- * 'lcaProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'lcaMigrationTaskName' - Unique identifier that references the migration task.
-listCreatedArtifacts
-    :: Text -- ^ 'lcaProgressUpdateStream'
-    -> Text -- ^ 'lcaMigrationTaskName'
-    -> ListCreatedArtifacts
-listCreatedArtifacts pProgressUpdateStream_ pMigrationTaskName_ =
-  ListCreatedArtifacts'
-    { _lcaNextToken = Nothing
-    , _lcaMaxResults = Nothing
-    , _lcaProgressUpdateStream = pProgressUpdateStream_
-    , _lcaMigrationTaskName = pMigrationTaskName_
-    }
-
-
--- | If a @NextToken@ was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in @NextToken@ .
-lcaNextToken :: Lens' ListCreatedArtifacts (Maybe Text)
-lcaNextToken = lens _lcaNextToken (\ s a -> s{_lcaNextToken = a})
-
--- | Maximum number of results to be returned per page.
-lcaMaxResults :: Lens' ListCreatedArtifacts (Maybe Natural)
-lcaMaxResults = lens _lcaMaxResults (\ s a -> s{_lcaMaxResults = a}) . mapping _Nat
-
--- | The name of the ProgressUpdateStream.
-lcaProgressUpdateStream :: Lens' ListCreatedArtifacts Text
-lcaProgressUpdateStream = lens _lcaProgressUpdateStream (\ s a -> s{_lcaProgressUpdateStream = a})
-
--- | Unique identifier that references the migration task.
-lcaMigrationTaskName :: Lens' ListCreatedArtifacts Text
-lcaMigrationTaskName = lens _lcaMigrationTaskName (\ s a -> s{_lcaMigrationTaskName = a})
-
-instance AWSRequest ListCreatedArtifacts where
-        type Rs ListCreatedArtifacts =
-             ListCreatedArtifactsResponse
-        request = postJSON migrationHub
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListCreatedArtifactsResponse' <$>
-                   (x .?> "NextToken") <*>
-                     (x .?> "CreatedArtifactList" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListCreatedArtifacts where
-
-instance NFData ListCreatedArtifacts where
-
-instance ToHeaders ListCreatedArtifacts where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.ListCreatedArtifacts" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListCreatedArtifacts where
-        toJSON ListCreatedArtifacts'{..}
-          = object
-              (catMaybes
-                 [("NextToken" .=) <$> _lcaNextToken,
-                  ("MaxResults" .=) <$> _lcaMaxResults,
-                  Just
-                    ("ProgressUpdateStream" .= _lcaProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _lcaMigrationTaskName)])
-
-instance ToPath ListCreatedArtifacts where
-        toPath = const "/"
-
-instance ToQuery ListCreatedArtifacts where
-        toQuery = const mempty
-
--- | /See:/ 'listCreatedArtifactsResponse' smart constructor.
-data ListCreatedArtifactsResponse = ListCreatedArtifactsResponse'
-  { _lcarsNextToken           :: !(Maybe Text)
-  , _lcarsCreatedArtifactList :: !(Maybe [CreatedArtifact])
-  , _lcarsResponseStatus      :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListCreatedArtifactsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcarsNextToken' - If there are more created artifacts than the max result, return the next token to be passed to the next call as a bookmark of where to start from.
---
--- * 'lcarsCreatedArtifactList' - List of created artifacts up to the maximum number of results specified in the request.
---
--- * 'lcarsResponseStatus' - -- | The response status code.
-listCreatedArtifactsResponse
-    :: Int -- ^ 'lcarsResponseStatus'
-    -> ListCreatedArtifactsResponse
-listCreatedArtifactsResponse pResponseStatus_ =
-  ListCreatedArtifactsResponse'
-    { _lcarsNextToken = Nothing
-    , _lcarsCreatedArtifactList = Nothing
-    , _lcarsResponseStatus = pResponseStatus_
-    }
-
-
--- | If there are more created artifacts than the max result, return the next token to be passed to the next call as a bookmark of where to start from.
-lcarsNextToken :: Lens' ListCreatedArtifactsResponse (Maybe Text)
-lcarsNextToken = lens _lcarsNextToken (\ s a -> s{_lcarsNextToken = a})
-
--- | List of created artifacts up to the maximum number of results specified in the request.
-lcarsCreatedArtifactList :: Lens' ListCreatedArtifactsResponse [CreatedArtifact]
-lcarsCreatedArtifactList = lens _lcarsCreatedArtifactList (\ s a -> s{_lcarsCreatedArtifactList = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-lcarsResponseStatus :: Lens' ListCreatedArtifactsResponse Int
-lcarsResponseStatus = lens _lcarsResponseStatus (\ s a -> s{_lcarsResponseStatus = a})
-
-instance NFData ListCreatedArtifactsResponse where
diff --git a/gen/Network/AWS/MigrationHub/ListDiscoveredResources.hs b/gen/Network/AWS/MigrationHub/ListDiscoveredResources.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/ListDiscoveredResources.hs
+++ /dev/null
@@ -1,182 +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.MigrationHub.ListDiscoveredResources
--- 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 discovered resources associated with the given @MigrationTask@ .
---
---
-module Network.AWS.MigrationHub.ListDiscoveredResources
-    (
-    -- * Creating a Request
-      listDiscoveredResources
-    , ListDiscoveredResources
-    -- * Request Lenses
-    , ldrNextToken
-    , ldrMaxResults
-    , ldrProgressUpdateStream
-    , ldrMigrationTaskName
-
-    -- * Destructuring the Response
-    , listDiscoveredResourcesResponse
-    , ListDiscoveredResourcesResponse
-    -- * Response Lenses
-    , ldrrsDiscoveredResourceList
-    , ldrrsNextToken
-    , ldrrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listDiscoveredResources' smart constructor.
-data ListDiscoveredResources = ListDiscoveredResources'
-  { _ldrNextToken            :: !(Maybe Text)
-  , _ldrMaxResults           :: !(Maybe Nat)
-  , _ldrProgressUpdateStream :: !Text
-  , _ldrMigrationTaskName    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListDiscoveredResources' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ldrNextToken' - If a @NextToken@ was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in @NextToken@ .
---
--- * 'ldrMaxResults' - The maximum number of results returned per page.
---
--- * 'ldrProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'ldrMigrationTaskName' - The name of the MigrationTask.
-listDiscoveredResources
-    :: Text -- ^ 'ldrProgressUpdateStream'
-    -> Text -- ^ 'ldrMigrationTaskName'
-    -> ListDiscoveredResources
-listDiscoveredResources pProgressUpdateStream_ pMigrationTaskName_ =
-  ListDiscoveredResources'
-    { _ldrNextToken = Nothing
-    , _ldrMaxResults = Nothing
-    , _ldrProgressUpdateStream = pProgressUpdateStream_
-    , _ldrMigrationTaskName = pMigrationTaskName_
-    }
-
-
--- | If a @NextToken@ was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in @NextToken@ .
-ldrNextToken :: Lens' ListDiscoveredResources (Maybe Text)
-ldrNextToken = lens _ldrNextToken (\ s a -> s{_ldrNextToken = a})
-
--- | The maximum number of results returned per page.
-ldrMaxResults :: Lens' ListDiscoveredResources (Maybe Natural)
-ldrMaxResults = lens _ldrMaxResults (\ s a -> s{_ldrMaxResults = a}) . mapping _Nat
-
--- | The name of the ProgressUpdateStream.
-ldrProgressUpdateStream :: Lens' ListDiscoveredResources Text
-ldrProgressUpdateStream = lens _ldrProgressUpdateStream (\ s a -> s{_ldrProgressUpdateStream = a})
-
--- | The name of the MigrationTask.
-ldrMigrationTaskName :: Lens' ListDiscoveredResources Text
-ldrMigrationTaskName = lens _ldrMigrationTaskName (\ s a -> s{_ldrMigrationTaskName = a})
-
-instance AWSRequest ListDiscoveredResources where
-        type Rs ListDiscoveredResources =
-             ListDiscoveredResourcesResponse
-        request = postJSON migrationHub
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListDiscoveredResourcesResponse' <$>
-                   (x .?> "DiscoveredResourceList" .!@ mempty) <*>
-                     (x .?> "NextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListDiscoveredResources where
-
-instance NFData ListDiscoveredResources where
-
-instance ToHeaders ListDiscoveredResources where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.ListDiscoveredResources" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListDiscoveredResources where
-        toJSON ListDiscoveredResources'{..}
-          = object
-              (catMaybes
-                 [("NextToken" .=) <$> _ldrNextToken,
-                  ("MaxResults" .=) <$> _ldrMaxResults,
-                  Just
-                    ("ProgressUpdateStream" .= _ldrProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _ldrMigrationTaskName)])
-
-instance ToPath ListDiscoveredResources where
-        toPath = const "/"
-
-instance ToQuery ListDiscoveredResources where
-        toQuery = const mempty
-
--- | /See:/ 'listDiscoveredResourcesResponse' smart constructor.
-data ListDiscoveredResourcesResponse = ListDiscoveredResourcesResponse'
-  { _ldrrsDiscoveredResourceList :: !(Maybe [DiscoveredResource])
-  , _ldrrsNextToken              :: !(Maybe Text)
-  , _ldrrsResponseStatus         :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListDiscoveredResourcesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ldrrsDiscoveredResourceList' - Returned list of discovered resources associated with the given MigrationTask.
---
--- * 'ldrrsNextToken' - If there are more discovered resources than the max result, return the next token to be passed to the next call as a bookmark of where to start from.
---
--- * 'ldrrsResponseStatus' - -- | The response status code.
-listDiscoveredResourcesResponse
-    :: Int -- ^ 'ldrrsResponseStatus'
-    -> ListDiscoveredResourcesResponse
-listDiscoveredResourcesResponse pResponseStatus_ =
-  ListDiscoveredResourcesResponse'
-    { _ldrrsDiscoveredResourceList = Nothing
-    , _ldrrsNextToken = Nothing
-    , _ldrrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Returned list of discovered resources associated with the given MigrationTask.
-ldrrsDiscoveredResourceList :: Lens' ListDiscoveredResourcesResponse [DiscoveredResource]
-ldrrsDiscoveredResourceList = lens _ldrrsDiscoveredResourceList (\ s a -> s{_ldrrsDiscoveredResourceList = a}) . _Default . _Coerce
-
--- | If there are more discovered resources than the max result, return the next token to be passed to the next call as a bookmark of where to start from.
-ldrrsNextToken :: Lens' ListDiscoveredResourcesResponse (Maybe Text)
-ldrrsNextToken = lens _ldrrsNextToken (\ s a -> s{_ldrrsNextToken = a})
-
--- | -- | The response status code.
-ldrrsResponseStatus :: Lens' ListDiscoveredResourcesResponse Int
-ldrrsResponseStatus = lens _ldrrsResponseStatus (\ s a -> s{_ldrrsResponseStatus = a})
-
-instance NFData ListDiscoveredResourcesResponse where
diff --git a/gen/Network/AWS/MigrationHub/ListMigrationTasks.hs b/gen/Network/AWS/MigrationHub/ListMigrationTasks.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/ListMigrationTasks.hs
+++ /dev/null
@@ -1,176 +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.MigrationHub.ListMigrationTasks
--- 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 all, or filtered by resource name, migration tasks associated with the user account making this call. This API has the following traits:
---
---
---     * Can show a summary list of the most recent migration tasks.
---
---     * Can show a summary list of migration tasks associated with a given discovered resource.
---
---     * Lists migration tasks in a paginated interface.
---
---
---
-module Network.AWS.MigrationHub.ListMigrationTasks
-    (
-    -- * Creating a Request
-      listMigrationTasks
-    , ListMigrationTasks
-    -- * Request Lenses
-    , lmtResourceName
-    , lmtNextToken
-    , lmtMaxResults
-
-    -- * Destructuring the Response
-    , listMigrationTasksResponse
-    , ListMigrationTasksResponse
-    -- * Response Lenses
-    , lmtrsMigrationTaskSummaryList
-    , lmtrsNextToken
-    , lmtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listMigrationTasks' smart constructor.
-data ListMigrationTasks = ListMigrationTasks'
-  { _lmtResourceName :: !(Maybe Text)
-  , _lmtNextToken    :: !(Maybe Text)
-  , _lmtMaxResults   :: !(Maybe Nat)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListMigrationTasks' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lmtResourceName' - Filter migration tasks by discovered resource name.
---
--- * 'lmtNextToken' - If a @NextToken@ was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in @NextToken@ .
---
--- * 'lmtMaxResults' - Value to specify how many results are returned per page.
-listMigrationTasks
-    :: ListMigrationTasks
-listMigrationTasks =
-  ListMigrationTasks'
-    { _lmtResourceName = Nothing
-    , _lmtNextToken = Nothing
-    , _lmtMaxResults = Nothing
-    }
-
-
--- | Filter migration tasks by discovered resource name.
-lmtResourceName :: Lens' ListMigrationTasks (Maybe Text)
-lmtResourceName = lens _lmtResourceName (\ s a -> s{_lmtResourceName = a})
-
--- | If a @NextToken@ was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in @NextToken@ .
-lmtNextToken :: Lens' ListMigrationTasks (Maybe Text)
-lmtNextToken = lens _lmtNextToken (\ s a -> s{_lmtNextToken = a})
-
--- | Value to specify how many results are returned per page.
-lmtMaxResults :: Lens' ListMigrationTasks (Maybe Natural)
-lmtMaxResults = lens _lmtMaxResults (\ s a -> s{_lmtMaxResults = a}) . mapping _Nat
-
-instance AWSRequest ListMigrationTasks where
-        type Rs ListMigrationTasks =
-             ListMigrationTasksResponse
-        request = postJSON migrationHub
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListMigrationTasksResponse' <$>
-                   (x .?> "MigrationTaskSummaryList" .!@ mempty) <*>
-                     (x .?> "NextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListMigrationTasks where
-
-instance NFData ListMigrationTasks where
-
-instance ToHeaders ListMigrationTasks where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.ListMigrationTasks" :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListMigrationTasks where
-        toJSON ListMigrationTasks'{..}
-          = object
-              (catMaybes
-                 [("ResourceName" .=) <$> _lmtResourceName,
-                  ("NextToken" .=) <$> _lmtNextToken,
-                  ("MaxResults" .=) <$> _lmtMaxResults])
-
-instance ToPath ListMigrationTasks where
-        toPath = const "/"
-
-instance ToQuery ListMigrationTasks where
-        toQuery = const mempty
-
--- | /See:/ 'listMigrationTasksResponse' smart constructor.
-data ListMigrationTasksResponse = ListMigrationTasksResponse'
-  { _lmtrsMigrationTaskSummaryList :: !(Maybe [MigrationTaskSummary])
-  , _lmtrsNextToken                :: !(Maybe Text)
-  , _lmtrsResponseStatus           :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListMigrationTasksResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lmtrsMigrationTaskSummaryList' - Lists the migration task's summary which includes: @MigrationTaskName@ , @ProgressPercent@ , @ProgressUpdateStream@ , @Status@ , and the @UpdateDateTime@ for each task.
---
--- * 'lmtrsNextToken' - If there are more migration tasks than the max result, return the next token to be passed to the next call as a bookmark of where to start from.
---
--- * 'lmtrsResponseStatus' - -- | The response status code.
-listMigrationTasksResponse
-    :: Int -- ^ 'lmtrsResponseStatus'
-    -> ListMigrationTasksResponse
-listMigrationTasksResponse pResponseStatus_ =
-  ListMigrationTasksResponse'
-    { _lmtrsMigrationTaskSummaryList = Nothing
-    , _lmtrsNextToken = Nothing
-    , _lmtrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Lists the migration task's summary which includes: @MigrationTaskName@ , @ProgressPercent@ , @ProgressUpdateStream@ , @Status@ , and the @UpdateDateTime@ for each task.
-lmtrsMigrationTaskSummaryList :: Lens' ListMigrationTasksResponse [MigrationTaskSummary]
-lmtrsMigrationTaskSummaryList = lens _lmtrsMigrationTaskSummaryList (\ s a -> s{_lmtrsMigrationTaskSummaryList = a}) . _Default . _Coerce
-
--- | If there are more migration tasks than the max result, return the next token to be passed to the next call as a bookmark of where to start from.
-lmtrsNextToken :: Lens' ListMigrationTasksResponse (Maybe Text)
-lmtrsNextToken = lens _lmtrsNextToken (\ s a -> s{_lmtrsNextToken = a})
-
--- | -- | The response status code.
-lmtrsResponseStatus :: Lens' ListMigrationTasksResponse Int
-lmtrsResponseStatus = lens _lmtrsResponseStatus (\ s a -> s{_lmtrsResponseStatus = a})
-
-instance NFData ListMigrationTasksResponse where
diff --git a/gen/Network/AWS/MigrationHub/ListProgressUpdateStreams.hs b/gen/Network/AWS/MigrationHub/ListProgressUpdateStreams.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/ListProgressUpdateStreams.hs
+++ /dev/null
@@ -1,158 +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.MigrationHub.ListProgressUpdateStreams
--- 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 progress update streams associated with the user account making this call.
---
---
-module Network.AWS.MigrationHub.ListProgressUpdateStreams
-    (
-    -- * Creating a Request
-      listProgressUpdateStreams
-    , ListProgressUpdateStreams
-    -- * Request Lenses
-    , lpusNextToken
-    , lpusMaxResults
-
-    -- * Destructuring the Response
-    , listProgressUpdateStreamsResponse
-    , ListProgressUpdateStreamsResponse
-    -- * Response Lenses
-    , lpusrsProgressUpdateStreamSummaryList
-    , lpusrsNextToken
-    , lpusrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listProgressUpdateStreams' smart constructor.
-data ListProgressUpdateStreams = ListProgressUpdateStreams'
-  { _lpusNextToken  :: !(Maybe Text)
-  , _lpusMaxResults :: !(Maybe Nat)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListProgressUpdateStreams' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lpusNextToken' - If a @NextToken@ was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in @NextToken@ .
---
--- * 'lpusMaxResults' - Filter to limit the maximum number of results to list per page.
-listProgressUpdateStreams
-    :: ListProgressUpdateStreams
-listProgressUpdateStreams =
-  ListProgressUpdateStreams'
-    {_lpusNextToken = Nothing, _lpusMaxResults = Nothing}
-
-
--- | If a @NextToken@ was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in @NextToken@ .
-lpusNextToken :: Lens' ListProgressUpdateStreams (Maybe Text)
-lpusNextToken = lens _lpusNextToken (\ s a -> s{_lpusNextToken = a})
-
--- | Filter to limit the maximum number of results to list per page.
-lpusMaxResults :: Lens' ListProgressUpdateStreams (Maybe Natural)
-lpusMaxResults = lens _lpusMaxResults (\ s a -> s{_lpusMaxResults = a}) . mapping _Nat
-
-instance AWSRequest ListProgressUpdateStreams where
-        type Rs ListProgressUpdateStreams =
-             ListProgressUpdateStreamsResponse
-        request = postJSON migrationHub
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListProgressUpdateStreamsResponse' <$>
-                   (x .?> "ProgressUpdateStreamSummaryList" .!@ mempty)
-                     <*> (x .?> "NextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListProgressUpdateStreams where
-
-instance NFData ListProgressUpdateStreams where
-
-instance ToHeaders ListProgressUpdateStreams where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.ListProgressUpdateStreams" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListProgressUpdateStreams where
-        toJSON ListProgressUpdateStreams'{..}
-          = object
-              (catMaybes
-                 [("NextToken" .=) <$> _lpusNextToken,
-                  ("MaxResults" .=) <$> _lpusMaxResults])
-
-instance ToPath ListProgressUpdateStreams where
-        toPath = const "/"
-
-instance ToQuery ListProgressUpdateStreams where
-        toQuery = const mempty
-
--- | /See:/ 'listProgressUpdateStreamsResponse' smart constructor.
-data ListProgressUpdateStreamsResponse = ListProgressUpdateStreamsResponse'
-  { _lpusrsProgressUpdateStreamSummaryList :: !(Maybe [ProgressUpdateStreamSummary])
-  , _lpusrsNextToken :: !(Maybe Text)
-  , _lpusrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListProgressUpdateStreamsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lpusrsProgressUpdateStreamSummaryList' - List of progress update streams up to the max number of results passed in the input.
---
--- * 'lpusrsNextToken' - If there are more streams created than the max result, return the next token to be passed to the next call as a bookmark of where to start from.
---
--- * 'lpusrsResponseStatus' - -- | The response status code.
-listProgressUpdateStreamsResponse
-    :: Int -- ^ 'lpusrsResponseStatus'
-    -> ListProgressUpdateStreamsResponse
-listProgressUpdateStreamsResponse pResponseStatus_ =
-  ListProgressUpdateStreamsResponse'
-    { _lpusrsProgressUpdateStreamSummaryList = Nothing
-    , _lpusrsNextToken = Nothing
-    , _lpusrsResponseStatus = pResponseStatus_
-    }
-
-
--- | List of progress update streams up to the max number of results passed in the input.
-lpusrsProgressUpdateStreamSummaryList :: Lens' ListProgressUpdateStreamsResponse [ProgressUpdateStreamSummary]
-lpusrsProgressUpdateStreamSummaryList = lens _lpusrsProgressUpdateStreamSummaryList (\ s a -> s{_lpusrsProgressUpdateStreamSummaryList = a}) . _Default . _Coerce
-
--- | If there are more streams created than the max result, return the next token to be passed to the next call as a bookmark of where to start from.
-lpusrsNextToken :: Lens' ListProgressUpdateStreamsResponse (Maybe Text)
-lpusrsNextToken = lens _lpusrsNextToken (\ s a -> s{_lpusrsNextToken = a})
-
--- | -- | The response status code.
-lpusrsResponseStatus :: Lens' ListProgressUpdateStreamsResponse Int
-lpusrsResponseStatus = lens _lpusrsResponseStatus (\ s a -> s{_lpusrsResponseStatus = a})
-
-instance NFData ListProgressUpdateStreamsResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/NotifyApplicationState.hs b/gen/Network/AWS/MigrationHub/NotifyApplicationState.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/NotifyApplicationState.hs
+++ /dev/null
@@ -1,149 +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.MigrationHub.NotifyApplicationState
--- 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)
---
--- Sets the migration state of an application. For a given application identified by the value passed to @ApplicationId@ , its status is set or updated by passing one of three values to @Status@ : @NOT_STARTED | IN_PROGRESS | COMPLETED@ .
---
---
-module Network.AWS.MigrationHub.NotifyApplicationState
-    (
-    -- * Creating a Request
-      notifyApplicationState
-    , NotifyApplicationState
-    -- * Request Lenses
-    , nasDryRun
-    , nasApplicationId
-    , nasStatus
-
-    -- * Destructuring the Response
-    , notifyApplicationStateResponse
-    , NotifyApplicationStateResponse
-    -- * Response Lenses
-    , nasrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'notifyApplicationState' smart constructor.
-data NotifyApplicationState = NotifyApplicationState'
-  { _nasDryRun        :: !(Maybe Bool)
-  , _nasApplicationId :: !Text
-  , _nasStatus        :: !ApplicationStatus
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NotifyApplicationState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nasDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'nasApplicationId' - The configurationId in ADS that uniquely identifies the grouped application.
---
--- * 'nasStatus' - Status of the application - Not Started, In-Progress, Complete.
-notifyApplicationState
-    :: Text -- ^ 'nasApplicationId'
-    -> ApplicationStatus -- ^ 'nasStatus'
-    -> NotifyApplicationState
-notifyApplicationState pApplicationId_ pStatus_ =
-  NotifyApplicationState'
-    { _nasDryRun = Nothing
-    , _nasApplicationId = pApplicationId_
-    , _nasStatus = pStatus_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-nasDryRun :: Lens' NotifyApplicationState (Maybe Bool)
-nasDryRun = lens _nasDryRun (\ s a -> s{_nasDryRun = a})
-
--- | The configurationId in ADS that uniquely identifies the grouped application.
-nasApplicationId :: Lens' NotifyApplicationState Text
-nasApplicationId = lens _nasApplicationId (\ s a -> s{_nasApplicationId = a})
-
--- | Status of the application - Not Started, In-Progress, Complete.
-nasStatus :: Lens' NotifyApplicationState ApplicationStatus
-nasStatus = lens _nasStatus (\ s a -> s{_nasStatus = a})
-
-instance AWSRequest NotifyApplicationState where
-        type Rs NotifyApplicationState =
-             NotifyApplicationStateResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 NotifyApplicationStateResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable NotifyApplicationState where
-
-instance NFData NotifyApplicationState where
-
-instance ToHeaders NotifyApplicationState where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.NotifyApplicationState" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON NotifyApplicationState where
-        toJSON NotifyApplicationState'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _nasDryRun,
-                  Just ("ApplicationId" .= _nasApplicationId),
-                  Just ("Status" .= _nasStatus)])
-
-instance ToPath NotifyApplicationState where
-        toPath = const "/"
-
-instance ToQuery NotifyApplicationState where
-        toQuery = const mempty
-
--- | /See:/ 'notifyApplicationStateResponse' smart constructor.
-newtype NotifyApplicationStateResponse = NotifyApplicationStateResponse'
-  { _nasrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NotifyApplicationStateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nasrsResponseStatus' - -- | The response status code.
-notifyApplicationStateResponse
-    :: Int -- ^ 'nasrsResponseStatus'
-    -> NotifyApplicationStateResponse
-notifyApplicationStateResponse pResponseStatus_ =
-  NotifyApplicationStateResponse' {_nasrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-nasrsResponseStatus :: Lens' NotifyApplicationStateResponse Int
-nasrsResponseStatus = lens _nasrsResponseStatus (\ s a -> s{_nasrsResponseStatus = a})
-
-instance NFData NotifyApplicationStateResponse where
diff --git a/gen/Network/AWS/MigrationHub/NotifyMigrationTaskState.hs b/gen/Network/AWS/MigrationHub/NotifyMigrationTaskState.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/NotifyMigrationTaskState.hs
+++ /dev/null
@@ -1,194 +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.MigrationHub.NotifyMigrationTaskState
--- 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)
---
--- Notifies Migration Hub of the current status, progress, or other detail regarding a migration task. This API has the following traits:
---
---
---     * Migration tools will call the @NotifyMigrationTaskState@ API to share the latest progress and status.
---
---     * @MigrationTaskName@ is used for addressing updates to the correct target.
---
---     * @ProgressUpdateStream@ is used for access control and to provide a namespace for each migration tool.
---
---
---
-module Network.AWS.MigrationHub.NotifyMigrationTaskState
-    (
-    -- * Creating a Request
-      notifyMigrationTaskState
-    , NotifyMigrationTaskState
-    -- * Request Lenses
-    , nmtsDryRun
-    , nmtsProgressUpdateStream
-    , nmtsMigrationTaskName
-    , nmtsTask
-    , nmtsUpdateDateTime
-    , nmtsNextUpdateSeconds
-
-    -- * Destructuring the Response
-    , notifyMigrationTaskStateResponse
-    , NotifyMigrationTaskStateResponse
-    -- * Response Lenses
-    , nmtsrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'notifyMigrationTaskState' smart constructor.
-data NotifyMigrationTaskState = NotifyMigrationTaskState'
-  { _nmtsDryRun               :: !(Maybe Bool)
-  , _nmtsProgressUpdateStream :: !Text
-  , _nmtsMigrationTaskName    :: !Text
-  , _nmtsTask                 :: !Task
-  , _nmtsUpdateDateTime       :: !POSIX
-  , _nmtsNextUpdateSeconds    :: !Nat
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NotifyMigrationTaskState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nmtsDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'nmtsProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'nmtsMigrationTaskName' - Unique identifier that references the migration task.
---
--- * 'nmtsTask' - Information about the task's progress and status.
---
--- * 'nmtsUpdateDateTime' - The timestamp when the task was gathered.
---
--- * 'nmtsNextUpdateSeconds' - Number of seconds after the UpdateDateTime within which the Migration Hub can expect an update. If Migration Hub does not receive an update within the specified interval, then the migration task will be considered stale.
-notifyMigrationTaskState
-    :: Text -- ^ 'nmtsProgressUpdateStream'
-    -> Text -- ^ 'nmtsMigrationTaskName'
-    -> Task -- ^ 'nmtsTask'
-    -> UTCTime -- ^ 'nmtsUpdateDateTime'
-    -> Natural -- ^ 'nmtsNextUpdateSeconds'
-    -> NotifyMigrationTaskState
-notifyMigrationTaskState pProgressUpdateStream_ pMigrationTaskName_ pTask_ pUpdateDateTime_ pNextUpdateSeconds_ =
-  NotifyMigrationTaskState'
-    { _nmtsDryRun = Nothing
-    , _nmtsProgressUpdateStream = pProgressUpdateStream_
-    , _nmtsMigrationTaskName = pMigrationTaskName_
-    , _nmtsTask = pTask_
-    , _nmtsUpdateDateTime = _Time # pUpdateDateTime_
-    , _nmtsNextUpdateSeconds = _Nat # pNextUpdateSeconds_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-nmtsDryRun :: Lens' NotifyMigrationTaskState (Maybe Bool)
-nmtsDryRun = lens _nmtsDryRun (\ s a -> s{_nmtsDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-nmtsProgressUpdateStream :: Lens' NotifyMigrationTaskState Text
-nmtsProgressUpdateStream = lens _nmtsProgressUpdateStream (\ s a -> s{_nmtsProgressUpdateStream = a})
-
--- | Unique identifier that references the migration task.
-nmtsMigrationTaskName :: Lens' NotifyMigrationTaskState Text
-nmtsMigrationTaskName = lens _nmtsMigrationTaskName (\ s a -> s{_nmtsMigrationTaskName = a})
-
--- | Information about the task's progress and status.
-nmtsTask :: Lens' NotifyMigrationTaskState Task
-nmtsTask = lens _nmtsTask (\ s a -> s{_nmtsTask = a})
-
--- | The timestamp when the task was gathered.
-nmtsUpdateDateTime :: Lens' NotifyMigrationTaskState UTCTime
-nmtsUpdateDateTime = lens _nmtsUpdateDateTime (\ s a -> s{_nmtsUpdateDateTime = a}) . _Time
-
--- | Number of seconds after the UpdateDateTime within which the Migration Hub can expect an update. If Migration Hub does not receive an update within the specified interval, then the migration task will be considered stale.
-nmtsNextUpdateSeconds :: Lens' NotifyMigrationTaskState Natural
-nmtsNextUpdateSeconds = lens _nmtsNextUpdateSeconds (\ s a -> s{_nmtsNextUpdateSeconds = a}) . _Nat
-
-instance AWSRequest NotifyMigrationTaskState where
-        type Rs NotifyMigrationTaskState =
-             NotifyMigrationTaskStateResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 NotifyMigrationTaskStateResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable NotifyMigrationTaskState where
-
-instance NFData NotifyMigrationTaskState where
-
-instance ToHeaders NotifyMigrationTaskState where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.NotifyMigrationTaskState" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON NotifyMigrationTaskState where
-        toJSON NotifyMigrationTaskState'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _nmtsDryRun,
-                  Just
-                    ("ProgressUpdateStream" .=
-                       _nmtsProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _nmtsMigrationTaskName),
-                  Just ("Task" .= _nmtsTask),
-                  Just ("UpdateDateTime" .= _nmtsUpdateDateTime),
-                  Just
-                    ("NextUpdateSeconds" .= _nmtsNextUpdateSeconds)])
-
-instance ToPath NotifyMigrationTaskState where
-        toPath = const "/"
-
-instance ToQuery NotifyMigrationTaskState where
-        toQuery = const mempty
-
--- | /See:/ 'notifyMigrationTaskStateResponse' smart constructor.
-newtype NotifyMigrationTaskStateResponse = NotifyMigrationTaskStateResponse'
-  { _nmtsrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NotifyMigrationTaskStateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nmtsrsResponseStatus' - -- | The response status code.
-notifyMigrationTaskStateResponse
-    :: Int -- ^ 'nmtsrsResponseStatus'
-    -> NotifyMigrationTaskStateResponse
-notifyMigrationTaskStateResponse pResponseStatus_ =
-  NotifyMigrationTaskStateResponse' {_nmtsrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-nmtsrsResponseStatus :: Lens' NotifyMigrationTaskStateResponse Int
-nmtsrsResponseStatus = lens _nmtsrsResponseStatus (\ s a -> s{_nmtsrsResponseStatus = a})
-
-instance NFData NotifyMigrationTaskStateResponse
-         where
diff --git a/gen/Network/AWS/MigrationHub/PutResourceAttributes.hs b/gen/Network/AWS/MigrationHub/PutResourceAttributes.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/PutResourceAttributes.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.MigrationHub.PutResourceAttributes
--- 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)
---
--- Provides identifying details of the resource being migrated so that it can be associated in the Application Discovery Service (ADS)'s repository. This association occurs asynchronously after @PutResourceAttributes@ returns.
---
---
--- /Important:/     * Keep in mind that subsequent calls to PutResourceAttributes will override previously stored attributes. For example, if it is first called with a MAC address, but later, it is desired to /add/ an IP address, it will then be required to call it with /both/ the IP and MAC addresses to prevent overiding the MAC address.
---
---     * Note the instructions regarding the special use case of the @ResourceAttributeList@ parameter when specifying any "VM" related value.
---
---
---
-module Network.AWS.MigrationHub.PutResourceAttributes
-    (
-    -- * Creating a Request
-      putResourceAttributes
-    , PutResourceAttributes
-    -- * Request Lenses
-    , praDryRun
-    , praProgressUpdateStream
-    , praMigrationTaskName
-    , praResourceAttributeList
-
-    -- * Destructuring the Response
-    , putResourceAttributesResponse
-    , PutResourceAttributesResponse
-    -- * Response Lenses
-    , prarsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'putResourceAttributes' smart constructor.
-data PutResourceAttributes = PutResourceAttributes'
-  { _praDryRun                :: !(Maybe Bool)
-  , _praProgressUpdateStream  :: !Text
-  , _praMigrationTaskName     :: !Text
-  , _praResourceAttributeList :: !(List1 ResourceAttribute)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PutResourceAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'praDryRun' - Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
---
--- * 'praProgressUpdateStream' - The name of the ProgressUpdateStream.
---
--- * 'praMigrationTaskName' - Unique identifier that references the migration task.
---
--- * 'praResourceAttributeList' - Information about the resource that is being migrated. This data will be used to map the task to a resource in the Application Discovery Service (ADS)'s repository. /Important:/ If any "VM" related value is used for a @ResourceAttribute@ object, it is required that @VM_MANAGER_ID@ , as a minimum, is always used. If it is not used, the server will not be associated in the Application Discovery Service (ADS)'s repository using any of the other "VM" related values, and you will experience data loss. See the Example section below for a use case of specifying "VM" related values.
-putResourceAttributes
-    :: Text -- ^ 'praProgressUpdateStream'
-    -> Text -- ^ 'praMigrationTaskName'
-    -> NonEmpty ResourceAttribute -- ^ 'praResourceAttributeList'
-    -> PutResourceAttributes
-putResourceAttributes pProgressUpdateStream_ pMigrationTaskName_ pResourceAttributeList_ =
-  PutResourceAttributes'
-    { _praDryRun = Nothing
-    , _praProgressUpdateStream = pProgressUpdateStream_
-    , _praMigrationTaskName = pMigrationTaskName_
-    , _praResourceAttributeList = _List1 # pResourceAttributeList_
-    }
-
-
--- | Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.
-praDryRun :: Lens' PutResourceAttributes (Maybe Bool)
-praDryRun = lens _praDryRun (\ s a -> s{_praDryRun = a})
-
--- | The name of the ProgressUpdateStream.
-praProgressUpdateStream :: Lens' PutResourceAttributes Text
-praProgressUpdateStream = lens _praProgressUpdateStream (\ s a -> s{_praProgressUpdateStream = a})
-
--- | Unique identifier that references the migration task.
-praMigrationTaskName :: Lens' PutResourceAttributes Text
-praMigrationTaskName = lens _praMigrationTaskName (\ s a -> s{_praMigrationTaskName = a})
-
--- | Information about the resource that is being migrated. This data will be used to map the task to a resource in the Application Discovery Service (ADS)'s repository. /Important:/ If any "VM" related value is used for a @ResourceAttribute@ object, it is required that @VM_MANAGER_ID@ , as a minimum, is always used. If it is not used, the server will not be associated in the Application Discovery Service (ADS)'s repository using any of the other "VM" related values, and you will experience data loss. See the Example section below for a use case of specifying "VM" related values.
-praResourceAttributeList :: Lens' PutResourceAttributes (NonEmpty ResourceAttribute)
-praResourceAttributeList = lens _praResourceAttributeList (\ s a -> s{_praResourceAttributeList = a}) . _List1
-
-instance AWSRequest PutResourceAttributes where
-        type Rs PutResourceAttributes =
-             PutResourceAttributesResponse
-        request = postJSON migrationHub
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 PutResourceAttributesResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable PutResourceAttributes where
-
-instance NFData PutResourceAttributes where
-
-instance ToHeaders PutResourceAttributes where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMigrationHub.PutResourceAttributes" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON PutResourceAttributes where
-        toJSON PutResourceAttributes'{..}
-          = object
-              (catMaybes
-                 [("DryRun" .=) <$> _praDryRun,
-                  Just
-                    ("ProgressUpdateStream" .= _praProgressUpdateStream),
-                  Just ("MigrationTaskName" .= _praMigrationTaskName),
-                  Just
-                    ("ResourceAttributeList" .=
-                       _praResourceAttributeList)])
-
-instance ToPath PutResourceAttributes where
-        toPath = const "/"
-
-instance ToQuery PutResourceAttributes where
-        toQuery = const mempty
-
--- | /See:/ 'putResourceAttributesResponse' smart constructor.
-newtype PutResourceAttributesResponse = PutResourceAttributesResponse'
-  { _prarsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PutResourceAttributesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prarsResponseStatus' - -- | The response status code.
-putResourceAttributesResponse
-    :: Int -- ^ 'prarsResponseStatus'
-    -> PutResourceAttributesResponse
-putResourceAttributesResponse pResponseStatus_ =
-  PutResourceAttributesResponse' {_prarsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-prarsResponseStatus :: Lens' PutResourceAttributesResponse Int
-prarsResponseStatus = lens _prarsResponseStatus (\ s a -> s{_prarsResponseStatus = a})
-
-instance NFData PutResourceAttributesResponse where
diff --git a/gen/Network/AWS/MigrationHub/Types.hs b/gen/Network/AWS/MigrationHub/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/Types.hs
+++ /dev/null
@@ -1,188 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MigrationHub.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.MigrationHub.Types
-    (
-    -- * Service Configuration
-      migrationHub
-
-    -- * Errors
-    , _AccessDeniedException
-    , _DryRunOperation
-    , _PolicyErrorException
-    , _InternalServerError
-    , _InvalidInputException
-    , _ServiceUnavailableException
-    , _ResourceNotFoundException
-    , _UnauthorizedOperation
-
-    -- * ApplicationStatus
-    , ApplicationStatus (..)
-
-    -- * MigrationStatus
-    , MigrationStatus (..)
-
-    -- * ResourceAttributeType
-    , ResourceAttributeType (..)
-
-    -- * CreatedArtifact
-    , CreatedArtifact
-    , createdArtifact
-    , caDescription
-    , caName
-
-    -- * DiscoveredResource
-    , DiscoveredResource
-    , discoveredResource
-    , drDescription
-    , drConfigurationId
-
-    -- * MigrationTask
-    , MigrationTask
-    , migrationTask
-    , mtUpdateDateTime
-    , mtResourceAttributeList
-    , mtTask
-    , mtProgressUpdateStream
-    , mtMigrationTaskName
-
-    -- * MigrationTaskSummary
-    , MigrationTaskSummary
-    , migrationTaskSummary
-    , mtsStatus
-    , mtsUpdateDateTime
-    , mtsProgressPercent
-    , mtsStatusDetail
-    , mtsProgressUpdateStream
-    , mtsMigrationTaskName
-
-    -- * ProgressUpdateStreamSummary
-    , ProgressUpdateStreamSummary
-    , progressUpdateStreamSummary
-    , pussProgressUpdateStreamName
-
-    -- * ResourceAttribute
-    , ResourceAttribute
-    , resourceAttribute
-    , raType
-    , raValue
-
-    -- * Task
-    , Task
-    , task
-    , tProgressPercent
-    , tStatusDetail
-    , tStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types.Product
-import Network.AWS.MigrationHub.Types.Sum
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-
--- | API version @2017-05-31@ of the Amazon Migration Hub SDK configuration.
-migrationHub :: Service
-migrationHub =
-  Service
-    { _svcAbbrev = "MigrationHub"
-    , _svcSigner = v4
-    , _svcPrefix = "mgh"
-    , _svcVersion = "2017-05-31"
-    , _svcEndpoint = defaultEndpoint migrationHub
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "MigrationHub"
-    , _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
-
-
--- | You do not have sufficient access to perform this action.
---
---
-_AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError
-_AccessDeniedException = _MatchServiceError migrationHub "AccessDeniedException"
-
-
--- | Exception raised to indicate a successfully authorized action when the @DryRun@ flag is set to "true".
---
---
-_DryRunOperation :: AsError a => Getting (First ServiceError) a ServiceError
-_DryRunOperation = _MatchServiceError migrationHub "DryRunOperation"
-
-
--- | Exception raised when there are problems accessing ADS (Application Discovery Service); most likely due to a misconfigured policy or the @migrationhub-discovery@ role is missing or not configured correctly.
---
---
-_PolicyErrorException :: AsError a => Getting (First ServiceError) a ServiceError
-_PolicyErrorException = _MatchServiceError migrationHub "PolicyErrorException"
-
-
--- | Exception raised when there is an internal, configuration, or dependency error encountered.
---
---
-_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalServerError = _MatchServiceError migrationHub "InternalServerError"
-
-
--- | Exception raised when the provided input violates a policy constraint or is entered in the wrong format or data type.
---
---
-_InvalidInputException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidInputException = _MatchServiceError migrationHub "InvalidInputException"
-
-
--- | Exception raised when there is an internal, configuration, or dependency error encountered.
---
---
-_ServiceUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError
-_ServiceUnavailableException =
-  _MatchServiceError migrationHub "ServiceUnavailableException"
-
-
--- | Exception raised when the request references a resource (ADS configuration, update stream, migration task, etc.) that does not exist in ADS (Application Discovery Service) or in Migration Hub's repository.
---
---
-_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceNotFoundException =
-  _MatchServiceError migrationHub "ResourceNotFoundException"
-
-
--- | Exception raised to indicate a request was not authorized when the @DryRun@ flag is set to "true".
---
---
-_UnauthorizedOperation :: AsError a => Getting (First ServiceError) a ServiceError
-_UnauthorizedOperation = _MatchServiceError migrationHub "UnauthorizedOperation"
-
diff --git a/gen/Network/AWS/MigrationHub/Types/Product.hs b/gen/Network/AWS/MigrationHub/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/Types/Product.hs
+++ /dev/null
@@ -1,446 +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.MigrationHub.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.MigrationHub.Types.Product where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types.Sum
-import Network.AWS.Prelude
-
--- | An ARN of the AWS cloud resource target receiving the migration (e.g., AMI, EC2 instance, RDS instance, etc.).
---
---
---
--- /See:/ 'createdArtifact' smart constructor.
-data CreatedArtifact = CreatedArtifact'
-  { _caDescription :: !(Maybe Text)
-  , _caName        :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreatedArtifact' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'caDescription' - A description that can be free-form text to record additional detail about the artifact for clarity or for later reference.
---
--- * 'caName' - An ARN that uniquely identifies the result of a migration task.
-createdArtifact
-    :: Text -- ^ 'caName'
-    -> CreatedArtifact
-createdArtifact pName_ =
-  CreatedArtifact' {_caDescription = Nothing, _caName = pName_}
-
-
--- | A description that can be free-form text to record additional detail about the artifact for clarity or for later reference.
-caDescription :: Lens' CreatedArtifact (Maybe Text)
-caDescription = lens _caDescription (\ s a -> s{_caDescription = a})
-
--- | An ARN that uniquely identifies the result of a migration task.
-caName :: Lens' CreatedArtifact Text
-caName = lens _caName (\ s a -> s{_caName = a})
-
-instance FromJSON CreatedArtifact where
-        parseJSON
-          = withObject "CreatedArtifact"
-              (\ x ->
-                 CreatedArtifact' <$>
-                   (x .:? "Description") <*> (x .: "Name"))
-
-instance Hashable CreatedArtifact where
-
-instance NFData CreatedArtifact where
-
-instance ToJSON CreatedArtifact where
-        toJSON CreatedArtifact'{..}
-          = object
-              (catMaybes
-                 [("Description" .=) <$> _caDescription,
-                  Just ("Name" .= _caName)])
-
--- | Object representing the on-premises resource being migrated.
---
---
---
--- /See:/ 'discoveredResource' smart constructor.
-data DiscoveredResource = DiscoveredResource'
-  { _drDescription     :: !(Maybe Text)
-  , _drConfigurationId :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DiscoveredResource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drDescription' - A description that can be free-form text to record additional detail about the discovered resource for clarity or later reference.
---
--- * 'drConfigurationId' - The configurationId in ADS that uniquely identifies the on-premise resource.
-discoveredResource
-    :: Text -- ^ 'drConfigurationId'
-    -> DiscoveredResource
-discoveredResource pConfigurationId_ =
-  DiscoveredResource'
-    {_drDescription = Nothing, _drConfigurationId = pConfigurationId_}
-
-
--- | A description that can be free-form text to record additional detail about the discovered resource for clarity or later reference.
-drDescription :: Lens' DiscoveredResource (Maybe Text)
-drDescription = lens _drDescription (\ s a -> s{_drDescription = a})
-
--- | The configurationId in ADS that uniquely identifies the on-premise resource.
-drConfigurationId :: Lens' DiscoveredResource Text
-drConfigurationId = lens _drConfigurationId (\ s a -> s{_drConfigurationId = a})
-
-instance FromJSON DiscoveredResource where
-        parseJSON
-          = withObject "DiscoveredResource"
-              (\ x ->
-                 DiscoveredResource' <$>
-                   (x .:? "Description") <*> (x .: "ConfigurationId"))
-
-instance Hashable DiscoveredResource where
-
-instance NFData DiscoveredResource where
-
-instance ToJSON DiscoveredResource where
-        toJSON DiscoveredResource'{..}
-          = object
-              (catMaybes
-                 [("Description" .=) <$> _drDescription,
-                  Just ("ConfigurationId" .= _drConfigurationId)])
-
--- | Represents a migration task in a migration tool.
---
---
---
--- /See:/ 'migrationTask' smart constructor.
-data MigrationTask = MigrationTask'
-  { _mtUpdateDateTime        :: !(Maybe POSIX)
-  , _mtResourceAttributeList :: !(Maybe [ResourceAttribute])
-  , _mtTask                  :: !(Maybe Task)
-  , _mtProgressUpdateStream  :: !(Maybe Text)
-  , _mtMigrationTaskName     :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MigrationTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtUpdateDateTime' - The timestamp when the task was gathered.
---
--- * 'mtResourceAttributeList' -
---
--- * 'mtTask' - Task object encapsulating task information.
---
--- * 'mtProgressUpdateStream' - A name that identifies the vendor of the migration tool being used.
---
--- * 'mtMigrationTaskName' - Unique identifier that references the migration task.
-migrationTask
-    :: MigrationTask
-migrationTask =
-  MigrationTask'
-    { _mtUpdateDateTime = Nothing
-    , _mtResourceAttributeList = Nothing
-    , _mtTask = Nothing
-    , _mtProgressUpdateStream = Nothing
-    , _mtMigrationTaskName = Nothing
-    }
-
-
--- | The timestamp when the task was gathered.
-mtUpdateDateTime :: Lens' MigrationTask (Maybe UTCTime)
-mtUpdateDateTime = lens _mtUpdateDateTime (\ s a -> s{_mtUpdateDateTime = a}) . mapping _Time
-
--- |
-mtResourceAttributeList :: Lens' MigrationTask [ResourceAttribute]
-mtResourceAttributeList = lens _mtResourceAttributeList (\ s a -> s{_mtResourceAttributeList = a}) . _Default . _Coerce
-
--- | Task object encapsulating task information.
-mtTask :: Lens' MigrationTask (Maybe Task)
-mtTask = lens _mtTask (\ s a -> s{_mtTask = a})
-
--- | A name that identifies the vendor of the migration tool being used.
-mtProgressUpdateStream :: Lens' MigrationTask (Maybe Text)
-mtProgressUpdateStream = lens _mtProgressUpdateStream (\ s a -> s{_mtProgressUpdateStream = a})
-
--- | Unique identifier that references the migration task.
-mtMigrationTaskName :: Lens' MigrationTask (Maybe Text)
-mtMigrationTaskName = lens _mtMigrationTaskName (\ s a -> s{_mtMigrationTaskName = a})
-
-instance FromJSON MigrationTask where
-        parseJSON
-          = withObject "MigrationTask"
-              (\ x ->
-                 MigrationTask' <$>
-                   (x .:? "UpdateDateTime") <*>
-                     (x .:? "ResourceAttributeList" .!= mempty)
-                     <*> (x .:? "Task")
-                     <*> (x .:? "ProgressUpdateStream")
-                     <*> (x .:? "MigrationTaskName"))
-
-instance Hashable MigrationTask where
-
-instance NFData MigrationTask where
-
--- | MigrationTaskSummary includes @MigrationTaskName@ , @ProgressPercent@ , @ProgressUpdateStream@ , @Status@ , and @UpdateDateTime@ for each task.
---
---
---
--- /See:/ 'migrationTaskSummary' smart constructor.
-data MigrationTaskSummary = MigrationTaskSummary'
-  { _mtsStatus               :: !(Maybe MigrationStatus)
-  , _mtsUpdateDateTime       :: !(Maybe POSIX)
-  , _mtsProgressPercent      :: !(Maybe Nat)
-  , _mtsStatusDetail         :: !(Maybe Text)
-  , _mtsProgressUpdateStream :: !(Maybe Text)
-  , _mtsMigrationTaskName    :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MigrationTaskSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtsStatus' - Status of the task.
---
--- * 'mtsUpdateDateTime' - The timestamp when the task was gathered.
---
--- * 'mtsProgressPercent' -
---
--- * 'mtsStatusDetail' - Detail information of what is being done within the overall status state.
---
--- * 'mtsProgressUpdateStream' - An AWS resource used for access control. It should uniquely identify the migration tool as it is used for all updates made by the tool.
---
--- * 'mtsMigrationTaskName' - Unique identifier that references the migration task.
-migrationTaskSummary
-    :: MigrationTaskSummary
-migrationTaskSummary =
-  MigrationTaskSummary'
-    { _mtsStatus = Nothing
-    , _mtsUpdateDateTime = Nothing
-    , _mtsProgressPercent = Nothing
-    , _mtsStatusDetail = Nothing
-    , _mtsProgressUpdateStream = Nothing
-    , _mtsMigrationTaskName = Nothing
-    }
-
-
--- | Status of the task.
-mtsStatus :: Lens' MigrationTaskSummary (Maybe MigrationStatus)
-mtsStatus = lens _mtsStatus (\ s a -> s{_mtsStatus = a})
-
--- | The timestamp when the task was gathered.
-mtsUpdateDateTime :: Lens' MigrationTaskSummary (Maybe UTCTime)
-mtsUpdateDateTime = lens _mtsUpdateDateTime (\ s a -> s{_mtsUpdateDateTime = a}) . mapping _Time
-
--- |
-mtsProgressPercent :: Lens' MigrationTaskSummary (Maybe Natural)
-mtsProgressPercent = lens _mtsProgressPercent (\ s a -> s{_mtsProgressPercent = a}) . mapping _Nat
-
--- | Detail information of what is being done within the overall status state.
-mtsStatusDetail :: Lens' MigrationTaskSummary (Maybe Text)
-mtsStatusDetail = lens _mtsStatusDetail (\ s a -> s{_mtsStatusDetail = a})
-
--- | An AWS resource used for access control. It should uniquely identify the migration tool as it is used for all updates made by the tool.
-mtsProgressUpdateStream :: Lens' MigrationTaskSummary (Maybe Text)
-mtsProgressUpdateStream = lens _mtsProgressUpdateStream (\ s a -> s{_mtsProgressUpdateStream = a})
-
--- | Unique identifier that references the migration task.
-mtsMigrationTaskName :: Lens' MigrationTaskSummary (Maybe Text)
-mtsMigrationTaskName = lens _mtsMigrationTaskName (\ s a -> s{_mtsMigrationTaskName = a})
-
-instance FromJSON MigrationTaskSummary where
-        parseJSON
-          = withObject "MigrationTaskSummary"
-              (\ x ->
-                 MigrationTaskSummary' <$>
-                   (x .:? "Status") <*> (x .:? "UpdateDateTime") <*>
-                     (x .:? "ProgressPercent")
-                     <*> (x .:? "StatusDetail")
-                     <*> (x .:? "ProgressUpdateStream")
-                     <*> (x .:? "MigrationTaskName"))
-
-instance Hashable MigrationTaskSummary where
-
-instance NFData MigrationTaskSummary where
-
--- | Summary of the AWS resource used for access control that is implicitly linked to your AWS account.
---
---
---
--- /See:/ 'progressUpdateStreamSummary' smart constructor.
-newtype ProgressUpdateStreamSummary = ProgressUpdateStreamSummary'
-  { _pussProgressUpdateStreamName :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProgressUpdateStreamSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pussProgressUpdateStreamName' - The name of the ProgressUpdateStream.
-progressUpdateStreamSummary
-    :: ProgressUpdateStreamSummary
-progressUpdateStreamSummary =
-  ProgressUpdateStreamSummary' {_pussProgressUpdateStreamName = Nothing}
-
-
--- | The name of the ProgressUpdateStream.
-pussProgressUpdateStreamName :: Lens' ProgressUpdateStreamSummary (Maybe Text)
-pussProgressUpdateStreamName = lens _pussProgressUpdateStreamName (\ s a -> s{_pussProgressUpdateStreamName = a})
-
-instance FromJSON ProgressUpdateStreamSummary where
-        parseJSON
-          = withObject "ProgressUpdateStreamSummary"
-              (\ x ->
-                 ProgressUpdateStreamSummary' <$>
-                   (x .:? "ProgressUpdateStreamName"))
-
-instance Hashable ProgressUpdateStreamSummary where
-
-instance NFData ProgressUpdateStreamSummary where
-
--- | Attribute associated with a resource.
---
---
--- Note the corresponding format required per type listed below:
---
---     * IPV4    * @x.x.x.x@
---
--- /where x is an integer in the range [0,255]/
---
---     * IPV6    * @y : y : y : y : y : y : y : y@
---
--- /where y is a hexadecimal between 0 and FFFF. [0, FFFF]/
---
---     * MAC_ADDRESS    * @^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$@
---
---     * FQDN    * @^[^<>{}\\\\/?,=\\p{Cntrl}]{1,256}$@
---
---
---
---
--- /See:/ 'resourceAttribute' smart constructor.
-data ResourceAttribute = ResourceAttribute'
-  { _raType  :: !ResourceAttributeType
-  , _raValue :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResourceAttribute' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'raType' - Type of resource.
---
--- * 'raValue' - Value of the resource type.
-resourceAttribute
-    :: ResourceAttributeType -- ^ 'raType'
-    -> Text -- ^ 'raValue'
-    -> ResourceAttribute
-resourceAttribute pType_ pValue_ =
-  ResourceAttribute' {_raType = pType_, _raValue = pValue_}
-
-
--- | Type of resource.
-raType :: Lens' ResourceAttribute ResourceAttributeType
-raType = lens _raType (\ s a -> s{_raType = a})
-
--- | Value of the resource type.
-raValue :: Lens' ResourceAttribute Text
-raValue = lens _raValue (\ s a -> s{_raValue = a})
-
-instance FromJSON ResourceAttribute where
-        parseJSON
-          = withObject "ResourceAttribute"
-              (\ x ->
-                 ResourceAttribute' <$>
-                   (x .: "Type") <*> (x .: "Value"))
-
-instance Hashable ResourceAttribute where
-
-instance NFData ResourceAttribute where
-
-instance ToJSON ResourceAttribute where
-        toJSON ResourceAttribute'{..}
-          = object
-              (catMaybes
-                 [Just ("Type" .= _raType),
-                  Just ("Value" .= _raValue)])
-
--- | Task object encapsulating task information.
---
---
---
--- /See:/ 'task' smart constructor.
-data Task = Task'
-  { _tProgressPercent :: !(Maybe Nat)
-  , _tStatusDetail    :: !(Maybe Text)
-  , _tStatus          :: !MigrationStatus
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Task' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tProgressPercent' - Indication of the percentage completion of the task.
---
--- * 'tStatusDetail' - Details of task status as notified by a migration tool. A tool might use this field to provide clarifying information about the status that is unique to that tool or that explains an error state.
---
--- * 'tStatus' - Status of the task - Not Started, In-Progress, Complete.
-task
-    :: MigrationStatus -- ^ 'tStatus'
-    -> Task
-task pStatus_ =
-  Task'
-    {_tProgressPercent = Nothing, _tStatusDetail = Nothing, _tStatus = pStatus_}
-
-
--- | Indication of the percentage completion of the task.
-tProgressPercent :: Lens' Task (Maybe Natural)
-tProgressPercent = lens _tProgressPercent (\ s a -> s{_tProgressPercent = a}) . mapping _Nat
-
--- | Details of task status as notified by a migration tool. A tool might use this field to provide clarifying information about the status that is unique to that tool or that explains an error state.
-tStatusDetail :: Lens' Task (Maybe Text)
-tStatusDetail = lens _tStatusDetail (\ s a -> s{_tStatusDetail = a})
-
--- | Status of the task - Not Started, In-Progress, Complete.
-tStatus :: Lens' Task MigrationStatus
-tStatus = lens _tStatus (\ s a -> s{_tStatus = a})
-
-instance FromJSON Task where
-        parseJSON
-          = withObject "Task"
-              (\ x ->
-                 Task' <$>
-                   (x .:? "ProgressPercent") <*> (x .:? "StatusDetail")
-                     <*> (x .: "Status"))
-
-instance Hashable Task where
-
-instance NFData Task where
-
-instance ToJSON Task where
-        toJSON Task'{..}
-          = object
-              (catMaybes
-                 [("ProgressPercent" .=) <$> _tProgressPercent,
-                  ("StatusDetail" .=) <$> _tStatusDetail,
-                  Just ("Status" .= _tStatus)])
diff --git a/gen/Network/AWS/MigrationHub/Types/Sum.hs b/gen/Network/AWS/MigrationHub/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/Types/Sum.hs
+++ /dev/null
@@ -1,143 +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.MigrationHub.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.MigrationHub.Types.Sum where
-
-import Network.AWS.Prelude
-
-data ApplicationStatus
-  = ASCompleted
-  | ASInProgress
-  | ASNotStarted
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ApplicationStatus where
-    parser = takeLowerText >>= \case
-        "completed" -> pure ASCompleted
-        "in_progress" -> pure ASInProgress
-        "not_started" -> pure ASNotStarted
-        e -> fromTextError $ "Failure parsing ApplicationStatus from value: '" <> e
-           <> "'. Accepted values: completed, in_progress, not_started"
-
-instance ToText ApplicationStatus where
-    toText = \case
-        ASCompleted -> "COMPLETED"
-        ASInProgress -> "IN_PROGRESS"
-        ASNotStarted -> "NOT_STARTED"
-
-instance Hashable     ApplicationStatus
-instance NFData       ApplicationStatus
-instance ToByteString ApplicationStatus
-instance ToQuery      ApplicationStatus
-instance ToHeader     ApplicationStatus
-
-instance ToJSON ApplicationStatus where
-    toJSON = toJSONText
-
-instance FromJSON ApplicationStatus where
-    parseJSON = parseJSONText "ApplicationStatus"
-
-data MigrationStatus
-  = Completed
-  | Failed
-  | InProgress
-  | NotStarted
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText MigrationStatus where
-    parser = takeLowerText >>= \case
-        "completed" -> pure Completed
-        "failed" -> pure Failed
-        "in_progress" -> pure InProgress
-        "not_started" -> pure NotStarted
-        e -> fromTextError $ "Failure parsing MigrationStatus from value: '" <> e
-           <> "'. Accepted values: completed, failed, in_progress, not_started"
-
-instance ToText MigrationStatus where
-    toText = \case
-        Completed -> "COMPLETED"
-        Failed -> "FAILED"
-        InProgress -> "IN_PROGRESS"
-        NotStarted -> "NOT_STARTED"
-
-instance Hashable     MigrationStatus
-instance NFData       MigrationStatus
-instance ToByteString MigrationStatus
-instance ToQuery      MigrationStatus
-instance ToHeader     MigrationStatus
-
-instance ToJSON MigrationStatus where
-    toJSON = toJSONText
-
-instance FromJSON MigrationStatus where
-    parseJSON = parseJSONText "MigrationStatus"
-
-data ResourceAttributeType
-  = BiosId
-  | Fqdn
-  | IPV4Address
-  | IPV6Address
-  | MACAddress
-  | MotherboardSerialNumber
-  | VMManagedObjectReference
-  | VMManagerId
-  | VMName
-  | VMPath
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ResourceAttributeType where
-    parser = takeLowerText >>= \case
-        "bios_id" -> pure BiosId
-        "fqdn" -> pure Fqdn
-        "ipv4_address" -> pure IPV4Address
-        "ipv6_address" -> pure IPV6Address
-        "mac_address" -> pure MACAddress
-        "motherboard_serial_number" -> pure MotherboardSerialNumber
-        "vm_managed_object_reference" -> pure VMManagedObjectReference
-        "vm_manager_id" -> pure VMManagerId
-        "vm_name" -> pure VMName
-        "vm_path" -> pure VMPath
-        e -> fromTextError $ "Failure parsing ResourceAttributeType from value: '" <> e
-           <> "'. Accepted values: bios_id, fqdn, ipv4_address, ipv6_address, mac_address, motherboard_serial_number, vm_managed_object_reference, vm_manager_id, vm_name, vm_path"
-
-instance ToText ResourceAttributeType where
-    toText = \case
-        BiosId -> "BIOS_ID"
-        Fqdn -> "FQDN"
-        IPV4Address -> "IPV4_ADDRESS"
-        IPV6Address -> "IPV6_ADDRESS"
-        MACAddress -> "MAC_ADDRESS"
-        MotherboardSerialNumber -> "MOTHERBOARD_SERIAL_NUMBER"
-        VMManagedObjectReference -> "VM_MANAGED_OBJECT_REFERENCE"
-        VMManagerId -> "VM_MANAGER_ID"
-        VMName -> "VM_NAME"
-        VMPath -> "VM_PATH"
-
-instance Hashable     ResourceAttributeType
-instance NFData       ResourceAttributeType
-instance ToByteString ResourceAttributeType
-instance ToQuery      ResourceAttributeType
-instance ToHeader     ResourceAttributeType
-
-instance ToJSON ResourceAttributeType where
-    toJSON = toJSONText
-
-instance FromJSON ResourceAttributeType where
-    parseJSON = parseJSONText "ResourceAttributeType"
diff --git a/gen/Network/AWS/MigrationHub/Waiters.hs b/gen/Network/AWS/MigrationHub/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/MigrationHub/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.MigrationHub.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.MigrationHub.Waiters where
-
-import Network.AWS.Lens
-import Network.AWS.MigrationHub.Types
-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.MigrationHub
+import Test.Amazonka.MigrationHub.Internal
 import Test.Tasty
-import Test.AWS.MigrationHub
-import Test.AWS.MigrationHub.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "MigrationHub"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "MigrationHub"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Gen/MigrationHub.hs b/test/Test/AWS/Gen/MigrationHub.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/MigrationHub.hs
+++ /dev/null
@@ -1,327 +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.MigrationHub
--- 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.MigrationHub where
-
-import Data.Proxy
-import Network.AWS.MigrationHub
-import Test.AWS.Fixture
-import Test.AWS.MigrationHub.Internal
-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"
---         [ requestAssociateDiscoveredResource $
---             associateDiscoveredResource
---
---         , requestCreateProgressUpdateStream $
---             createProgressUpdateStream
---
---         , requestListCreatedArtifacts $
---             listCreatedArtifacts
---
---         , requestDisassociateDiscoveredResource $
---             disassociateDiscoveredResource
---
---         , requestNotifyApplicationState $
---             notifyApplicationState
---
---         , requestDeleteProgressUpdateStream $
---             deleteProgressUpdateStream
---
---         , requestListProgressUpdateStreams $
---             listProgressUpdateStreams
---
---         , requestDisassociateCreatedArtifact $
---             disassociateCreatedArtifact
---
---         , requestImportMigrationTask $
---             importMigrationTask
---
---         , requestDescribeMigrationTask $
---             describeMigrationTask
---
---         , requestPutResourceAttributes $
---             putResourceAttributes
---
---         , requestAssociateCreatedArtifact $
---             associateCreatedArtifact
---
---         , requestNotifyMigrationTaskState $
---             notifyMigrationTaskState
---
---         , requestDescribeApplicationState $
---             describeApplicationState
---
---         , requestListMigrationTasks $
---             listMigrationTasks
---
---         , requestListDiscoveredResources $
---             listDiscoveredResources
---
---           ]
-
---     , testGroup "response"
---         [ responseAssociateDiscoveredResource $
---             associateDiscoveredResourceResponse
---
---         , responseCreateProgressUpdateStream $
---             createProgressUpdateStreamResponse
---
---         , responseListCreatedArtifacts $
---             listCreatedArtifactsResponse
---
---         , responseDisassociateDiscoveredResource $
---             disassociateDiscoveredResourceResponse
---
---         , responseNotifyApplicationState $
---             notifyApplicationStateResponse
---
---         , responseDeleteProgressUpdateStream $
---             deleteProgressUpdateStreamResponse
---
---         , responseListProgressUpdateStreams $
---             listProgressUpdateStreamsResponse
---
---         , responseDisassociateCreatedArtifact $
---             disassociateCreatedArtifactResponse
---
---         , responseImportMigrationTask $
---             importMigrationTaskResponse
---
---         , responseDescribeMigrationTask $
---             describeMigrationTaskResponse
---
---         , responsePutResourceAttributes $
---             putResourceAttributesResponse
---
---         , responseAssociateCreatedArtifact $
---             associateCreatedArtifactResponse
---
---         , responseNotifyMigrationTaskState $
---             notifyMigrationTaskStateResponse
---
---         , responseDescribeApplicationState $
---             describeApplicationStateResponse
---
---         , responseListMigrationTasks $
---             listMigrationTasksResponse
---
---         , responseListDiscoveredResources $
---             listDiscoveredResourcesResponse
---
---           ]
---     ]
-
--- Requests
-
-requestAssociateDiscoveredResource :: AssociateDiscoveredResource -> TestTree
-requestAssociateDiscoveredResource = req
-    "AssociateDiscoveredResource"
-    "fixture/AssociateDiscoveredResource.yaml"
-
-requestCreateProgressUpdateStream :: CreateProgressUpdateStream -> TestTree
-requestCreateProgressUpdateStream = req
-    "CreateProgressUpdateStream"
-    "fixture/CreateProgressUpdateStream.yaml"
-
-requestListCreatedArtifacts :: ListCreatedArtifacts -> TestTree
-requestListCreatedArtifacts = req
-    "ListCreatedArtifacts"
-    "fixture/ListCreatedArtifacts.yaml"
-
-requestDisassociateDiscoveredResource :: DisassociateDiscoveredResource -> TestTree
-requestDisassociateDiscoveredResource = req
-    "DisassociateDiscoveredResource"
-    "fixture/DisassociateDiscoveredResource.yaml"
-
-requestNotifyApplicationState :: NotifyApplicationState -> TestTree
-requestNotifyApplicationState = req
-    "NotifyApplicationState"
-    "fixture/NotifyApplicationState.yaml"
-
-requestDeleteProgressUpdateStream :: DeleteProgressUpdateStream -> TestTree
-requestDeleteProgressUpdateStream = req
-    "DeleteProgressUpdateStream"
-    "fixture/DeleteProgressUpdateStream.yaml"
-
-requestListProgressUpdateStreams :: ListProgressUpdateStreams -> TestTree
-requestListProgressUpdateStreams = req
-    "ListProgressUpdateStreams"
-    "fixture/ListProgressUpdateStreams.yaml"
-
-requestDisassociateCreatedArtifact :: DisassociateCreatedArtifact -> TestTree
-requestDisassociateCreatedArtifact = req
-    "DisassociateCreatedArtifact"
-    "fixture/DisassociateCreatedArtifact.yaml"
-
-requestImportMigrationTask :: ImportMigrationTask -> TestTree
-requestImportMigrationTask = req
-    "ImportMigrationTask"
-    "fixture/ImportMigrationTask.yaml"
-
-requestDescribeMigrationTask :: DescribeMigrationTask -> TestTree
-requestDescribeMigrationTask = req
-    "DescribeMigrationTask"
-    "fixture/DescribeMigrationTask.yaml"
-
-requestPutResourceAttributes :: PutResourceAttributes -> TestTree
-requestPutResourceAttributes = req
-    "PutResourceAttributes"
-    "fixture/PutResourceAttributes.yaml"
-
-requestAssociateCreatedArtifact :: AssociateCreatedArtifact -> TestTree
-requestAssociateCreatedArtifact = req
-    "AssociateCreatedArtifact"
-    "fixture/AssociateCreatedArtifact.yaml"
-
-requestNotifyMigrationTaskState :: NotifyMigrationTaskState -> TestTree
-requestNotifyMigrationTaskState = req
-    "NotifyMigrationTaskState"
-    "fixture/NotifyMigrationTaskState.yaml"
-
-requestDescribeApplicationState :: DescribeApplicationState -> TestTree
-requestDescribeApplicationState = req
-    "DescribeApplicationState"
-    "fixture/DescribeApplicationState.yaml"
-
-requestListMigrationTasks :: ListMigrationTasks -> TestTree
-requestListMigrationTasks = req
-    "ListMigrationTasks"
-    "fixture/ListMigrationTasks.yaml"
-
-requestListDiscoveredResources :: ListDiscoveredResources -> TestTree
-requestListDiscoveredResources = req
-    "ListDiscoveredResources"
-    "fixture/ListDiscoveredResources.yaml"
-
--- Responses
-
-responseAssociateDiscoveredResource :: AssociateDiscoveredResourceResponse -> TestTree
-responseAssociateDiscoveredResource = res
-    "AssociateDiscoveredResourceResponse"
-    "fixture/AssociateDiscoveredResourceResponse.proto"
-    migrationHub
-    (Proxy :: Proxy AssociateDiscoveredResource)
-
-responseCreateProgressUpdateStream :: CreateProgressUpdateStreamResponse -> TestTree
-responseCreateProgressUpdateStream = res
-    "CreateProgressUpdateStreamResponse"
-    "fixture/CreateProgressUpdateStreamResponse.proto"
-    migrationHub
-    (Proxy :: Proxy CreateProgressUpdateStream)
-
-responseListCreatedArtifacts :: ListCreatedArtifactsResponse -> TestTree
-responseListCreatedArtifacts = res
-    "ListCreatedArtifactsResponse"
-    "fixture/ListCreatedArtifactsResponse.proto"
-    migrationHub
-    (Proxy :: Proxy ListCreatedArtifacts)
-
-responseDisassociateDiscoveredResource :: DisassociateDiscoveredResourceResponse -> TestTree
-responseDisassociateDiscoveredResource = res
-    "DisassociateDiscoveredResourceResponse"
-    "fixture/DisassociateDiscoveredResourceResponse.proto"
-    migrationHub
-    (Proxy :: Proxy DisassociateDiscoveredResource)
-
-responseNotifyApplicationState :: NotifyApplicationStateResponse -> TestTree
-responseNotifyApplicationState = res
-    "NotifyApplicationStateResponse"
-    "fixture/NotifyApplicationStateResponse.proto"
-    migrationHub
-    (Proxy :: Proxy NotifyApplicationState)
-
-responseDeleteProgressUpdateStream :: DeleteProgressUpdateStreamResponse -> TestTree
-responseDeleteProgressUpdateStream = res
-    "DeleteProgressUpdateStreamResponse"
-    "fixture/DeleteProgressUpdateStreamResponse.proto"
-    migrationHub
-    (Proxy :: Proxy DeleteProgressUpdateStream)
-
-responseListProgressUpdateStreams :: ListProgressUpdateStreamsResponse -> TestTree
-responseListProgressUpdateStreams = res
-    "ListProgressUpdateStreamsResponse"
-    "fixture/ListProgressUpdateStreamsResponse.proto"
-    migrationHub
-    (Proxy :: Proxy ListProgressUpdateStreams)
-
-responseDisassociateCreatedArtifact :: DisassociateCreatedArtifactResponse -> TestTree
-responseDisassociateCreatedArtifact = res
-    "DisassociateCreatedArtifactResponse"
-    "fixture/DisassociateCreatedArtifactResponse.proto"
-    migrationHub
-    (Proxy :: Proxy DisassociateCreatedArtifact)
-
-responseImportMigrationTask :: ImportMigrationTaskResponse -> TestTree
-responseImportMigrationTask = res
-    "ImportMigrationTaskResponse"
-    "fixture/ImportMigrationTaskResponse.proto"
-    migrationHub
-    (Proxy :: Proxy ImportMigrationTask)
-
-responseDescribeMigrationTask :: DescribeMigrationTaskResponse -> TestTree
-responseDescribeMigrationTask = res
-    "DescribeMigrationTaskResponse"
-    "fixture/DescribeMigrationTaskResponse.proto"
-    migrationHub
-    (Proxy :: Proxy DescribeMigrationTask)
-
-responsePutResourceAttributes :: PutResourceAttributesResponse -> TestTree
-responsePutResourceAttributes = res
-    "PutResourceAttributesResponse"
-    "fixture/PutResourceAttributesResponse.proto"
-    migrationHub
-    (Proxy :: Proxy PutResourceAttributes)
-
-responseAssociateCreatedArtifact :: AssociateCreatedArtifactResponse -> TestTree
-responseAssociateCreatedArtifact = res
-    "AssociateCreatedArtifactResponse"
-    "fixture/AssociateCreatedArtifactResponse.proto"
-    migrationHub
-    (Proxy :: Proxy AssociateCreatedArtifact)
-
-responseNotifyMigrationTaskState :: NotifyMigrationTaskStateResponse -> TestTree
-responseNotifyMigrationTaskState = res
-    "NotifyMigrationTaskStateResponse"
-    "fixture/NotifyMigrationTaskStateResponse.proto"
-    migrationHub
-    (Proxy :: Proxy NotifyMigrationTaskState)
-
-responseDescribeApplicationState :: DescribeApplicationStateResponse -> TestTree
-responseDescribeApplicationState = res
-    "DescribeApplicationStateResponse"
-    "fixture/DescribeApplicationStateResponse.proto"
-    migrationHub
-    (Proxy :: Proxy DescribeApplicationState)
-
-responseListMigrationTasks :: ListMigrationTasksResponse -> TestTree
-responseListMigrationTasks = res
-    "ListMigrationTasksResponse"
-    "fixture/ListMigrationTasksResponse.proto"
-    migrationHub
-    (Proxy :: Proxy ListMigrationTasks)
-
-responseListDiscoveredResources :: ListDiscoveredResourcesResponse -> TestTree
-responseListDiscoveredResources = res
-    "ListDiscoveredResourcesResponse"
-    "fixture/ListDiscoveredResourcesResponse.proto"
-    migrationHub
-    (Proxy :: Proxy ListDiscoveredResources)
diff --git a/test/Test/AWS/MigrationHub.hs b/test/Test/AWS/MigrationHub.hs
deleted file mode 100644
--- a/test/Test/AWS/MigrationHub.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- |
--- Module      : Test.AWS.MigrationHub
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.MigrationHub
-    ( tests
-    , fixtures
-    ) where
-
-import Test.Tasty (TestTree)
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/MigrationHub/Internal.hs b/test/Test/AWS/MigrationHub/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/MigrationHub/Internal.hs
+++ /dev/null
@@ -1,9 +0,0 @@
--- |
--- Module      : Test.AWS.MigrationHub.Internal
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.MigrationHub.Internal where
diff --git a/test/Test/Amazonka/Gen/MigrationHub.hs b/test/Test/Amazonka/Gen/MigrationHub.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/MigrationHub.hs
@@ -0,0 +1,378 @@
+{-# 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.MigrationHub
+-- 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.MigrationHub where
+
+import Amazonka.MigrationHub
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.MigrationHub.Internal
+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"
+--         [ requestAssociateCreatedArtifact $
+--             newAssociateCreatedArtifact
+--
+--         , requestAssociateDiscoveredResource $
+--             newAssociateDiscoveredResource
+--
+--         , requestCreateProgressUpdateStream $
+--             newCreateProgressUpdateStream
+--
+--         , requestDeleteProgressUpdateStream $
+--             newDeleteProgressUpdateStream
+--
+--         , requestDescribeApplicationState $
+--             newDescribeApplicationState
+--
+--         , requestDescribeMigrationTask $
+--             newDescribeMigrationTask
+--
+--         , requestDisassociateCreatedArtifact $
+--             newDisassociateCreatedArtifact
+--
+--         , requestDisassociateDiscoveredResource $
+--             newDisassociateDiscoveredResource
+--
+--         , requestImportMigrationTask $
+--             newImportMigrationTask
+--
+--         , requestListApplicationStates $
+--             newListApplicationStates
+--
+--         , requestListCreatedArtifacts $
+--             newListCreatedArtifacts
+--
+--         , requestListDiscoveredResources $
+--             newListDiscoveredResources
+--
+--         , requestListMigrationTasks $
+--             newListMigrationTasks
+--
+--         , requestListProgressUpdateStreams $
+--             newListProgressUpdateStreams
+--
+--         , requestNotifyApplicationState $
+--             newNotifyApplicationState
+--
+--         , requestNotifyMigrationTaskState $
+--             newNotifyMigrationTaskState
+--
+--         , requestPutResourceAttributes $
+--             newPutResourceAttributes
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateCreatedArtifact $
+--             newAssociateCreatedArtifactResponse
+--
+--         , responseAssociateDiscoveredResource $
+--             newAssociateDiscoveredResourceResponse
+--
+--         , responseCreateProgressUpdateStream $
+--             newCreateProgressUpdateStreamResponse
+--
+--         , responseDeleteProgressUpdateStream $
+--             newDeleteProgressUpdateStreamResponse
+--
+--         , responseDescribeApplicationState $
+--             newDescribeApplicationStateResponse
+--
+--         , responseDescribeMigrationTask $
+--             newDescribeMigrationTaskResponse
+--
+--         , responseDisassociateCreatedArtifact $
+--             newDisassociateCreatedArtifactResponse
+--
+--         , responseDisassociateDiscoveredResource $
+--             newDisassociateDiscoveredResourceResponse
+--
+--         , responseImportMigrationTask $
+--             newImportMigrationTaskResponse
+--
+--         , responseListApplicationStates $
+--             newListApplicationStatesResponse
+--
+--         , responseListCreatedArtifacts $
+--             newListCreatedArtifactsResponse
+--
+--         , responseListDiscoveredResources $
+--             newListDiscoveredResourcesResponse
+--
+--         , responseListMigrationTasks $
+--             newListMigrationTasksResponse
+--
+--         , responseListProgressUpdateStreams $
+--             newListProgressUpdateStreamsResponse
+--
+--         , responseNotifyApplicationState $
+--             newNotifyApplicationStateResponse
+--
+--         , responseNotifyMigrationTaskState $
+--             newNotifyMigrationTaskStateResponse
+--
+--         , responsePutResourceAttributes $
+--             newPutResourceAttributesResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateCreatedArtifact :: AssociateCreatedArtifact -> TestTree
+requestAssociateCreatedArtifact =
+  req
+    "AssociateCreatedArtifact"
+    "fixture/AssociateCreatedArtifact.yaml"
+
+requestAssociateDiscoveredResource :: AssociateDiscoveredResource -> TestTree
+requestAssociateDiscoveredResource =
+  req
+    "AssociateDiscoveredResource"
+    "fixture/AssociateDiscoveredResource.yaml"
+
+requestCreateProgressUpdateStream :: CreateProgressUpdateStream -> TestTree
+requestCreateProgressUpdateStream =
+  req
+    "CreateProgressUpdateStream"
+    "fixture/CreateProgressUpdateStream.yaml"
+
+requestDeleteProgressUpdateStream :: DeleteProgressUpdateStream -> TestTree
+requestDeleteProgressUpdateStream =
+  req
+    "DeleteProgressUpdateStream"
+    "fixture/DeleteProgressUpdateStream.yaml"
+
+requestDescribeApplicationState :: DescribeApplicationState -> TestTree
+requestDescribeApplicationState =
+  req
+    "DescribeApplicationState"
+    "fixture/DescribeApplicationState.yaml"
+
+requestDescribeMigrationTask :: DescribeMigrationTask -> TestTree
+requestDescribeMigrationTask =
+  req
+    "DescribeMigrationTask"
+    "fixture/DescribeMigrationTask.yaml"
+
+requestDisassociateCreatedArtifact :: DisassociateCreatedArtifact -> TestTree
+requestDisassociateCreatedArtifact =
+  req
+    "DisassociateCreatedArtifact"
+    "fixture/DisassociateCreatedArtifact.yaml"
+
+requestDisassociateDiscoveredResource :: DisassociateDiscoveredResource -> TestTree
+requestDisassociateDiscoveredResource =
+  req
+    "DisassociateDiscoveredResource"
+    "fixture/DisassociateDiscoveredResource.yaml"
+
+requestImportMigrationTask :: ImportMigrationTask -> TestTree
+requestImportMigrationTask =
+  req
+    "ImportMigrationTask"
+    "fixture/ImportMigrationTask.yaml"
+
+requestListApplicationStates :: ListApplicationStates -> TestTree
+requestListApplicationStates =
+  req
+    "ListApplicationStates"
+    "fixture/ListApplicationStates.yaml"
+
+requestListCreatedArtifacts :: ListCreatedArtifacts -> TestTree
+requestListCreatedArtifacts =
+  req
+    "ListCreatedArtifacts"
+    "fixture/ListCreatedArtifacts.yaml"
+
+requestListDiscoveredResources :: ListDiscoveredResources -> TestTree
+requestListDiscoveredResources =
+  req
+    "ListDiscoveredResources"
+    "fixture/ListDiscoveredResources.yaml"
+
+requestListMigrationTasks :: ListMigrationTasks -> TestTree
+requestListMigrationTasks =
+  req
+    "ListMigrationTasks"
+    "fixture/ListMigrationTasks.yaml"
+
+requestListProgressUpdateStreams :: ListProgressUpdateStreams -> TestTree
+requestListProgressUpdateStreams =
+  req
+    "ListProgressUpdateStreams"
+    "fixture/ListProgressUpdateStreams.yaml"
+
+requestNotifyApplicationState :: NotifyApplicationState -> TestTree
+requestNotifyApplicationState =
+  req
+    "NotifyApplicationState"
+    "fixture/NotifyApplicationState.yaml"
+
+requestNotifyMigrationTaskState :: NotifyMigrationTaskState -> TestTree
+requestNotifyMigrationTaskState =
+  req
+    "NotifyMigrationTaskState"
+    "fixture/NotifyMigrationTaskState.yaml"
+
+requestPutResourceAttributes :: PutResourceAttributes -> TestTree
+requestPutResourceAttributes =
+  req
+    "PutResourceAttributes"
+    "fixture/PutResourceAttributes.yaml"
+
+-- Responses
+
+responseAssociateCreatedArtifact :: AssociateCreatedArtifactResponse -> TestTree
+responseAssociateCreatedArtifact =
+  res
+    "AssociateCreatedArtifactResponse"
+    "fixture/AssociateCreatedArtifactResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateCreatedArtifact)
+
+responseAssociateDiscoveredResource :: AssociateDiscoveredResourceResponse -> TestTree
+responseAssociateDiscoveredResource =
+  res
+    "AssociateDiscoveredResourceResponse"
+    "fixture/AssociateDiscoveredResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateDiscoveredResource)
+
+responseCreateProgressUpdateStream :: CreateProgressUpdateStreamResponse -> TestTree
+responseCreateProgressUpdateStream =
+  res
+    "CreateProgressUpdateStreamResponse"
+    "fixture/CreateProgressUpdateStreamResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateProgressUpdateStream)
+
+responseDeleteProgressUpdateStream :: DeleteProgressUpdateStreamResponse -> TestTree
+responseDeleteProgressUpdateStream =
+  res
+    "DeleteProgressUpdateStreamResponse"
+    "fixture/DeleteProgressUpdateStreamResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteProgressUpdateStream)
+
+responseDescribeApplicationState :: DescribeApplicationStateResponse -> TestTree
+responseDescribeApplicationState =
+  res
+    "DescribeApplicationStateResponse"
+    "fixture/DescribeApplicationStateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeApplicationState)
+
+responseDescribeMigrationTask :: DescribeMigrationTaskResponse -> TestTree
+responseDescribeMigrationTask =
+  res
+    "DescribeMigrationTaskResponse"
+    "fixture/DescribeMigrationTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeMigrationTask)
+
+responseDisassociateCreatedArtifact :: DisassociateCreatedArtifactResponse -> TestTree
+responseDisassociateCreatedArtifact =
+  res
+    "DisassociateCreatedArtifactResponse"
+    "fixture/DisassociateCreatedArtifactResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateCreatedArtifact)
+
+responseDisassociateDiscoveredResource :: DisassociateDiscoveredResourceResponse -> TestTree
+responseDisassociateDiscoveredResource =
+  res
+    "DisassociateDiscoveredResourceResponse"
+    "fixture/DisassociateDiscoveredResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateDiscoveredResource)
+
+responseImportMigrationTask :: ImportMigrationTaskResponse -> TestTree
+responseImportMigrationTask =
+  res
+    "ImportMigrationTaskResponse"
+    "fixture/ImportMigrationTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ImportMigrationTask)
+
+responseListApplicationStates :: ListApplicationStatesResponse -> TestTree
+responseListApplicationStates =
+  res
+    "ListApplicationStatesResponse"
+    "fixture/ListApplicationStatesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListApplicationStates)
+
+responseListCreatedArtifacts :: ListCreatedArtifactsResponse -> TestTree
+responseListCreatedArtifacts =
+  res
+    "ListCreatedArtifactsResponse"
+    "fixture/ListCreatedArtifactsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCreatedArtifacts)
+
+responseListDiscoveredResources :: ListDiscoveredResourcesResponse -> TestTree
+responseListDiscoveredResources =
+  res
+    "ListDiscoveredResourcesResponse"
+    "fixture/ListDiscoveredResourcesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDiscoveredResources)
+
+responseListMigrationTasks :: ListMigrationTasksResponse -> TestTree
+responseListMigrationTasks =
+  res
+    "ListMigrationTasksResponse"
+    "fixture/ListMigrationTasksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMigrationTasks)
+
+responseListProgressUpdateStreams :: ListProgressUpdateStreamsResponse -> TestTree
+responseListProgressUpdateStreams =
+  res
+    "ListProgressUpdateStreamsResponse"
+    "fixture/ListProgressUpdateStreamsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListProgressUpdateStreams)
+
+responseNotifyApplicationState :: NotifyApplicationStateResponse -> TestTree
+responseNotifyApplicationState =
+  res
+    "NotifyApplicationStateResponse"
+    "fixture/NotifyApplicationStateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy NotifyApplicationState)
+
+responseNotifyMigrationTaskState :: NotifyMigrationTaskStateResponse -> TestTree
+responseNotifyMigrationTaskState =
+  res
+    "NotifyMigrationTaskStateResponse"
+    "fixture/NotifyMigrationTaskStateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy NotifyMigrationTaskState)
+
+responsePutResourceAttributes :: PutResourceAttributesResponse -> TestTree
+responsePutResourceAttributes =
+  res
+    "PutResourceAttributesResponse"
+    "fixture/PutResourceAttributesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutResourceAttributes)
diff --git a/test/Test/Amazonka/MigrationHub.hs b/test/Test/Amazonka/MigrationHub.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MigrationHub.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.MigrationHub
+-- 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.MigrationHub
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/MigrationHub/Internal.hs b/test/Test/Amazonka/MigrationHub/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MigrationHub/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.MigrationHub.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.MigrationHub.Internal where
