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-06@ 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.CostAndUsageReport](http://hackage.haskell.org/package/amazonka-cur/docs/Network-AWS-CostAndUsageReport.html)
+See [Amazonka.CostAndUsageReport](http://hackage.haskell.org/package/amazonka-cur/docs/Amazonka-CostAndUsageReport.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-cur.cabal b/amazonka-cur.cabal
--- a/amazonka-cur.cabal
+++ b/amazonka-cur.cabal
@@ -1,88 +1,95 @@
-name:                  amazonka-cur
-version:               1.6.1
-synopsis:              Amazon Cost and Usage Report 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-cur
+version:            2.0
+synopsis:           Amazon Cost and Usage Report 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.CostAndUsageReport" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2017-01-06@ 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.CostAndUsageReport.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.CostAndUsageReport" 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-cur
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-cur
 
 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.CostAndUsageReport
-        , Network.AWS.CostAndUsageReport.DeleteReportDefinition
-        , Network.AWS.CostAndUsageReport.DescribeReportDefinitions
-        , Network.AWS.CostAndUsageReport.PutReportDefinition
-        , Network.AWS.CostAndUsageReport.Types
-        , Network.AWS.CostAndUsageReport.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.CostAndUsageReport.Types.Product
-        , Network.AWS.CostAndUsageReport.Types.Sum
+  exposed-modules:
+    Amazonka.CostAndUsageReport
+    Amazonka.CostAndUsageReport.DeleteReportDefinition
+    Amazonka.CostAndUsageReport.DescribeReportDefinitions
+    Amazonka.CostAndUsageReport.Lens
+    Amazonka.CostAndUsageReport.ModifyReportDefinition
+    Amazonka.CostAndUsageReport.PutReportDefinition
+    Amazonka.CostAndUsageReport.Types
+    Amazonka.CostAndUsageReport.Types.AdditionalArtifact
+    Amazonka.CostAndUsageReport.Types.AWSRegion
+    Amazonka.CostAndUsageReport.Types.CompressionFormat
+    Amazonka.CostAndUsageReport.Types.ReportDefinition
+    Amazonka.CostAndUsageReport.Types.ReportFormat
+    Amazonka.CostAndUsageReport.Types.ReportVersioning
+    Amazonka.CostAndUsageReport.Types.SchemaElement
+    Amazonka.CostAndUsageReport.Types.TimeUnit
+    Amazonka.CostAndUsageReport.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-cur-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.CostAndUsageReport
-        , Test.AWS.Gen.CostAndUsageReport
-        , Test.AWS.CostAndUsageReport.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.CostAndUsageReport
+    Test.Amazonka.CostAndUsageReport.Internal
+    Test.Amazonka.Gen.CostAndUsageReport
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-cur
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-cur
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/ModifyReportDefinition.yaml b/fixture/ModifyReportDefinition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyReportDefinition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cur/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cur.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/ModifyReportDefinitionResponse.proto b/fixture/ModifyReportDefinitionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyReportDefinitionResponse.proto
diff --git a/gen/Amazonka/CostAndUsageReport.hs b/gen/Amazonka/CostAndUsageReport.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport.hs
@@ -0,0 +1,139 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.CostAndUsageReport
+-- 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-06@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- The AWS Cost and Usage Report API enables you to programmatically
+-- create, query, and delete AWS Cost and Usage report definitions.
+--
+-- AWS Cost and Usage reports track the monthly AWS costs and usage
+-- associated with your AWS account. The report contains line items for
+-- each unique combination of AWS product, usage type, and operation that
+-- your AWS account uses. You can configure the AWS Cost and Usage report
+-- to show only the data that you want, using the AWS Cost and Usage API.
+--
+-- Service Endpoint
+--
+-- The AWS Cost and Usage Report API provides the following endpoint:
+--
+-- -   cur.us-east-1.amazonaws.com
+module Amazonka.CostAndUsageReport
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** DuplicateReportNameException
+    _DuplicateReportNameException,
+
+    -- ** InternalErrorException
+    _InternalErrorException,
+
+    -- ** ReportLimitReachedException
+    _ReportLimitReachedException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DeleteReportDefinition
+    DeleteReportDefinition (DeleteReportDefinition'),
+    newDeleteReportDefinition,
+    DeleteReportDefinitionResponse (DeleteReportDefinitionResponse'),
+    newDeleteReportDefinitionResponse,
+
+    -- ** DescribeReportDefinitions (Paginated)
+    DescribeReportDefinitions (DescribeReportDefinitions'),
+    newDescribeReportDefinitions,
+    DescribeReportDefinitionsResponse (DescribeReportDefinitionsResponse'),
+    newDescribeReportDefinitionsResponse,
+
+    -- ** ModifyReportDefinition
+    ModifyReportDefinition (ModifyReportDefinition'),
+    newModifyReportDefinition,
+    ModifyReportDefinitionResponse (ModifyReportDefinitionResponse'),
+    newModifyReportDefinitionResponse,
+
+    -- ** PutReportDefinition
+    PutReportDefinition (PutReportDefinition'),
+    newPutReportDefinition,
+    PutReportDefinitionResponse (PutReportDefinitionResponse'),
+    newPutReportDefinitionResponse,
+
+    -- * Types
+
+    -- ** AWSRegion
+    AWSRegion (..),
+
+    -- ** AdditionalArtifact
+    AdditionalArtifact (..),
+
+    -- ** CompressionFormat
+    CompressionFormat (..),
+
+    -- ** ReportFormat
+    ReportFormat (..),
+
+    -- ** ReportVersioning
+    ReportVersioning (..),
+
+    -- ** SchemaElement
+    SchemaElement (..),
+
+    -- ** TimeUnit
+    TimeUnit (..),
+
+    -- ** ReportDefinition
+    ReportDefinition (ReportDefinition'),
+    newReportDefinition,
+  )
+where
+
+import Amazonka.CostAndUsageReport.DeleteReportDefinition
+import Amazonka.CostAndUsageReport.DescribeReportDefinitions
+import Amazonka.CostAndUsageReport.Lens
+import Amazonka.CostAndUsageReport.ModifyReportDefinition
+import Amazonka.CostAndUsageReport.PutReportDefinition
+import Amazonka.CostAndUsageReport.Types
+import Amazonka.CostAndUsageReport.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 'CostAndUsageReport'.
+
+-- $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/CostAndUsageReport/DeleteReportDefinition.hs b/gen/Amazonka/CostAndUsageReport/DeleteReportDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/DeleteReportDefinition.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CostAndUsageReport.DeleteReportDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified report.
+module Amazonka.CostAndUsageReport.DeleteReportDefinition
+  ( -- * Creating a Request
+    DeleteReportDefinition (..),
+    newDeleteReportDefinition,
+
+    -- * Request Lenses
+    deleteReportDefinition_reportName,
+
+    -- * Destructuring the Response
+    DeleteReportDefinitionResponse (..),
+    newDeleteReportDefinitionResponse,
+
+    -- * Response Lenses
+    deleteReportDefinitionResponse_responseMessage,
+    deleteReportDefinitionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.CostAndUsageReport.Types
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Deletes the specified report.
+--
+-- /See:/ 'newDeleteReportDefinition' smart constructor.
+data DeleteReportDefinition = DeleteReportDefinition'
+  { -- | The name of the report that you want to delete. The name must be unique,
+    -- is case sensitive, and can\'t include spaces.
+    reportName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReportDefinition' 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:
+--
+-- 'reportName', 'deleteReportDefinition_reportName' - The name of the report that you want to delete. The name must be unique,
+-- is case sensitive, and can\'t include spaces.
+newDeleteReportDefinition ::
+  DeleteReportDefinition
+newDeleteReportDefinition =
+  DeleteReportDefinition'
+    { reportName =
+        Prelude.Nothing
+    }
+
+-- | The name of the report that you want to delete. The name must be unique,
+-- is case sensitive, and can\'t include spaces.
+deleteReportDefinition_reportName :: Lens.Lens' DeleteReportDefinition (Prelude.Maybe Prelude.Text)
+deleteReportDefinition_reportName = Lens.lens (\DeleteReportDefinition' {reportName} -> reportName) (\s@DeleteReportDefinition' {} a -> s {reportName = a} :: DeleteReportDefinition)
+
+instance Core.AWSRequest DeleteReportDefinition where
+  type
+    AWSResponse DeleteReportDefinition =
+      DeleteReportDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteReportDefinitionResponse'
+            Prelude.<$> (x Data..?> "ResponseMessage")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteReportDefinition where
+  hashWithSalt _salt DeleteReportDefinition' {..} =
+    _salt `Prelude.hashWithSalt` reportName
+
+instance Prelude.NFData DeleteReportDefinition where
+  rnf DeleteReportDefinition' {..} =
+    Prelude.rnf reportName
+
+instance Data.ToHeaders DeleteReportDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSOrigamiServiceGatewayService.DeleteReportDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteReportDefinition where
+  toJSON DeleteReportDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("ReportName" Data..=) Prelude.<$> reportName]
+      )
+
+instance Data.ToPath DeleteReportDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteReportDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | If the action is successful, the service sends back an HTTP 200
+-- response.
+--
+-- /See:/ 'newDeleteReportDefinitionResponse' smart constructor.
+data DeleteReportDefinitionResponse = DeleteReportDefinitionResponse'
+  { responseMessage :: 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 'DeleteReportDefinitionResponse' 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:
+--
+-- 'responseMessage', 'deleteReportDefinitionResponse_responseMessage' - Undocumented member.
+--
+-- 'httpStatus', 'deleteReportDefinitionResponse_httpStatus' - The response's http status code.
+newDeleteReportDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteReportDefinitionResponse
+newDeleteReportDefinitionResponse pHttpStatus_ =
+  DeleteReportDefinitionResponse'
+    { responseMessage =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+deleteReportDefinitionResponse_responseMessage :: Lens.Lens' DeleteReportDefinitionResponse (Prelude.Maybe Prelude.Text)
+deleteReportDefinitionResponse_responseMessage = Lens.lens (\DeleteReportDefinitionResponse' {responseMessage} -> responseMessage) (\s@DeleteReportDefinitionResponse' {} a -> s {responseMessage = a} :: DeleteReportDefinitionResponse)
+
+-- | The response's http status code.
+deleteReportDefinitionResponse_httpStatus :: Lens.Lens' DeleteReportDefinitionResponse Prelude.Int
+deleteReportDefinitionResponse_httpStatus = Lens.lens (\DeleteReportDefinitionResponse' {httpStatus} -> httpStatus) (\s@DeleteReportDefinitionResponse' {} a -> s {httpStatus = a} :: DeleteReportDefinitionResponse)
+
+instance
+  Prelude.NFData
+    DeleteReportDefinitionResponse
+  where
+  rnf DeleteReportDefinitionResponse' {..} =
+    Prelude.rnf responseMessage
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CostAndUsageReport/DescribeReportDefinitions.hs b/gen/Amazonka/CostAndUsageReport/DescribeReportDefinitions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/DescribeReportDefinitions.hs
@@ -0,0 +1,229 @@
+{-# 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.CostAndUsageReport.DescribeReportDefinitions
+-- 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 AWS Cost and Usage reports available to this account.
+--
+-- This operation returns paginated results.
+module Amazonka.CostAndUsageReport.DescribeReportDefinitions
+  ( -- * Creating a Request
+    DescribeReportDefinitions (..),
+    newDescribeReportDefinitions,
+
+    -- * Request Lenses
+    describeReportDefinitions_maxResults,
+    describeReportDefinitions_nextToken,
+
+    -- * Destructuring the Response
+    DescribeReportDefinitionsResponse (..),
+    newDescribeReportDefinitionsResponse,
+
+    -- * Response Lenses
+    describeReportDefinitionsResponse_nextToken,
+    describeReportDefinitionsResponse_reportDefinitions,
+    describeReportDefinitionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.CostAndUsageReport.Types
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Requests a list of AWS Cost and Usage reports owned by the account.
+--
+-- /See:/ 'newDescribeReportDefinitions' smart constructor.
+data DescribeReportDefinitions = DescribeReportDefinitions'
+  { maxResults :: Prelude.Maybe Prelude.Natural,
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeReportDefinitions' 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', 'describeReportDefinitions_maxResults' - Undocumented member.
+--
+-- 'nextToken', 'describeReportDefinitions_nextToken' - Undocumented member.
+newDescribeReportDefinitions ::
+  DescribeReportDefinitions
+newDescribeReportDefinitions =
+  DescribeReportDefinitions'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+describeReportDefinitions_maxResults :: Lens.Lens' DescribeReportDefinitions (Prelude.Maybe Prelude.Natural)
+describeReportDefinitions_maxResults = Lens.lens (\DescribeReportDefinitions' {maxResults} -> maxResults) (\s@DescribeReportDefinitions' {} a -> s {maxResults = a} :: DescribeReportDefinitions)
+
+-- | Undocumented member.
+describeReportDefinitions_nextToken :: Lens.Lens' DescribeReportDefinitions (Prelude.Maybe Prelude.Text)
+describeReportDefinitions_nextToken = Lens.lens (\DescribeReportDefinitions' {nextToken} -> nextToken) (\s@DescribeReportDefinitions' {} a -> s {nextToken = a} :: DescribeReportDefinitions)
+
+instance Core.AWSPager DescribeReportDefinitions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeReportDefinitionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeReportDefinitionsResponse_reportDefinitions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeReportDefinitions_nextToken
+          Lens..~ rs
+          Lens.^? describeReportDefinitionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeReportDefinitions where
+  type
+    AWSResponse DescribeReportDefinitions =
+      DescribeReportDefinitionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeReportDefinitionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "ReportDefinitions"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeReportDefinitions where
+  hashWithSalt _salt DescribeReportDefinitions' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeReportDefinitions where
+  rnf DescribeReportDefinitions' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeReportDefinitions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSOrigamiServiceGatewayService.DescribeReportDefinitions" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeReportDefinitions where
+  toJSON DescribeReportDefinitions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeReportDefinitions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeReportDefinitions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | If the action is successful, the service sends back an HTTP 200
+-- response.
+--
+-- /See:/ 'newDescribeReportDefinitionsResponse' smart constructor.
+data DescribeReportDefinitionsResponse = DescribeReportDefinitionsResponse'
+  { nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of AWS Cost and Usage reports owned by the account.
+    reportDefinitions :: Prelude.Maybe [ReportDefinition],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeReportDefinitionsResponse' 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', 'describeReportDefinitionsResponse_nextToken' - Undocumented member.
+--
+-- 'reportDefinitions', 'describeReportDefinitionsResponse_reportDefinitions' - A list of AWS Cost and Usage reports owned by the account.
+--
+-- 'httpStatus', 'describeReportDefinitionsResponse_httpStatus' - The response's http status code.
+newDescribeReportDefinitionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeReportDefinitionsResponse
+newDescribeReportDefinitionsResponse pHttpStatus_ =
+  DescribeReportDefinitionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      reportDefinitions = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+describeReportDefinitionsResponse_nextToken :: Lens.Lens' DescribeReportDefinitionsResponse (Prelude.Maybe Prelude.Text)
+describeReportDefinitionsResponse_nextToken = Lens.lens (\DescribeReportDefinitionsResponse' {nextToken} -> nextToken) (\s@DescribeReportDefinitionsResponse' {} a -> s {nextToken = a} :: DescribeReportDefinitionsResponse)
+
+-- | A list of AWS Cost and Usage reports owned by the account.
+describeReportDefinitionsResponse_reportDefinitions :: Lens.Lens' DescribeReportDefinitionsResponse (Prelude.Maybe [ReportDefinition])
+describeReportDefinitionsResponse_reportDefinitions = Lens.lens (\DescribeReportDefinitionsResponse' {reportDefinitions} -> reportDefinitions) (\s@DescribeReportDefinitionsResponse' {} a -> s {reportDefinitions = a} :: DescribeReportDefinitionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeReportDefinitionsResponse_httpStatus :: Lens.Lens' DescribeReportDefinitionsResponse Prelude.Int
+describeReportDefinitionsResponse_httpStatus = Lens.lens (\DescribeReportDefinitionsResponse' {httpStatus} -> httpStatus) (\s@DescribeReportDefinitionsResponse' {} a -> s {httpStatus = a} :: DescribeReportDefinitionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeReportDefinitionsResponse
+  where
+  rnf DescribeReportDefinitionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf reportDefinitions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CostAndUsageReport/Lens.hs b/gen/Amazonka/CostAndUsageReport/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Lens.hs
@@ -0,0 +1,60 @@
+{-# 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.CostAndUsageReport.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.CostAndUsageReport.Lens
+  ( -- * Operations
+
+    -- ** DeleteReportDefinition
+    deleteReportDefinition_reportName,
+    deleteReportDefinitionResponse_responseMessage,
+    deleteReportDefinitionResponse_httpStatus,
+
+    -- ** DescribeReportDefinitions
+    describeReportDefinitions_maxResults,
+    describeReportDefinitions_nextToken,
+    describeReportDefinitionsResponse_nextToken,
+    describeReportDefinitionsResponse_reportDefinitions,
+    describeReportDefinitionsResponse_httpStatus,
+
+    -- ** ModifyReportDefinition
+    modifyReportDefinition_reportName,
+    modifyReportDefinition_reportDefinition,
+    modifyReportDefinitionResponse_httpStatus,
+
+    -- ** PutReportDefinition
+    putReportDefinition_reportDefinition,
+    putReportDefinitionResponse_httpStatus,
+
+    -- * Types
+
+    -- ** ReportDefinition
+    reportDefinition_additionalArtifacts,
+    reportDefinition_billingViewArn,
+    reportDefinition_refreshClosedReports,
+    reportDefinition_reportVersioning,
+    reportDefinition_reportName,
+    reportDefinition_timeUnit,
+    reportDefinition_format,
+    reportDefinition_compression,
+    reportDefinition_additionalSchemaElements,
+    reportDefinition_s3Bucket,
+    reportDefinition_s3Prefix,
+    reportDefinition_s3Region,
+  )
+where
+
+import Amazonka.CostAndUsageReport.DeleteReportDefinition
+import Amazonka.CostAndUsageReport.DescribeReportDefinitions
+import Amazonka.CostAndUsageReport.ModifyReportDefinition
+import Amazonka.CostAndUsageReport.PutReportDefinition
+import Amazonka.CostAndUsageReport.Types.ReportDefinition
diff --git a/gen/Amazonka/CostAndUsageReport/ModifyReportDefinition.hs b/gen/Amazonka/CostAndUsageReport/ModifyReportDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/ModifyReportDefinition.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CostAndUsageReport.ModifyReportDefinition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Allows you to programatically update your report preferences.
+module Amazonka.CostAndUsageReport.ModifyReportDefinition
+  ( -- * Creating a Request
+    ModifyReportDefinition (..),
+    newModifyReportDefinition,
+
+    -- * Request Lenses
+    modifyReportDefinition_reportName,
+    modifyReportDefinition_reportDefinition,
+
+    -- * Destructuring the Response
+    ModifyReportDefinitionResponse (..),
+    newModifyReportDefinitionResponse,
+
+    -- * Response Lenses
+    modifyReportDefinitionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.CostAndUsageReport.Types
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newModifyReportDefinition' smart constructor.
+data ModifyReportDefinition = ModifyReportDefinition'
+  { reportName :: Prelude.Text,
+    reportDefinition :: ReportDefinition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyReportDefinition' 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:
+--
+-- 'reportName', 'modifyReportDefinition_reportName' - Undocumented member.
+--
+-- 'reportDefinition', 'modifyReportDefinition_reportDefinition' - Undocumented member.
+newModifyReportDefinition ::
+  -- | 'reportName'
+  Prelude.Text ->
+  -- | 'reportDefinition'
+  ReportDefinition ->
+  ModifyReportDefinition
+newModifyReportDefinition
+  pReportName_
+  pReportDefinition_ =
+    ModifyReportDefinition'
+      { reportName = pReportName_,
+        reportDefinition = pReportDefinition_
+      }
+
+-- | Undocumented member.
+modifyReportDefinition_reportName :: Lens.Lens' ModifyReportDefinition Prelude.Text
+modifyReportDefinition_reportName = Lens.lens (\ModifyReportDefinition' {reportName} -> reportName) (\s@ModifyReportDefinition' {} a -> s {reportName = a} :: ModifyReportDefinition)
+
+-- | Undocumented member.
+modifyReportDefinition_reportDefinition :: Lens.Lens' ModifyReportDefinition ReportDefinition
+modifyReportDefinition_reportDefinition = Lens.lens (\ModifyReportDefinition' {reportDefinition} -> reportDefinition) (\s@ModifyReportDefinition' {} a -> s {reportDefinition = a} :: ModifyReportDefinition)
+
+instance Core.AWSRequest ModifyReportDefinition where
+  type
+    AWSResponse ModifyReportDefinition =
+      ModifyReportDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          ModifyReportDefinitionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ModifyReportDefinition where
+  hashWithSalt _salt ModifyReportDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` reportName
+      `Prelude.hashWithSalt` reportDefinition
+
+instance Prelude.NFData ModifyReportDefinition where
+  rnf ModifyReportDefinition' {..} =
+    Prelude.rnf reportName
+      `Prelude.seq` Prelude.rnf reportDefinition
+
+instance Data.ToHeaders ModifyReportDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSOrigamiServiceGatewayService.ModifyReportDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ModifyReportDefinition where
+  toJSON ModifyReportDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ReportName" Data..= reportName),
+            Prelude.Just
+              ("ReportDefinition" Data..= reportDefinition)
+          ]
+      )
+
+instance Data.ToPath ModifyReportDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ModifyReportDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newModifyReportDefinitionResponse' smart constructor.
+data ModifyReportDefinitionResponse = ModifyReportDefinitionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyReportDefinitionResponse' 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', 'modifyReportDefinitionResponse_httpStatus' - The response's http status code.
+newModifyReportDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ModifyReportDefinitionResponse
+newModifyReportDefinitionResponse pHttpStatus_ =
+  ModifyReportDefinitionResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+modifyReportDefinitionResponse_httpStatus :: Lens.Lens' ModifyReportDefinitionResponse Prelude.Int
+modifyReportDefinitionResponse_httpStatus = Lens.lens (\ModifyReportDefinitionResponse' {httpStatus} -> httpStatus) (\s@ModifyReportDefinitionResponse' {} a -> s {httpStatus = a} :: ModifyReportDefinitionResponse)
+
+instance
+  Prelude.NFData
+    ModifyReportDefinitionResponse
+  where
+  rnf ModifyReportDefinitionResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CostAndUsageReport/PutReportDefinition.hs b/gen/Amazonka/CostAndUsageReport/PutReportDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/PutReportDefinition.hs
@@ -0,0 +1,170 @@
+{-# 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.CostAndUsageReport.PutReportDefinition
+-- 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 new report using the description that you provide.
+module Amazonka.CostAndUsageReport.PutReportDefinition
+  ( -- * Creating a Request
+    PutReportDefinition (..),
+    newPutReportDefinition,
+
+    -- * Request Lenses
+    putReportDefinition_reportDefinition,
+
+    -- * Destructuring the Response
+    PutReportDefinitionResponse (..),
+    newPutReportDefinitionResponse,
+
+    -- * Response Lenses
+    putReportDefinitionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.CostAndUsageReport.Types
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Creates a Cost and Usage Report.
+--
+-- /See:/ 'newPutReportDefinition' smart constructor.
+data PutReportDefinition = PutReportDefinition'
+  { -- | Represents the output of the PutReportDefinition operation. The content
+    -- consists of the detailed metadata and data file information.
+    reportDefinition :: ReportDefinition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutReportDefinition' 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:
+--
+-- 'reportDefinition', 'putReportDefinition_reportDefinition' - Represents the output of the PutReportDefinition operation. The content
+-- consists of the detailed metadata and data file information.
+newPutReportDefinition ::
+  -- | 'reportDefinition'
+  ReportDefinition ->
+  PutReportDefinition
+newPutReportDefinition pReportDefinition_ =
+  PutReportDefinition'
+    { reportDefinition =
+        pReportDefinition_
+    }
+
+-- | Represents the output of the PutReportDefinition operation. The content
+-- consists of the detailed metadata and data file information.
+putReportDefinition_reportDefinition :: Lens.Lens' PutReportDefinition ReportDefinition
+putReportDefinition_reportDefinition = Lens.lens (\PutReportDefinition' {reportDefinition} -> reportDefinition) (\s@PutReportDefinition' {} a -> s {reportDefinition = a} :: PutReportDefinition)
+
+instance Core.AWSRequest PutReportDefinition where
+  type
+    AWSResponse PutReportDefinition =
+      PutReportDefinitionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          PutReportDefinitionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutReportDefinition where
+  hashWithSalt _salt PutReportDefinition' {..} =
+    _salt `Prelude.hashWithSalt` reportDefinition
+
+instance Prelude.NFData PutReportDefinition where
+  rnf PutReportDefinition' {..} =
+    Prelude.rnf reportDefinition
+
+instance Data.ToHeaders PutReportDefinition where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSOrigamiServiceGatewayService.PutReportDefinition" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutReportDefinition where
+  toJSON PutReportDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("ReportDefinition" Data..= reportDefinition)
+          ]
+      )
+
+instance Data.ToPath PutReportDefinition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery PutReportDefinition where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | If the action is successful, the service sends back an HTTP 200 response
+-- with an empty HTTP body.
+--
+-- /See:/ 'newPutReportDefinitionResponse' smart constructor.
+data PutReportDefinitionResponse = PutReportDefinitionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutReportDefinitionResponse' 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', 'putReportDefinitionResponse_httpStatus' - The response's http status code.
+newPutReportDefinitionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutReportDefinitionResponse
+newPutReportDefinitionResponse pHttpStatus_ =
+  PutReportDefinitionResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+putReportDefinitionResponse_httpStatus :: Lens.Lens' PutReportDefinitionResponse Prelude.Int
+putReportDefinitionResponse_httpStatus = Lens.lens (\PutReportDefinitionResponse' {httpStatus} -> httpStatus) (\s@PutReportDefinitionResponse' {} a -> s {httpStatus = a} :: PutReportDefinitionResponse)
+
+instance Prelude.NFData PutReportDefinitionResponse where
+  rnf PutReportDefinitionResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CostAndUsageReport/Types.hs b/gen/Amazonka/CostAndUsageReport/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types.hs
@@ -0,0 +1,178 @@
+{-# 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.CostAndUsageReport.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.CostAndUsageReport.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _DuplicateReportNameException,
+    _InternalErrorException,
+    _ReportLimitReachedException,
+    _ValidationException,
+
+    -- * AWSRegion
+    AWSRegion (..),
+
+    -- * AdditionalArtifact
+    AdditionalArtifact (..),
+
+    -- * CompressionFormat
+    CompressionFormat (..),
+
+    -- * ReportFormat
+    ReportFormat (..),
+
+    -- * ReportVersioning
+    ReportVersioning (..),
+
+    -- * SchemaElement
+    SchemaElement (..),
+
+    -- * TimeUnit
+    TimeUnit (..),
+
+    -- * ReportDefinition
+    ReportDefinition (..),
+    newReportDefinition,
+    reportDefinition_additionalArtifacts,
+    reportDefinition_billingViewArn,
+    reportDefinition_refreshClosedReports,
+    reportDefinition_reportVersioning,
+    reportDefinition_reportName,
+    reportDefinition_timeUnit,
+    reportDefinition_format,
+    reportDefinition_compression,
+    reportDefinition_additionalSchemaElements,
+    reportDefinition_s3Bucket,
+    reportDefinition_s3Prefix,
+    reportDefinition_s3Region,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.CostAndUsageReport.Types.AWSRegion
+import Amazonka.CostAndUsageReport.Types.AdditionalArtifact
+import Amazonka.CostAndUsageReport.Types.CompressionFormat
+import Amazonka.CostAndUsageReport.Types.ReportDefinition
+import Amazonka.CostAndUsageReport.Types.ReportFormat
+import Amazonka.CostAndUsageReport.Types.ReportVersioning
+import Amazonka.CostAndUsageReport.Types.SchemaElement
+import Amazonka.CostAndUsageReport.Types.TimeUnit
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2017-01-06@ of the Amazon Cost and Usage Report Service SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "CostAndUsageReport",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "cur",
+      Core.signingName = "cur",
+      Core.version = "2017-01-06",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error =
+        Core.parseJSONError "CostAndUsageReport",
+      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
+
+-- | A report with the specified name already exists in the account. Specify
+-- a different report name.
+_DuplicateReportNameException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DuplicateReportNameException =
+  Core._MatchServiceError
+    defaultService
+    "DuplicateReportNameException"
+
+-- | An error on the server occurred during the processing of your request.
+-- Try again later.
+_InternalErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalErrorException =
+  Core._MatchServiceError
+    defaultService
+    "InternalErrorException"
+
+-- | This account already has five reports defined. To define a new report,
+-- you must delete an existing report.
+_ReportLimitReachedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ReportLimitReachedException =
+  Core._MatchServiceError
+    defaultService
+    "ReportLimitReachedException"
+
+-- | The input fails to satisfy the constraints specified by an AWS service.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
diff --git a/gen/Amazonka/CostAndUsageReport/Types/AWSRegion.hs b/gen/Amazonka/CostAndUsageReport/Types/AWSRegion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types/AWSRegion.hs
@@ -0,0 +1,192 @@
+{-# 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.CostAndUsageReport.Types.AWSRegion
+-- 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.CostAndUsageReport.Types.AWSRegion
+  ( AWSRegion
+      ( ..,
+        AWSRegion_Af_south_1,
+        AWSRegion_Ap_east_1,
+        AWSRegion_Ap_northeast_1,
+        AWSRegion_Ap_northeast_2,
+        AWSRegion_Ap_northeast_3,
+        AWSRegion_Ap_south_1,
+        AWSRegion_Ap_southeast_1,
+        AWSRegion_Ap_southeast_2,
+        AWSRegion_Ap_southeast_3,
+        AWSRegion_Ca_central_1,
+        AWSRegion_Cn_north_1,
+        AWSRegion_Cn_northwest_1,
+        AWSRegion_Eu_central_1,
+        AWSRegion_Eu_north_1,
+        AWSRegion_Eu_south_1,
+        AWSRegion_Eu_south_2,
+        AWSRegion_Eu_west_1,
+        AWSRegion_Eu_west_2,
+        AWSRegion_Eu_west_3,
+        AWSRegion_Me_central_1,
+        AWSRegion_Me_south_1,
+        AWSRegion_Sa_east_1,
+        AWSRegion_Us_east_1,
+        AWSRegion_Us_east_2,
+        AWSRegion_Us_west_1,
+        AWSRegion_Us_west_2
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The region of the S3 bucket that AWS delivers the report into.
+newtype AWSRegion = AWSRegion'
+  { fromAWSRegion ::
+      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 AWSRegion_Af_south_1 :: AWSRegion
+pattern AWSRegion_Af_south_1 = AWSRegion' "af-south-1"
+
+pattern AWSRegion_Ap_east_1 :: AWSRegion
+pattern AWSRegion_Ap_east_1 = AWSRegion' "ap-east-1"
+
+pattern AWSRegion_Ap_northeast_1 :: AWSRegion
+pattern AWSRegion_Ap_northeast_1 = AWSRegion' "ap-northeast-1"
+
+pattern AWSRegion_Ap_northeast_2 :: AWSRegion
+pattern AWSRegion_Ap_northeast_2 = AWSRegion' "ap-northeast-2"
+
+pattern AWSRegion_Ap_northeast_3 :: AWSRegion
+pattern AWSRegion_Ap_northeast_3 = AWSRegion' "ap-northeast-3"
+
+pattern AWSRegion_Ap_south_1 :: AWSRegion
+pattern AWSRegion_Ap_south_1 = AWSRegion' "ap-south-1"
+
+pattern AWSRegion_Ap_southeast_1 :: AWSRegion
+pattern AWSRegion_Ap_southeast_1 = AWSRegion' "ap-southeast-1"
+
+pattern AWSRegion_Ap_southeast_2 :: AWSRegion
+pattern AWSRegion_Ap_southeast_2 = AWSRegion' "ap-southeast-2"
+
+pattern AWSRegion_Ap_southeast_3 :: AWSRegion
+pattern AWSRegion_Ap_southeast_3 = AWSRegion' "ap-southeast-3"
+
+pattern AWSRegion_Ca_central_1 :: AWSRegion
+pattern AWSRegion_Ca_central_1 = AWSRegion' "ca-central-1"
+
+pattern AWSRegion_Cn_north_1 :: AWSRegion
+pattern AWSRegion_Cn_north_1 = AWSRegion' "cn-north-1"
+
+pattern AWSRegion_Cn_northwest_1 :: AWSRegion
+pattern AWSRegion_Cn_northwest_1 = AWSRegion' "cn-northwest-1"
+
+pattern AWSRegion_Eu_central_1 :: AWSRegion
+pattern AWSRegion_Eu_central_1 = AWSRegion' "eu-central-1"
+
+pattern AWSRegion_Eu_north_1 :: AWSRegion
+pattern AWSRegion_Eu_north_1 = AWSRegion' "eu-north-1"
+
+pattern AWSRegion_Eu_south_1 :: AWSRegion
+pattern AWSRegion_Eu_south_1 = AWSRegion' "eu-south-1"
+
+pattern AWSRegion_Eu_south_2 :: AWSRegion
+pattern AWSRegion_Eu_south_2 = AWSRegion' "eu-south-2"
+
+pattern AWSRegion_Eu_west_1 :: AWSRegion
+pattern AWSRegion_Eu_west_1 = AWSRegion' "eu-west-1"
+
+pattern AWSRegion_Eu_west_2 :: AWSRegion
+pattern AWSRegion_Eu_west_2 = AWSRegion' "eu-west-2"
+
+pattern AWSRegion_Eu_west_3 :: AWSRegion
+pattern AWSRegion_Eu_west_3 = AWSRegion' "eu-west-3"
+
+pattern AWSRegion_Me_central_1 :: AWSRegion
+pattern AWSRegion_Me_central_1 = AWSRegion' "me-central-1"
+
+pattern AWSRegion_Me_south_1 :: AWSRegion
+pattern AWSRegion_Me_south_1 = AWSRegion' "me-south-1"
+
+pattern AWSRegion_Sa_east_1 :: AWSRegion
+pattern AWSRegion_Sa_east_1 = AWSRegion' "sa-east-1"
+
+pattern AWSRegion_Us_east_1 :: AWSRegion
+pattern AWSRegion_Us_east_1 = AWSRegion' "us-east-1"
+
+pattern AWSRegion_Us_east_2 :: AWSRegion
+pattern AWSRegion_Us_east_2 = AWSRegion' "us-east-2"
+
+pattern AWSRegion_Us_west_1 :: AWSRegion
+pattern AWSRegion_Us_west_1 = AWSRegion' "us-west-1"
+
+pattern AWSRegion_Us_west_2 :: AWSRegion
+pattern AWSRegion_Us_west_2 = AWSRegion' "us-west-2"
+
+{-# COMPLETE
+  AWSRegion_Af_south_1,
+  AWSRegion_Ap_east_1,
+  AWSRegion_Ap_northeast_1,
+  AWSRegion_Ap_northeast_2,
+  AWSRegion_Ap_northeast_3,
+  AWSRegion_Ap_south_1,
+  AWSRegion_Ap_southeast_1,
+  AWSRegion_Ap_southeast_2,
+  AWSRegion_Ap_southeast_3,
+  AWSRegion_Ca_central_1,
+  AWSRegion_Cn_north_1,
+  AWSRegion_Cn_northwest_1,
+  AWSRegion_Eu_central_1,
+  AWSRegion_Eu_north_1,
+  AWSRegion_Eu_south_1,
+  AWSRegion_Eu_south_2,
+  AWSRegion_Eu_west_1,
+  AWSRegion_Eu_west_2,
+  AWSRegion_Eu_west_3,
+  AWSRegion_Me_central_1,
+  AWSRegion_Me_south_1,
+  AWSRegion_Sa_east_1,
+  AWSRegion_Us_east_1,
+  AWSRegion_Us_east_2,
+  AWSRegion_Us_west_1,
+  AWSRegion_Us_west_2,
+  AWSRegion'
+  #-}
diff --git a/gen/Amazonka/CostAndUsageReport/Types/AdditionalArtifact.hs b/gen/Amazonka/CostAndUsageReport/Types/AdditionalArtifact.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types/AdditionalArtifact.hs
@@ -0,0 +1,77 @@
+{-# 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.CostAndUsageReport.Types.AdditionalArtifact
+-- 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.CostAndUsageReport.Types.AdditionalArtifact
+  ( AdditionalArtifact
+      ( ..,
+        AdditionalArtifact_ATHENA,
+        AdditionalArtifact_QUICKSIGHT,
+        AdditionalArtifact_REDSHIFT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The types of manifest that you want AWS to create for this report.
+newtype AdditionalArtifact = AdditionalArtifact'
+  { fromAdditionalArtifact ::
+      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 AdditionalArtifact_ATHENA :: AdditionalArtifact
+pattern AdditionalArtifact_ATHENA = AdditionalArtifact' "ATHENA"
+
+pattern AdditionalArtifact_QUICKSIGHT :: AdditionalArtifact
+pattern AdditionalArtifact_QUICKSIGHT = AdditionalArtifact' "QUICKSIGHT"
+
+pattern AdditionalArtifact_REDSHIFT :: AdditionalArtifact
+pattern AdditionalArtifact_REDSHIFT = AdditionalArtifact' "REDSHIFT"
+
+{-# COMPLETE
+  AdditionalArtifact_ATHENA,
+  AdditionalArtifact_QUICKSIGHT,
+  AdditionalArtifact_REDSHIFT,
+  AdditionalArtifact'
+  #-}
diff --git a/gen/Amazonka/CostAndUsageReport/Types/CompressionFormat.hs b/gen/Amazonka/CostAndUsageReport/Types/CompressionFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types/CompressionFormat.hs
@@ -0,0 +1,77 @@
+{-# 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.CostAndUsageReport.Types.CompressionFormat
+-- 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.CostAndUsageReport.Types.CompressionFormat
+  ( CompressionFormat
+      ( ..,
+        CompressionFormat_GZIP,
+        CompressionFormat_Parquet,
+        CompressionFormat_ZIP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The compression format that AWS uses for the report.
+newtype CompressionFormat = CompressionFormat'
+  { fromCompressionFormat ::
+      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 CompressionFormat_GZIP :: CompressionFormat
+pattern CompressionFormat_GZIP = CompressionFormat' "GZIP"
+
+pattern CompressionFormat_Parquet :: CompressionFormat
+pattern CompressionFormat_Parquet = CompressionFormat' "Parquet"
+
+pattern CompressionFormat_ZIP :: CompressionFormat
+pattern CompressionFormat_ZIP = CompressionFormat' "ZIP"
+
+{-# COMPLETE
+  CompressionFormat_GZIP,
+  CompressionFormat_Parquet,
+  CompressionFormat_ZIP,
+  CompressionFormat'
+  #-}
diff --git a/gen/Amazonka/CostAndUsageReport/Types/ReportDefinition.hs b/gen/Amazonka/CostAndUsageReport/Types/ReportDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types/ReportDefinition.hs
@@ -0,0 +1,284 @@
+{-# 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.CostAndUsageReport.Types.ReportDefinition
+-- 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.CostAndUsageReport.Types.ReportDefinition where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.CostAndUsageReport.Types.AWSRegion
+import Amazonka.CostAndUsageReport.Types.AdditionalArtifact
+import Amazonka.CostAndUsageReport.Types.CompressionFormat
+import Amazonka.CostAndUsageReport.Types.ReportFormat
+import Amazonka.CostAndUsageReport.Types.ReportVersioning
+import Amazonka.CostAndUsageReport.Types.SchemaElement
+import Amazonka.CostAndUsageReport.Types.TimeUnit
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The definition of AWS Cost and Usage Report. You can specify the report
+-- name, time unit, report format, compression format, S3 bucket,
+-- additional artifacts, and schema elements in the definition.
+--
+-- /See:/ 'newReportDefinition' smart constructor.
+data ReportDefinition = ReportDefinition'
+  { -- | A list of manifests that you want Amazon Web Services to create for this
+    -- report.
+    additionalArtifacts :: Prelude.Maybe [AdditionalArtifact],
+    -- | The Amazon resource name of the billing view. You can get this value by
+    -- using the billing view service public APIs.
+    billingViewArn :: Prelude.Maybe Prelude.Text,
+    -- | Whether you want Amazon Web Services to update your reports after they
+    -- have been finalized if Amazon Web Services detects charges related to
+    -- previous months. These charges can include refunds, credits, or support
+    -- fees.
+    refreshClosedReports :: Prelude.Maybe Prelude.Bool,
+    -- | Whether you want Amazon Web Services to overwrite the previous version
+    -- of each report or to deliver the report in addition to the previous
+    -- versions.
+    reportVersioning :: Prelude.Maybe ReportVersioning,
+    reportName :: Prelude.Text,
+    timeUnit :: TimeUnit,
+    format :: ReportFormat,
+    compression :: CompressionFormat,
+    -- | A list of strings that indicate additional content that Amazon Web
+    -- Services includes in the report, such as individual resource IDs.
+    additionalSchemaElements :: [SchemaElement],
+    s3Bucket :: Prelude.Text,
+    s3Prefix :: Prelude.Text,
+    s3Region :: AWSRegion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReportDefinition' 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:
+--
+-- 'additionalArtifacts', 'reportDefinition_additionalArtifacts' - A list of manifests that you want Amazon Web Services to create for this
+-- report.
+--
+-- 'billingViewArn', 'reportDefinition_billingViewArn' - The Amazon resource name of the billing view. You can get this value by
+-- using the billing view service public APIs.
+--
+-- 'refreshClosedReports', 'reportDefinition_refreshClosedReports' - Whether you want Amazon Web Services to update your reports after they
+-- have been finalized if Amazon Web Services detects charges related to
+-- previous months. These charges can include refunds, credits, or support
+-- fees.
+--
+-- 'reportVersioning', 'reportDefinition_reportVersioning' - Whether you want Amazon Web Services to overwrite the previous version
+-- of each report or to deliver the report in addition to the previous
+-- versions.
+--
+-- 'reportName', 'reportDefinition_reportName' - Undocumented member.
+--
+-- 'timeUnit', 'reportDefinition_timeUnit' - Undocumented member.
+--
+-- 'format', 'reportDefinition_format' - Undocumented member.
+--
+-- 'compression', 'reportDefinition_compression' - Undocumented member.
+--
+-- 'additionalSchemaElements', 'reportDefinition_additionalSchemaElements' - A list of strings that indicate additional content that Amazon Web
+-- Services includes in the report, such as individual resource IDs.
+--
+-- 's3Bucket', 'reportDefinition_s3Bucket' - Undocumented member.
+--
+-- 's3Prefix', 'reportDefinition_s3Prefix' - Undocumented member.
+--
+-- 's3Region', 'reportDefinition_s3Region' - Undocumented member.
+newReportDefinition ::
+  -- | 'reportName'
+  Prelude.Text ->
+  -- | 'timeUnit'
+  TimeUnit ->
+  -- | 'format'
+  ReportFormat ->
+  -- | 'compression'
+  CompressionFormat ->
+  -- | 's3Bucket'
+  Prelude.Text ->
+  -- | 's3Prefix'
+  Prelude.Text ->
+  -- | 's3Region'
+  AWSRegion ->
+  ReportDefinition
+newReportDefinition
+  pReportName_
+  pTimeUnit_
+  pFormat_
+  pCompression_
+  pS3Bucket_
+  pS3Prefix_
+  pS3Region_ =
+    ReportDefinition'
+      { additionalArtifacts =
+          Prelude.Nothing,
+        billingViewArn = Prelude.Nothing,
+        refreshClosedReports = Prelude.Nothing,
+        reportVersioning = Prelude.Nothing,
+        reportName = pReportName_,
+        timeUnit = pTimeUnit_,
+        format = pFormat_,
+        compression = pCompression_,
+        additionalSchemaElements = Prelude.mempty,
+        s3Bucket = pS3Bucket_,
+        s3Prefix = pS3Prefix_,
+        s3Region = pS3Region_
+      }
+
+-- | A list of manifests that you want Amazon Web Services to create for this
+-- report.
+reportDefinition_additionalArtifacts :: Lens.Lens' ReportDefinition (Prelude.Maybe [AdditionalArtifact])
+reportDefinition_additionalArtifacts = Lens.lens (\ReportDefinition' {additionalArtifacts} -> additionalArtifacts) (\s@ReportDefinition' {} a -> s {additionalArtifacts = a} :: ReportDefinition) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon resource name of the billing view. You can get this value by
+-- using the billing view service public APIs.
+reportDefinition_billingViewArn :: Lens.Lens' ReportDefinition (Prelude.Maybe Prelude.Text)
+reportDefinition_billingViewArn = Lens.lens (\ReportDefinition' {billingViewArn} -> billingViewArn) (\s@ReportDefinition' {} a -> s {billingViewArn = a} :: ReportDefinition)
+
+-- | Whether you want Amazon Web Services to update your reports after they
+-- have been finalized if Amazon Web Services detects charges related to
+-- previous months. These charges can include refunds, credits, or support
+-- fees.
+reportDefinition_refreshClosedReports :: Lens.Lens' ReportDefinition (Prelude.Maybe Prelude.Bool)
+reportDefinition_refreshClosedReports = Lens.lens (\ReportDefinition' {refreshClosedReports} -> refreshClosedReports) (\s@ReportDefinition' {} a -> s {refreshClosedReports = a} :: ReportDefinition)
+
+-- | Whether you want Amazon Web Services to overwrite the previous version
+-- of each report or to deliver the report in addition to the previous
+-- versions.
+reportDefinition_reportVersioning :: Lens.Lens' ReportDefinition (Prelude.Maybe ReportVersioning)
+reportDefinition_reportVersioning = Lens.lens (\ReportDefinition' {reportVersioning} -> reportVersioning) (\s@ReportDefinition' {} a -> s {reportVersioning = a} :: ReportDefinition)
+
+-- | Undocumented member.
+reportDefinition_reportName :: Lens.Lens' ReportDefinition Prelude.Text
+reportDefinition_reportName = Lens.lens (\ReportDefinition' {reportName} -> reportName) (\s@ReportDefinition' {} a -> s {reportName = a} :: ReportDefinition)
+
+-- | Undocumented member.
+reportDefinition_timeUnit :: Lens.Lens' ReportDefinition TimeUnit
+reportDefinition_timeUnit = Lens.lens (\ReportDefinition' {timeUnit} -> timeUnit) (\s@ReportDefinition' {} a -> s {timeUnit = a} :: ReportDefinition)
+
+-- | Undocumented member.
+reportDefinition_format :: Lens.Lens' ReportDefinition ReportFormat
+reportDefinition_format = Lens.lens (\ReportDefinition' {format} -> format) (\s@ReportDefinition' {} a -> s {format = a} :: ReportDefinition)
+
+-- | Undocumented member.
+reportDefinition_compression :: Lens.Lens' ReportDefinition CompressionFormat
+reportDefinition_compression = Lens.lens (\ReportDefinition' {compression} -> compression) (\s@ReportDefinition' {} a -> s {compression = a} :: ReportDefinition)
+
+-- | A list of strings that indicate additional content that Amazon Web
+-- Services includes in the report, such as individual resource IDs.
+reportDefinition_additionalSchemaElements :: Lens.Lens' ReportDefinition [SchemaElement]
+reportDefinition_additionalSchemaElements = Lens.lens (\ReportDefinition' {additionalSchemaElements} -> additionalSchemaElements) (\s@ReportDefinition' {} a -> s {additionalSchemaElements = a} :: ReportDefinition) Prelude.. Lens.coerced
+
+-- | Undocumented member.
+reportDefinition_s3Bucket :: Lens.Lens' ReportDefinition Prelude.Text
+reportDefinition_s3Bucket = Lens.lens (\ReportDefinition' {s3Bucket} -> s3Bucket) (\s@ReportDefinition' {} a -> s {s3Bucket = a} :: ReportDefinition)
+
+-- | Undocumented member.
+reportDefinition_s3Prefix :: Lens.Lens' ReportDefinition Prelude.Text
+reportDefinition_s3Prefix = Lens.lens (\ReportDefinition' {s3Prefix} -> s3Prefix) (\s@ReportDefinition' {} a -> s {s3Prefix = a} :: ReportDefinition)
+
+-- | Undocumented member.
+reportDefinition_s3Region :: Lens.Lens' ReportDefinition AWSRegion
+reportDefinition_s3Region = Lens.lens (\ReportDefinition' {s3Region} -> s3Region) (\s@ReportDefinition' {} a -> s {s3Region = a} :: ReportDefinition)
+
+instance Data.FromJSON ReportDefinition where
+  parseJSON =
+    Data.withObject
+      "ReportDefinition"
+      ( \x ->
+          ReportDefinition'
+            Prelude.<$> ( x
+                            Data..:? "AdditionalArtifacts"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "BillingViewArn")
+            Prelude.<*> (x Data..:? "RefreshClosedReports")
+            Prelude.<*> (x Data..:? "ReportVersioning")
+            Prelude.<*> (x Data..: "ReportName")
+            Prelude.<*> (x Data..: "TimeUnit")
+            Prelude.<*> (x Data..: "Format")
+            Prelude.<*> (x Data..: "Compression")
+            Prelude.<*> ( x
+                            Data..:? "AdditionalSchemaElements"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "S3Bucket")
+            Prelude.<*> (x Data..: "S3Prefix")
+            Prelude.<*> (x Data..: "S3Region")
+      )
+
+instance Prelude.Hashable ReportDefinition where
+  hashWithSalt _salt ReportDefinition' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalArtifacts
+      `Prelude.hashWithSalt` billingViewArn
+      `Prelude.hashWithSalt` refreshClosedReports
+      `Prelude.hashWithSalt` reportVersioning
+      `Prelude.hashWithSalt` reportName
+      `Prelude.hashWithSalt` timeUnit
+      `Prelude.hashWithSalt` format
+      `Prelude.hashWithSalt` compression
+      `Prelude.hashWithSalt` additionalSchemaElements
+      `Prelude.hashWithSalt` s3Bucket
+      `Prelude.hashWithSalt` s3Prefix
+      `Prelude.hashWithSalt` s3Region
+
+instance Prelude.NFData ReportDefinition where
+  rnf ReportDefinition' {..} =
+    Prelude.rnf additionalArtifacts
+      `Prelude.seq` Prelude.rnf billingViewArn
+      `Prelude.seq` Prelude.rnf refreshClosedReports
+      `Prelude.seq` Prelude.rnf reportVersioning
+      `Prelude.seq` Prelude.rnf reportName
+      `Prelude.seq` Prelude.rnf timeUnit
+      `Prelude.seq` Prelude.rnf format
+      `Prelude.seq` Prelude.rnf compression
+      `Prelude.seq` Prelude.rnf additionalSchemaElements
+      `Prelude.seq` Prelude.rnf s3Bucket
+      `Prelude.seq` Prelude.rnf s3Prefix
+      `Prelude.seq` Prelude.rnf s3Region
+
+instance Data.ToJSON ReportDefinition where
+  toJSON ReportDefinition' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AdditionalArtifacts" Data..=)
+              Prelude.<$> additionalArtifacts,
+            ("BillingViewArn" Data..=)
+              Prelude.<$> billingViewArn,
+            ("RefreshClosedReports" Data..=)
+              Prelude.<$> refreshClosedReports,
+            ("ReportVersioning" Data..=)
+              Prelude.<$> reportVersioning,
+            Prelude.Just ("ReportName" Data..= reportName),
+            Prelude.Just ("TimeUnit" Data..= timeUnit),
+            Prelude.Just ("Format" Data..= format),
+            Prelude.Just ("Compression" Data..= compression),
+            Prelude.Just
+              ( "AdditionalSchemaElements"
+                  Data..= additionalSchemaElements
+              ),
+            Prelude.Just ("S3Bucket" Data..= s3Bucket),
+            Prelude.Just ("S3Prefix" Data..= s3Prefix),
+            Prelude.Just ("S3Region" Data..= s3Region)
+          ]
+      )
diff --git a/gen/Amazonka/CostAndUsageReport/Types/ReportFormat.hs b/gen/Amazonka/CostAndUsageReport/Types/ReportFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types/ReportFormat.hs
@@ -0,0 +1,72 @@
+{-# 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.CostAndUsageReport.Types.ReportFormat
+-- 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.CostAndUsageReport.Types.ReportFormat
+  ( ReportFormat
+      ( ..,
+        ReportFormat_Parquet,
+        ReportFormat_TextORcsv
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The format that AWS saves the report in.
+newtype ReportFormat = ReportFormat'
+  { fromReportFormat ::
+      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 ReportFormat_Parquet :: ReportFormat
+pattern ReportFormat_Parquet = ReportFormat' "Parquet"
+
+pattern ReportFormat_TextORcsv :: ReportFormat
+pattern ReportFormat_TextORcsv = ReportFormat' "textORcsv"
+
+{-# COMPLETE
+  ReportFormat_Parquet,
+  ReportFormat_TextORcsv,
+  ReportFormat'
+  #-}
diff --git a/gen/Amazonka/CostAndUsageReport/Types/ReportVersioning.hs b/gen/Amazonka/CostAndUsageReport/Types/ReportVersioning.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types/ReportVersioning.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.CostAndUsageReport.Types.ReportVersioning
+-- 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.CostAndUsageReport.Types.ReportVersioning
+  ( ReportVersioning
+      ( ..,
+        ReportVersioning_CREATE_NEW_REPORT,
+        ReportVersioning_OVERWRITE_REPORT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReportVersioning = ReportVersioning'
+  { fromReportVersioning ::
+      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 ReportVersioning_CREATE_NEW_REPORT :: ReportVersioning
+pattern ReportVersioning_CREATE_NEW_REPORT = ReportVersioning' "CREATE_NEW_REPORT"
+
+pattern ReportVersioning_OVERWRITE_REPORT :: ReportVersioning
+pattern ReportVersioning_OVERWRITE_REPORT = ReportVersioning' "OVERWRITE_REPORT"
+
+{-# COMPLETE
+  ReportVersioning_CREATE_NEW_REPORT,
+  ReportVersioning_OVERWRITE_REPORT,
+  ReportVersioning'
+  #-}
diff --git a/gen/Amazonka/CostAndUsageReport/Types/SchemaElement.hs b/gen/Amazonka/CostAndUsageReport/Types/SchemaElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types/SchemaElement.hs
@@ -0,0 +1,67 @@
+{-# 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.CostAndUsageReport.Types.SchemaElement
+-- 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.CostAndUsageReport.Types.SchemaElement
+  ( SchemaElement
+      ( ..,
+        SchemaElement_RESOURCES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Whether or not AWS includes resource IDs in the report.
+newtype SchemaElement = SchemaElement'
+  { fromSchemaElement ::
+      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 SchemaElement_RESOURCES :: SchemaElement
+pattern SchemaElement_RESOURCES = SchemaElement' "RESOURCES"
+
+{-# COMPLETE
+  SchemaElement_RESOURCES,
+  SchemaElement'
+  #-}
diff --git a/gen/Amazonka/CostAndUsageReport/Types/TimeUnit.hs b/gen/Amazonka/CostAndUsageReport/Types/TimeUnit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/Types/TimeUnit.hs
@@ -0,0 +1,77 @@
+{-# 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.CostAndUsageReport.Types.TimeUnit
+-- 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.CostAndUsageReport.Types.TimeUnit
+  ( TimeUnit
+      ( ..,
+        TimeUnit_DAILY,
+        TimeUnit_HOURLY,
+        TimeUnit_MONTHLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The length of time covered by the report.
+newtype TimeUnit = TimeUnit'
+  { fromTimeUnit ::
+      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 TimeUnit_DAILY :: TimeUnit
+pattern TimeUnit_DAILY = TimeUnit' "DAILY"
+
+pattern TimeUnit_HOURLY :: TimeUnit
+pattern TimeUnit_HOURLY = TimeUnit' "HOURLY"
+
+pattern TimeUnit_MONTHLY :: TimeUnit
+pattern TimeUnit_MONTHLY = TimeUnit' "MONTHLY"
+
+{-# COMPLETE
+  TimeUnit_DAILY,
+  TimeUnit_HOURLY,
+  TimeUnit_MONTHLY,
+  TimeUnit'
+  #-}
diff --git a/gen/Amazonka/CostAndUsageReport/Waiters.hs b/gen/Amazonka/CostAndUsageReport/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CostAndUsageReport/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.CostAndUsageReport.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.CostAndUsageReport.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.CostAndUsageReport.Lens
+import Amazonka.CostAndUsageReport.Types
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
diff --git a/gen/Network/AWS/CostAndUsageReport.hs b/gen/Network/AWS/CostAndUsageReport.hs
deleted file mode 100644
--- a/gen/Network/AWS/CostAndUsageReport.hs
+++ /dev/null
@@ -1,118 +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.CostAndUsageReport
--- 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)
---
--- All public APIs for AWS Cost and Usage Report service
-module Network.AWS.CostAndUsageReport
-    (
-    -- * Service Configuration
-      costAndUsageReport
-
-    -- * Errors
-    -- $errors
-
-    -- ** ValidationException
-    , _ValidationException
-
-    -- ** InternalErrorException
-    , _InternalErrorException
-
-    -- ** DuplicateReportNameException
-    , _DuplicateReportNameException
-
-    -- ** ReportLimitReachedException
-    , _ReportLimitReachedException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** PutReportDefinition
-    , module Network.AWS.CostAndUsageReport.PutReportDefinition
-
-    -- ** DeleteReportDefinition
-    , module Network.AWS.CostAndUsageReport.DeleteReportDefinition
-
-    -- ** DescribeReportDefinitions (Paginated)
-    , module Network.AWS.CostAndUsageReport.DescribeReportDefinitions
-
-    -- * Types
-
-    -- ** AWSRegion
-    , AWSRegion (..)
-
-    -- ** AdditionalArtifact
-    , AdditionalArtifact (..)
-
-    -- ** CompressionFormat
-    , CompressionFormat (..)
-
-    -- ** ReportFormat
-    , ReportFormat (..)
-
-    -- ** SchemaElement
-    , SchemaElement (..)
-
-    -- ** TimeUnit
-    , TimeUnit (..)
-
-    -- ** ReportDefinition
-    , ReportDefinition
-    , reportDefinition
-    , rdAdditionalArtifacts
-    , rdReportName
-    , rdTimeUnit
-    , rdFormat
-    , rdCompression
-    , rdAdditionalSchemaElements
-    , rdS3Bucket
-    , rdS3Prefix
-    , rdS3Region
-    ) where
-
-import Network.AWS.CostAndUsageReport.DeleteReportDefinition
-import Network.AWS.CostAndUsageReport.DescribeReportDefinitions
-import Network.AWS.CostAndUsageReport.PutReportDefinition
-import Network.AWS.CostAndUsageReport.Types
-import Network.AWS.CostAndUsageReport.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 'CostAndUsageReport'.
--}
-
-{- $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/CostAndUsageReport/DeleteReportDefinition.hs b/gen/Network/AWS/CostAndUsageReport/DeleteReportDefinition.hs
deleted file mode 100644
--- a/gen/Network/AWS/CostAndUsageReport/DeleteReportDefinition.hs
+++ /dev/null
@@ -1,134 +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.CostAndUsageReport.DeleteReportDefinition
--- 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)
---
--- Delete a specified report definition
-module Network.AWS.CostAndUsageReport.DeleteReportDefinition
-    (
-    -- * Creating a Request
-      deleteReportDefinition
-    , DeleteReportDefinition
-    -- * Request Lenses
-    , drdReportName
-
-    -- * Destructuring the Response
-    , deleteReportDefinitionResponse
-    , DeleteReportDefinitionResponse
-    -- * Response Lenses
-    , drsResponseMessage
-    , drsResponseStatus
-    ) where
-
-import Network.AWS.CostAndUsageReport.Types
-import Network.AWS.CostAndUsageReport.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | Request of DeleteReportDefinition
---
--- /See:/ 'deleteReportDefinition' smart constructor.
-newtype DeleteReportDefinition = DeleteReportDefinition'
-  { _drdReportName :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteReportDefinition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drdReportName' - Undocumented member.
-deleteReportDefinition
-    :: DeleteReportDefinition
-deleteReportDefinition = DeleteReportDefinition' {_drdReportName = Nothing}
-
-
--- | Undocumented member.
-drdReportName :: Lens' DeleteReportDefinition (Maybe Text)
-drdReportName = lens _drdReportName (\ s a -> s{_drdReportName = a})
-
-instance AWSRequest DeleteReportDefinition where
-        type Rs DeleteReportDefinition =
-             DeleteReportDefinitionResponse
-        request = postJSON costAndUsageReport
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DeleteReportDefinitionResponse' <$>
-                   (x .?> "ResponseMessage") <*> (pure (fromEnum s)))
-
-instance Hashable DeleteReportDefinition where
-
-instance NFData DeleteReportDefinition where
-
-instance ToHeaders DeleteReportDefinition where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSOrigamiServiceGatewayService.DeleteReportDefinition"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteReportDefinition where
-        toJSON DeleteReportDefinition'{..}
-          = object
-              (catMaybes [("ReportName" .=) <$> _drdReportName])
-
-instance ToPath DeleteReportDefinition where
-        toPath = const "/"
-
-instance ToQuery DeleteReportDefinition where
-        toQuery = const mempty
-
--- | Response of DeleteReportDefinition
---
--- /See:/ 'deleteReportDefinitionResponse' smart constructor.
-data DeleteReportDefinitionResponse = DeleteReportDefinitionResponse'
-  { _drsResponseMessage :: !(Maybe Text)
-  , _drsResponseStatus  :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteReportDefinitionResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drsResponseMessage' - Undocumented member.
---
--- * 'drsResponseStatus' - -- | The response status code.
-deleteReportDefinitionResponse
-    :: Int -- ^ 'drsResponseStatus'
-    -> DeleteReportDefinitionResponse
-deleteReportDefinitionResponse pResponseStatus_ =
-  DeleteReportDefinitionResponse'
-    {_drsResponseMessage = Nothing, _drsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-drsResponseMessage :: Lens' DeleteReportDefinitionResponse (Maybe Text)
-drsResponseMessage = lens _drsResponseMessage (\ s a -> s{_drsResponseMessage = a})
-
--- | -- | The response status code.
-drsResponseStatus :: Lens' DeleteReportDefinitionResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a})
-
-instance NFData DeleteReportDefinitionResponse where
diff --git a/gen/Network/AWS/CostAndUsageReport/DescribeReportDefinitions.hs b/gen/Network/AWS/CostAndUsageReport/DescribeReportDefinitions.hs
deleted file mode 100644
--- a/gen/Network/AWS/CostAndUsageReport/DescribeReportDefinitions.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.CostAndUsageReport.DescribeReportDefinitions
--- 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)
---
--- Describe a list of report definitions owned by the account
---
--- This operation returns paginated results.
-module Network.AWS.CostAndUsageReport.DescribeReportDefinitions
-    (
-    -- * Creating a Request
-      describeReportDefinitions
-    , DescribeReportDefinitions
-    -- * Request Lenses
-    , drdNextToken
-    , drdMaxResults
-
-    -- * Destructuring the Response
-    , describeReportDefinitionsResponse
-    , DescribeReportDefinitionsResponse
-    -- * Response Lenses
-    , drdrsNextToken
-    , drdrsReportDefinitions
-    , drdrsResponseStatus
-    ) where
-
-import Network.AWS.CostAndUsageReport.Types
-import Network.AWS.CostAndUsageReport.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | Request of DescribeReportDefinitions
---
--- /See:/ 'describeReportDefinitions' smart constructor.
-data DescribeReportDefinitions = DescribeReportDefinitions'
-  { _drdNextToken  :: !(Maybe Text)
-  , _drdMaxResults :: !(Maybe Nat)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeReportDefinitions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drdNextToken' - Undocumented member.
---
--- * 'drdMaxResults' - Undocumented member.
-describeReportDefinitions
-    :: DescribeReportDefinitions
-describeReportDefinitions =
-  DescribeReportDefinitions' {_drdNextToken = Nothing, _drdMaxResults = Nothing}
-
-
--- | Undocumented member.
-drdNextToken :: Lens' DescribeReportDefinitions (Maybe Text)
-drdNextToken = lens _drdNextToken (\ s a -> s{_drdNextToken = a})
-
--- | Undocumented member.
-drdMaxResults :: Lens' DescribeReportDefinitions (Maybe Natural)
-drdMaxResults = lens _drdMaxResults (\ s a -> s{_drdMaxResults = a}) . mapping _Nat
-
-instance AWSPager DescribeReportDefinitions where
-        page rq rs
-          | stop (rs ^. drdrsNextToken) = Nothing
-          | stop (rs ^. drdrsReportDefinitions) = Nothing
-          | otherwise =
-            Just $ rq & drdNextToken .~ rs ^. drdrsNextToken
-
-instance AWSRequest DescribeReportDefinitions where
-        type Rs DescribeReportDefinitions =
-             DescribeReportDefinitionsResponse
-        request = postJSON costAndUsageReport
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeReportDefinitionsResponse' <$>
-                   (x .?> "NextToken") <*>
-                     (x .?> "ReportDefinitions" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeReportDefinitions where
-
-instance NFData DescribeReportDefinitions where
-
-instance ToHeaders DescribeReportDefinitions where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSOrigamiServiceGatewayService.DescribeReportDefinitions"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeReportDefinitions where
-        toJSON DescribeReportDefinitions'{..}
-          = object
-              (catMaybes
-                 [("NextToken" .=) <$> _drdNextToken,
-                  ("MaxResults" .=) <$> _drdMaxResults])
-
-instance ToPath DescribeReportDefinitions where
-        toPath = const "/"
-
-instance ToQuery DescribeReportDefinitions where
-        toQuery = const mempty
-
--- | Response of DescribeReportDefinitions
---
--- /See:/ 'describeReportDefinitionsResponse' smart constructor.
-data DescribeReportDefinitionsResponse = DescribeReportDefinitionsResponse'
-  { _drdrsNextToken         :: !(Maybe Text)
-  , _drdrsReportDefinitions :: !(Maybe [ReportDefinition])
-  , _drdrsResponseStatus    :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeReportDefinitionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drdrsNextToken' - Undocumented member.
---
--- * 'drdrsReportDefinitions' - Undocumented member.
---
--- * 'drdrsResponseStatus' - -- | The response status code.
-describeReportDefinitionsResponse
-    :: Int -- ^ 'drdrsResponseStatus'
-    -> DescribeReportDefinitionsResponse
-describeReportDefinitionsResponse pResponseStatus_ =
-  DescribeReportDefinitionsResponse'
-    { _drdrsNextToken = Nothing
-    , _drdrsReportDefinitions = Nothing
-    , _drdrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Undocumented member.
-drdrsNextToken :: Lens' DescribeReportDefinitionsResponse (Maybe Text)
-drdrsNextToken = lens _drdrsNextToken (\ s a -> s{_drdrsNextToken = a})
-
--- | Undocumented member.
-drdrsReportDefinitions :: Lens' DescribeReportDefinitionsResponse [ReportDefinition]
-drdrsReportDefinitions = lens _drdrsReportDefinitions (\ s a -> s{_drdrsReportDefinitions = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-drdrsResponseStatus :: Lens' DescribeReportDefinitionsResponse Int
-drdrsResponseStatus = lens _drdrsResponseStatus (\ s a -> s{_drdrsResponseStatus = a})
-
-instance NFData DescribeReportDefinitionsResponse
-         where
diff --git a/gen/Network/AWS/CostAndUsageReport/PutReportDefinition.hs b/gen/Network/AWS/CostAndUsageReport/PutReportDefinition.hs
deleted file mode 100644
--- a/gen/Network/AWS/CostAndUsageReport/PutReportDefinition.hs
+++ /dev/null
@@ -1,127 +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.CostAndUsageReport.PutReportDefinition
--- 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)
---
--- Create a new report definition
-module Network.AWS.CostAndUsageReport.PutReportDefinition
-    (
-    -- * Creating a Request
-      putReportDefinition
-    , PutReportDefinition
-    -- * Request Lenses
-    , prdReportDefinition
-
-    -- * Destructuring the Response
-    , putReportDefinitionResponse
-    , PutReportDefinitionResponse
-    -- * Response Lenses
-    , prdrsResponseStatus
-    ) where
-
-import Network.AWS.CostAndUsageReport.Types
-import Network.AWS.CostAndUsageReport.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | Request of PutReportDefinition
---
--- /See:/ 'putReportDefinition' smart constructor.
-newtype PutReportDefinition = PutReportDefinition'
-  { _prdReportDefinition :: ReportDefinition
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PutReportDefinition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prdReportDefinition' - Undocumented member.
-putReportDefinition
-    :: ReportDefinition -- ^ 'prdReportDefinition'
-    -> PutReportDefinition
-putReportDefinition pReportDefinition_ =
-  PutReportDefinition' {_prdReportDefinition = pReportDefinition_}
-
-
--- | Undocumented member.
-prdReportDefinition :: Lens' PutReportDefinition ReportDefinition
-prdReportDefinition = lens _prdReportDefinition (\ s a -> s{_prdReportDefinition = a})
-
-instance AWSRequest PutReportDefinition where
-        type Rs PutReportDefinition =
-             PutReportDefinitionResponse
-        request = postJSON costAndUsageReport
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 PutReportDefinitionResponse' <$> (pure (fromEnum s)))
-
-instance Hashable PutReportDefinition where
-
-instance NFData PutReportDefinition where
-
-instance ToHeaders PutReportDefinition where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSOrigamiServiceGatewayService.PutReportDefinition"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON PutReportDefinition where
-        toJSON PutReportDefinition'{..}
-          = object
-              (catMaybes
-                 [Just ("ReportDefinition" .= _prdReportDefinition)])
-
-instance ToPath PutReportDefinition where
-        toPath = const "/"
-
-instance ToQuery PutReportDefinition where
-        toQuery = const mempty
-
--- | Response of PutReportDefinition
---
--- /See:/ 'putReportDefinitionResponse' smart constructor.
-newtype PutReportDefinitionResponse = PutReportDefinitionResponse'
-  { _prdrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PutReportDefinitionResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prdrsResponseStatus' - -- | The response status code.
-putReportDefinitionResponse
-    :: Int -- ^ 'prdrsResponseStatus'
-    -> PutReportDefinitionResponse
-putReportDefinitionResponse pResponseStatus_ =
-  PutReportDefinitionResponse' {_prdrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-prdrsResponseStatus :: Lens' PutReportDefinitionResponse Int
-prdrsResponseStatus = lens _prdrsResponseStatus (\ s a -> s{_prdrsResponseStatus = a})
-
-instance NFData PutReportDefinitionResponse where
diff --git a/gen/Network/AWS/CostAndUsageReport/Types.hs b/gen/Network/AWS/CostAndUsageReport/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/CostAndUsageReport/Types.hs
+++ /dev/null
@@ -1,123 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CostAndUsageReport.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.CostAndUsageReport.Types
-    (
-    -- * Service Configuration
-      costAndUsageReport
-
-    -- * Errors
-    , _ValidationException
-    , _InternalErrorException
-    , _DuplicateReportNameException
-    , _ReportLimitReachedException
-
-    -- * AWSRegion
-    , AWSRegion (..)
-
-    -- * AdditionalArtifact
-    , AdditionalArtifact (..)
-
-    -- * CompressionFormat
-    , CompressionFormat (..)
-
-    -- * ReportFormat
-    , ReportFormat (..)
-
-    -- * SchemaElement
-    , SchemaElement (..)
-
-    -- * TimeUnit
-    , TimeUnit (..)
-
-    -- * ReportDefinition
-    , ReportDefinition
-    , reportDefinition
-    , rdAdditionalArtifacts
-    , rdReportName
-    , rdTimeUnit
-    , rdFormat
-    , rdCompression
-    , rdAdditionalSchemaElements
-    , rdS3Bucket
-    , rdS3Prefix
-    , rdS3Region
-    ) where
-
-import Network.AWS.CostAndUsageReport.Types.Product
-import Network.AWS.CostAndUsageReport.Types.Sum
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-
--- | API version @2017-01-06@ of the Amazon Cost and Usage Report Service SDK configuration.
-costAndUsageReport :: Service
-costAndUsageReport =
-  Service
-    { _svcAbbrev = "CostAndUsageReport"
-    , _svcSigner = v4
-    , _svcPrefix = "cur"
-    , _svcVersion = "2017-01-06"
-    , _svcEndpoint = defaultEndpoint costAndUsageReport
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "CostAndUsageReport"
-    , _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
-
-
--- | This exception is thrown when providing an invalid input. eg. Put a report preference with an invalid report name, or Delete a report preference with an empty report name.
-_ValidationException :: AsError a => Getting (First ServiceError) a ServiceError
-_ValidationException =
-  _MatchServiceError costAndUsageReport "ValidationException"
-
-
--- | This exception is thrown on a known dependency failure.
-_InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalErrorException =
-  _MatchServiceError costAndUsageReport "InternalErrorException"
-
-
--- | This exception is thrown when putting a report preference with a name that already exists.
-_DuplicateReportNameException :: AsError a => Getting (First ServiceError) a ServiceError
-_DuplicateReportNameException =
-  _MatchServiceError costAndUsageReport "DuplicateReportNameException"
-
-
--- | This exception is thrown when the number of report preference reaches max limit. The max number is 5.
-_ReportLimitReachedException :: AsError a => Getting (First ServiceError) a ServiceError
-_ReportLimitReachedException =
-  _MatchServiceError costAndUsageReport "ReportLimitReachedException"
-
diff --git a/gen/Network/AWS/CostAndUsageReport/Types/Product.hs b/gen/Network/AWS/CostAndUsageReport/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/CostAndUsageReport/Types/Product.hs
+++ /dev/null
@@ -1,154 +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.CostAndUsageReport.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.CostAndUsageReport.Types.Product where
-
-import Network.AWS.CostAndUsageReport.Types.Sum
-import Network.AWS.Lens
-import Network.AWS.Prelude
-
--- | The definition of AWS Cost and Usage Report. Customer can specify the report name, time unit, report format, compression format, S3 bucket and additional artifacts and schema elements in the definition.
---
--- /See:/ 'reportDefinition' smart constructor.
-data ReportDefinition = ReportDefinition'
-  { _rdAdditionalArtifacts      :: !(Maybe [AdditionalArtifact])
-  , _rdReportName               :: !Text
-  , _rdTimeUnit                 :: !TimeUnit
-  , _rdFormat                   :: !ReportFormat
-  , _rdCompression              :: !CompressionFormat
-  , _rdAdditionalSchemaElements :: ![SchemaElement]
-  , _rdS3Bucket                 :: !Text
-  , _rdS3Prefix                 :: !Text
-  , _rdS3Region                 :: !AWSRegion
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ReportDefinition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rdAdditionalArtifacts' - Undocumented member.
---
--- * 'rdReportName' - Undocumented member.
---
--- * 'rdTimeUnit' - Undocumented member.
---
--- * 'rdFormat' - Undocumented member.
---
--- * 'rdCompression' - Undocumented member.
---
--- * 'rdAdditionalSchemaElements' - Undocumented member.
---
--- * 'rdS3Bucket' - Undocumented member.
---
--- * 'rdS3Prefix' - Undocumented member.
---
--- * 'rdS3Region' - Undocumented member.
-reportDefinition
-    :: Text -- ^ 'rdReportName'
-    -> TimeUnit -- ^ 'rdTimeUnit'
-    -> ReportFormat -- ^ 'rdFormat'
-    -> CompressionFormat -- ^ 'rdCompression'
-    -> Text -- ^ 'rdS3Bucket'
-    -> Text -- ^ 'rdS3Prefix'
-    -> AWSRegion -- ^ 'rdS3Region'
-    -> ReportDefinition
-reportDefinition pReportName_ pTimeUnit_ pFormat_ pCompression_ pS3Bucket_ pS3Prefix_ pS3Region_ =
-  ReportDefinition'
-    { _rdAdditionalArtifacts = Nothing
-    , _rdReportName = pReportName_
-    , _rdTimeUnit = pTimeUnit_
-    , _rdFormat = pFormat_
-    , _rdCompression = pCompression_
-    , _rdAdditionalSchemaElements = mempty
-    , _rdS3Bucket = pS3Bucket_
-    , _rdS3Prefix = pS3Prefix_
-    , _rdS3Region = pS3Region_
-    }
-
-
--- | Undocumented member.
-rdAdditionalArtifacts :: Lens' ReportDefinition [AdditionalArtifact]
-rdAdditionalArtifacts = lens _rdAdditionalArtifacts (\ s a -> s{_rdAdditionalArtifacts = a}) . _Default . _Coerce
-
--- | Undocumented member.
-rdReportName :: Lens' ReportDefinition Text
-rdReportName = lens _rdReportName (\ s a -> s{_rdReportName = a})
-
--- | Undocumented member.
-rdTimeUnit :: Lens' ReportDefinition TimeUnit
-rdTimeUnit = lens _rdTimeUnit (\ s a -> s{_rdTimeUnit = a})
-
--- | Undocumented member.
-rdFormat :: Lens' ReportDefinition ReportFormat
-rdFormat = lens _rdFormat (\ s a -> s{_rdFormat = a})
-
--- | Undocumented member.
-rdCompression :: Lens' ReportDefinition CompressionFormat
-rdCompression = lens _rdCompression (\ s a -> s{_rdCompression = a})
-
--- | Undocumented member.
-rdAdditionalSchemaElements :: Lens' ReportDefinition [SchemaElement]
-rdAdditionalSchemaElements = lens _rdAdditionalSchemaElements (\ s a -> s{_rdAdditionalSchemaElements = a}) . _Coerce
-
--- | Undocumented member.
-rdS3Bucket :: Lens' ReportDefinition Text
-rdS3Bucket = lens _rdS3Bucket (\ s a -> s{_rdS3Bucket = a})
-
--- | Undocumented member.
-rdS3Prefix :: Lens' ReportDefinition Text
-rdS3Prefix = lens _rdS3Prefix (\ s a -> s{_rdS3Prefix = a})
-
--- | Undocumented member.
-rdS3Region :: Lens' ReportDefinition AWSRegion
-rdS3Region = lens _rdS3Region (\ s a -> s{_rdS3Region = a})
-
-instance FromJSON ReportDefinition where
-        parseJSON
-          = withObject "ReportDefinition"
-              (\ x ->
-                 ReportDefinition' <$>
-                   (x .:? "AdditionalArtifacts" .!= mempty) <*>
-                     (x .: "ReportName")
-                     <*> (x .: "TimeUnit")
-                     <*> (x .: "Format")
-                     <*> (x .: "Compression")
-                     <*> (x .:? "AdditionalSchemaElements" .!= mempty)
-                     <*> (x .: "S3Bucket")
-                     <*> (x .: "S3Prefix")
-                     <*> (x .: "S3Region"))
-
-instance Hashable ReportDefinition where
-
-instance NFData ReportDefinition where
-
-instance ToJSON ReportDefinition where
-        toJSON ReportDefinition'{..}
-          = object
-              (catMaybes
-                 [("AdditionalArtifacts" .=) <$>
-                    _rdAdditionalArtifacts,
-                  Just ("ReportName" .= _rdReportName),
-                  Just ("TimeUnit" .= _rdTimeUnit),
-                  Just ("Format" .= _rdFormat),
-                  Just ("Compression" .= _rdCompression),
-                  Just
-                    ("AdditionalSchemaElements" .=
-                       _rdAdditionalSchemaElements),
-                  Just ("S3Bucket" .= _rdS3Bucket),
-                  Just ("S3Prefix" .= _rdS3Prefix),
-                  Just ("S3Region" .= _rdS3Region)])
diff --git a/gen/Network/AWS/CostAndUsageReport/Types/Sum.hs b/gen/Network/AWS/CostAndUsageReport/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/CostAndUsageReport/Types/Sum.hs
+++ /dev/null
@@ -1,218 +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.CostAndUsageReport.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.CostAndUsageReport.Types.Sum where
-
-import Network.AWS.Prelude
-
--- | Region of customer S3 bucket.
-data AWSRegion
-  = ApNortheast1
-  | ApSoutheast1
-  | ApSoutheast2
-  | EuCentral1
-  | EuWest1
-  | UsEast1
-  | UsWest1
-  | UsWest2
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AWSRegion where
-    parser = takeLowerText >>= \case
-        "ap-northeast-1" -> pure ApNortheast1
-        "ap-southeast-1" -> pure ApSoutheast1
-        "ap-southeast-2" -> pure ApSoutheast2
-        "eu-central-1" -> pure EuCentral1
-        "eu-west-1" -> pure EuWest1
-        "us-east-1" -> pure UsEast1
-        "us-west-1" -> pure UsWest1
-        "us-west-2" -> pure UsWest2
-        e -> fromTextError $ "Failure parsing AWSRegion from value: '" <> e
-           <> "'. Accepted values: ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-central-1, eu-west-1, us-east-1, us-west-1, us-west-2"
-
-instance ToText AWSRegion where
-    toText = \case
-        ApNortheast1 -> "ap-northeast-1"
-        ApSoutheast1 -> "ap-southeast-1"
-        ApSoutheast2 -> "ap-southeast-2"
-        EuCentral1 -> "eu-central-1"
-        EuWest1 -> "eu-west-1"
-        UsEast1 -> "us-east-1"
-        UsWest1 -> "us-west-1"
-        UsWest2 -> "us-west-2"
-
-instance Hashable     AWSRegion
-instance NFData       AWSRegion
-instance ToByteString AWSRegion
-instance ToQuery      AWSRegion
-instance ToHeader     AWSRegion
-
-instance ToJSON AWSRegion where
-    toJSON = toJSONText
-
-instance FromJSON AWSRegion where
-    parseJSON = parseJSONText "AWSRegion"
-
--- | Enable support for Redshift and/or QuickSight.
-data AdditionalArtifact
-  = Quicksight
-  | Redshift
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AdditionalArtifact where
-    parser = takeLowerText >>= \case
-        "quicksight" -> pure Quicksight
-        "redshift" -> pure Redshift
-        e -> fromTextError $ "Failure parsing AdditionalArtifact from value: '" <> e
-           <> "'. Accepted values: quicksight, redshift"
-
-instance ToText AdditionalArtifact where
-    toText = \case
-        Quicksight -> "QUICKSIGHT"
-        Redshift -> "REDSHIFT"
-
-instance Hashable     AdditionalArtifact
-instance NFData       AdditionalArtifact
-instance ToByteString AdditionalArtifact
-instance ToQuery      AdditionalArtifact
-instance ToHeader     AdditionalArtifact
-
-instance ToJSON AdditionalArtifact where
-    toJSON = toJSONText
-
-instance FromJSON AdditionalArtifact where
-    parseJSON = parseJSONText "AdditionalArtifact"
-
--- | Preferred compression format for report.
-data CompressionFormat
-  = Gzip
-  | Zip
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText CompressionFormat where
-    parser = takeLowerText >>= \case
-        "gzip" -> pure Gzip
-        "zip" -> pure Zip
-        e -> fromTextError $ "Failure parsing CompressionFormat from value: '" <> e
-           <> "'. Accepted values: gzip, zip"
-
-instance ToText CompressionFormat where
-    toText = \case
-        Gzip -> "GZIP"
-        Zip -> "ZIP"
-
-instance Hashable     CompressionFormat
-instance NFData       CompressionFormat
-instance ToByteString CompressionFormat
-instance ToQuery      CompressionFormat
-instance ToHeader     CompressionFormat
-
-instance ToJSON CompressionFormat where
-    toJSON = toJSONText
-
-instance FromJSON CompressionFormat where
-    parseJSON = parseJSONText "CompressionFormat"
-
--- | Preferred format for report.
-data ReportFormat =
-  TextORcsv
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ReportFormat where
-    parser = takeLowerText >>= \case
-        "textorcsv" -> pure TextORcsv
-        e -> fromTextError $ "Failure parsing ReportFormat from value: '" <> e
-           <> "'. Accepted values: textorcsv"
-
-instance ToText ReportFormat where
-    toText = \case
-        TextORcsv -> "textORcsv"
-
-instance Hashable     ReportFormat
-instance NFData       ReportFormat
-instance ToByteString ReportFormat
-instance ToQuery      ReportFormat
-instance ToHeader     ReportFormat
-
-instance ToJSON ReportFormat where
-    toJSON = toJSONText
-
-instance FromJSON ReportFormat where
-    parseJSON = parseJSONText "ReportFormat"
-
--- | Preference of including Resource IDs. You can include additional details about individual resource IDs in your report.
-data SchemaElement =
-  Resources
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText SchemaElement where
-    parser = takeLowerText >>= \case
-        "resources" -> pure Resources
-        e -> fromTextError $ "Failure parsing SchemaElement from value: '" <> e
-           <> "'. Accepted values: resources"
-
-instance ToText SchemaElement where
-    toText = \case
-        Resources -> "RESOURCES"
-
-instance Hashable     SchemaElement
-instance NFData       SchemaElement
-instance ToByteString SchemaElement
-instance ToQuery      SchemaElement
-instance ToHeader     SchemaElement
-
-instance ToJSON SchemaElement where
-    toJSON = toJSONText
-
-instance FromJSON SchemaElement where
-    parseJSON = parseJSONText "SchemaElement"
-
--- | The frequency on which report data are measured and displayed.
-data TimeUnit
-  = Daily
-  | Hourly
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText TimeUnit where
-    parser = takeLowerText >>= \case
-        "daily" -> pure Daily
-        "hourly" -> pure Hourly
-        e -> fromTextError $ "Failure parsing TimeUnit from value: '" <> e
-           <> "'. Accepted values: daily, hourly"
-
-instance ToText TimeUnit where
-    toText = \case
-        Daily -> "DAILY"
-        Hourly -> "HOURLY"
-
-instance Hashable     TimeUnit
-instance NFData       TimeUnit
-instance ToByteString TimeUnit
-instance ToQuery      TimeUnit
-instance ToHeader     TimeUnit
-
-instance ToJSON TimeUnit where
-    toJSON = toJSONText
-
-instance FromJSON TimeUnit where
-    parseJSON = parseJSONText "TimeUnit"
diff --git a/gen/Network/AWS/CostAndUsageReport/Waiters.hs b/gen/Network/AWS/CostAndUsageReport/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/CostAndUsageReport/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.CostAndUsageReport.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.CostAndUsageReport.Waiters where
-
-import Network.AWS.CostAndUsageReport.Types
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,20 +2,22 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2018 Brendan Hay
+-- Copyright   : (c) 2013-2023 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Maintainer  : Brendan Hay
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
---
 module Main (main) where
 
+import Test.Amazonka.CostAndUsageReport
+import Test.Amazonka.CostAndUsageReport.Internal
 import Test.Tasty
-import Test.AWS.CostAndUsageReport
-import Test.AWS.CostAndUsageReport.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "CostAndUsageReport"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "CostAndUsageReport"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/CostAndUsageReport.hs b/test/Test/AWS/CostAndUsageReport.hs
deleted file mode 100644
--- a/test/Test/AWS/CostAndUsageReport.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- |
--- Module      : Test.AWS.CostAndUsageReport
--- 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.CostAndUsageReport
-    ( tests
-    , fixtures
-    ) where
-
-import Test.Tasty (TestTree)
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/CostAndUsageReport/Internal.hs b/test/Test/AWS/CostAndUsageReport/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/CostAndUsageReport/Internal.hs
+++ /dev/null
@@ -1,9 +0,0 @@
--- |
--- Module      : Test.AWS.CostAndUsageReport.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.CostAndUsageReport.Internal where
diff --git a/test/Test/AWS/Gen/CostAndUsageReport.hs b/test/Test/AWS/Gen/CostAndUsageReport.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/CostAndUsageReport.hs
+++ /dev/null
@@ -1,93 +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.CostAndUsageReport
--- 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.CostAndUsageReport where
-
-import Data.Proxy
-import Network.AWS.CostAndUsageReport
-import Test.AWS.CostAndUsageReport.Internal
-import Test.AWS.Fixture
-import Test.AWS.Prelude
-import Test.Tasty
-
--- Auto-generated: the actual test selection needs to be manually placed into
--- the top-level so that real test data can be incrementally added.
---
--- This commented snippet is what the entire set should look like:
-
--- fixtures :: TestTree
--- fixtures =
---     [ testGroup "request"
---         [ requestPutReportDefinition $
---             putReportDefinition
---
---         , requestDeleteReportDefinition $
---             deleteReportDefinition
---
---         , requestDescribeReportDefinitions $
---             describeReportDefinitions
---
---           ]
-
---     , testGroup "response"
---         [ responsePutReportDefinition $
---             putReportDefinitionResponse
---
---         , responseDeleteReportDefinition $
---             deleteReportDefinitionResponse
---
---         , responseDescribeReportDefinitions $
---             describeReportDefinitionsResponse
---
---           ]
---     ]
-
--- Requests
-
-requestPutReportDefinition :: PutReportDefinition -> TestTree
-requestPutReportDefinition = req
-    "PutReportDefinition"
-    "fixture/PutReportDefinition.yaml"
-
-requestDeleteReportDefinition :: DeleteReportDefinition -> TestTree
-requestDeleteReportDefinition = req
-    "DeleteReportDefinition"
-    "fixture/DeleteReportDefinition.yaml"
-
-requestDescribeReportDefinitions :: DescribeReportDefinitions -> TestTree
-requestDescribeReportDefinitions = req
-    "DescribeReportDefinitions"
-    "fixture/DescribeReportDefinitions.yaml"
-
--- Responses
-
-responsePutReportDefinition :: PutReportDefinitionResponse -> TestTree
-responsePutReportDefinition = res
-    "PutReportDefinitionResponse"
-    "fixture/PutReportDefinitionResponse.proto"
-    costAndUsageReport
-    (Proxy :: Proxy PutReportDefinition)
-
-responseDeleteReportDefinition :: DeleteReportDefinitionResponse -> TestTree
-responseDeleteReportDefinition = res
-    "DeleteReportDefinitionResponse"
-    "fixture/DeleteReportDefinitionResponse.proto"
-    costAndUsageReport
-    (Proxy :: Proxy DeleteReportDefinition)
-
-responseDescribeReportDefinitions :: DescribeReportDefinitionsResponse -> TestTree
-responseDescribeReportDefinitions = res
-    "DescribeReportDefinitionsResponse"
-    "fixture/DescribeReportDefinitionsResponse.proto"
-    costAndUsageReport
-    (Proxy :: Proxy DescribeReportDefinitions)
diff --git a/test/Test/Amazonka/CostAndUsageReport.hs b/test/Test/Amazonka/CostAndUsageReport.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/CostAndUsageReport.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.CostAndUsageReport
+-- 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.CostAndUsageReport
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/CostAndUsageReport/Internal.hs b/test/Test/Amazonka/CostAndUsageReport/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/CostAndUsageReport/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.CostAndUsageReport.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.CostAndUsageReport.Internal where
diff --git a/test/Test/Amazonka/Gen/CostAndUsageReport.hs b/test/Test/Amazonka/Gen/CostAndUsageReport.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/CostAndUsageReport.hs
@@ -0,0 +1,118 @@
+{-# 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.CostAndUsageReport
+-- 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.CostAndUsageReport where
+
+import Amazonka.CostAndUsageReport
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.CostAndUsageReport.Internal
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestDeleteReportDefinition $
+--             newDeleteReportDefinition
+--
+--         , requestDescribeReportDefinitions $
+--             newDescribeReportDefinitions
+--
+--         , requestModifyReportDefinition $
+--             newModifyReportDefinition
+--
+--         , requestPutReportDefinition $
+--             newPutReportDefinition
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseDeleteReportDefinition $
+--             newDeleteReportDefinitionResponse
+--
+--         , responseDescribeReportDefinitions $
+--             newDescribeReportDefinitionsResponse
+--
+--         , responseModifyReportDefinition $
+--             newModifyReportDefinitionResponse
+--
+--         , responsePutReportDefinition $
+--             newPutReportDefinitionResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestDeleteReportDefinition :: DeleteReportDefinition -> TestTree
+requestDeleteReportDefinition =
+  req
+    "DeleteReportDefinition"
+    "fixture/DeleteReportDefinition.yaml"
+
+requestDescribeReportDefinitions :: DescribeReportDefinitions -> TestTree
+requestDescribeReportDefinitions =
+  req
+    "DescribeReportDefinitions"
+    "fixture/DescribeReportDefinitions.yaml"
+
+requestModifyReportDefinition :: ModifyReportDefinition -> TestTree
+requestModifyReportDefinition =
+  req
+    "ModifyReportDefinition"
+    "fixture/ModifyReportDefinition.yaml"
+
+requestPutReportDefinition :: PutReportDefinition -> TestTree
+requestPutReportDefinition =
+  req
+    "PutReportDefinition"
+    "fixture/PutReportDefinition.yaml"
+
+-- Responses
+
+responseDeleteReportDefinition :: DeleteReportDefinitionResponse -> TestTree
+responseDeleteReportDefinition =
+  res
+    "DeleteReportDefinitionResponse"
+    "fixture/DeleteReportDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteReportDefinition)
+
+responseDescribeReportDefinitions :: DescribeReportDefinitionsResponse -> TestTree
+responseDescribeReportDefinitions =
+  res
+    "DescribeReportDefinitionsResponse"
+    "fixture/DescribeReportDefinitionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeReportDefinitions)
+
+responseModifyReportDefinition :: ModifyReportDefinitionResponse -> TestTree
+responseModifyReportDefinition =
+  res
+    "ModifyReportDefinitionResponse"
+    "fixture/ModifyReportDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ModifyReportDefinition)
+
+responsePutReportDefinition :: PutReportDefinitionResponse -> TestTree
+responsePutReportDefinition =
+  res
+    "PutReportDefinitionResponse"
+    "fixture/PutReportDefinitionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutReportDefinition)
