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-01-11@ 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.MarketplaceEntitlement](http://hackage.haskell.org/package/amazonka-marketplace-entitlement/docs/Network-AWS-MarketplaceEntitlement.html)
+See [Amazonka.MarketplaceEntitlement](http://hackage.haskell.org/package/amazonka-marketplace-entitlement/docs/Amazonka-MarketplaceEntitlement.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-marketplace-entitlement.cabal b/amazonka-marketplace-entitlement.cabal
--- a/amazonka-marketplace-entitlement.cabal
+++ b/amazonka-marketplace-entitlement.cabal
@@ -1,86 +1,87 @@
-name:                  amazonka-marketplace-entitlement
-version:               1.6.1
-synopsis:              Amazon Marketplace Entitlement Service SDK.
-homepage:              https://github.com/brendanhay/amazonka
-bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               MPL-2.0
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2018 Brendan Hay
-category:              Network, AWS, Cloud, Distributed Computing
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
+cabal-version:      2.2
+name:               amazonka-marketplace-entitlement
+version:            2.0
+synopsis:           Amazon Marketplace Entitlement Service SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
 description:
-    The types from this library are intended to be used with
-    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
-    mechanisms for specifying AuthN/AuthZ information, sending requests,
-    and receiving responses.
-    .
-    Lenses are used for constructing and manipulating types,
-    due to the depth of nesting of AWS types and transparency regarding
-    de/serialisation into more palatable Haskell values.
-    The provided lenses should be compatible with any of the major lens libraries
-    such as <http://hackage.haskell.org/package/lens lens> or
-    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
-    .
-    See "Network.AWS.MarketplaceEntitlement" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2017-01-11@ 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.MarketplaceEntitlement.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.MarketplaceEntitlement" 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-marketplace-entitlement
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-marketplace-entitlement
 
 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.MarketplaceEntitlement
-        , Network.AWS.MarketplaceEntitlement.GetEntitlements
-        , Network.AWS.MarketplaceEntitlement.Types
-        , Network.AWS.MarketplaceEntitlement.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.MarketplaceEntitlement.Types.Product
-        , Network.AWS.MarketplaceEntitlement.Types.Sum
+  exposed-modules:
+    Amazonka.MarketplaceEntitlement
+    Amazonka.MarketplaceEntitlement.GetEntitlements
+    Amazonka.MarketplaceEntitlement.Lens
+    Amazonka.MarketplaceEntitlement.Types
+    Amazonka.MarketplaceEntitlement.Types.Entitlement
+    Amazonka.MarketplaceEntitlement.Types.EntitlementValue
+    Amazonka.MarketplaceEntitlement.Types.GetEntitlementFilterName
+    Amazonka.MarketplaceEntitlement.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-marketplace-entitlement-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.MarketplaceEntitlement
-        , Test.AWS.Gen.MarketplaceEntitlement
-        , Test.AWS.MarketplaceEntitlement.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.MarketplaceEntitlement
+    Test.Amazonka.MarketplaceEntitlement
+    Test.Amazonka.MarketplaceEntitlement.Internal
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-marketplace-entitlement
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core                     >=2.0 && <2.1
+    , amazonka-marketplace-entitlement
+    , amazonka-test                     >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/gen/Amazonka/MarketplaceEntitlement.hs b/gen/Amazonka/MarketplaceEntitlement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MarketplaceEntitlement.hs
@@ -0,0 +1,101 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.MarketplaceEntitlement
+-- 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-01-11@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- AWS Marketplace Entitlement Service
+--
+-- This reference provides descriptions of the AWS Marketplace Entitlement
+-- Service API.
+--
+-- AWS Marketplace Entitlement Service is used to determine the entitlement
+-- of a customer to a given product. An entitlement represents capacity in
+-- a product owned by the customer. For example, a customer might own some
+-- number of users or seats in an SaaS application or some amount of data
+-- capacity in a multi-tenant database.
+--
+-- __Getting Entitlement Records__
+--
+-- -   /GetEntitlements/- Gets the entitlements for a Marketplace product.
+module Amazonka.MarketplaceEntitlement
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** InternalServiceErrorException
+    _InternalServiceErrorException,
+
+    -- ** InvalidParameterException
+    _InvalidParameterException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** GetEntitlements (Paginated)
+    GetEntitlements (GetEntitlements'),
+    newGetEntitlements,
+    GetEntitlementsResponse (GetEntitlementsResponse'),
+    newGetEntitlementsResponse,
+
+    -- * Types
+
+    -- ** GetEntitlementFilterName
+    GetEntitlementFilterName (..),
+
+    -- ** Entitlement
+    Entitlement (Entitlement'),
+    newEntitlement,
+
+    -- ** EntitlementValue
+    EntitlementValue (EntitlementValue'),
+    newEntitlementValue,
+  )
+where
+
+import Amazonka.MarketplaceEntitlement.GetEntitlements
+import Amazonka.MarketplaceEntitlement.Lens
+import Amazonka.MarketplaceEntitlement.Types
+import Amazonka.MarketplaceEntitlement.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 'MarketplaceEntitlement'.
+
+-- $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/MarketplaceEntitlement/GetEntitlements.hs b/gen/Amazonka/MarketplaceEntitlement/GetEntitlements.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MarketplaceEntitlement/GetEntitlements.hs
@@ -0,0 +1,292 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MarketplaceEntitlement.GetEntitlements
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- GetEntitlements retrieves entitlement values for a given product. The
+-- results can be filtered based on customer identifier or product
+-- dimensions.
+--
+-- This operation returns paginated results.
+module Amazonka.MarketplaceEntitlement.GetEntitlements
+  ( -- * Creating a Request
+    GetEntitlements (..),
+    newGetEntitlements,
+
+    -- * Request Lenses
+    getEntitlements_filter,
+    getEntitlements_maxResults,
+    getEntitlements_nextToken,
+    getEntitlements_productCode,
+
+    -- * Destructuring the Response
+    GetEntitlementsResponse (..),
+    newGetEntitlementsResponse,
+
+    -- * Response Lenses
+    getEntitlementsResponse_entitlements,
+    getEntitlementsResponse_nextToken,
+    getEntitlementsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MarketplaceEntitlement.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The GetEntitlementsRequest contains parameters for the GetEntitlements
+-- operation.
+--
+-- /See:/ 'newGetEntitlements' smart constructor.
+data GetEntitlements = GetEntitlements'
+  { -- | Filter is used to return entitlements for a specific customer or for a
+    -- specific dimension. Filters are described as keys mapped to a lists of
+    -- values. Filtered requests are /unioned/ for each value in the value
+    -- list, and then /intersected/ for each filter key.
+    filter' :: Prelude.Maybe (Prelude.HashMap GetEntitlementFilterName (Prelude.NonEmpty Prelude.Text)),
+    -- | The maximum number of items to retrieve from the GetEntitlements
+    -- operation. For pagination, use the NextToken field in subsequent calls
+    -- to GetEntitlements.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | For paginated calls to GetEntitlements, pass the NextToken from the
+    -- previous GetEntitlementsResult.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Product code is used to uniquely identify a product in AWS Marketplace.
+    -- The product code will be provided by AWS Marketplace when the product
+    -- listing is created.
+    productCode :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetEntitlements' 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:
+--
+-- 'filter'', 'getEntitlements_filter' - Filter is used to return entitlements for a specific customer or for a
+-- specific dimension. Filters are described as keys mapped to a lists of
+-- values. Filtered requests are /unioned/ for each value in the value
+-- list, and then /intersected/ for each filter key.
+--
+-- 'maxResults', 'getEntitlements_maxResults' - The maximum number of items to retrieve from the GetEntitlements
+-- operation. For pagination, use the NextToken field in subsequent calls
+-- to GetEntitlements.
+--
+-- 'nextToken', 'getEntitlements_nextToken' - For paginated calls to GetEntitlements, pass the NextToken from the
+-- previous GetEntitlementsResult.
+--
+-- 'productCode', 'getEntitlements_productCode' - Product code is used to uniquely identify a product in AWS Marketplace.
+-- The product code will be provided by AWS Marketplace when the product
+-- listing is created.
+newGetEntitlements ::
+  -- | 'productCode'
+  Prelude.Text ->
+  GetEntitlements
+newGetEntitlements pProductCode_ =
+  GetEntitlements'
+    { filter' = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      productCode = pProductCode_
+    }
+
+-- | Filter is used to return entitlements for a specific customer or for a
+-- specific dimension. Filters are described as keys mapped to a lists of
+-- values. Filtered requests are /unioned/ for each value in the value
+-- list, and then /intersected/ for each filter key.
+getEntitlements_filter :: Lens.Lens' GetEntitlements (Prelude.Maybe (Prelude.HashMap GetEntitlementFilterName (Prelude.NonEmpty Prelude.Text)))
+getEntitlements_filter = Lens.lens (\GetEntitlements' {filter'} -> filter') (\s@GetEntitlements' {} a -> s {filter' = a} :: GetEntitlements) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of items to retrieve from the GetEntitlements
+-- operation. For pagination, use the NextToken field in subsequent calls
+-- to GetEntitlements.
+getEntitlements_maxResults :: Lens.Lens' GetEntitlements (Prelude.Maybe Prelude.Int)
+getEntitlements_maxResults = Lens.lens (\GetEntitlements' {maxResults} -> maxResults) (\s@GetEntitlements' {} a -> s {maxResults = a} :: GetEntitlements)
+
+-- | For paginated calls to GetEntitlements, pass the NextToken from the
+-- previous GetEntitlementsResult.
+getEntitlements_nextToken :: Lens.Lens' GetEntitlements (Prelude.Maybe Prelude.Text)
+getEntitlements_nextToken = Lens.lens (\GetEntitlements' {nextToken} -> nextToken) (\s@GetEntitlements' {} a -> s {nextToken = a} :: GetEntitlements)
+
+-- | Product code is used to uniquely identify a product in AWS Marketplace.
+-- The product code will be provided by AWS Marketplace when the product
+-- listing is created.
+getEntitlements_productCode :: Lens.Lens' GetEntitlements Prelude.Text
+getEntitlements_productCode = Lens.lens (\GetEntitlements' {productCode} -> productCode) (\s@GetEntitlements' {} a -> s {productCode = a} :: GetEntitlements)
+
+instance Core.AWSPager GetEntitlements where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? getEntitlementsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? getEntitlementsResponse_entitlements
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& getEntitlements_nextToken
+          Lens..~ rs
+          Lens.^? getEntitlementsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest GetEntitlements where
+  type
+    AWSResponse GetEntitlements =
+      GetEntitlementsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetEntitlementsResponse'
+            Prelude.<$> (x Data..?> "Entitlements" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetEntitlements where
+  hashWithSalt _salt GetEntitlements' {..} =
+    _salt
+      `Prelude.hashWithSalt` filter'
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` productCode
+
+instance Prelude.NFData GetEntitlements where
+  rnf GetEntitlements' {..} =
+    Prelude.rnf filter'
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf productCode
+
+instance Data.ToHeaders GetEntitlements where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSMPEntitlementService.GetEntitlements" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetEntitlements where
+  toJSON GetEntitlements' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filter" Data..=) Prelude.<$> filter',
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("ProductCode" Data..= productCode)
+          ]
+      )
+
+instance Data.ToPath GetEntitlements where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetEntitlements where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The GetEntitlementsRequest contains results from the GetEntitlements
+-- operation.
+--
+-- /See:/ 'newGetEntitlementsResponse' smart constructor.
+data GetEntitlementsResponse = GetEntitlementsResponse'
+  { -- | The set of entitlements found through the GetEntitlements operation. If
+    -- the result contains an empty set of entitlements, NextToken might still
+    -- be present and should be used.
+    entitlements :: Prelude.Maybe [Entitlement],
+    -- | For paginated results, use NextToken in subsequent calls to
+    -- GetEntitlements. If the result contains an empty set of entitlements,
+    -- NextToken might still be present and should be used.
+    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 'GetEntitlementsResponse' 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:
+--
+-- 'entitlements', 'getEntitlementsResponse_entitlements' - The set of entitlements found through the GetEntitlements operation. If
+-- the result contains an empty set of entitlements, NextToken might still
+-- be present and should be used.
+--
+-- 'nextToken', 'getEntitlementsResponse_nextToken' - For paginated results, use NextToken in subsequent calls to
+-- GetEntitlements. If the result contains an empty set of entitlements,
+-- NextToken might still be present and should be used.
+--
+-- 'httpStatus', 'getEntitlementsResponse_httpStatus' - The response's http status code.
+newGetEntitlementsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetEntitlementsResponse
+newGetEntitlementsResponse pHttpStatus_ =
+  GetEntitlementsResponse'
+    { entitlements =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The set of entitlements found through the GetEntitlements operation. If
+-- the result contains an empty set of entitlements, NextToken might still
+-- be present and should be used.
+getEntitlementsResponse_entitlements :: Lens.Lens' GetEntitlementsResponse (Prelude.Maybe [Entitlement])
+getEntitlementsResponse_entitlements = Lens.lens (\GetEntitlementsResponse' {entitlements} -> entitlements) (\s@GetEntitlementsResponse' {} a -> s {entitlements = a} :: GetEntitlementsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | For paginated results, use NextToken in subsequent calls to
+-- GetEntitlements. If the result contains an empty set of entitlements,
+-- NextToken might still be present and should be used.
+getEntitlementsResponse_nextToken :: Lens.Lens' GetEntitlementsResponse (Prelude.Maybe Prelude.Text)
+getEntitlementsResponse_nextToken = Lens.lens (\GetEntitlementsResponse' {nextToken} -> nextToken) (\s@GetEntitlementsResponse' {} a -> s {nextToken = a} :: GetEntitlementsResponse)
+
+-- | The response's http status code.
+getEntitlementsResponse_httpStatus :: Lens.Lens' GetEntitlementsResponse Prelude.Int
+getEntitlementsResponse_httpStatus = Lens.lens (\GetEntitlementsResponse' {httpStatus} -> httpStatus) (\s@GetEntitlementsResponse' {} a -> s {httpStatus = a} :: GetEntitlementsResponse)
+
+instance Prelude.NFData GetEntitlementsResponse where
+  rnf GetEntitlementsResponse' {..} =
+    Prelude.rnf entitlements
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MarketplaceEntitlement/Lens.hs b/gen/Amazonka/MarketplaceEntitlement/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MarketplaceEntitlement/Lens.hs
@@ -0,0 +1,45 @@
+{-# 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.MarketplaceEntitlement.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.MarketplaceEntitlement.Lens
+  ( -- * Operations
+
+    -- ** GetEntitlements
+    getEntitlements_filter,
+    getEntitlements_maxResults,
+    getEntitlements_nextToken,
+    getEntitlements_productCode,
+    getEntitlementsResponse_entitlements,
+    getEntitlementsResponse_nextToken,
+    getEntitlementsResponse_httpStatus,
+
+    -- * Types
+
+    -- ** Entitlement
+    entitlement_customerIdentifier,
+    entitlement_dimension,
+    entitlement_expirationDate,
+    entitlement_productCode,
+    entitlement_value,
+
+    -- ** EntitlementValue
+    entitlementValue_booleanValue,
+    entitlementValue_doubleValue,
+    entitlementValue_integerValue,
+    entitlementValue_stringValue,
+  )
+where
+
+import Amazonka.MarketplaceEntitlement.GetEntitlements
+import Amazonka.MarketplaceEntitlement.Types.Entitlement
+import Amazonka.MarketplaceEntitlement.Types.EntitlementValue
diff --git a/gen/Amazonka/MarketplaceEntitlement/Types.hs b/gen/Amazonka/MarketplaceEntitlement/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MarketplaceEntitlement/Types.hs
@@ -0,0 +1,147 @@
+{-# 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.MarketplaceEntitlement.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.MarketplaceEntitlement.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _InternalServiceErrorException,
+    _InvalidParameterException,
+    _ThrottlingException,
+
+    -- * GetEntitlementFilterName
+    GetEntitlementFilterName (..),
+
+    -- * Entitlement
+    Entitlement (..),
+    newEntitlement,
+    entitlement_customerIdentifier,
+    entitlement_dimension,
+    entitlement_expirationDate,
+    entitlement_productCode,
+    entitlement_value,
+
+    -- * EntitlementValue
+    EntitlementValue (..),
+    newEntitlementValue,
+    entitlementValue_booleanValue,
+    entitlementValue_doubleValue,
+    entitlementValue_integerValue,
+    entitlementValue_stringValue,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.MarketplaceEntitlement.Types.Entitlement
+import Amazonka.MarketplaceEntitlement.Types.EntitlementValue
+import Amazonka.MarketplaceEntitlement.Types.GetEntitlementFilterName
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2017-01-11@ of the Amazon Marketplace Entitlement Service SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev =
+        "MarketplaceEntitlement",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "entitlement.marketplace",
+      Core.signingName = "aws-marketplace",
+      Core.version = "2017-01-11",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error =
+        Core.parseJSONError "MarketplaceEntitlement",
+      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
+
+-- | An internal error has occurred. Retry your request. If the problem
+-- persists, post a message with details on the AWS forums.
+_InternalServiceErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServiceErrorException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServiceErrorException"
+
+-- | One or more parameters in your request was invalid.
+_InvalidParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidParameterException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidParameterException"
+
+-- | The calls to the GetEntitlements API are throttled.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
diff --git a/gen/Amazonka/MarketplaceEntitlement/Types/Entitlement.hs b/gen/Amazonka/MarketplaceEntitlement/Types/Entitlement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MarketplaceEntitlement/Types/Entitlement.hs
@@ -0,0 +1,157 @@
+{-# 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.MarketplaceEntitlement.Types.Entitlement
+-- 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.MarketplaceEntitlement.Types.Entitlement where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MarketplaceEntitlement.Types.EntitlementValue
+import qualified Amazonka.Prelude as Prelude
+
+-- | An entitlement represents capacity in a product owned by the customer.
+-- For example, a customer might own some number of users or seats in an
+-- SaaS application or some amount of data capacity in a multi-tenant
+-- database.
+--
+-- /See:/ 'newEntitlement' smart constructor.
+data Entitlement = Entitlement'
+  { -- | The customer identifier is a handle to each unique customer in an
+    -- application. Customer identifiers are obtained through the
+    -- ResolveCustomer operation in AWS Marketplace Metering Service.
+    customerIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The dimension for which the given entitlement applies. Dimensions
+    -- represent categories of capacity in a product and are specified when the
+    -- product is listed in AWS Marketplace.
+    dimension :: Prelude.Maybe Prelude.Text,
+    -- | The expiration date represents the minimum date through which this
+    -- entitlement is expected to remain valid. For contractual products listed
+    -- on AWS Marketplace, the expiration date is the date at which the
+    -- customer will renew or cancel their contract. Customers who are opting
+    -- to renew their contract will still have entitlements with an expiration
+    -- date.
+    expirationDate :: Prelude.Maybe Data.POSIX,
+    -- | The product code for which the given entitlement applies. Product codes
+    -- are provided by AWS Marketplace when the product listing is created.
+    productCode :: Prelude.Maybe Prelude.Text,
+    -- | The EntitlementValue represents the amount of capacity that the customer
+    -- is entitled to for the product.
+    value :: Prelude.Maybe EntitlementValue
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Entitlement' 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:
+--
+-- 'customerIdentifier', 'entitlement_customerIdentifier' - The customer identifier is a handle to each unique customer in an
+-- application. Customer identifiers are obtained through the
+-- ResolveCustomer operation in AWS Marketplace Metering Service.
+--
+-- 'dimension', 'entitlement_dimension' - The dimension for which the given entitlement applies. Dimensions
+-- represent categories of capacity in a product and are specified when the
+-- product is listed in AWS Marketplace.
+--
+-- 'expirationDate', 'entitlement_expirationDate' - The expiration date represents the minimum date through which this
+-- entitlement is expected to remain valid. For contractual products listed
+-- on AWS Marketplace, the expiration date is the date at which the
+-- customer will renew or cancel their contract. Customers who are opting
+-- to renew their contract will still have entitlements with an expiration
+-- date.
+--
+-- 'productCode', 'entitlement_productCode' - The product code for which the given entitlement applies. Product codes
+-- are provided by AWS Marketplace when the product listing is created.
+--
+-- 'value', 'entitlement_value' - The EntitlementValue represents the amount of capacity that the customer
+-- is entitled to for the product.
+newEntitlement ::
+  Entitlement
+newEntitlement =
+  Entitlement'
+    { customerIdentifier = Prelude.Nothing,
+      dimension = Prelude.Nothing,
+      expirationDate = Prelude.Nothing,
+      productCode = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The customer identifier is a handle to each unique customer in an
+-- application. Customer identifiers are obtained through the
+-- ResolveCustomer operation in AWS Marketplace Metering Service.
+entitlement_customerIdentifier :: Lens.Lens' Entitlement (Prelude.Maybe Prelude.Text)
+entitlement_customerIdentifier = Lens.lens (\Entitlement' {customerIdentifier} -> customerIdentifier) (\s@Entitlement' {} a -> s {customerIdentifier = a} :: Entitlement)
+
+-- | The dimension for which the given entitlement applies. Dimensions
+-- represent categories of capacity in a product and are specified when the
+-- product is listed in AWS Marketplace.
+entitlement_dimension :: Lens.Lens' Entitlement (Prelude.Maybe Prelude.Text)
+entitlement_dimension = Lens.lens (\Entitlement' {dimension} -> dimension) (\s@Entitlement' {} a -> s {dimension = a} :: Entitlement)
+
+-- | The expiration date represents the minimum date through which this
+-- entitlement is expected to remain valid. For contractual products listed
+-- on AWS Marketplace, the expiration date is the date at which the
+-- customer will renew or cancel their contract. Customers who are opting
+-- to renew their contract will still have entitlements with an expiration
+-- date.
+entitlement_expirationDate :: Lens.Lens' Entitlement (Prelude.Maybe Prelude.UTCTime)
+entitlement_expirationDate = Lens.lens (\Entitlement' {expirationDate} -> expirationDate) (\s@Entitlement' {} a -> s {expirationDate = a} :: Entitlement) Prelude.. Lens.mapping Data._Time
+
+-- | The product code for which the given entitlement applies. Product codes
+-- are provided by AWS Marketplace when the product listing is created.
+entitlement_productCode :: Lens.Lens' Entitlement (Prelude.Maybe Prelude.Text)
+entitlement_productCode = Lens.lens (\Entitlement' {productCode} -> productCode) (\s@Entitlement' {} a -> s {productCode = a} :: Entitlement)
+
+-- | The EntitlementValue represents the amount of capacity that the customer
+-- is entitled to for the product.
+entitlement_value :: Lens.Lens' Entitlement (Prelude.Maybe EntitlementValue)
+entitlement_value = Lens.lens (\Entitlement' {value} -> value) (\s@Entitlement' {} a -> s {value = a} :: Entitlement)
+
+instance Data.FromJSON Entitlement where
+  parseJSON =
+    Data.withObject
+      "Entitlement"
+      ( \x ->
+          Entitlement'
+            Prelude.<$> (x Data..:? "CustomerIdentifier")
+            Prelude.<*> (x Data..:? "Dimension")
+            Prelude.<*> (x Data..:? "ExpirationDate")
+            Prelude.<*> (x Data..:? "ProductCode")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable Entitlement where
+  hashWithSalt _salt Entitlement' {..} =
+    _salt
+      `Prelude.hashWithSalt` customerIdentifier
+      `Prelude.hashWithSalt` dimension
+      `Prelude.hashWithSalt` expirationDate
+      `Prelude.hashWithSalt` productCode
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Entitlement where
+  rnf Entitlement' {..} =
+    Prelude.rnf customerIdentifier
+      `Prelude.seq` Prelude.rnf dimension
+      `Prelude.seq` Prelude.rnf expirationDate
+      `Prelude.seq` Prelude.rnf productCode
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/MarketplaceEntitlement/Types/EntitlementValue.hs b/gen/Amazonka/MarketplaceEntitlement/Types/EntitlementValue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MarketplaceEntitlement/Types/EntitlementValue.hs
@@ -0,0 +1,121 @@
+{-# 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.MarketplaceEntitlement.Types.EntitlementValue
+-- 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.MarketplaceEntitlement.Types.EntitlementValue where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The EntitlementValue represents the amount of capacity that the customer
+-- is entitled to for the product.
+--
+-- /See:/ 'newEntitlementValue' smart constructor.
+data EntitlementValue = EntitlementValue'
+  { -- | The BooleanValue field will be populated with a boolean value when the
+    -- entitlement is a boolean type. Otherwise, the field will not be set.
+    booleanValue :: Prelude.Maybe Prelude.Bool,
+    -- | The DoubleValue field will be populated with a double value when the
+    -- entitlement is a double type. Otherwise, the field will not be set.
+    doubleValue :: Prelude.Maybe Prelude.Double,
+    -- | The IntegerValue field will be populated with an integer value when the
+    -- entitlement is an integer type. Otherwise, the field will not be set.
+    integerValue :: Prelude.Maybe Prelude.Int,
+    -- | The StringValue field will be populated with a string value when the
+    -- entitlement is a string type. Otherwise, the field will not be set.
+    stringValue :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EntitlementValue' 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:
+--
+-- 'booleanValue', 'entitlementValue_booleanValue' - The BooleanValue field will be populated with a boolean value when the
+-- entitlement is a boolean type. Otherwise, the field will not be set.
+--
+-- 'doubleValue', 'entitlementValue_doubleValue' - The DoubleValue field will be populated with a double value when the
+-- entitlement is a double type. Otherwise, the field will not be set.
+--
+-- 'integerValue', 'entitlementValue_integerValue' - The IntegerValue field will be populated with an integer value when the
+-- entitlement is an integer type. Otherwise, the field will not be set.
+--
+-- 'stringValue', 'entitlementValue_stringValue' - The StringValue field will be populated with a string value when the
+-- entitlement is a string type. Otherwise, the field will not be set.
+newEntitlementValue ::
+  EntitlementValue
+newEntitlementValue =
+  EntitlementValue'
+    { booleanValue = Prelude.Nothing,
+      doubleValue = Prelude.Nothing,
+      integerValue = Prelude.Nothing,
+      stringValue = Prelude.Nothing
+    }
+
+-- | The BooleanValue field will be populated with a boolean value when the
+-- entitlement is a boolean type. Otherwise, the field will not be set.
+entitlementValue_booleanValue :: Lens.Lens' EntitlementValue (Prelude.Maybe Prelude.Bool)
+entitlementValue_booleanValue = Lens.lens (\EntitlementValue' {booleanValue} -> booleanValue) (\s@EntitlementValue' {} a -> s {booleanValue = a} :: EntitlementValue)
+
+-- | The DoubleValue field will be populated with a double value when the
+-- entitlement is a double type. Otherwise, the field will not be set.
+entitlementValue_doubleValue :: Lens.Lens' EntitlementValue (Prelude.Maybe Prelude.Double)
+entitlementValue_doubleValue = Lens.lens (\EntitlementValue' {doubleValue} -> doubleValue) (\s@EntitlementValue' {} a -> s {doubleValue = a} :: EntitlementValue)
+
+-- | The IntegerValue field will be populated with an integer value when the
+-- entitlement is an integer type. Otherwise, the field will not be set.
+entitlementValue_integerValue :: Lens.Lens' EntitlementValue (Prelude.Maybe Prelude.Int)
+entitlementValue_integerValue = Lens.lens (\EntitlementValue' {integerValue} -> integerValue) (\s@EntitlementValue' {} a -> s {integerValue = a} :: EntitlementValue)
+
+-- | The StringValue field will be populated with a string value when the
+-- entitlement is a string type. Otherwise, the field will not be set.
+entitlementValue_stringValue :: Lens.Lens' EntitlementValue (Prelude.Maybe Prelude.Text)
+entitlementValue_stringValue = Lens.lens (\EntitlementValue' {stringValue} -> stringValue) (\s@EntitlementValue' {} a -> s {stringValue = a} :: EntitlementValue)
+
+instance Data.FromJSON EntitlementValue where
+  parseJSON =
+    Data.withObject
+      "EntitlementValue"
+      ( \x ->
+          EntitlementValue'
+            Prelude.<$> (x Data..:? "BooleanValue")
+            Prelude.<*> (x Data..:? "DoubleValue")
+            Prelude.<*> (x Data..:? "IntegerValue")
+            Prelude.<*> (x Data..:? "StringValue")
+      )
+
+instance Prelude.Hashable EntitlementValue where
+  hashWithSalt _salt EntitlementValue' {..} =
+    _salt
+      `Prelude.hashWithSalt` booleanValue
+      `Prelude.hashWithSalt` doubleValue
+      `Prelude.hashWithSalt` integerValue
+      `Prelude.hashWithSalt` stringValue
+
+instance Prelude.NFData EntitlementValue where
+  rnf EntitlementValue' {..} =
+    Prelude.rnf booleanValue
+      `Prelude.seq` Prelude.rnf doubleValue
+      `Prelude.seq` Prelude.rnf integerValue
+      `Prelude.seq` Prelude.rnf stringValue
diff --git a/gen/Amazonka/MarketplaceEntitlement/Types/GetEntitlementFilterName.hs b/gen/Amazonka/MarketplaceEntitlement/Types/GetEntitlementFilterName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MarketplaceEntitlement/Types/GetEntitlementFilterName.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MarketplaceEntitlement.Types.GetEntitlementFilterName
+-- 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.MarketplaceEntitlement.Types.GetEntitlementFilterName
+  ( GetEntitlementFilterName
+      ( ..,
+        GetEntitlementFilterName_CUSTOMER_IDENTIFIER,
+        GetEntitlementFilterName_DIMENSION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype GetEntitlementFilterName = GetEntitlementFilterName'
+  { fromGetEntitlementFilterName ::
+      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 GetEntitlementFilterName_CUSTOMER_IDENTIFIER :: GetEntitlementFilterName
+pattern GetEntitlementFilterName_CUSTOMER_IDENTIFIER = GetEntitlementFilterName' "CUSTOMER_IDENTIFIER"
+
+pattern GetEntitlementFilterName_DIMENSION :: GetEntitlementFilterName
+pattern GetEntitlementFilterName_DIMENSION = GetEntitlementFilterName' "DIMENSION"
+
+{-# COMPLETE
+  GetEntitlementFilterName_CUSTOMER_IDENTIFIER,
+  GetEntitlementFilterName_DIMENSION,
+  GetEntitlementFilterName'
+  #-}
diff --git a/gen/Amazonka/MarketplaceEntitlement/Waiters.hs b/gen/Amazonka/MarketplaceEntitlement/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MarketplaceEntitlement/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.MarketplaceEntitlement.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.MarketplaceEntitlement.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MarketplaceEntitlement.Lens
+import Amazonka.MarketplaceEntitlement.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/gen/Network/AWS/MarketplaceEntitlement.hs b/gen/Network/AWS/MarketplaceEntitlement.hs
deleted file mode 100644
--- a/gen/Network/AWS/MarketplaceEntitlement.hs
+++ /dev/null
@@ -1,107 +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.MarketplaceEntitlement
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- __AWS Marketplace Entitlement Service__
---
--- This reference provides descriptions of the AWS Marketplace Entitlement Service API.
---
--- AWS Marketplace Entitlement Service is used to determine the entitlement of a customer to a given product. An entitlement represents capacity in a product owned by the customer. For example, a customer might own some number of users or seats in an SaaS application or some amount of data capacity in a multi-tenant database.
---
--- __Getting Entitlement Records__
---
---     * /GetEntitlements/ - Gets the entitlements for a Marketplace product.
---
---
---
-module Network.AWS.MarketplaceEntitlement
-    (
-    -- * Service Configuration
-      marketplaceEntitlement
-
-    -- * Errors
-    -- $errors
-
-    -- ** InvalidParameterException
-    , _InvalidParameterException
-
-    -- ** ThrottlingException
-    , _ThrottlingException
-
-    -- ** InternalServiceErrorException
-    , _InternalServiceErrorException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** GetEntitlements
-    , module Network.AWS.MarketplaceEntitlement.GetEntitlements
-
-    -- * Types
-
-    -- ** GetEntitlementFilterName
-    , GetEntitlementFilterName (..)
-
-    -- ** Entitlement
-    , Entitlement
-    , entitlement
-    , eDimension
-    , eValue
-    , eExpirationDate
-    , eCustomerIdentifier
-    , eProductCode
-
-    -- ** EntitlementValue
-    , EntitlementValue
-    , entitlementValue
-    , evIntegerValue
-    , evDoubleValue
-    , evStringValue
-    , evBooleanValue
-    ) where
-
-import Network.AWS.MarketplaceEntitlement.GetEntitlements
-import Network.AWS.MarketplaceEntitlement.Types
-import Network.AWS.MarketplaceEntitlement.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 'MarketplaceEntitlement'.
--}
-
-{- $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/MarketplaceEntitlement/GetEntitlements.hs b/gen/Network/AWS/MarketplaceEntitlement/GetEntitlements.hs
deleted file mode 100644
--- a/gen/Network/AWS/MarketplaceEntitlement/GetEntitlements.hs
+++ /dev/null
@@ -1,187 +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.MarketplaceEntitlement.GetEntitlements
--- 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)
---
--- GetEntitlements retrieves entitlement values for a given product. The results can be filtered based on customer identifier or product dimensions.
---
---
-module Network.AWS.MarketplaceEntitlement.GetEntitlements
-    (
-    -- * Creating a Request
-      getEntitlements
-    , GetEntitlements
-    -- * Request Lenses
-    , geNextToken
-    , geFilter
-    , geMaxResults
-    , geProductCode
-
-    -- * Destructuring the Response
-    , getEntitlementsResponse
-    , GetEntitlementsResponse
-    -- * Response Lenses
-    , gersNextToken
-    , gersEntitlements
-    , gersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MarketplaceEntitlement.Types
-import Network.AWS.MarketplaceEntitlement.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | The GetEntitlementsRequest contains parameters for the GetEntitlements operation.
---
---
---
--- /See:/ 'getEntitlements' smart constructor.
-data GetEntitlements = GetEntitlements'
-  { _geNextToken   :: !(Maybe Text)
-  , _geFilter      :: !(Maybe (Map GetEntitlementFilterName (List1 Text)))
-  , _geMaxResults  :: !(Maybe Int)
-  , _geProductCode :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetEntitlements' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'geNextToken' - For paginated calls to GetEntitlements, pass the NextToken from the previous GetEntitlementsResult.
---
--- * 'geFilter' - Filter is used to return entitlements for a specific customer or for a specific dimension. Filters are described as keys mapped to a lists of values. Filtered requests are /unioned/ for each value in the value list, and then /intersected/ for each filter key.
---
--- * 'geMaxResults' - The maximum number of items to retrieve from the GetEntitlements operation. For pagination, use the NextToken field in subsequent calls to GetEntitlements.
---
--- * 'geProductCode' - Product code is used to uniquely identify a product in AWS Marketplace. The product code will be provided by AWS Marketplace when the product listing is created.
-getEntitlements
-    :: Text -- ^ 'geProductCode'
-    -> GetEntitlements
-getEntitlements pProductCode_ =
-  GetEntitlements'
-    { _geNextToken = Nothing
-    , _geFilter = Nothing
-    , _geMaxResults = Nothing
-    , _geProductCode = pProductCode_
-    }
-
-
--- | For paginated calls to GetEntitlements, pass the NextToken from the previous GetEntitlementsResult.
-geNextToken :: Lens' GetEntitlements (Maybe Text)
-geNextToken = lens _geNextToken (\ s a -> s{_geNextToken = a})
-
--- | Filter is used to return entitlements for a specific customer or for a specific dimension. Filters are described as keys mapped to a lists of values. Filtered requests are /unioned/ for each value in the value list, and then /intersected/ for each filter key.
-geFilter :: Lens' GetEntitlements (HashMap GetEntitlementFilterName (NonEmpty Text))
-geFilter = lens _geFilter (\ s a -> s{_geFilter = a}) . _Default . _Map
-
--- | The maximum number of items to retrieve from the GetEntitlements operation. For pagination, use the NextToken field in subsequent calls to GetEntitlements.
-geMaxResults :: Lens' GetEntitlements (Maybe Int)
-geMaxResults = lens _geMaxResults (\ s a -> s{_geMaxResults = a})
-
--- | Product code is used to uniquely identify a product in AWS Marketplace. The product code will be provided by AWS Marketplace when the product listing is created.
-geProductCode :: Lens' GetEntitlements Text
-geProductCode = lens _geProductCode (\ s a -> s{_geProductCode = a})
-
-instance AWSRequest GetEntitlements where
-        type Rs GetEntitlements = GetEntitlementsResponse
-        request = postJSON marketplaceEntitlement
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetEntitlementsResponse' <$>
-                   (x .?> "NextToken") <*>
-                     (x .?> "Entitlements" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetEntitlements where
-
-instance NFData GetEntitlements where
-
-instance ToHeaders GetEntitlements where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSMPEntitlementService.GetEntitlements" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON GetEntitlements where
-        toJSON GetEntitlements'{..}
-          = object
-              (catMaybes
-                 [("NextToken" .=) <$> _geNextToken,
-                  ("Filter" .=) <$> _geFilter,
-                  ("MaxResults" .=) <$> _geMaxResults,
-                  Just ("ProductCode" .= _geProductCode)])
-
-instance ToPath GetEntitlements where
-        toPath = const "/"
-
-instance ToQuery GetEntitlements where
-        toQuery = const mempty
-
--- | The GetEntitlementsRequest contains results from the GetEntitlements operation.
---
---
---
--- /See:/ 'getEntitlementsResponse' smart constructor.
-data GetEntitlementsResponse = GetEntitlementsResponse'
-  { _gersNextToken      :: !(Maybe Text)
-  , _gersEntitlements   :: !(Maybe [Entitlement])
-  , _gersResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetEntitlementsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gersNextToken' - For paginated results, use NextToken in subsequent calls to GetEntitlements. If the result contains an empty set of entitlements, NextToken might still be present and should be used.
---
--- * 'gersEntitlements' - The set of entitlements found through the GetEntitlements operation. If the result contains an empty set of entitlements, NextToken might still be present and should be used.
---
--- * 'gersResponseStatus' - -- | The response status code.
-getEntitlementsResponse
-    :: Int -- ^ 'gersResponseStatus'
-    -> GetEntitlementsResponse
-getEntitlementsResponse pResponseStatus_ =
-  GetEntitlementsResponse'
-    { _gersNextToken = Nothing
-    , _gersEntitlements = Nothing
-    , _gersResponseStatus = pResponseStatus_
-    }
-
-
--- | For paginated results, use NextToken in subsequent calls to GetEntitlements. If the result contains an empty set of entitlements, NextToken might still be present and should be used.
-gersNextToken :: Lens' GetEntitlementsResponse (Maybe Text)
-gersNextToken = lens _gersNextToken (\ s a -> s{_gersNextToken = a})
-
--- | The set of entitlements found through the GetEntitlements operation. If the result contains an empty set of entitlements, NextToken might still be present and should be used.
-gersEntitlements :: Lens' GetEntitlementsResponse [Entitlement]
-gersEntitlements = lens _gersEntitlements (\ s a -> s{_gersEntitlements = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-gersResponseStatus :: Lens' GetEntitlementsResponse Int
-gersResponseStatus = lens _gersResponseStatus (\ s a -> s{_gersResponseStatus = a})
-
-instance NFData GetEntitlementsResponse where
diff --git a/gen/Network/AWS/MarketplaceEntitlement/Types.hs b/gen/Network/AWS/MarketplaceEntitlement/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/MarketplaceEntitlement/Types.hs
+++ /dev/null
@@ -1,111 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MarketplaceEntitlement.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.MarketplaceEntitlement.Types
-    (
-    -- * Service Configuration
-      marketplaceEntitlement
-
-    -- * Errors
-    , _InvalidParameterException
-    , _ThrottlingException
-    , _InternalServiceErrorException
-
-    -- * GetEntitlementFilterName
-    , GetEntitlementFilterName (..)
-
-    -- * Entitlement
-    , Entitlement
-    , entitlement
-    , eDimension
-    , eValue
-    , eExpirationDate
-    , eCustomerIdentifier
-    , eProductCode
-
-    -- * EntitlementValue
-    , EntitlementValue
-    , entitlementValue
-    , evIntegerValue
-    , evDoubleValue
-    , evStringValue
-    , evBooleanValue
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MarketplaceEntitlement.Types.Product
-import Network.AWS.MarketplaceEntitlement.Types.Sum
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-
--- | API version @2017-01-11@ of the Amazon Marketplace Entitlement Service SDK configuration.
-marketplaceEntitlement :: Service
-marketplaceEntitlement =
-  Service
-    { _svcAbbrev = "MarketplaceEntitlement"
-    , _svcSigner = v4
-    , _svcPrefix = "entitlement.marketplace"
-    , _svcVersion = "2017-01-11"
-    , _svcEndpoint = defaultEndpoint marketplaceEntitlement
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "MarketplaceEntitlement"
-    , _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
-
-
--- | One or more parameters in your request was invalid.
---
---
-_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidParameterException =
-  _MatchServiceError marketplaceEntitlement "InvalidParameterException"
-
-
--- | The calls to the GetEntitlements API are throttled.
---
---
-_ThrottlingException :: AsError a => Getting (First ServiceError) a ServiceError
-_ThrottlingException =
-  _MatchServiceError marketplaceEntitlement "ThrottlingException"
-
-
--- | An internal error has occurred. Retry your request. If the problem persists, post a message with details on the AWS forums.
---
---
-_InternalServiceErrorException :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalServiceErrorException =
-  _MatchServiceError marketplaceEntitlement "InternalServiceErrorException"
-
diff --git a/gen/Network/AWS/MarketplaceEntitlement/Types/Product.hs b/gen/Network/AWS/MarketplaceEntitlement/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/MarketplaceEntitlement/Types/Product.hs
+++ /dev/null
@@ -1,159 +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.MarketplaceEntitlement.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.MarketplaceEntitlement.Types.Product where
-
-import Network.AWS.Lens
-import Network.AWS.MarketplaceEntitlement.Types.Sum
-import Network.AWS.Prelude
-
--- | An entitlement represents capacity in a product owned by the customer. For example, a customer might own some number of users or seats in an SaaS application or some amount of data capacity in a multi-tenant database.
---
---
---
--- /See:/ 'entitlement' smart constructor.
-data Entitlement = Entitlement'
-  { _eDimension          :: !(Maybe Text)
-  , _eValue              :: !(Maybe EntitlementValue)
-  , _eExpirationDate     :: !(Maybe POSIX)
-  , _eCustomerIdentifier :: !(Maybe Text)
-  , _eProductCode        :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Entitlement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eDimension' - The dimension for which the given entitlement applies. Dimensions represent categories of capacity in a product and are specified when the product is listed in AWS Marketplace.
---
--- * 'eValue' - The EntitlementValue represents the amount of capacity that the customer is entitled to for the product.
---
--- * 'eExpirationDate' - The expiration date represents the minimum date through which this entitlement is expected to remain valid. For contractual products listed on AWS Marketplace, the expiration date is the date at which the customer will renew or cancel their contract. Customers who are opting to renew their contract will still have entitlements with an expiration date.
---
--- * 'eCustomerIdentifier' - The customer identifier is a handle to each unique customer in an application. Customer identifiers are obtained through the ResolveCustomer operation in AWS Marketplace Metering Service.
---
--- * 'eProductCode' - The product code for which the given entitlement applies. Product codes are provided by AWS Marketplace when the product listing is created.
-entitlement
-    :: Entitlement
-entitlement =
-  Entitlement'
-    { _eDimension = Nothing
-    , _eValue = Nothing
-    , _eExpirationDate = Nothing
-    , _eCustomerIdentifier = Nothing
-    , _eProductCode = Nothing
-    }
-
-
--- | The dimension for which the given entitlement applies. Dimensions represent categories of capacity in a product and are specified when the product is listed in AWS Marketplace.
-eDimension :: Lens' Entitlement (Maybe Text)
-eDimension = lens _eDimension (\ s a -> s{_eDimension = a})
-
--- | The EntitlementValue represents the amount of capacity that the customer is entitled to for the product.
-eValue :: Lens' Entitlement (Maybe EntitlementValue)
-eValue = lens _eValue (\ s a -> s{_eValue = a})
-
--- | The expiration date represents the minimum date through which this entitlement is expected to remain valid. For contractual products listed on AWS Marketplace, the expiration date is the date at which the customer will renew or cancel their contract. Customers who are opting to renew their contract will still have entitlements with an expiration date.
-eExpirationDate :: Lens' Entitlement (Maybe UTCTime)
-eExpirationDate = lens _eExpirationDate (\ s a -> s{_eExpirationDate = a}) . mapping _Time
-
--- | The customer identifier is a handle to each unique customer in an application. Customer identifiers are obtained through the ResolveCustomer operation in AWS Marketplace Metering Service.
-eCustomerIdentifier :: Lens' Entitlement (Maybe Text)
-eCustomerIdentifier = lens _eCustomerIdentifier (\ s a -> s{_eCustomerIdentifier = a})
-
--- | The product code for which the given entitlement applies. Product codes are provided by AWS Marketplace when the product listing is created.
-eProductCode :: Lens' Entitlement (Maybe Text)
-eProductCode = lens _eProductCode (\ s a -> s{_eProductCode = a})
-
-instance FromJSON Entitlement where
-        parseJSON
-          = withObject "Entitlement"
-              (\ x ->
-                 Entitlement' <$>
-                   (x .:? "Dimension") <*> (x .:? "Value") <*>
-                     (x .:? "ExpirationDate")
-                     <*> (x .:? "CustomerIdentifier")
-                     <*> (x .:? "ProductCode"))
-
-instance Hashable Entitlement where
-
-instance NFData Entitlement where
-
--- | The EntitlementValue represents the amount of capacity that the customer is entitled to for the product.
---
---
---
--- /See:/ 'entitlementValue' smart constructor.
-data EntitlementValue = EntitlementValue'
-  { _evIntegerValue :: !(Maybe Int)
-  , _evDoubleValue  :: !(Maybe Double)
-  , _evStringValue  :: !(Maybe Text)
-  , _evBooleanValue :: !(Maybe Bool)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EntitlementValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'evIntegerValue' - The IntegerValue field will be populated with an integer value when the entitlement is an integer type. Otherwise, the field will not be set.
---
--- * 'evDoubleValue' - The DoubleValue field will be populated with a double value when the entitlement is a double type. Otherwise, the field will not be set.
---
--- * 'evStringValue' - The StringValue field will be populated with a string value when the entitlement is a string type. Otherwise, the field will not be set.
---
--- * 'evBooleanValue' - The BooleanValue field will be populated with a boolean value when the entitlement is a boolean type. Otherwise, the field will not be set.
-entitlementValue
-    :: EntitlementValue
-entitlementValue =
-  EntitlementValue'
-    { _evIntegerValue = Nothing
-    , _evDoubleValue = Nothing
-    , _evStringValue = Nothing
-    , _evBooleanValue = Nothing
-    }
-
-
--- | The IntegerValue field will be populated with an integer value when the entitlement is an integer type. Otherwise, the field will not be set.
-evIntegerValue :: Lens' EntitlementValue (Maybe Int)
-evIntegerValue = lens _evIntegerValue (\ s a -> s{_evIntegerValue = a})
-
--- | The DoubleValue field will be populated with a double value when the entitlement is a double type. Otherwise, the field will not be set.
-evDoubleValue :: Lens' EntitlementValue (Maybe Double)
-evDoubleValue = lens _evDoubleValue (\ s a -> s{_evDoubleValue = a})
-
--- | The StringValue field will be populated with a string value when the entitlement is a string type. Otherwise, the field will not be set.
-evStringValue :: Lens' EntitlementValue (Maybe Text)
-evStringValue = lens _evStringValue (\ s a -> s{_evStringValue = a})
-
--- | The BooleanValue field will be populated with a boolean value when the entitlement is a boolean type. Otherwise, the field will not be set.
-evBooleanValue :: Lens' EntitlementValue (Maybe Bool)
-evBooleanValue = lens _evBooleanValue (\ s a -> s{_evBooleanValue = a})
-
-instance FromJSON EntitlementValue where
-        parseJSON
-          = withObject "EntitlementValue"
-              (\ x ->
-                 EntitlementValue' <$>
-                   (x .:? "IntegerValue") <*> (x .:? "DoubleValue") <*>
-                     (x .:? "StringValue")
-                     <*> (x .:? "BooleanValue"))
-
-instance Hashable EntitlementValue where
-
-instance NFData EntitlementValue where
diff --git a/gen/Network/AWS/MarketplaceEntitlement/Types/Sum.hs b/gen/Network/AWS/MarketplaceEntitlement/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/MarketplaceEntitlement/Types/Sum.hs
+++ /dev/null
@@ -1,47 +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.MarketplaceEntitlement.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.MarketplaceEntitlement.Types.Sum where
-
-import Network.AWS.Prelude
-
-data GetEntitlementFilterName
-  = CustomerIdentifier
-  | Dimension
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText GetEntitlementFilterName where
-    parser = takeLowerText >>= \case
-        "customer_identifier" -> pure CustomerIdentifier
-        "dimension" -> pure Dimension
-        e -> fromTextError $ "Failure parsing GetEntitlementFilterName from value: '" <> e
-           <> "'. Accepted values: customer_identifier, dimension"
-
-instance ToText GetEntitlementFilterName where
-    toText = \case
-        CustomerIdentifier -> "CUSTOMER_IDENTIFIER"
-        Dimension -> "DIMENSION"
-
-instance Hashable     GetEntitlementFilterName
-instance NFData       GetEntitlementFilterName
-instance ToByteString GetEntitlementFilterName
-instance ToQuery      GetEntitlementFilterName
-instance ToHeader     GetEntitlementFilterName
-
-instance ToJSON GetEntitlementFilterName where
-    toJSON = toJSONText
diff --git a/gen/Network/AWS/MarketplaceEntitlement/Waiters.hs b/gen/Network/AWS/MarketplaceEntitlement/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/MarketplaceEntitlement/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.MarketplaceEntitlement.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.MarketplaceEntitlement.Waiters where
-
-import Network.AWS.Lens
-import Network.AWS.MarketplaceEntitlement.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.MarketplaceEntitlement
+import Test.Amazonka.MarketplaceEntitlement.Internal
 import Test.Tasty
-import Test.AWS.MarketplaceEntitlement
-import Test.AWS.MarketplaceEntitlement.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "MarketplaceEntitlement"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "MarketplaceEntitlement"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Gen/MarketplaceEntitlement.hs b/test/Test/AWS/Gen/MarketplaceEntitlement.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/MarketplaceEntitlement.hs
+++ /dev/null
@@ -1,57 +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.MarketplaceEntitlement
--- 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.MarketplaceEntitlement where
-
-import Data.Proxy
-import Network.AWS.MarketplaceEntitlement
-import Test.AWS.Fixture
-import Test.AWS.MarketplaceEntitlement.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"
---         [ requestGetEntitlements $
---             getEntitlements
---
---           ]
-
---     , testGroup "response"
---         [ responseGetEntitlements $
---             getEntitlementsResponse
---
---           ]
---     ]
-
--- Requests
-
-requestGetEntitlements :: GetEntitlements -> TestTree
-requestGetEntitlements = req
-    "GetEntitlements"
-    "fixture/GetEntitlements.yaml"
-
--- Responses
-
-responseGetEntitlements :: GetEntitlementsResponse -> TestTree
-responseGetEntitlements = res
-    "GetEntitlementsResponse"
-    "fixture/GetEntitlementsResponse.proto"
-    marketplaceEntitlement
-    (Proxy :: Proxy GetEntitlements)
diff --git a/test/Test/AWS/MarketplaceEntitlement.hs b/test/Test/AWS/MarketplaceEntitlement.hs
deleted file mode 100644
--- a/test/Test/AWS/MarketplaceEntitlement.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- |
--- Module      : Test.AWS.MarketplaceEntitlement
--- 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.MarketplaceEntitlement
-    ( tests
-    , fixtures
-    ) where
-
-import Test.Tasty (TestTree)
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/MarketplaceEntitlement/Internal.hs b/test/Test/AWS/MarketplaceEntitlement/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/MarketplaceEntitlement/Internal.hs
+++ /dev/null
@@ -1,9 +0,0 @@
--- |
--- Module      : Test.AWS.MarketplaceEntitlement.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.MarketplaceEntitlement.Internal where
diff --git a/test/Test/Amazonka/Gen/MarketplaceEntitlement.hs b/test/Test/Amazonka/Gen/MarketplaceEntitlement.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/MarketplaceEntitlement.hs
@@ -0,0 +1,58 @@
+{-# 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.MarketplaceEntitlement
+-- 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.MarketplaceEntitlement where
+
+import Amazonka.MarketplaceEntitlement
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.MarketplaceEntitlement.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"
+--         [ requestGetEntitlements $
+--             newGetEntitlements
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseGetEntitlements $
+--             newGetEntitlementsResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestGetEntitlements :: GetEntitlements -> TestTree
+requestGetEntitlements =
+  req
+    "GetEntitlements"
+    "fixture/GetEntitlements.yaml"
+
+-- Responses
+
+responseGetEntitlements :: GetEntitlementsResponse -> TestTree
+responseGetEntitlements =
+  res
+    "GetEntitlementsResponse"
+    "fixture/GetEntitlementsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetEntitlements)
diff --git a/test/Test/Amazonka/MarketplaceEntitlement.hs b/test/Test/Amazonka/MarketplaceEntitlement.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MarketplaceEntitlement.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.MarketplaceEntitlement
+-- 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.MarketplaceEntitlement
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/MarketplaceEntitlement/Internal.hs b/test/Test/Amazonka/MarketplaceEntitlement/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MarketplaceEntitlement/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.MarketplaceEntitlement.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.MarketplaceEntitlement.Internal where
