diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,367 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+# Amazon BillingConductor SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2021-07-30@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-billingconductor)
+and the [AWS API Reference](https://aws.amazon.com/documentation/).
+
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
+which provides mechanisms for specifying AuthN/AuthZ information, 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
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
+
+See [Amazonka.BillingConductor](http://hackage.haskell.org/package/amazonka-billingconductor/docs/Amazonka-BillingConductor.html)
+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`amazonka-billingconductor` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+
+Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.
+Source files subject to this contain an additional licensing clause in their header.
diff --git a/amazonka-billingconductor.cabal b/amazonka-billingconductor.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-billingconductor.cabal
@@ -0,0 +1,159 @@
+cabal-version:      2.2
+name:               amazonka-billingconductor
+version:            2.0
+synopsis:           Amazon BillingConductor 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:
+  Derived from API version @2021-07-30@ 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.BillingConductor.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.BillingConductor" 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-billingconductor
+
+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:
+    Amazonka.BillingConductor
+    Amazonka.BillingConductor.AssociateAccounts
+    Amazonka.BillingConductor.AssociatePricingRules
+    Amazonka.BillingConductor.BatchAssociateResourcesToCustomLineItem
+    Amazonka.BillingConductor.BatchDisassociateResourcesFromCustomLineItem
+    Amazonka.BillingConductor.CreateBillingGroup
+    Amazonka.BillingConductor.CreateCustomLineItem
+    Amazonka.BillingConductor.CreatePricingPlan
+    Amazonka.BillingConductor.CreatePricingRule
+    Amazonka.BillingConductor.DeleteBillingGroup
+    Amazonka.BillingConductor.DeleteCustomLineItem
+    Amazonka.BillingConductor.DeletePricingPlan
+    Amazonka.BillingConductor.DeletePricingRule
+    Amazonka.BillingConductor.DisassociateAccounts
+    Amazonka.BillingConductor.DisassociatePricingRules
+    Amazonka.BillingConductor.Lens
+    Amazonka.BillingConductor.ListAccountAssociations
+    Amazonka.BillingConductor.ListBillingGroupCostReports
+    Amazonka.BillingConductor.ListBillingGroups
+    Amazonka.BillingConductor.ListCustomLineItems
+    Amazonka.BillingConductor.ListCustomLineItemVersions
+    Amazonka.BillingConductor.ListPricingPlans
+    Amazonka.BillingConductor.ListPricingPlansAssociatedWithPricingRule
+    Amazonka.BillingConductor.ListPricingRules
+    Amazonka.BillingConductor.ListPricingRulesAssociatedToPricingPlan
+    Amazonka.BillingConductor.ListResourcesAssociatedToCustomLineItem
+    Amazonka.BillingConductor.ListTagsForResource
+    Amazonka.BillingConductor.TagResource
+    Amazonka.BillingConductor.Types
+    Amazonka.BillingConductor.Types.AccountAssociationsListElement
+    Amazonka.BillingConductor.Types.AccountGrouping
+    Amazonka.BillingConductor.Types.AssociateResourceError
+    Amazonka.BillingConductor.Types.AssociateResourceErrorReason
+    Amazonka.BillingConductor.Types.AssociateResourceResponseElement
+    Amazonka.BillingConductor.Types.BillingGroupCostReportElement
+    Amazonka.BillingConductor.Types.BillingGroupListElement
+    Amazonka.BillingConductor.Types.BillingGroupStatus
+    Amazonka.BillingConductor.Types.ComputationPreference
+    Amazonka.BillingConductor.Types.CreateFreeTierConfig
+    Amazonka.BillingConductor.Types.CreateTieringInput
+    Amazonka.BillingConductor.Types.CurrencyCode
+    Amazonka.BillingConductor.Types.CustomLineItemBillingPeriodRange
+    Amazonka.BillingConductor.Types.CustomLineItemChargeDetails
+    Amazonka.BillingConductor.Types.CustomLineItemFlatChargeDetails
+    Amazonka.BillingConductor.Types.CustomLineItemListElement
+    Amazonka.BillingConductor.Types.CustomLineItemPercentageChargeDetails
+    Amazonka.BillingConductor.Types.CustomLineItemRelationship
+    Amazonka.BillingConductor.Types.CustomLineItemType
+    Amazonka.BillingConductor.Types.CustomLineItemVersionListElement
+    Amazonka.BillingConductor.Types.DisassociateResourceResponseElement
+    Amazonka.BillingConductor.Types.FreeTierConfig
+    Amazonka.BillingConductor.Types.ListAccountAssociationsFilter
+    Amazonka.BillingConductor.Types.ListBillingGroupCostReportsFilter
+    Amazonka.BillingConductor.Types.ListBillingGroupsFilter
+    Amazonka.BillingConductor.Types.ListCustomLineItemChargeDetails
+    Amazonka.BillingConductor.Types.ListCustomLineItemFlatChargeDetails
+    Amazonka.BillingConductor.Types.ListCustomLineItemPercentageChargeDetails
+    Amazonka.BillingConductor.Types.ListCustomLineItemsFilter
+    Amazonka.BillingConductor.Types.ListCustomLineItemVersionsBillingPeriodRangeFilter
+    Amazonka.BillingConductor.Types.ListCustomLineItemVersionsFilter
+    Amazonka.BillingConductor.Types.ListPricingPlansFilter
+    Amazonka.BillingConductor.Types.ListPricingRulesFilter
+    Amazonka.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemFilter
+    Amazonka.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemResponseElement
+    Amazonka.BillingConductor.Types.PricingPlanListElement
+    Amazonka.BillingConductor.Types.PricingRuleListElement
+    Amazonka.BillingConductor.Types.PricingRuleScope
+    Amazonka.BillingConductor.Types.PricingRuleType
+    Amazonka.BillingConductor.Types.Tiering
+    Amazonka.BillingConductor.Types.UpdateCustomLineItemChargeDetails
+    Amazonka.BillingConductor.Types.UpdateCustomLineItemFlatChargeDetails
+    Amazonka.BillingConductor.Types.UpdateCustomLineItemPercentageChargeDetails
+    Amazonka.BillingConductor.Types.UpdateFreeTierConfig
+    Amazonka.BillingConductor.Types.UpdateTieringInput
+    Amazonka.BillingConductor.UntagResource
+    Amazonka.BillingConductor.UpdateBillingGroup
+    Amazonka.BillingConductor.UpdateCustomLineItem
+    Amazonka.BillingConductor.UpdatePricingPlan
+    Amazonka.BillingConductor.UpdatePricingRule
+    Amazonka.BillingConductor.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-billingconductor-test
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  main-is:          Main.hs
+  ghc-options:      -Wall -threaded
+
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.BillingConductor
+    Test.Amazonka.BillingConductor.Internal
+    Test.Amazonka.Gen.BillingConductor
+
+  build-depends:
+    , amazonka-billingconductor
+    , amazonka-core              >=2.0 && <2.1
+    , amazonka-test              >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociateAccounts.yaml b/fixture/AssociateAccounts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateAccounts.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/AssociateAccountsResponse.proto b/fixture/AssociateAccountsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateAccountsResponse.proto
diff --git a/fixture/AssociatePricingRules.yaml b/fixture/AssociatePricingRules.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociatePricingRules.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/AssociatePricingRulesResponse.proto b/fixture/AssociatePricingRulesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociatePricingRulesResponse.proto
diff --git a/fixture/BatchAssociateResourcesToCustomLineItem.yaml b/fixture/BatchAssociateResourcesToCustomLineItem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchAssociateResourcesToCustomLineItem.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/BatchAssociateResourcesToCustomLineItemResponse.proto b/fixture/BatchAssociateResourcesToCustomLineItemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchAssociateResourcesToCustomLineItemResponse.proto
diff --git a/fixture/BatchDisassociateResourcesFromCustomLineItem.yaml b/fixture/BatchDisassociateResourcesFromCustomLineItem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchDisassociateResourcesFromCustomLineItem.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/BatchDisassociateResourcesFromCustomLineItemResponse.proto b/fixture/BatchDisassociateResourcesFromCustomLineItemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchDisassociateResourcesFromCustomLineItemResponse.proto
diff --git a/fixture/CreateBillingGroup.yaml b/fixture/CreateBillingGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBillingGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/CreateBillingGroupResponse.proto b/fixture/CreateBillingGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBillingGroupResponse.proto
diff --git a/fixture/CreateCustomLineItem.yaml b/fixture/CreateCustomLineItem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCustomLineItem.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/CreateCustomLineItemResponse.proto b/fixture/CreateCustomLineItemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCustomLineItemResponse.proto
diff --git a/fixture/CreatePricingPlan.yaml b/fixture/CreatePricingPlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePricingPlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/CreatePricingPlanResponse.proto b/fixture/CreatePricingPlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePricingPlanResponse.proto
diff --git a/fixture/CreatePricingRule.yaml b/fixture/CreatePricingRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePricingRule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/CreatePricingRuleResponse.proto b/fixture/CreatePricingRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePricingRuleResponse.proto
diff --git a/fixture/DeleteBillingGroup.yaml b/fixture/DeleteBillingGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBillingGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/DeleteBillingGroupResponse.proto b/fixture/DeleteBillingGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBillingGroupResponse.proto
diff --git a/fixture/DeleteCustomLineItem.yaml b/fixture/DeleteCustomLineItem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCustomLineItem.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/DeleteCustomLineItemResponse.proto b/fixture/DeleteCustomLineItemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCustomLineItemResponse.proto
diff --git a/fixture/DeletePricingPlan.yaml b/fixture/DeletePricingPlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePricingPlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/DeletePricingPlanResponse.proto b/fixture/DeletePricingPlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePricingPlanResponse.proto
diff --git a/fixture/DeletePricingRule.yaml b/fixture/DeletePricingRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePricingRule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/DeletePricingRuleResponse.proto b/fixture/DeletePricingRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePricingRuleResponse.proto
diff --git a/fixture/DisassociateAccounts.yaml b/fixture/DisassociateAccounts.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateAccounts.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/DisassociateAccountsResponse.proto b/fixture/DisassociateAccountsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateAccountsResponse.proto
diff --git a/fixture/DisassociatePricingRules.yaml b/fixture/DisassociatePricingRules.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociatePricingRules.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/DisassociatePricingRulesResponse.proto b/fixture/DisassociatePricingRulesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociatePricingRulesResponse.proto
diff --git a/fixture/ListAccountAssociations.yaml b/fixture/ListAccountAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAccountAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListAccountAssociationsResponse.proto b/fixture/ListAccountAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAccountAssociationsResponse.proto
diff --git a/fixture/ListBillingGroupCostReports.yaml b/fixture/ListBillingGroupCostReports.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListBillingGroupCostReports.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListBillingGroupCostReportsResponse.proto b/fixture/ListBillingGroupCostReportsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListBillingGroupCostReportsResponse.proto
diff --git a/fixture/ListBillingGroups.yaml b/fixture/ListBillingGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListBillingGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListBillingGroupsResponse.proto b/fixture/ListBillingGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListBillingGroupsResponse.proto
diff --git a/fixture/ListCustomLineItemVersions.yaml b/fixture/ListCustomLineItemVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCustomLineItemVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListCustomLineItemVersionsResponse.proto b/fixture/ListCustomLineItemVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCustomLineItemVersionsResponse.proto
diff --git a/fixture/ListCustomLineItems.yaml b/fixture/ListCustomLineItems.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCustomLineItems.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListCustomLineItemsResponse.proto b/fixture/ListCustomLineItemsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCustomLineItemsResponse.proto
diff --git a/fixture/ListPricingPlans.yaml b/fixture/ListPricingPlans.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPricingPlans.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListPricingPlansAssociatedWithPricingRule.yaml b/fixture/ListPricingPlansAssociatedWithPricingRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPricingPlansAssociatedWithPricingRule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListPricingPlansAssociatedWithPricingRuleResponse.proto b/fixture/ListPricingPlansAssociatedWithPricingRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPricingPlansAssociatedWithPricingRuleResponse.proto
diff --git a/fixture/ListPricingPlansResponse.proto b/fixture/ListPricingPlansResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPricingPlansResponse.proto
diff --git a/fixture/ListPricingRules.yaml b/fixture/ListPricingRules.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPricingRules.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListPricingRulesAssociatedToPricingPlan.yaml b/fixture/ListPricingRulesAssociatedToPricingPlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPricingRulesAssociatedToPricingPlan.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListPricingRulesAssociatedToPricingPlanResponse.proto b/fixture/ListPricingRulesAssociatedToPricingPlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPricingRulesAssociatedToPricingPlanResponse.proto
diff --git a/fixture/ListPricingRulesResponse.proto b/fixture/ListPricingRulesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPricingRulesResponse.proto
diff --git a/fixture/ListResourcesAssociatedToCustomLineItem.yaml b/fixture/ListResourcesAssociatedToCustomLineItem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListResourcesAssociatedToCustomLineItem.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListResourcesAssociatedToCustomLineItemResponse.proto b/fixture/ListResourcesAssociatedToCustomLineItemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListResourcesAssociatedToCustomLineItemResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/fixture/UpdateBillingGroup.yaml b/fixture/UpdateBillingGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBillingGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/UpdateBillingGroupResponse.proto b/fixture/UpdateBillingGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBillingGroupResponse.proto
diff --git a/fixture/UpdateCustomLineItem.yaml b/fixture/UpdateCustomLineItem.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateCustomLineItem.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/UpdateCustomLineItemResponse.proto b/fixture/UpdateCustomLineItemResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateCustomLineItemResponse.proto
diff --git a/fixture/UpdatePricingPlan.yaml b/fixture/UpdatePricingPlan.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePricingPlan.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/UpdatePricingPlanResponse.proto b/fixture/UpdatePricingPlanResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePricingPlanResponse.proto
diff --git a/fixture/UpdatePricingRule.yaml b/fixture/UpdatePricingRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePricingRule.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/billingconductor/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  billingconductor.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/UpdatePricingRuleResponse.proto b/fixture/UpdatePricingRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePricingRuleResponse.proto
diff --git a/gen/Amazonka/BillingConductor.hs b/gen/Amazonka/BillingConductor.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor.hs
@@ -0,0 +1,492 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.BillingConductor
+-- 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 @2021-07-30@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Web Services Billing Conductor is a fully managed service that
+-- you can use to customize a
+-- <https://docs.aws.amazon.com/billingconductor/latest/userguide/understanding-eb.html#eb-other-definitions pro forma>
+-- version of your billing data each month, to accurately show or
+-- chargeback your end customers. Amazon Web Services Billing Conductor
+-- doesn\'t change the way you\'re billed by Amazon Web Services each month
+-- by design. Instead, it provides you with a mechanism to configure,
+-- generate, and display rates to certain customers over a given billing
+-- period. You can also analyze the difference between the rates you apply
+-- to your accounting groupings relative to your actual rates from Amazon
+-- Web Services. As a result of your Amazon Web Services Billing Conductor
+-- configuration, the payer account can also see the custom rate applied on
+-- the billing details page of the
+-- <https://console.aws.amazon.com/billing Amazon Web Services Billing console>,
+-- or configure a cost and usage report per billing group.
+--
+-- This documentation shows how you can configure Amazon Web Services
+-- Billing Conductor using its API. For more information about using the
+-- <https://console.aws.amazon.com/billingconductor/ Amazon Web Services Billing Conductor>
+-- user interface, see the
+-- <https://docs.aws.amazon.com/billingconductor/latest/userguide/what-is-billingconductor.html Amazon Web Services Billing Conductor User Guide>.
+module Amazonka.BillingConductor
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServiceLimitExceededException
+    _ServiceLimitExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateAccounts
+    AssociateAccounts (AssociateAccounts'),
+    newAssociateAccounts,
+    AssociateAccountsResponse (AssociateAccountsResponse'),
+    newAssociateAccountsResponse,
+
+    -- ** AssociatePricingRules
+    AssociatePricingRules (AssociatePricingRules'),
+    newAssociatePricingRules,
+    AssociatePricingRulesResponse (AssociatePricingRulesResponse'),
+    newAssociatePricingRulesResponse,
+
+    -- ** BatchAssociateResourcesToCustomLineItem
+    BatchAssociateResourcesToCustomLineItem (BatchAssociateResourcesToCustomLineItem'),
+    newBatchAssociateResourcesToCustomLineItem,
+    BatchAssociateResourcesToCustomLineItemResponse (BatchAssociateResourcesToCustomLineItemResponse'),
+    newBatchAssociateResourcesToCustomLineItemResponse,
+
+    -- ** BatchDisassociateResourcesFromCustomLineItem
+    BatchDisassociateResourcesFromCustomLineItem (BatchDisassociateResourcesFromCustomLineItem'),
+    newBatchDisassociateResourcesFromCustomLineItem,
+    BatchDisassociateResourcesFromCustomLineItemResponse (BatchDisassociateResourcesFromCustomLineItemResponse'),
+    newBatchDisassociateResourcesFromCustomLineItemResponse,
+
+    -- ** CreateBillingGroup
+    CreateBillingGroup (CreateBillingGroup'),
+    newCreateBillingGroup,
+    CreateBillingGroupResponse (CreateBillingGroupResponse'),
+    newCreateBillingGroupResponse,
+
+    -- ** CreateCustomLineItem
+    CreateCustomLineItem (CreateCustomLineItem'),
+    newCreateCustomLineItem,
+    CreateCustomLineItemResponse (CreateCustomLineItemResponse'),
+    newCreateCustomLineItemResponse,
+
+    -- ** CreatePricingPlan
+    CreatePricingPlan (CreatePricingPlan'),
+    newCreatePricingPlan,
+    CreatePricingPlanResponse (CreatePricingPlanResponse'),
+    newCreatePricingPlanResponse,
+
+    -- ** CreatePricingRule
+    CreatePricingRule (CreatePricingRule'),
+    newCreatePricingRule,
+    CreatePricingRuleResponse (CreatePricingRuleResponse'),
+    newCreatePricingRuleResponse,
+
+    -- ** DeleteBillingGroup
+    DeleteBillingGroup (DeleteBillingGroup'),
+    newDeleteBillingGroup,
+    DeleteBillingGroupResponse (DeleteBillingGroupResponse'),
+    newDeleteBillingGroupResponse,
+
+    -- ** DeleteCustomLineItem
+    DeleteCustomLineItem (DeleteCustomLineItem'),
+    newDeleteCustomLineItem,
+    DeleteCustomLineItemResponse (DeleteCustomLineItemResponse'),
+    newDeleteCustomLineItemResponse,
+
+    -- ** DeletePricingPlan
+    DeletePricingPlan (DeletePricingPlan'),
+    newDeletePricingPlan,
+    DeletePricingPlanResponse (DeletePricingPlanResponse'),
+    newDeletePricingPlanResponse,
+
+    -- ** DeletePricingRule
+    DeletePricingRule (DeletePricingRule'),
+    newDeletePricingRule,
+    DeletePricingRuleResponse (DeletePricingRuleResponse'),
+    newDeletePricingRuleResponse,
+
+    -- ** DisassociateAccounts
+    DisassociateAccounts (DisassociateAccounts'),
+    newDisassociateAccounts,
+    DisassociateAccountsResponse (DisassociateAccountsResponse'),
+    newDisassociateAccountsResponse,
+
+    -- ** DisassociatePricingRules
+    DisassociatePricingRules (DisassociatePricingRules'),
+    newDisassociatePricingRules,
+    DisassociatePricingRulesResponse (DisassociatePricingRulesResponse'),
+    newDisassociatePricingRulesResponse,
+
+    -- ** ListAccountAssociations (Paginated)
+    ListAccountAssociations (ListAccountAssociations'),
+    newListAccountAssociations,
+    ListAccountAssociationsResponse (ListAccountAssociationsResponse'),
+    newListAccountAssociationsResponse,
+
+    -- ** ListBillingGroupCostReports (Paginated)
+    ListBillingGroupCostReports (ListBillingGroupCostReports'),
+    newListBillingGroupCostReports,
+    ListBillingGroupCostReportsResponse (ListBillingGroupCostReportsResponse'),
+    newListBillingGroupCostReportsResponse,
+
+    -- ** ListBillingGroups (Paginated)
+    ListBillingGroups (ListBillingGroups'),
+    newListBillingGroups,
+    ListBillingGroupsResponse (ListBillingGroupsResponse'),
+    newListBillingGroupsResponse,
+
+    -- ** ListCustomLineItemVersions (Paginated)
+    ListCustomLineItemVersions (ListCustomLineItemVersions'),
+    newListCustomLineItemVersions,
+    ListCustomLineItemVersionsResponse (ListCustomLineItemVersionsResponse'),
+    newListCustomLineItemVersionsResponse,
+
+    -- ** ListCustomLineItems (Paginated)
+    ListCustomLineItems (ListCustomLineItems'),
+    newListCustomLineItems,
+    ListCustomLineItemsResponse (ListCustomLineItemsResponse'),
+    newListCustomLineItemsResponse,
+
+    -- ** ListPricingPlans (Paginated)
+    ListPricingPlans (ListPricingPlans'),
+    newListPricingPlans,
+    ListPricingPlansResponse (ListPricingPlansResponse'),
+    newListPricingPlansResponse,
+
+    -- ** ListPricingPlansAssociatedWithPricingRule (Paginated)
+    ListPricingPlansAssociatedWithPricingRule (ListPricingPlansAssociatedWithPricingRule'),
+    newListPricingPlansAssociatedWithPricingRule,
+    ListPricingPlansAssociatedWithPricingRuleResponse (ListPricingPlansAssociatedWithPricingRuleResponse'),
+    newListPricingPlansAssociatedWithPricingRuleResponse,
+
+    -- ** ListPricingRules (Paginated)
+    ListPricingRules (ListPricingRules'),
+    newListPricingRules,
+    ListPricingRulesResponse (ListPricingRulesResponse'),
+    newListPricingRulesResponse,
+
+    -- ** ListPricingRulesAssociatedToPricingPlan (Paginated)
+    ListPricingRulesAssociatedToPricingPlan (ListPricingRulesAssociatedToPricingPlan'),
+    newListPricingRulesAssociatedToPricingPlan,
+    ListPricingRulesAssociatedToPricingPlanResponse (ListPricingRulesAssociatedToPricingPlanResponse'),
+    newListPricingRulesAssociatedToPricingPlanResponse,
+
+    -- ** ListResourcesAssociatedToCustomLineItem (Paginated)
+    ListResourcesAssociatedToCustomLineItem (ListResourcesAssociatedToCustomLineItem'),
+    newListResourcesAssociatedToCustomLineItem,
+    ListResourcesAssociatedToCustomLineItemResponse (ListResourcesAssociatedToCustomLineItemResponse'),
+    newListResourcesAssociatedToCustomLineItemResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateBillingGroup
+    UpdateBillingGroup (UpdateBillingGroup'),
+    newUpdateBillingGroup,
+    UpdateBillingGroupResponse (UpdateBillingGroupResponse'),
+    newUpdateBillingGroupResponse,
+
+    -- ** UpdateCustomLineItem
+    UpdateCustomLineItem (UpdateCustomLineItem'),
+    newUpdateCustomLineItem,
+    UpdateCustomLineItemResponse (UpdateCustomLineItemResponse'),
+    newUpdateCustomLineItemResponse,
+
+    -- ** UpdatePricingPlan
+    UpdatePricingPlan (UpdatePricingPlan'),
+    newUpdatePricingPlan,
+    UpdatePricingPlanResponse (UpdatePricingPlanResponse'),
+    newUpdatePricingPlanResponse,
+
+    -- ** UpdatePricingRule
+    UpdatePricingRule (UpdatePricingRule'),
+    newUpdatePricingRule,
+    UpdatePricingRuleResponse (UpdatePricingRuleResponse'),
+    newUpdatePricingRuleResponse,
+
+    -- * Types
+
+    -- ** AssociateResourceErrorReason
+    AssociateResourceErrorReason (..),
+
+    -- ** BillingGroupStatus
+    BillingGroupStatus (..),
+
+    -- ** CurrencyCode
+    CurrencyCode (..),
+
+    -- ** CustomLineItemRelationship
+    CustomLineItemRelationship (..),
+
+    -- ** CustomLineItemType
+    CustomLineItemType (..),
+
+    -- ** PricingRuleScope
+    PricingRuleScope (..),
+
+    -- ** PricingRuleType
+    PricingRuleType (..),
+
+    -- ** AccountAssociationsListElement
+    AccountAssociationsListElement (AccountAssociationsListElement'),
+    newAccountAssociationsListElement,
+
+    -- ** AccountGrouping
+    AccountGrouping (AccountGrouping'),
+    newAccountGrouping,
+
+    -- ** AssociateResourceError
+    AssociateResourceError (AssociateResourceError'),
+    newAssociateResourceError,
+
+    -- ** AssociateResourceResponseElement
+    AssociateResourceResponseElement (AssociateResourceResponseElement'),
+    newAssociateResourceResponseElement,
+
+    -- ** BillingGroupCostReportElement
+    BillingGroupCostReportElement (BillingGroupCostReportElement'),
+    newBillingGroupCostReportElement,
+
+    -- ** BillingGroupListElement
+    BillingGroupListElement (BillingGroupListElement'),
+    newBillingGroupListElement,
+
+    -- ** ComputationPreference
+    ComputationPreference (ComputationPreference'),
+    newComputationPreference,
+
+    -- ** CreateFreeTierConfig
+    CreateFreeTierConfig (CreateFreeTierConfig'),
+    newCreateFreeTierConfig,
+
+    -- ** CreateTieringInput
+    CreateTieringInput (CreateTieringInput'),
+    newCreateTieringInput,
+
+    -- ** CustomLineItemBillingPeriodRange
+    CustomLineItemBillingPeriodRange (CustomLineItemBillingPeriodRange'),
+    newCustomLineItemBillingPeriodRange,
+
+    -- ** CustomLineItemChargeDetails
+    CustomLineItemChargeDetails (CustomLineItemChargeDetails'),
+    newCustomLineItemChargeDetails,
+
+    -- ** CustomLineItemFlatChargeDetails
+    CustomLineItemFlatChargeDetails (CustomLineItemFlatChargeDetails'),
+    newCustomLineItemFlatChargeDetails,
+
+    -- ** CustomLineItemListElement
+    CustomLineItemListElement (CustomLineItemListElement'),
+    newCustomLineItemListElement,
+
+    -- ** CustomLineItemPercentageChargeDetails
+    CustomLineItemPercentageChargeDetails (CustomLineItemPercentageChargeDetails'),
+    newCustomLineItemPercentageChargeDetails,
+
+    -- ** CustomLineItemVersionListElement
+    CustomLineItemVersionListElement (CustomLineItemVersionListElement'),
+    newCustomLineItemVersionListElement,
+
+    -- ** DisassociateResourceResponseElement
+    DisassociateResourceResponseElement (DisassociateResourceResponseElement'),
+    newDisassociateResourceResponseElement,
+
+    -- ** FreeTierConfig
+    FreeTierConfig (FreeTierConfig'),
+    newFreeTierConfig,
+
+    -- ** ListAccountAssociationsFilter
+    ListAccountAssociationsFilter (ListAccountAssociationsFilter'),
+    newListAccountAssociationsFilter,
+
+    -- ** ListBillingGroupCostReportsFilter
+    ListBillingGroupCostReportsFilter (ListBillingGroupCostReportsFilter'),
+    newListBillingGroupCostReportsFilter,
+
+    -- ** ListBillingGroupsFilter
+    ListBillingGroupsFilter (ListBillingGroupsFilter'),
+    newListBillingGroupsFilter,
+
+    -- ** ListCustomLineItemChargeDetails
+    ListCustomLineItemChargeDetails (ListCustomLineItemChargeDetails'),
+    newListCustomLineItemChargeDetails,
+
+    -- ** ListCustomLineItemFlatChargeDetails
+    ListCustomLineItemFlatChargeDetails (ListCustomLineItemFlatChargeDetails'),
+    newListCustomLineItemFlatChargeDetails,
+
+    -- ** ListCustomLineItemPercentageChargeDetails
+    ListCustomLineItemPercentageChargeDetails (ListCustomLineItemPercentageChargeDetails'),
+    newListCustomLineItemPercentageChargeDetails,
+
+    -- ** ListCustomLineItemVersionsBillingPeriodRangeFilter
+    ListCustomLineItemVersionsBillingPeriodRangeFilter (ListCustomLineItemVersionsBillingPeriodRangeFilter'),
+    newListCustomLineItemVersionsBillingPeriodRangeFilter,
+
+    -- ** ListCustomLineItemVersionsFilter
+    ListCustomLineItemVersionsFilter (ListCustomLineItemVersionsFilter'),
+    newListCustomLineItemVersionsFilter,
+
+    -- ** ListCustomLineItemsFilter
+    ListCustomLineItemsFilter (ListCustomLineItemsFilter'),
+    newListCustomLineItemsFilter,
+
+    -- ** ListPricingPlansFilter
+    ListPricingPlansFilter (ListPricingPlansFilter'),
+    newListPricingPlansFilter,
+
+    -- ** ListPricingRulesFilter
+    ListPricingRulesFilter (ListPricingRulesFilter'),
+    newListPricingRulesFilter,
+
+    -- ** ListResourcesAssociatedToCustomLineItemFilter
+    ListResourcesAssociatedToCustomLineItemFilter (ListResourcesAssociatedToCustomLineItemFilter'),
+    newListResourcesAssociatedToCustomLineItemFilter,
+
+    -- ** ListResourcesAssociatedToCustomLineItemResponseElement
+    ListResourcesAssociatedToCustomLineItemResponseElement (ListResourcesAssociatedToCustomLineItemResponseElement'),
+    newListResourcesAssociatedToCustomLineItemResponseElement,
+
+    -- ** PricingPlanListElement
+    PricingPlanListElement (PricingPlanListElement'),
+    newPricingPlanListElement,
+
+    -- ** PricingRuleListElement
+    PricingRuleListElement (PricingRuleListElement'),
+    newPricingRuleListElement,
+
+    -- ** Tiering
+    Tiering (Tiering'),
+    newTiering,
+
+    -- ** UpdateCustomLineItemChargeDetails
+    UpdateCustomLineItemChargeDetails (UpdateCustomLineItemChargeDetails'),
+    newUpdateCustomLineItemChargeDetails,
+
+    -- ** UpdateCustomLineItemFlatChargeDetails
+    UpdateCustomLineItemFlatChargeDetails (UpdateCustomLineItemFlatChargeDetails'),
+    newUpdateCustomLineItemFlatChargeDetails,
+
+    -- ** UpdateCustomLineItemPercentageChargeDetails
+    UpdateCustomLineItemPercentageChargeDetails (UpdateCustomLineItemPercentageChargeDetails'),
+    newUpdateCustomLineItemPercentageChargeDetails,
+
+    -- ** UpdateFreeTierConfig
+    UpdateFreeTierConfig (UpdateFreeTierConfig'),
+    newUpdateFreeTierConfig,
+
+    -- ** UpdateTieringInput
+    UpdateTieringInput (UpdateTieringInput'),
+    newUpdateTieringInput,
+  )
+where
+
+import Amazonka.BillingConductor.AssociateAccounts
+import Amazonka.BillingConductor.AssociatePricingRules
+import Amazonka.BillingConductor.BatchAssociateResourcesToCustomLineItem
+import Amazonka.BillingConductor.BatchDisassociateResourcesFromCustomLineItem
+import Amazonka.BillingConductor.CreateBillingGroup
+import Amazonka.BillingConductor.CreateCustomLineItem
+import Amazonka.BillingConductor.CreatePricingPlan
+import Amazonka.BillingConductor.CreatePricingRule
+import Amazonka.BillingConductor.DeleteBillingGroup
+import Amazonka.BillingConductor.DeleteCustomLineItem
+import Amazonka.BillingConductor.DeletePricingPlan
+import Amazonka.BillingConductor.DeletePricingRule
+import Amazonka.BillingConductor.DisassociateAccounts
+import Amazonka.BillingConductor.DisassociatePricingRules
+import Amazonka.BillingConductor.Lens
+import Amazonka.BillingConductor.ListAccountAssociations
+import Amazonka.BillingConductor.ListBillingGroupCostReports
+import Amazonka.BillingConductor.ListBillingGroups
+import Amazonka.BillingConductor.ListCustomLineItemVersions
+import Amazonka.BillingConductor.ListCustomLineItems
+import Amazonka.BillingConductor.ListPricingPlans
+import Amazonka.BillingConductor.ListPricingPlansAssociatedWithPricingRule
+import Amazonka.BillingConductor.ListPricingRules
+import Amazonka.BillingConductor.ListPricingRulesAssociatedToPricingPlan
+import Amazonka.BillingConductor.ListResourcesAssociatedToCustomLineItem
+import Amazonka.BillingConductor.ListTagsForResource
+import Amazonka.BillingConductor.TagResource
+import Amazonka.BillingConductor.Types
+import Amazonka.BillingConductor.UntagResource
+import Amazonka.BillingConductor.UpdateBillingGroup
+import Amazonka.BillingConductor.UpdateCustomLineItem
+import Amazonka.BillingConductor.UpdatePricingPlan
+import Amazonka.BillingConductor.UpdatePricingRule
+import Amazonka.BillingConductor.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 'BillingConductor'.
+
+-- $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/BillingConductor/AssociateAccounts.hs b/gen/Amazonka/BillingConductor/AssociateAccounts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/AssociateAccounts.hs
@@ -0,0 +1,193 @@
+{-# 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.BillingConductor.AssociateAccounts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Connects an array of account IDs in a consolidated billing family to a
+-- predefined billing group. The account IDs must be a part of the
+-- consolidated billing family during the current month, and not already
+-- associated with another billing group. The maximum number of accounts
+-- that can be associated in one call is 30.
+module Amazonka.BillingConductor.AssociateAccounts
+  ( -- * Creating a Request
+    AssociateAccounts (..),
+    newAssociateAccounts,
+
+    -- * Request Lenses
+    associateAccounts_arn,
+    associateAccounts_accountIds,
+
+    -- * Destructuring the Response
+    AssociateAccountsResponse (..),
+    newAssociateAccountsResponse,
+
+    -- * Response Lenses
+    associateAccountsResponse_arn,
+    associateAccountsResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateAccounts' smart constructor.
+data AssociateAccounts = AssociateAccounts'
+  { -- | The Amazon Resource Name (ARN) of the billing group that associates the
+    -- array of account IDs.
+    arn :: Prelude.Text,
+    -- | The associating array of account IDs.
+    accountIds :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateAccounts' 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:
+--
+-- 'arn', 'associateAccounts_arn' - The Amazon Resource Name (ARN) of the billing group that associates the
+-- array of account IDs.
+--
+-- 'accountIds', 'associateAccounts_accountIds' - The associating array of account IDs.
+newAssociateAccounts ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'accountIds'
+  Prelude.NonEmpty Prelude.Text ->
+  AssociateAccounts
+newAssociateAccounts pArn_ pAccountIds_ =
+  AssociateAccounts'
+    { arn = pArn_,
+      accountIds = Lens.coerced Lens.# pAccountIds_
+    }
+
+-- | The Amazon Resource Name (ARN) of the billing group that associates the
+-- array of account IDs.
+associateAccounts_arn :: Lens.Lens' AssociateAccounts Prelude.Text
+associateAccounts_arn = Lens.lens (\AssociateAccounts' {arn} -> arn) (\s@AssociateAccounts' {} a -> s {arn = a} :: AssociateAccounts)
+
+-- | The associating array of account IDs.
+associateAccounts_accountIds :: Lens.Lens' AssociateAccounts (Prelude.NonEmpty Prelude.Text)
+associateAccounts_accountIds = Lens.lens (\AssociateAccounts' {accountIds} -> accountIds) (\s@AssociateAccounts' {} a -> s {accountIds = a} :: AssociateAccounts) Prelude.. Lens.coerced
+
+instance Core.AWSRequest AssociateAccounts where
+  type
+    AWSResponse AssociateAccounts =
+      AssociateAccountsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateAccountsResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateAccounts where
+  hashWithSalt _salt AssociateAccounts' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` accountIds
+
+instance Prelude.NFData AssociateAccounts where
+  rnf AssociateAccounts' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf accountIds
+
+instance Data.ToHeaders AssociateAccounts where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateAccounts where
+  toJSON AssociateAccounts' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just ("AccountIds" Data..= accountIds)
+          ]
+      )
+
+instance Data.ToPath AssociateAccounts where
+  toPath = Prelude.const "/associate-accounts"
+
+instance Data.ToQuery AssociateAccounts where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateAccountsResponse' smart constructor.
+data AssociateAccountsResponse = AssociateAccountsResponse'
+  { -- | The Amazon Resource Name (ARN) of the billing group that associates the
+    -- array of account IDs.
+    arn :: 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 'AssociateAccountsResponse' 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:
+--
+-- 'arn', 'associateAccountsResponse_arn' - The Amazon Resource Name (ARN) of the billing group that associates the
+-- array of account IDs.
+--
+-- 'httpStatus', 'associateAccountsResponse_httpStatus' - The response's http status code.
+newAssociateAccountsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateAccountsResponse
+newAssociateAccountsResponse pHttpStatus_ =
+  AssociateAccountsResponse'
+    { arn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the billing group that associates the
+-- array of account IDs.
+associateAccountsResponse_arn :: Lens.Lens' AssociateAccountsResponse (Prelude.Maybe Prelude.Text)
+associateAccountsResponse_arn = Lens.lens (\AssociateAccountsResponse' {arn} -> arn) (\s@AssociateAccountsResponse' {} a -> s {arn = a} :: AssociateAccountsResponse)
+
+-- | The response's http status code.
+associateAccountsResponse_httpStatus :: Lens.Lens' AssociateAccountsResponse Prelude.Int
+associateAccountsResponse_httpStatus = Lens.lens (\AssociateAccountsResponse' {httpStatus} -> httpStatus) (\s@AssociateAccountsResponse' {} a -> s {httpStatus = a} :: AssociateAccountsResponse)
+
+instance Prelude.NFData AssociateAccountsResponse where
+  rnf AssociateAccountsResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/AssociatePricingRules.hs b/gen/Amazonka/BillingConductor/AssociatePricingRules.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/AssociatePricingRules.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.AssociatePricingRules
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Connects an array of @PricingRuleArns@ to a defined @PricingPlan@. The
+-- maximum number @PricingRuleArn@ that can be associated in one call is
+-- 30.
+module Amazonka.BillingConductor.AssociatePricingRules
+  ( -- * Creating a Request
+    AssociatePricingRules (..),
+    newAssociatePricingRules,
+
+    -- * Request Lenses
+    associatePricingRules_arn,
+    associatePricingRules_pricingRuleArns,
+
+    -- * Destructuring the Response
+    AssociatePricingRulesResponse (..),
+    newAssociatePricingRulesResponse,
+
+    -- * Response Lenses
+    associatePricingRulesResponse_arn,
+    associatePricingRulesResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociatePricingRules' smart constructor.
+data AssociatePricingRules = AssociatePricingRules'
+  { -- | The @PricingPlanArn@ that the @PricingRuleArns@ are associated with.
+    arn :: Prelude.Text,
+    -- | The @PricingRuleArns@ that are associated with the Pricing Plan.
+    pricingRuleArns :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociatePricingRules' 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:
+--
+-- 'arn', 'associatePricingRules_arn' - The @PricingPlanArn@ that the @PricingRuleArns@ are associated with.
+--
+-- 'pricingRuleArns', 'associatePricingRules_pricingRuleArns' - The @PricingRuleArns@ that are associated with the Pricing Plan.
+newAssociatePricingRules ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'pricingRuleArns'
+  Prelude.NonEmpty Prelude.Text ->
+  AssociatePricingRules
+newAssociatePricingRules pArn_ pPricingRuleArns_ =
+  AssociatePricingRules'
+    { arn = pArn_,
+      pricingRuleArns =
+        Lens.coerced Lens.# pPricingRuleArns_
+    }
+
+-- | The @PricingPlanArn@ that the @PricingRuleArns@ are associated with.
+associatePricingRules_arn :: Lens.Lens' AssociatePricingRules Prelude.Text
+associatePricingRules_arn = Lens.lens (\AssociatePricingRules' {arn} -> arn) (\s@AssociatePricingRules' {} a -> s {arn = a} :: AssociatePricingRules)
+
+-- | The @PricingRuleArns@ that are associated with the Pricing Plan.
+associatePricingRules_pricingRuleArns :: Lens.Lens' AssociatePricingRules (Prelude.NonEmpty Prelude.Text)
+associatePricingRules_pricingRuleArns = Lens.lens (\AssociatePricingRules' {pricingRuleArns} -> pricingRuleArns) (\s@AssociatePricingRules' {} a -> s {pricingRuleArns = a} :: AssociatePricingRules) Prelude.. Lens.coerced
+
+instance Core.AWSRequest AssociatePricingRules where
+  type
+    AWSResponse AssociatePricingRules =
+      AssociatePricingRulesResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociatePricingRulesResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociatePricingRules where
+  hashWithSalt _salt AssociatePricingRules' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` pricingRuleArns
+
+instance Prelude.NFData AssociatePricingRules where
+  rnf AssociatePricingRules' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf pricingRuleArns
+
+instance Data.ToHeaders AssociatePricingRules where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociatePricingRules where
+  toJSON AssociatePricingRules' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just
+              ("PricingRuleArns" Data..= pricingRuleArns)
+          ]
+      )
+
+instance Data.ToPath AssociatePricingRules where
+  toPath = Prelude.const "/associate-pricing-rules"
+
+instance Data.ToQuery AssociatePricingRules where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociatePricingRulesResponse' smart constructor.
+data AssociatePricingRulesResponse = AssociatePricingRulesResponse'
+  { -- | The @PricingPlanArn@ that the @PricingRuleArns@ are associated with.
+    arn :: 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 'AssociatePricingRulesResponse' 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:
+--
+-- 'arn', 'associatePricingRulesResponse_arn' - The @PricingPlanArn@ that the @PricingRuleArns@ are associated with.
+--
+-- 'httpStatus', 'associatePricingRulesResponse_httpStatus' - The response's http status code.
+newAssociatePricingRulesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociatePricingRulesResponse
+newAssociatePricingRulesResponse pHttpStatus_ =
+  AssociatePricingRulesResponse'
+    { arn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The @PricingPlanArn@ that the @PricingRuleArns@ are associated with.
+associatePricingRulesResponse_arn :: Lens.Lens' AssociatePricingRulesResponse (Prelude.Maybe Prelude.Text)
+associatePricingRulesResponse_arn = Lens.lens (\AssociatePricingRulesResponse' {arn} -> arn) (\s@AssociatePricingRulesResponse' {} a -> s {arn = a} :: AssociatePricingRulesResponse)
+
+-- | The response's http status code.
+associatePricingRulesResponse_httpStatus :: Lens.Lens' AssociatePricingRulesResponse Prelude.Int
+associatePricingRulesResponse_httpStatus = Lens.lens (\AssociatePricingRulesResponse' {httpStatus} -> httpStatus) (\s@AssociatePricingRulesResponse' {} a -> s {httpStatus = a} :: AssociatePricingRulesResponse)
+
+instance Prelude.NFData AssociatePricingRulesResponse where
+  rnf AssociatePricingRulesResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/BatchAssociateResourcesToCustomLineItem.hs b/gen/Amazonka/BillingConductor/BatchAssociateResourcesToCustomLineItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/BatchAssociateResourcesToCustomLineItem.hs
@@ -0,0 +1,258 @@
+{-# 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.BillingConductor.BatchAssociateResourcesToCustomLineItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates a batch of resources to a percentage custom line item.
+module Amazonka.BillingConductor.BatchAssociateResourcesToCustomLineItem
+  ( -- * Creating a Request
+    BatchAssociateResourcesToCustomLineItem (..),
+    newBatchAssociateResourcesToCustomLineItem,
+
+    -- * Request Lenses
+    batchAssociateResourcesToCustomLineItem_billingPeriodRange,
+    batchAssociateResourcesToCustomLineItem_targetArn,
+    batchAssociateResourcesToCustomLineItem_resourceArns,
+
+    -- * Destructuring the Response
+    BatchAssociateResourcesToCustomLineItemResponse (..),
+    newBatchAssociateResourcesToCustomLineItemResponse,
+
+    -- * Response Lenses
+    batchAssociateResourcesToCustomLineItemResponse_failedAssociatedResources,
+    batchAssociateResourcesToCustomLineItemResponse_successfullyAssociatedResources,
+    batchAssociateResourcesToCustomLineItemResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchAssociateResourcesToCustomLineItem' smart constructor.
+data BatchAssociateResourcesToCustomLineItem = BatchAssociateResourcesToCustomLineItem'
+  { billingPeriodRange :: Prelude.Maybe CustomLineItemBillingPeriodRange,
+    -- | A percentage custom line item ARN to associate the resources to.
+    targetArn :: Prelude.Text,
+    -- | A list containing the ARNs of the resources to be associated.
+    resourceArns :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchAssociateResourcesToCustomLineItem' 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:
+--
+-- 'billingPeriodRange', 'batchAssociateResourcesToCustomLineItem_billingPeriodRange' - Undocumented member.
+--
+-- 'targetArn', 'batchAssociateResourcesToCustomLineItem_targetArn' - A percentage custom line item ARN to associate the resources to.
+--
+-- 'resourceArns', 'batchAssociateResourcesToCustomLineItem_resourceArns' - A list containing the ARNs of the resources to be associated.
+newBatchAssociateResourcesToCustomLineItem ::
+  -- | 'targetArn'
+  Prelude.Text ->
+  -- | 'resourceArns'
+  Prelude.NonEmpty Prelude.Text ->
+  BatchAssociateResourcesToCustomLineItem
+newBatchAssociateResourcesToCustomLineItem
+  pTargetArn_
+  pResourceArns_ =
+    BatchAssociateResourcesToCustomLineItem'
+      { billingPeriodRange =
+          Prelude.Nothing,
+        targetArn = pTargetArn_,
+        resourceArns =
+          Lens.coerced
+            Lens.# pResourceArns_
+      }
+
+-- | Undocumented member.
+batchAssociateResourcesToCustomLineItem_billingPeriodRange :: Lens.Lens' BatchAssociateResourcesToCustomLineItem (Prelude.Maybe CustomLineItemBillingPeriodRange)
+batchAssociateResourcesToCustomLineItem_billingPeriodRange = Lens.lens (\BatchAssociateResourcesToCustomLineItem' {billingPeriodRange} -> billingPeriodRange) (\s@BatchAssociateResourcesToCustomLineItem' {} a -> s {billingPeriodRange = a} :: BatchAssociateResourcesToCustomLineItem)
+
+-- | A percentage custom line item ARN to associate the resources to.
+batchAssociateResourcesToCustomLineItem_targetArn :: Lens.Lens' BatchAssociateResourcesToCustomLineItem Prelude.Text
+batchAssociateResourcesToCustomLineItem_targetArn = Lens.lens (\BatchAssociateResourcesToCustomLineItem' {targetArn} -> targetArn) (\s@BatchAssociateResourcesToCustomLineItem' {} a -> s {targetArn = a} :: BatchAssociateResourcesToCustomLineItem)
+
+-- | A list containing the ARNs of the resources to be associated.
+batchAssociateResourcesToCustomLineItem_resourceArns :: Lens.Lens' BatchAssociateResourcesToCustomLineItem (Prelude.NonEmpty Prelude.Text)
+batchAssociateResourcesToCustomLineItem_resourceArns = Lens.lens (\BatchAssociateResourcesToCustomLineItem' {resourceArns} -> resourceArns) (\s@BatchAssociateResourcesToCustomLineItem' {} a -> s {resourceArns = a} :: BatchAssociateResourcesToCustomLineItem) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    BatchAssociateResourcesToCustomLineItem
+  where
+  type
+    AWSResponse
+      BatchAssociateResourcesToCustomLineItem =
+      BatchAssociateResourcesToCustomLineItemResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchAssociateResourcesToCustomLineItemResponse'
+            Prelude.<$> ( x
+                            Data..?> "FailedAssociatedResources"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "SuccessfullyAssociatedResources"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    BatchAssociateResourcesToCustomLineItem
+  where
+  hashWithSalt
+    _salt
+    BatchAssociateResourcesToCustomLineItem' {..} =
+      _salt
+        `Prelude.hashWithSalt` billingPeriodRange
+        `Prelude.hashWithSalt` targetArn
+        `Prelude.hashWithSalt` resourceArns
+
+instance
+  Prelude.NFData
+    BatchAssociateResourcesToCustomLineItem
+  where
+  rnf BatchAssociateResourcesToCustomLineItem' {..} =
+    Prelude.rnf billingPeriodRange
+      `Prelude.seq` Prelude.rnf targetArn
+      `Prelude.seq` Prelude.rnf resourceArns
+
+instance
+  Data.ToHeaders
+    BatchAssociateResourcesToCustomLineItem
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    BatchAssociateResourcesToCustomLineItem
+  where
+  toJSON BatchAssociateResourcesToCustomLineItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriodRange" Data..=)
+              Prelude.<$> billingPeriodRange,
+            Prelude.Just ("TargetArn" Data..= targetArn),
+            Prelude.Just ("ResourceArns" Data..= resourceArns)
+          ]
+      )
+
+instance
+  Data.ToPath
+    BatchAssociateResourcesToCustomLineItem
+  where
+  toPath =
+    Prelude.const
+      "/batch-associate-resources-to-custom-line-item"
+
+instance
+  Data.ToQuery
+    BatchAssociateResourcesToCustomLineItem
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newBatchAssociateResourcesToCustomLineItemResponse' smart constructor.
+data BatchAssociateResourcesToCustomLineItemResponse = BatchAssociateResourcesToCustomLineItemResponse'
+  { -- | A list of @AssociateResourceResponseElement@ for each resource that
+    -- failed association to a percentage custom line item.
+    failedAssociatedResources :: Prelude.Maybe [AssociateResourceResponseElement],
+    -- | A list of @AssociateResourceResponseElement@ for each resource that\'s
+    -- been associated to a percentage custom line item successfully.
+    successfullyAssociatedResources :: Prelude.Maybe [AssociateResourceResponseElement],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchAssociateResourcesToCustomLineItemResponse' 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:
+--
+-- 'failedAssociatedResources', 'batchAssociateResourcesToCustomLineItemResponse_failedAssociatedResources' - A list of @AssociateResourceResponseElement@ for each resource that
+-- failed association to a percentage custom line item.
+--
+-- 'successfullyAssociatedResources', 'batchAssociateResourcesToCustomLineItemResponse_successfullyAssociatedResources' - A list of @AssociateResourceResponseElement@ for each resource that\'s
+-- been associated to a percentage custom line item successfully.
+--
+-- 'httpStatus', 'batchAssociateResourcesToCustomLineItemResponse_httpStatus' - The response's http status code.
+newBatchAssociateResourcesToCustomLineItemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchAssociateResourcesToCustomLineItemResponse
+newBatchAssociateResourcesToCustomLineItemResponse
+  pHttpStatus_ =
+    BatchAssociateResourcesToCustomLineItemResponse'
+      { failedAssociatedResources =
+          Prelude.Nothing,
+        successfullyAssociatedResources =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | A list of @AssociateResourceResponseElement@ for each resource that
+-- failed association to a percentage custom line item.
+batchAssociateResourcesToCustomLineItemResponse_failedAssociatedResources :: Lens.Lens' BatchAssociateResourcesToCustomLineItemResponse (Prelude.Maybe [AssociateResourceResponseElement])
+batchAssociateResourcesToCustomLineItemResponse_failedAssociatedResources = Lens.lens (\BatchAssociateResourcesToCustomLineItemResponse' {failedAssociatedResources} -> failedAssociatedResources) (\s@BatchAssociateResourcesToCustomLineItemResponse' {} a -> s {failedAssociatedResources = a} :: BatchAssociateResourcesToCustomLineItemResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of @AssociateResourceResponseElement@ for each resource that\'s
+-- been associated to a percentage custom line item successfully.
+batchAssociateResourcesToCustomLineItemResponse_successfullyAssociatedResources :: Lens.Lens' BatchAssociateResourcesToCustomLineItemResponse (Prelude.Maybe [AssociateResourceResponseElement])
+batchAssociateResourcesToCustomLineItemResponse_successfullyAssociatedResources = Lens.lens (\BatchAssociateResourcesToCustomLineItemResponse' {successfullyAssociatedResources} -> successfullyAssociatedResources) (\s@BatchAssociateResourcesToCustomLineItemResponse' {} a -> s {successfullyAssociatedResources = a} :: BatchAssociateResourcesToCustomLineItemResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchAssociateResourcesToCustomLineItemResponse_httpStatus :: Lens.Lens' BatchAssociateResourcesToCustomLineItemResponse Prelude.Int
+batchAssociateResourcesToCustomLineItemResponse_httpStatus = Lens.lens (\BatchAssociateResourcesToCustomLineItemResponse' {httpStatus} -> httpStatus) (\s@BatchAssociateResourcesToCustomLineItemResponse' {} a -> s {httpStatus = a} :: BatchAssociateResourcesToCustomLineItemResponse)
+
+instance
+  Prelude.NFData
+    BatchAssociateResourcesToCustomLineItemResponse
+  where
+  rnf
+    BatchAssociateResourcesToCustomLineItemResponse' {..} =
+      Prelude.rnf failedAssociatedResources
+        `Prelude.seq` Prelude.rnf successfullyAssociatedResources
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/BatchDisassociateResourcesFromCustomLineItem.hs b/gen/Amazonka/BillingConductor/BatchDisassociateResourcesFromCustomLineItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/BatchDisassociateResourcesFromCustomLineItem.hs
@@ -0,0 +1,263 @@
+{-# 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.BillingConductor.BatchDisassociateResourcesFromCustomLineItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates a batch of resources from a percentage custom line item.
+module Amazonka.BillingConductor.BatchDisassociateResourcesFromCustomLineItem
+  ( -- * Creating a Request
+    BatchDisassociateResourcesFromCustomLineItem (..),
+    newBatchDisassociateResourcesFromCustomLineItem,
+
+    -- * Request Lenses
+    batchDisassociateResourcesFromCustomLineItem_billingPeriodRange,
+    batchDisassociateResourcesFromCustomLineItem_targetArn,
+    batchDisassociateResourcesFromCustomLineItem_resourceArns,
+
+    -- * Destructuring the Response
+    BatchDisassociateResourcesFromCustomLineItemResponse (..),
+    newBatchDisassociateResourcesFromCustomLineItemResponse,
+
+    -- * Response Lenses
+    batchDisassociateResourcesFromCustomLineItemResponse_failedDisassociatedResources,
+    batchDisassociateResourcesFromCustomLineItemResponse_successfullyDisassociatedResources,
+    batchDisassociateResourcesFromCustomLineItemResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchDisassociateResourcesFromCustomLineItem' smart constructor.
+data BatchDisassociateResourcesFromCustomLineItem = BatchDisassociateResourcesFromCustomLineItem'
+  { billingPeriodRange :: Prelude.Maybe CustomLineItemBillingPeriodRange,
+    -- | A percentage custom line item ARN to disassociate the resources from.
+    targetArn :: Prelude.Text,
+    -- | A list containing the ARNs of resources to be disassociated.
+    resourceArns :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDisassociateResourcesFromCustomLineItem' 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:
+--
+-- 'billingPeriodRange', 'batchDisassociateResourcesFromCustomLineItem_billingPeriodRange' - Undocumented member.
+--
+-- 'targetArn', 'batchDisassociateResourcesFromCustomLineItem_targetArn' - A percentage custom line item ARN to disassociate the resources from.
+--
+-- 'resourceArns', 'batchDisassociateResourcesFromCustomLineItem_resourceArns' - A list containing the ARNs of resources to be disassociated.
+newBatchDisassociateResourcesFromCustomLineItem ::
+  -- | 'targetArn'
+  Prelude.Text ->
+  -- | 'resourceArns'
+  Prelude.NonEmpty Prelude.Text ->
+  BatchDisassociateResourcesFromCustomLineItem
+newBatchDisassociateResourcesFromCustomLineItem
+  pTargetArn_
+  pResourceArns_ =
+    BatchDisassociateResourcesFromCustomLineItem'
+      { billingPeriodRange =
+          Prelude.Nothing,
+        targetArn = pTargetArn_,
+        resourceArns =
+          Lens.coerced
+            Lens.# pResourceArns_
+      }
+
+-- | Undocumented member.
+batchDisassociateResourcesFromCustomLineItem_billingPeriodRange :: Lens.Lens' BatchDisassociateResourcesFromCustomLineItem (Prelude.Maybe CustomLineItemBillingPeriodRange)
+batchDisassociateResourcesFromCustomLineItem_billingPeriodRange = Lens.lens (\BatchDisassociateResourcesFromCustomLineItem' {billingPeriodRange} -> billingPeriodRange) (\s@BatchDisassociateResourcesFromCustomLineItem' {} a -> s {billingPeriodRange = a} :: BatchDisassociateResourcesFromCustomLineItem)
+
+-- | A percentage custom line item ARN to disassociate the resources from.
+batchDisassociateResourcesFromCustomLineItem_targetArn :: Lens.Lens' BatchDisassociateResourcesFromCustomLineItem Prelude.Text
+batchDisassociateResourcesFromCustomLineItem_targetArn = Lens.lens (\BatchDisassociateResourcesFromCustomLineItem' {targetArn} -> targetArn) (\s@BatchDisassociateResourcesFromCustomLineItem' {} a -> s {targetArn = a} :: BatchDisassociateResourcesFromCustomLineItem)
+
+-- | A list containing the ARNs of resources to be disassociated.
+batchDisassociateResourcesFromCustomLineItem_resourceArns :: Lens.Lens' BatchDisassociateResourcesFromCustomLineItem (Prelude.NonEmpty Prelude.Text)
+batchDisassociateResourcesFromCustomLineItem_resourceArns = Lens.lens (\BatchDisassociateResourcesFromCustomLineItem' {resourceArns} -> resourceArns) (\s@BatchDisassociateResourcesFromCustomLineItem' {} a -> s {resourceArns = a} :: BatchDisassociateResourcesFromCustomLineItem) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    BatchDisassociateResourcesFromCustomLineItem
+  where
+  type
+    AWSResponse
+      BatchDisassociateResourcesFromCustomLineItem =
+      BatchDisassociateResourcesFromCustomLineItemResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchDisassociateResourcesFromCustomLineItemResponse'
+            Prelude.<$> ( x
+                            Data..?> "FailedDisassociatedResources"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..?> "SuccessfullyDisassociatedResources"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    BatchDisassociateResourcesFromCustomLineItem
+  where
+  hashWithSalt
+    _salt
+    BatchDisassociateResourcesFromCustomLineItem' {..} =
+      _salt
+        `Prelude.hashWithSalt` billingPeriodRange
+        `Prelude.hashWithSalt` targetArn
+        `Prelude.hashWithSalt` resourceArns
+
+instance
+  Prelude.NFData
+    BatchDisassociateResourcesFromCustomLineItem
+  where
+  rnf BatchDisassociateResourcesFromCustomLineItem' {..} =
+    Prelude.rnf billingPeriodRange
+      `Prelude.seq` Prelude.rnf targetArn
+      `Prelude.seq` Prelude.rnf resourceArns
+
+instance
+  Data.ToHeaders
+    BatchDisassociateResourcesFromCustomLineItem
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    BatchDisassociateResourcesFromCustomLineItem
+  where
+  toJSON
+    BatchDisassociateResourcesFromCustomLineItem' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("BillingPeriodRange" Data..=)
+                Prelude.<$> billingPeriodRange,
+              Prelude.Just ("TargetArn" Data..= targetArn),
+              Prelude.Just ("ResourceArns" Data..= resourceArns)
+            ]
+        )
+
+instance
+  Data.ToPath
+    BatchDisassociateResourcesFromCustomLineItem
+  where
+  toPath =
+    Prelude.const
+      "/batch-disassociate-resources-from-custom-line-item"
+
+instance
+  Data.ToQuery
+    BatchDisassociateResourcesFromCustomLineItem
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newBatchDisassociateResourcesFromCustomLineItemResponse' smart constructor.
+data BatchDisassociateResourcesFromCustomLineItemResponse = BatchDisassociateResourcesFromCustomLineItemResponse'
+  { -- | A list of @DisassociateResourceResponseElement@ for each resource that
+    -- failed disassociation from a percentage custom line item.
+    failedDisassociatedResources :: Prelude.Maybe [DisassociateResourceResponseElement],
+    -- | A list of @DisassociateResourceResponseElement@ for each resource
+    -- that\'s been disassociated from a percentage custom line item
+    -- successfully.
+    successfullyDisassociatedResources :: Prelude.Maybe [DisassociateResourceResponseElement],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDisassociateResourcesFromCustomLineItemResponse' 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:
+--
+-- 'failedDisassociatedResources', 'batchDisassociateResourcesFromCustomLineItemResponse_failedDisassociatedResources' - A list of @DisassociateResourceResponseElement@ for each resource that
+-- failed disassociation from a percentage custom line item.
+--
+-- 'successfullyDisassociatedResources', 'batchDisassociateResourcesFromCustomLineItemResponse_successfullyDisassociatedResources' - A list of @DisassociateResourceResponseElement@ for each resource
+-- that\'s been disassociated from a percentage custom line item
+-- successfully.
+--
+-- 'httpStatus', 'batchDisassociateResourcesFromCustomLineItemResponse_httpStatus' - The response's http status code.
+newBatchDisassociateResourcesFromCustomLineItemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchDisassociateResourcesFromCustomLineItemResponse
+newBatchDisassociateResourcesFromCustomLineItemResponse
+  pHttpStatus_ =
+    BatchDisassociateResourcesFromCustomLineItemResponse'
+      { failedDisassociatedResources =
+          Prelude.Nothing,
+        successfullyDisassociatedResources =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | A list of @DisassociateResourceResponseElement@ for each resource that
+-- failed disassociation from a percentage custom line item.
+batchDisassociateResourcesFromCustomLineItemResponse_failedDisassociatedResources :: Lens.Lens' BatchDisassociateResourcesFromCustomLineItemResponse (Prelude.Maybe [DisassociateResourceResponseElement])
+batchDisassociateResourcesFromCustomLineItemResponse_failedDisassociatedResources = Lens.lens (\BatchDisassociateResourcesFromCustomLineItemResponse' {failedDisassociatedResources} -> failedDisassociatedResources) (\s@BatchDisassociateResourcesFromCustomLineItemResponse' {} a -> s {failedDisassociatedResources = a} :: BatchDisassociateResourcesFromCustomLineItemResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of @DisassociateResourceResponseElement@ for each resource
+-- that\'s been disassociated from a percentage custom line item
+-- successfully.
+batchDisassociateResourcesFromCustomLineItemResponse_successfullyDisassociatedResources :: Lens.Lens' BatchDisassociateResourcesFromCustomLineItemResponse (Prelude.Maybe [DisassociateResourceResponseElement])
+batchDisassociateResourcesFromCustomLineItemResponse_successfullyDisassociatedResources = Lens.lens (\BatchDisassociateResourcesFromCustomLineItemResponse' {successfullyDisassociatedResources} -> successfullyDisassociatedResources) (\s@BatchDisassociateResourcesFromCustomLineItemResponse' {} a -> s {successfullyDisassociatedResources = a} :: BatchDisassociateResourcesFromCustomLineItemResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchDisassociateResourcesFromCustomLineItemResponse_httpStatus :: Lens.Lens' BatchDisassociateResourcesFromCustomLineItemResponse Prelude.Int
+batchDisassociateResourcesFromCustomLineItemResponse_httpStatus = Lens.lens (\BatchDisassociateResourcesFromCustomLineItemResponse' {httpStatus} -> httpStatus) (\s@BatchDisassociateResourcesFromCustomLineItemResponse' {} a -> s {httpStatus = a} :: BatchDisassociateResourcesFromCustomLineItemResponse)
+
+instance
+  Prelude.NFData
+    BatchDisassociateResourcesFromCustomLineItemResponse
+  where
+  rnf
+    BatchDisassociateResourcesFromCustomLineItemResponse' {..} =
+      Prelude.rnf failedDisassociatedResources
+        `Prelude.seq` Prelude.rnf successfullyDisassociatedResources
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/CreateBillingGroup.hs b/gen/Amazonka/BillingConductor/CreateBillingGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/CreateBillingGroup.hs
@@ -0,0 +1,268 @@
+{-# 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.BillingConductor.CreateBillingGroup
+-- 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 billing group that resembles a consolidated billing family
+-- that Amazon Web Services charges, based off of the predefined pricing
+-- plan computation.
+module Amazonka.BillingConductor.CreateBillingGroup
+  ( -- * Creating a Request
+    CreateBillingGroup (..),
+    newCreateBillingGroup,
+
+    -- * Request Lenses
+    createBillingGroup_clientToken,
+    createBillingGroup_description,
+    createBillingGroup_primaryAccountId,
+    createBillingGroup_tags,
+    createBillingGroup_name,
+    createBillingGroup_accountGrouping,
+    createBillingGroup_computationPreference,
+
+    -- * Destructuring the Response
+    CreateBillingGroupResponse (..),
+    newCreateBillingGroupResponse,
+
+    -- * Response Lenses
+    createBillingGroupResponse_arn,
+    createBillingGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateBillingGroup' smart constructor.
+data CreateBillingGroup = CreateBillingGroup'
+  { -- | The token that is needed to support idempotency. Idempotency isn\'t
+    -- currently supported, but will be implemented in a future update.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The description of the billing group.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The account ID that serves as the main account in a billing group.
+    primaryAccountId :: Prelude.Maybe Prelude.Text,
+    -- | A map that contains tag keys and tag values that are attached to a
+    -- billing group. This feature isn\'t available during the beta.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The billing group name. The names must be unique.
+    name :: Data.Sensitive Prelude.Text,
+    -- | The set of accounts that will be under the billing group. The set of
+    -- accounts resemble the linked accounts in a consolidated family.
+    accountGrouping :: AccountGrouping,
+    -- | The preferences and settings that will be used to compute the Amazon Web
+    -- Services charges for a billing group.
+    computationPreference :: ComputationPreference
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBillingGroup' 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:
+--
+-- 'clientToken', 'createBillingGroup_clientToken' - The token that is needed to support idempotency. Idempotency isn\'t
+-- currently supported, but will be implemented in a future update.
+--
+-- 'description', 'createBillingGroup_description' - The description of the billing group.
+--
+-- 'primaryAccountId', 'createBillingGroup_primaryAccountId' - The account ID that serves as the main account in a billing group.
+--
+-- 'tags', 'createBillingGroup_tags' - A map that contains tag keys and tag values that are attached to a
+-- billing group. This feature isn\'t available during the beta.
+--
+-- 'name', 'createBillingGroup_name' - The billing group name. The names must be unique.
+--
+-- 'accountGrouping', 'createBillingGroup_accountGrouping' - The set of accounts that will be under the billing group. The set of
+-- accounts resemble the linked accounts in a consolidated family.
+--
+-- 'computationPreference', 'createBillingGroup_computationPreference' - The preferences and settings that will be used to compute the Amazon Web
+-- Services charges for a billing group.
+newCreateBillingGroup ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'accountGrouping'
+  AccountGrouping ->
+  -- | 'computationPreference'
+  ComputationPreference ->
+  CreateBillingGroup
+newCreateBillingGroup
+  pName_
+  pAccountGrouping_
+  pComputationPreference_ =
+    CreateBillingGroup'
+      { clientToken = Prelude.Nothing,
+        description = Prelude.Nothing,
+        primaryAccountId = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        name = Data._Sensitive Lens.# pName_,
+        accountGrouping = pAccountGrouping_,
+        computationPreference = pComputationPreference_
+      }
+
+-- | The token that is needed to support idempotency. Idempotency isn\'t
+-- currently supported, but will be implemented in a future update.
+createBillingGroup_clientToken :: Lens.Lens' CreateBillingGroup (Prelude.Maybe Prelude.Text)
+createBillingGroup_clientToken = Lens.lens (\CreateBillingGroup' {clientToken} -> clientToken) (\s@CreateBillingGroup' {} a -> s {clientToken = a} :: CreateBillingGroup)
+
+-- | The description of the billing group.
+createBillingGroup_description :: Lens.Lens' CreateBillingGroup (Prelude.Maybe Prelude.Text)
+createBillingGroup_description = Lens.lens (\CreateBillingGroup' {description} -> description) (\s@CreateBillingGroup' {} a -> s {description = a} :: CreateBillingGroup) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The account ID that serves as the main account in a billing group.
+createBillingGroup_primaryAccountId :: Lens.Lens' CreateBillingGroup (Prelude.Maybe Prelude.Text)
+createBillingGroup_primaryAccountId = Lens.lens (\CreateBillingGroup' {primaryAccountId} -> primaryAccountId) (\s@CreateBillingGroup' {} a -> s {primaryAccountId = a} :: CreateBillingGroup)
+
+-- | A map that contains tag keys and tag values that are attached to a
+-- billing group. This feature isn\'t available during the beta.
+createBillingGroup_tags :: Lens.Lens' CreateBillingGroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createBillingGroup_tags = Lens.lens (\CreateBillingGroup' {tags} -> tags) (\s@CreateBillingGroup' {} a -> s {tags = a} :: CreateBillingGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The billing group name. The names must be unique.
+createBillingGroup_name :: Lens.Lens' CreateBillingGroup Prelude.Text
+createBillingGroup_name = Lens.lens (\CreateBillingGroup' {name} -> name) (\s@CreateBillingGroup' {} a -> s {name = a} :: CreateBillingGroup) Prelude.. Data._Sensitive
+
+-- | The set of accounts that will be under the billing group. The set of
+-- accounts resemble the linked accounts in a consolidated family.
+createBillingGroup_accountGrouping :: Lens.Lens' CreateBillingGroup AccountGrouping
+createBillingGroup_accountGrouping = Lens.lens (\CreateBillingGroup' {accountGrouping} -> accountGrouping) (\s@CreateBillingGroup' {} a -> s {accountGrouping = a} :: CreateBillingGroup)
+
+-- | The preferences and settings that will be used to compute the Amazon Web
+-- Services charges for a billing group.
+createBillingGroup_computationPreference :: Lens.Lens' CreateBillingGroup ComputationPreference
+createBillingGroup_computationPreference = Lens.lens (\CreateBillingGroup' {computationPreference} -> computationPreference) (\s@CreateBillingGroup' {} a -> s {computationPreference = a} :: CreateBillingGroup)
+
+instance Core.AWSRequest CreateBillingGroup where
+  type
+    AWSResponse CreateBillingGroup =
+      CreateBillingGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateBillingGroupResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateBillingGroup where
+  hashWithSalt _salt CreateBillingGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` primaryAccountId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` accountGrouping
+      `Prelude.hashWithSalt` computationPreference
+
+instance Prelude.NFData CreateBillingGroup where
+  rnf CreateBillingGroup' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf primaryAccountId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf accountGrouping
+      `Prelude.seq` Prelude.rnf computationPreference
+
+instance Data.ToHeaders CreateBillingGroup where
+  toHeaders CreateBillingGroup' {..} =
+    Prelude.mconcat
+      [ "X-Amzn-Client-Token" Data.=# clientToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreateBillingGroup where
+  toJSON CreateBillingGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("PrimaryAccountId" Data..=)
+              Prelude.<$> primaryAccountId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ("AccountGrouping" Data..= accountGrouping),
+            Prelude.Just
+              ( "ComputationPreference"
+                  Data..= computationPreference
+              )
+          ]
+      )
+
+instance Data.ToPath CreateBillingGroup where
+  toPath = Prelude.const "/create-billing-group"
+
+instance Data.ToQuery CreateBillingGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateBillingGroupResponse' smart constructor.
+data CreateBillingGroupResponse = CreateBillingGroupResponse'
+  { -- | The Amazon Resource Name (ARN) of the created billing group.
+    arn :: 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 'CreateBillingGroupResponse' 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:
+--
+-- 'arn', 'createBillingGroupResponse_arn' - The Amazon Resource Name (ARN) of the created billing group.
+--
+-- 'httpStatus', 'createBillingGroupResponse_httpStatus' - The response's http status code.
+newCreateBillingGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateBillingGroupResponse
+newCreateBillingGroupResponse pHttpStatus_ =
+  CreateBillingGroupResponse'
+    { arn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the created billing group.
+createBillingGroupResponse_arn :: Lens.Lens' CreateBillingGroupResponse (Prelude.Maybe Prelude.Text)
+createBillingGroupResponse_arn = Lens.lens (\CreateBillingGroupResponse' {arn} -> arn) (\s@CreateBillingGroupResponse' {} a -> s {arn = a} :: CreateBillingGroupResponse)
+
+-- | The response's http status code.
+createBillingGroupResponse_httpStatus :: Lens.Lens' CreateBillingGroupResponse Prelude.Int
+createBillingGroupResponse_httpStatus = Lens.lens (\CreateBillingGroupResponse' {httpStatus} -> httpStatus) (\s@CreateBillingGroupResponse' {} a -> s {httpStatus = a} :: CreateBillingGroupResponse)
+
+instance Prelude.NFData CreateBillingGroupResponse where
+  rnf CreateBillingGroupResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/CreateCustomLineItem.hs b/gen/Amazonka/BillingConductor/CreateCustomLineItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/CreateCustomLineItem.hs
@@ -0,0 +1,275 @@
+{-# 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.BillingConductor.CreateCustomLineItem
+-- 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 custom line item that can be used to create a one-time fixed
+-- charge that can be applied to a single billing group for the current or
+-- previous billing period. The one-time fixed charge is either a fee or
+-- discount.
+module Amazonka.BillingConductor.CreateCustomLineItem
+  ( -- * Creating a Request
+    CreateCustomLineItem (..),
+    newCreateCustomLineItem,
+
+    -- * Request Lenses
+    createCustomLineItem_billingPeriodRange,
+    createCustomLineItem_clientToken,
+    createCustomLineItem_tags,
+    createCustomLineItem_name,
+    createCustomLineItem_description,
+    createCustomLineItem_billingGroupArn,
+    createCustomLineItem_chargeDetails,
+
+    -- * Destructuring the Response
+    CreateCustomLineItemResponse (..),
+    newCreateCustomLineItemResponse,
+
+    -- * Response Lenses
+    createCustomLineItemResponse_arn,
+    createCustomLineItemResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateCustomLineItem' smart constructor.
+data CreateCustomLineItem = CreateCustomLineItem'
+  { -- | A time range for which the custom line item is effective.
+    billingPeriodRange :: Prelude.Maybe CustomLineItemBillingPeriodRange,
+    -- | The token that is needed to support idempotency. Idempotency isn\'t
+    -- currently supported, but will be implemented in a future update.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | A map that contains tag keys and tag values that are attached to a
+    -- custom line item.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The name of the custom line item.
+    name :: Data.Sensitive Prelude.Text,
+    -- | The description of the custom line item. This is shown on the Bills page
+    -- in association with the charge value.
+    description :: Data.Sensitive Prelude.Text,
+    -- | The Amazon Resource Name (ARN) that references the billing group where
+    -- the custom line item applies to.
+    billingGroupArn :: Prelude.Text,
+    -- | A @CustomLineItemChargeDetails@ that describes the charge details for a
+    -- custom line item.
+    chargeDetails :: CustomLineItemChargeDetails
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCustomLineItem' 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:
+--
+-- 'billingPeriodRange', 'createCustomLineItem_billingPeriodRange' - A time range for which the custom line item is effective.
+--
+-- 'clientToken', 'createCustomLineItem_clientToken' - The token that is needed to support idempotency. Idempotency isn\'t
+-- currently supported, but will be implemented in a future update.
+--
+-- 'tags', 'createCustomLineItem_tags' - A map that contains tag keys and tag values that are attached to a
+-- custom line item.
+--
+-- 'name', 'createCustomLineItem_name' - The name of the custom line item.
+--
+-- 'description', 'createCustomLineItem_description' - The description of the custom line item. This is shown on the Bills page
+-- in association with the charge value.
+--
+-- 'billingGroupArn', 'createCustomLineItem_billingGroupArn' - The Amazon Resource Name (ARN) that references the billing group where
+-- the custom line item applies to.
+--
+-- 'chargeDetails', 'createCustomLineItem_chargeDetails' - A @CustomLineItemChargeDetails@ that describes the charge details for a
+-- custom line item.
+newCreateCustomLineItem ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'description'
+  Prelude.Text ->
+  -- | 'billingGroupArn'
+  Prelude.Text ->
+  -- | 'chargeDetails'
+  CustomLineItemChargeDetails ->
+  CreateCustomLineItem
+newCreateCustomLineItem
+  pName_
+  pDescription_
+  pBillingGroupArn_
+  pChargeDetails_ =
+    CreateCustomLineItem'
+      { billingPeriodRange =
+          Prelude.Nothing,
+        clientToken = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        name = Data._Sensitive Lens.# pName_,
+        description = Data._Sensitive Lens.# pDescription_,
+        billingGroupArn = pBillingGroupArn_,
+        chargeDetails = pChargeDetails_
+      }
+
+-- | A time range for which the custom line item is effective.
+createCustomLineItem_billingPeriodRange :: Lens.Lens' CreateCustomLineItem (Prelude.Maybe CustomLineItemBillingPeriodRange)
+createCustomLineItem_billingPeriodRange = Lens.lens (\CreateCustomLineItem' {billingPeriodRange} -> billingPeriodRange) (\s@CreateCustomLineItem' {} a -> s {billingPeriodRange = a} :: CreateCustomLineItem)
+
+-- | The token that is needed to support idempotency. Idempotency isn\'t
+-- currently supported, but will be implemented in a future update.
+createCustomLineItem_clientToken :: Lens.Lens' CreateCustomLineItem (Prelude.Maybe Prelude.Text)
+createCustomLineItem_clientToken = Lens.lens (\CreateCustomLineItem' {clientToken} -> clientToken) (\s@CreateCustomLineItem' {} a -> s {clientToken = a} :: CreateCustomLineItem)
+
+-- | A map that contains tag keys and tag values that are attached to a
+-- custom line item.
+createCustomLineItem_tags :: Lens.Lens' CreateCustomLineItem (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createCustomLineItem_tags = Lens.lens (\CreateCustomLineItem' {tags} -> tags) (\s@CreateCustomLineItem' {} a -> s {tags = a} :: CreateCustomLineItem) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the custom line item.
+createCustomLineItem_name :: Lens.Lens' CreateCustomLineItem Prelude.Text
+createCustomLineItem_name = Lens.lens (\CreateCustomLineItem' {name} -> name) (\s@CreateCustomLineItem' {} a -> s {name = a} :: CreateCustomLineItem) Prelude.. Data._Sensitive
+
+-- | The description of the custom line item. This is shown on the Bills page
+-- in association with the charge value.
+createCustomLineItem_description :: Lens.Lens' CreateCustomLineItem Prelude.Text
+createCustomLineItem_description = Lens.lens (\CreateCustomLineItem' {description} -> description) (\s@CreateCustomLineItem' {} a -> s {description = a} :: CreateCustomLineItem) Prelude.. Data._Sensitive
+
+-- | The Amazon Resource Name (ARN) that references the billing group where
+-- the custom line item applies to.
+createCustomLineItem_billingGroupArn :: Lens.Lens' CreateCustomLineItem Prelude.Text
+createCustomLineItem_billingGroupArn = Lens.lens (\CreateCustomLineItem' {billingGroupArn} -> billingGroupArn) (\s@CreateCustomLineItem' {} a -> s {billingGroupArn = a} :: CreateCustomLineItem)
+
+-- | A @CustomLineItemChargeDetails@ that describes the charge details for a
+-- custom line item.
+createCustomLineItem_chargeDetails :: Lens.Lens' CreateCustomLineItem CustomLineItemChargeDetails
+createCustomLineItem_chargeDetails = Lens.lens (\CreateCustomLineItem' {chargeDetails} -> chargeDetails) (\s@CreateCustomLineItem' {} a -> s {chargeDetails = a} :: CreateCustomLineItem)
+
+instance Core.AWSRequest CreateCustomLineItem where
+  type
+    AWSResponse CreateCustomLineItem =
+      CreateCustomLineItemResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateCustomLineItemResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateCustomLineItem where
+  hashWithSalt _salt CreateCustomLineItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriodRange
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` billingGroupArn
+      `Prelude.hashWithSalt` chargeDetails
+
+instance Prelude.NFData CreateCustomLineItem where
+  rnf CreateCustomLineItem' {..} =
+    Prelude.rnf billingPeriodRange
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf billingGroupArn
+      `Prelude.seq` Prelude.rnf chargeDetails
+
+instance Data.ToHeaders CreateCustomLineItem where
+  toHeaders CreateCustomLineItem' {..} =
+    Prelude.mconcat
+      [ "X-Amzn-Client-Token" Data.=# clientToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreateCustomLineItem where
+  toJSON CreateCustomLineItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriodRange" Data..=)
+              Prelude.<$> billingPeriodRange,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Description" Data..= description),
+            Prelude.Just
+              ("BillingGroupArn" Data..= billingGroupArn),
+            Prelude.Just
+              ("ChargeDetails" Data..= chargeDetails)
+          ]
+      )
+
+instance Data.ToPath CreateCustomLineItem where
+  toPath = Prelude.const "/create-custom-line-item"
+
+instance Data.ToQuery CreateCustomLineItem where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateCustomLineItemResponse' smart constructor.
+data CreateCustomLineItemResponse = CreateCustomLineItemResponse'
+  { -- | The Amazon Resource Name (ARN) of the created custom line item.
+    arn :: 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 'CreateCustomLineItemResponse' 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:
+--
+-- 'arn', 'createCustomLineItemResponse_arn' - The Amazon Resource Name (ARN) of the created custom line item.
+--
+-- 'httpStatus', 'createCustomLineItemResponse_httpStatus' - The response's http status code.
+newCreateCustomLineItemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateCustomLineItemResponse
+newCreateCustomLineItemResponse pHttpStatus_ =
+  CreateCustomLineItemResponse'
+    { arn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the created custom line item.
+createCustomLineItemResponse_arn :: Lens.Lens' CreateCustomLineItemResponse (Prelude.Maybe Prelude.Text)
+createCustomLineItemResponse_arn = Lens.lens (\CreateCustomLineItemResponse' {arn} -> arn) (\s@CreateCustomLineItemResponse' {} a -> s {arn = a} :: CreateCustomLineItemResponse)
+
+-- | The response's http status code.
+createCustomLineItemResponse_httpStatus :: Lens.Lens' CreateCustomLineItemResponse Prelude.Int
+createCustomLineItemResponse_httpStatus = Lens.lens (\CreateCustomLineItemResponse' {httpStatus} -> httpStatus) (\s@CreateCustomLineItemResponse' {} a -> s {httpStatus = a} :: CreateCustomLineItemResponse)
+
+instance Prelude.NFData CreateCustomLineItemResponse where
+  rnf CreateCustomLineItemResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/CreatePricingPlan.hs b/gen/Amazonka/BillingConductor/CreatePricingPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/CreatePricingPlan.hs
@@ -0,0 +1,230 @@
+{-# 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.BillingConductor.CreatePricingPlan
+-- 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 pricing plan that is used for computing Amazon Web Services
+-- charges for billing groups.
+module Amazonka.BillingConductor.CreatePricingPlan
+  ( -- * Creating a Request
+    CreatePricingPlan (..),
+    newCreatePricingPlan,
+
+    -- * Request Lenses
+    createPricingPlan_clientToken,
+    createPricingPlan_description,
+    createPricingPlan_pricingRuleArns,
+    createPricingPlan_tags,
+    createPricingPlan_name,
+
+    -- * Destructuring the Response
+    CreatePricingPlanResponse (..),
+    newCreatePricingPlanResponse,
+
+    -- * Response Lenses
+    createPricingPlanResponse_arn,
+    createPricingPlanResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreatePricingPlan' smart constructor.
+data CreatePricingPlan = CreatePricingPlan'
+  { -- | The token that is needed to support idempotency. Idempotency isn\'t
+    -- currently supported, but will be implemented in a future update.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The description of the pricing plan.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | A list of Amazon Resource Names (ARNs) that define the pricing plan
+    -- parameters.
+    pricingRuleArns :: Prelude.Maybe [Prelude.Text],
+    -- | A map that contains tag keys and tag values that are attached to a
+    -- pricing plan.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The name of the pricing plan. The names must be unique to each pricing
+    -- plan.
+    name :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePricingPlan' 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:
+--
+-- 'clientToken', 'createPricingPlan_clientToken' - The token that is needed to support idempotency. Idempotency isn\'t
+-- currently supported, but will be implemented in a future update.
+--
+-- 'description', 'createPricingPlan_description' - The description of the pricing plan.
+--
+-- 'pricingRuleArns', 'createPricingPlan_pricingRuleArns' - A list of Amazon Resource Names (ARNs) that define the pricing plan
+-- parameters.
+--
+-- 'tags', 'createPricingPlan_tags' - A map that contains tag keys and tag values that are attached to a
+-- pricing plan.
+--
+-- 'name', 'createPricingPlan_name' - The name of the pricing plan. The names must be unique to each pricing
+-- plan.
+newCreatePricingPlan ::
+  -- | 'name'
+  Prelude.Text ->
+  CreatePricingPlan
+newCreatePricingPlan pName_ =
+  CreatePricingPlan'
+    { clientToken = Prelude.Nothing,
+      description = Prelude.Nothing,
+      pricingRuleArns = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      name = Data._Sensitive Lens.# pName_
+    }
+
+-- | The token that is needed to support idempotency. Idempotency isn\'t
+-- currently supported, but will be implemented in a future update.
+createPricingPlan_clientToken :: Lens.Lens' CreatePricingPlan (Prelude.Maybe Prelude.Text)
+createPricingPlan_clientToken = Lens.lens (\CreatePricingPlan' {clientToken} -> clientToken) (\s@CreatePricingPlan' {} a -> s {clientToken = a} :: CreatePricingPlan)
+
+-- | The description of the pricing plan.
+createPricingPlan_description :: Lens.Lens' CreatePricingPlan (Prelude.Maybe Prelude.Text)
+createPricingPlan_description = Lens.lens (\CreatePricingPlan' {description} -> description) (\s@CreatePricingPlan' {} a -> s {description = a} :: CreatePricingPlan) Prelude.. Lens.mapping Data._Sensitive
+
+-- | A list of Amazon Resource Names (ARNs) that define the pricing plan
+-- parameters.
+createPricingPlan_pricingRuleArns :: Lens.Lens' CreatePricingPlan (Prelude.Maybe [Prelude.Text])
+createPricingPlan_pricingRuleArns = Lens.lens (\CreatePricingPlan' {pricingRuleArns} -> pricingRuleArns) (\s@CreatePricingPlan' {} a -> s {pricingRuleArns = a} :: CreatePricingPlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | A map that contains tag keys and tag values that are attached to a
+-- pricing plan.
+createPricingPlan_tags :: Lens.Lens' CreatePricingPlan (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createPricingPlan_tags = Lens.lens (\CreatePricingPlan' {tags} -> tags) (\s@CreatePricingPlan' {} a -> s {tags = a} :: CreatePricingPlan) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the pricing plan. The names must be unique to each pricing
+-- plan.
+createPricingPlan_name :: Lens.Lens' CreatePricingPlan Prelude.Text
+createPricingPlan_name = Lens.lens (\CreatePricingPlan' {name} -> name) (\s@CreatePricingPlan' {} a -> s {name = a} :: CreatePricingPlan) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreatePricingPlan where
+  type
+    AWSResponse CreatePricingPlan =
+      CreatePricingPlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreatePricingPlanResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreatePricingPlan where
+  hashWithSalt _salt CreatePricingPlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` pricingRuleArns
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreatePricingPlan where
+  rnf CreatePricingPlan' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf pricingRuleArns
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreatePricingPlan where
+  toHeaders CreatePricingPlan' {..} =
+    Prelude.mconcat
+      [ "X-Amzn-Client-Token" Data.=# clientToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreatePricingPlan where
+  toJSON CreatePricingPlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("PricingRuleArns" Data..=)
+              Prelude.<$> pricingRuleArns,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreatePricingPlan where
+  toPath = Prelude.const "/create-pricing-plan"
+
+instance Data.ToQuery CreatePricingPlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreatePricingPlanResponse' smart constructor.
+data CreatePricingPlanResponse = CreatePricingPlanResponse'
+  { -- | The Amazon Resource Name (ARN) of the created pricing plan.
+    arn :: 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 'CreatePricingPlanResponse' 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:
+--
+-- 'arn', 'createPricingPlanResponse_arn' - The Amazon Resource Name (ARN) of the created pricing plan.
+--
+-- 'httpStatus', 'createPricingPlanResponse_httpStatus' - The response's http status code.
+newCreatePricingPlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePricingPlanResponse
+newCreatePricingPlanResponse pHttpStatus_ =
+  CreatePricingPlanResponse'
+    { arn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the created pricing plan.
+createPricingPlanResponse_arn :: Lens.Lens' CreatePricingPlanResponse (Prelude.Maybe Prelude.Text)
+createPricingPlanResponse_arn = Lens.lens (\CreatePricingPlanResponse' {arn} -> arn) (\s@CreatePricingPlanResponse' {} a -> s {arn = a} :: CreatePricingPlanResponse)
+
+-- | The response's http status code.
+createPricingPlanResponse_httpStatus :: Lens.Lens' CreatePricingPlanResponse Prelude.Int
+createPricingPlanResponse_httpStatus = Lens.lens (\CreatePricingPlanResponse' {httpStatus} -> httpStatus) (\s@CreatePricingPlanResponse' {} a -> s {httpStatus = a} :: CreatePricingPlanResponse)
+
+instance Prelude.NFData CreatePricingPlanResponse where
+  rnf CreatePricingPlanResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/CreatePricingRule.hs b/gen/Amazonka/BillingConductor/CreatePricingRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/CreatePricingRule.hs
@@ -0,0 +1,305 @@
+{-# 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.BillingConductor.CreatePricingRule
+-- 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 pricing rule can be associated to a pricing plan, or a set of
+-- pricing plans.
+module Amazonka.BillingConductor.CreatePricingRule
+  ( -- * Creating a Request
+    CreatePricingRule (..),
+    newCreatePricingRule,
+
+    -- * Request Lenses
+    createPricingRule_billingEntity,
+    createPricingRule_clientToken,
+    createPricingRule_description,
+    createPricingRule_modifierPercentage,
+    createPricingRule_service,
+    createPricingRule_tags,
+    createPricingRule_tiering,
+    createPricingRule_name,
+    createPricingRule_scope,
+    createPricingRule_type,
+
+    -- * Destructuring the Response
+    CreatePricingRuleResponse (..),
+    newCreatePricingRuleResponse,
+
+    -- * Response Lenses
+    createPricingRuleResponse_arn,
+    createPricingRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreatePricingRule' smart constructor.
+data CreatePricingRule = CreatePricingRule'
+  { -- | The seller of services provided by Amazon Web Services, their
+    -- affiliates, or third-party providers selling services via Amazon Web
+    -- Services Marketplace.
+    billingEntity :: Prelude.Maybe Prelude.Text,
+    -- | The token that\'s needed to support idempotency. Idempotency isn\'t
+    -- currently supported, but will be implemented in a future update.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The pricing rule description.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | A percentage modifier that\'s applied on the public pricing rates.
+    modifierPercentage :: Prelude.Maybe Prelude.Double,
+    -- | If the @Scope@ attribute is set to @SERVICE@, the attribute indicates
+    -- which service the @PricingRule@ is applicable for.
+    service :: Prelude.Maybe Prelude.Text,
+    -- | A map that contains tag keys and tag values that are attached to a
+    -- pricing rule.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The set of tiering configurations for the pricing rule.
+    tiering :: Prelude.Maybe CreateTieringInput,
+    -- | The pricing rule name. The names must be unique to each pricing rule.
+    name :: Data.Sensitive Prelude.Text,
+    -- | The scope of pricing rule that indicates if it\'s globally applicable,
+    -- or it\'s service-specific.
+    scope :: PricingRuleScope,
+    -- | The type of pricing rule.
+    type' :: PricingRuleType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePricingRule' 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:
+--
+-- 'billingEntity', 'createPricingRule_billingEntity' - The seller of services provided by Amazon Web Services, their
+-- affiliates, or third-party providers selling services via Amazon Web
+-- Services Marketplace.
+--
+-- 'clientToken', 'createPricingRule_clientToken' - The token that\'s needed to support idempotency. Idempotency isn\'t
+-- currently supported, but will be implemented in a future update.
+--
+-- 'description', 'createPricingRule_description' - The pricing rule description.
+--
+-- 'modifierPercentage', 'createPricingRule_modifierPercentage' - A percentage modifier that\'s applied on the public pricing rates.
+--
+-- 'service', 'createPricingRule_service' - If the @Scope@ attribute is set to @SERVICE@, the attribute indicates
+-- which service the @PricingRule@ is applicable for.
+--
+-- 'tags', 'createPricingRule_tags' - A map that contains tag keys and tag values that are attached to a
+-- pricing rule.
+--
+-- 'tiering', 'createPricingRule_tiering' - The set of tiering configurations for the pricing rule.
+--
+-- 'name', 'createPricingRule_name' - The pricing rule name. The names must be unique to each pricing rule.
+--
+-- 'scope', 'createPricingRule_scope' - The scope of pricing rule that indicates if it\'s globally applicable,
+-- or it\'s service-specific.
+--
+-- 'type'', 'createPricingRule_type' - The type of pricing rule.
+newCreatePricingRule ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'scope'
+  PricingRuleScope ->
+  -- | 'type''
+  PricingRuleType ->
+  CreatePricingRule
+newCreatePricingRule pName_ pScope_ pType_ =
+  CreatePricingRule'
+    { billingEntity = Prelude.Nothing,
+      clientToken = Prelude.Nothing,
+      description = Prelude.Nothing,
+      modifierPercentage = Prelude.Nothing,
+      service = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      tiering = Prelude.Nothing,
+      name = Data._Sensitive Lens.# pName_,
+      scope = pScope_,
+      type' = pType_
+    }
+
+-- | The seller of services provided by Amazon Web Services, their
+-- affiliates, or third-party providers selling services via Amazon Web
+-- Services Marketplace.
+createPricingRule_billingEntity :: Lens.Lens' CreatePricingRule (Prelude.Maybe Prelude.Text)
+createPricingRule_billingEntity = Lens.lens (\CreatePricingRule' {billingEntity} -> billingEntity) (\s@CreatePricingRule' {} a -> s {billingEntity = a} :: CreatePricingRule)
+
+-- | The token that\'s needed to support idempotency. Idempotency isn\'t
+-- currently supported, but will be implemented in a future update.
+createPricingRule_clientToken :: Lens.Lens' CreatePricingRule (Prelude.Maybe Prelude.Text)
+createPricingRule_clientToken = Lens.lens (\CreatePricingRule' {clientToken} -> clientToken) (\s@CreatePricingRule' {} a -> s {clientToken = a} :: CreatePricingRule)
+
+-- | The pricing rule description.
+createPricingRule_description :: Lens.Lens' CreatePricingRule (Prelude.Maybe Prelude.Text)
+createPricingRule_description = Lens.lens (\CreatePricingRule' {description} -> description) (\s@CreatePricingRule' {} a -> s {description = a} :: CreatePricingRule) Prelude.. Lens.mapping Data._Sensitive
+
+-- | A percentage modifier that\'s applied on the public pricing rates.
+createPricingRule_modifierPercentage :: Lens.Lens' CreatePricingRule (Prelude.Maybe Prelude.Double)
+createPricingRule_modifierPercentage = Lens.lens (\CreatePricingRule' {modifierPercentage} -> modifierPercentage) (\s@CreatePricingRule' {} a -> s {modifierPercentage = a} :: CreatePricingRule)
+
+-- | If the @Scope@ attribute is set to @SERVICE@, the attribute indicates
+-- which service the @PricingRule@ is applicable for.
+createPricingRule_service :: Lens.Lens' CreatePricingRule (Prelude.Maybe Prelude.Text)
+createPricingRule_service = Lens.lens (\CreatePricingRule' {service} -> service) (\s@CreatePricingRule' {} a -> s {service = a} :: CreatePricingRule)
+
+-- | A map that contains tag keys and tag values that are attached to a
+-- pricing rule.
+createPricingRule_tags :: Lens.Lens' CreatePricingRule (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createPricingRule_tags = Lens.lens (\CreatePricingRule' {tags} -> tags) (\s@CreatePricingRule' {} a -> s {tags = a} :: CreatePricingRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | The set of tiering configurations for the pricing rule.
+createPricingRule_tiering :: Lens.Lens' CreatePricingRule (Prelude.Maybe CreateTieringInput)
+createPricingRule_tiering = Lens.lens (\CreatePricingRule' {tiering} -> tiering) (\s@CreatePricingRule' {} a -> s {tiering = a} :: CreatePricingRule)
+
+-- | The pricing rule name. The names must be unique to each pricing rule.
+createPricingRule_name :: Lens.Lens' CreatePricingRule Prelude.Text
+createPricingRule_name = Lens.lens (\CreatePricingRule' {name} -> name) (\s@CreatePricingRule' {} a -> s {name = a} :: CreatePricingRule) Prelude.. Data._Sensitive
+
+-- | The scope of pricing rule that indicates if it\'s globally applicable,
+-- or it\'s service-specific.
+createPricingRule_scope :: Lens.Lens' CreatePricingRule PricingRuleScope
+createPricingRule_scope = Lens.lens (\CreatePricingRule' {scope} -> scope) (\s@CreatePricingRule' {} a -> s {scope = a} :: CreatePricingRule)
+
+-- | The type of pricing rule.
+createPricingRule_type :: Lens.Lens' CreatePricingRule PricingRuleType
+createPricingRule_type = Lens.lens (\CreatePricingRule' {type'} -> type') (\s@CreatePricingRule' {} a -> s {type' = a} :: CreatePricingRule)
+
+instance Core.AWSRequest CreatePricingRule where
+  type
+    AWSResponse CreatePricingRule =
+      CreatePricingRuleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreatePricingRuleResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreatePricingRule where
+  hashWithSalt _salt CreatePricingRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingEntity
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` modifierPercentage
+      `Prelude.hashWithSalt` service
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` tiering
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` scope
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CreatePricingRule where
+  rnf CreatePricingRule' {..} =
+    Prelude.rnf billingEntity
+      `Prelude.seq` Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf modifierPercentage
+      `Prelude.seq` Prelude.rnf service
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf tiering
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf scope
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders CreatePricingRule where
+  toHeaders CreatePricingRule' {..} =
+    Prelude.mconcat
+      [ "X-Amzn-Client-Token" Data.=# clientToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreatePricingRule where
+  toJSON CreatePricingRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingEntity" Data..=) Prelude.<$> billingEntity,
+            ("Description" Data..=) Prelude.<$> description,
+            ("ModifierPercentage" Data..=)
+              Prelude.<$> modifierPercentage,
+            ("Service" Data..=) Prelude.<$> service,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("Tiering" Data..=) Prelude.<$> tiering,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Scope" Data..= scope),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
+
+instance Data.ToPath CreatePricingRule where
+  toPath = Prelude.const "/create-pricing-rule"
+
+instance Data.ToQuery CreatePricingRule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreatePricingRuleResponse' smart constructor.
+data CreatePricingRuleResponse = CreatePricingRuleResponse'
+  { -- | The Amazon Resource Name (ARN) of the created pricing rule.
+    arn :: 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 'CreatePricingRuleResponse' 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:
+--
+-- 'arn', 'createPricingRuleResponse_arn' - The Amazon Resource Name (ARN) of the created pricing rule.
+--
+-- 'httpStatus', 'createPricingRuleResponse_httpStatus' - The response's http status code.
+newCreatePricingRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePricingRuleResponse
+newCreatePricingRuleResponse pHttpStatus_ =
+  CreatePricingRuleResponse'
+    { arn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the created pricing rule.
+createPricingRuleResponse_arn :: Lens.Lens' CreatePricingRuleResponse (Prelude.Maybe Prelude.Text)
+createPricingRuleResponse_arn = Lens.lens (\CreatePricingRuleResponse' {arn} -> arn) (\s@CreatePricingRuleResponse' {} a -> s {arn = a} :: CreatePricingRuleResponse)
+
+-- | The response's http status code.
+createPricingRuleResponse_httpStatus :: Lens.Lens' CreatePricingRuleResponse Prelude.Int
+createPricingRuleResponse_httpStatus = Lens.lens (\CreatePricingRuleResponse' {httpStatus} -> httpStatus) (\s@CreatePricingRuleResponse' {} a -> s {httpStatus = a} :: CreatePricingRuleResponse)
+
+instance Prelude.NFData CreatePricingRuleResponse where
+  rnf CreatePricingRuleResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/DeleteBillingGroup.hs b/gen/Amazonka/BillingConductor/DeleteBillingGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/DeleteBillingGroup.hs
@@ -0,0 +1,166 @@
+{-# 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.BillingConductor.DeleteBillingGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a billing group.
+module Amazonka.BillingConductor.DeleteBillingGroup
+  ( -- * Creating a Request
+    DeleteBillingGroup (..),
+    newDeleteBillingGroup,
+
+    -- * Request Lenses
+    deleteBillingGroup_arn,
+
+    -- * Destructuring the Response
+    DeleteBillingGroupResponse (..),
+    newDeleteBillingGroupResponse,
+
+    -- * Response Lenses
+    deleteBillingGroupResponse_arn,
+    deleteBillingGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteBillingGroup' smart constructor.
+data DeleteBillingGroup = DeleteBillingGroup'
+  { -- | The Amazon Resource Name (ARN) of the billing group that you\'re
+    -- deleting.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteBillingGroup' 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:
+--
+-- 'arn', 'deleteBillingGroup_arn' - The Amazon Resource Name (ARN) of the billing group that you\'re
+-- deleting.
+newDeleteBillingGroup ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeleteBillingGroup
+newDeleteBillingGroup pArn_ =
+  DeleteBillingGroup' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the billing group that you\'re
+-- deleting.
+deleteBillingGroup_arn :: Lens.Lens' DeleteBillingGroup Prelude.Text
+deleteBillingGroup_arn = Lens.lens (\DeleteBillingGroup' {arn} -> arn) (\s@DeleteBillingGroup' {} a -> s {arn = a} :: DeleteBillingGroup)
+
+instance Core.AWSRequest DeleteBillingGroup where
+  type
+    AWSResponse DeleteBillingGroup =
+      DeleteBillingGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteBillingGroupResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteBillingGroup where
+  hashWithSalt _salt DeleteBillingGroup' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeleteBillingGroup where
+  rnf DeleteBillingGroup' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeleteBillingGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteBillingGroup where
+  toJSON DeleteBillingGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arn" Data..= arn)]
+      )
+
+instance Data.ToPath DeleteBillingGroup where
+  toPath = Prelude.const "/delete-billing-group"
+
+instance Data.ToQuery DeleteBillingGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteBillingGroupResponse' smart constructor.
+data DeleteBillingGroupResponse = DeleteBillingGroupResponse'
+  { -- | The Amazon Resource Name (ARN) of the deleted billing group.
+    arn :: 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 'DeleteBillingGroupResponse' 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:
+--
+-- 'arn', 'deleteBillingGroupResponse_arn' - The Amazon Resource Name (ARN) of the deleted billing group.
+--
+-- 'httpStatus', 'deleteBillingGroupResponse_httpStatus' - The response's http status code.
+newDeleteBillingGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteBillingGroupResponse
+newDeleteBillingGroupResponse pHttpStatus_ =
+  DeleteBillingGroupResponse'
+    { arn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the deleted billing group.
+deleteBillingGroupResponse_arn :: Lens.Lens' DeleteBillingGroupResponse (Prelude.Maybe Prelude.Text)
+deleteBillingGroupResponse_arn = Lens.lens (\DeleteBillingGroupResponse' {arn} -> arn) (\s@DeleteBillingGroupResponse' {} a -> s {arn = a} :: DeleteBillingGroupResponse)
+
+-- | The response's http status code.
+deleteBillingGroupResponse_httpStatus :: Lens.Lens' DeleteBillingGroupResponse Prelude.Int
+deleteBillingGroupResponse_httpStatus = Lens.lens (\DeleteBillingGroupResponse' {httpStatus} -> httpStatus) (\s@DeleteBillingGroupResponse' {} a -> s {httpStatus = a} :: DeleteBillingGroupResponse)
+
+instance Prelude.NFData DeleteBillingGroupResponse where
+  rnf DeleteBillingGroupResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/DeleteCustomLineItem.hs b/gen/Amazonka/BillingConductor/DeleteCustomLineItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/DeleteCustomLineItem.hs
@@ -0,0 +1,184 @@
+{-# 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.BillingConductor.DeleteCustomLineItem
+-- 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 custom line item identified by the given ARN in the current,
+-- or previous billing period.
+module Amazonka.BillingConductor.DeleteCustomLineItem
+  ( -- * Creating a Request
+    DeleteCustomLineItem (..),
+    newDeleteCustomLineItem,
+
+    -- * Request Lenses
+    deleteCustomLineItem_billingPeriodRange,
+    deleteCustomLineItem_arn,
+
+    -- * Destructuring the Response
+    DeleteCustomLineItemResponse (..),
+    newDeleteCustomLineItemResponse,
+
+    -- * Response Lenses
+    deleteCustomLineItemResponse_arn,
+    deleteCustomLineItemResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteCustomLineItem' smart constructor.
+data DeleteCustomLineItem = DeleteCustomLineItem'
+  { billingPeriodRange :: Prelude.Maybe CustomLineItemBillingPeriodRange,
+    -- | The ARN of the custom line item to be deleted.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCustomLineItem' 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:
+--
+-- 'billingPeriodRange', 'deleteCustomLineItem_billingPeriodRange' - Undocumented member.
+--
+-- 'arn', 'deleteCustomLineItem_arn' - The ARN of the custom line item to be deleted.
+newDeleteCustomLineItem ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeleteCustomLineItem
+newDeleteCustomLineItem pArn_ =
+  DeleteCustomLineItem'
+    { billingPeriodRange =
+        Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | Undocumented member.
+deleteCustomLineItem_billingPeriodRange :: Lens.Lens' DeleteCustomLineItem (Prelude.Maybe CustomLineItemBillingPeriodRange)
+deleteCustomLineItem_billingPeriodRange = Lens.lens (\DeleteCustomLineItem' {billingPeriodRange} -> billingPeriodRange) (\s@DeleteCustomLineItem' {} a -> s {billingPeriodRange = a} :: DeleteCustomLineItem)
+
+-- | The ARN of the custom line item to be deleted.
+deleteCustomLineItem_arn :: Lens.Lens' DeleteCustomLineItem Prelude.Text
+deleteCustomLineItem_arn = Lens.lens (\DeleteCustomLineItem' {arn} -> arn) (\s@DeleteCustomLineItem' {} a -> s {arn = a} :: DeleteCustomLineItem)
+
+instance Core.AWSRequest DeleteCustomLineItem where
+  type
+    AWSResponse DeleteCustomLineItem =
+      DeleteCustomLineItemResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteCustomLineItemResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteCustomLineItem where
+  hashWithSalt _salt DeleteCustomLineItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriodRange
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeleteCustomLineItem where
+  rnf DeleteCustomLineItem' {..} =
+    Prelude.rnf billingPeriodRange
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders DeleteCustomLineItem where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteCustomLineItem where
+  toJSON DeleteCustomLineItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriodRange" Data..=)
+              Prelude.<$> billingPeriodRange,
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath DeleteCustomLineItem where
+  toPath = Prelude.const "/delete-custom-line-item"
+
+instance Data.ToQuery DeleteCustomLineItem where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteCustomLineItemResponse' smart constructor.
+data DeleteCustomLineItemResponse = DeleteCustomLineItemResponse'
+  { -- | Then ARN of the deleted custom line item.
+    arn :: 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 'DeleteCustomLineItemResponse' 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:
+--
+-- 'arn', 'deleteCustomLineItemResponse_arn' - Then ARN of the deleted custom line item.
+--
+-- 'httpStatus', 'deleteCustomLineItemResponse_httpStatus' - The response's http status code.
+newDeleteCustomLineItemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteCustomLineItemResponse
+newDeleteCustomLineItemResponse pHttpStatus_ =
+  DeleteCustomLineItemResponse'
+    { arn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Then ARN of the deleted custom line item.
+deleteCustomLineItemResponse_arn :: Lens.Lens' DeleteCustomLineItemResponse (Prelude.Maybe Prelude.Text)
+deleteCustomLineItemResponse_arn = Lens.lens (\DeleteCustomLineItemResponse' {arn} -> arn) (\s@DeleteCustomLineItemResponse' {} a -> s {arn = a} :: DeleteCustomLineItemResponse)
+
+-- | The response's http status code.
+deleteCustomLineItemResponse_httpStatus :: Lens.Lens' DeleteCustomLineItemResponse Prelude.Int
+deleteCustomLineItemResponse_httpStatus = Lens.lens (\DeleteCustomLineItemResponse' {httpStatus} -> httpStatus) (\s@DeleteCustomLineItemResponse' {} a -> s {httpStatus = a} :: DeleteCustomLineItemResponse)
+
+instance Prelude.NFData DeleteCustomLineItemResponse where
+  rnf DeleteCustomLineItemResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/DeletePricingPlan.hs b/gen/Amazonka/BillingConductor/DeletePricingPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/DeletePricingPlan.hs
@@ -0,0 +1,167 @@
+{-# 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.BillingConductor.DeletePricingPlan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a pricing plan. The pricing plan must not be associated with any
+-- billing groups to delete successfully.
+module Amazonka.BillingConductor.DeletePricingPlan
+  ( -- * Creating a Request
+    DeletePricingPlan (..),
+    newDeletePricingPlan,
+
+    -- * Request Lenses
+    deletePricingPlan_arn,
+
+    -- * Destructuring the Response
+    DeletePricingPlanResponse (..),
+    newDeletePricingPlanResponse,
+
+    -- * Response Lenses
+    deletePricingPlanResponse_arn,
+    deletePricingPlanResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeletePricingPlan' smart constructor.
+data DeletePricingPlan = DeletePricingPlan'
+  { -- | The Amazon Resource Name (ARN) of the pricing plan that you\'re
+    -- deleting.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePricingPlan' 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:
+--
+-- 'arn', 'deletePricingPlan_arn' - The Amazon Resource Name (ARN) of the pricing plan that you\'re
+-- deleting.
+newDeletePricingPlan ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeletePricingPlan
+newDeletePricingPlan pArn_ =
+  DeletePricingPlan' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the pricing plan that you\'re
+-- deleting.
+deletePricingPlan_arn :: Lens.Lens' DeletePricingPlan Prelude.Text
+deletePricingPlan_arn = Lens.lens (\DeletePricingPlan' {arn} -> arn) (\s@DeletePricingPlan' {} a -> s {arn = a} :: DeletePricingPlan)
+
+instance Core.AWSRequest DeletePricingPlan where
+  type
+    AWSResponse DeletePricingPlan =
+      DeletePricingPlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeletePricingPlanResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeletePricingPlan where
+  hashWithSalt _salt DeletePricingPlan' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeletePricingPlan where
+  rnf DeletePricingPlan' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeletePricingPlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeletePricingPlan where
+  toJSON DeletePricingPlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arn" Data..= arn)]
+      )
+
+instance Data.ToPath DeletePricingPlan where
+  toPath = Prelude.const "/delete-pricing-plan"
+
+instance Data.ToQuery DeletePricingPlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeletePricingPlanResponse' smart constructor.
+data DeletePricingPlanResponse = DeletePricingPlanResponse'
+  { -- | The Amazon Resource Name (ARN) of the deleted pricing plan.
+    arn :: 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 'DeletePricingPlanResponse' 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:
+--
+-- 'arn', 'deletePricingPlanResponse_arn' - The Amazon Resource Name (ARN) of the deleted pricing plan.
+--
+-- 'httpStatus', 'deletePricingPlanResponse_httpStatus' - The response's http status code.
+newDeletePricingPlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeletePricingPlanResponse
+newDeletePricingPlanResponse pHttpStatus_ =
+  DeletePricingPlanResponse'
+    { arn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the deleted pricing plan.
+deletePricingPlanResponse_arn :: Lens.Lens' DeletePricingPlanResponse (Prelude.Maybe Prelude.Text)
+deletePricingPlanResponse_arn = Lens.lens (\DeletePricingPlanResponse' {arn} -> arn) (\s@DeletePricingPlanResponse' {} a -> s {arn = a} :: DeletePricingPlanResponse)
+
+-- | The response's http status code.
+deletePricingPlanResponse_httpStatus :: Lens.Lens' DeletePricingPlanResponse Prelude.Int
+deletePricingPlanResponse_httpStatus = Lens.lens (\DeletePricingPlanResponse' {httpStatus} -> httpStatus) (\s@DeletePricingPlanResponse' {} a -> s {httpStatus = a} :: DeletePricingPlanResponse)
+
+instance Prelude.NFData DeletePricingPlanResponse where
+  rnf DeletePricingPlanResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/DeletePricingRule.hs b/gen/Amazonka/BillingConductor/DeletePricingRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/DeletePricingRule.hs
@@ -0,0 +1,167 @@
+{-# 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.BillingConductor.DeletePricingRule
+-- 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 pricing rule that\'s identified by the input Amazon Resource
+-- Name (ARN).
+module Amazonka.BillingConductor.DeletePricingRule
+  ( -- * Creating a Request
+    DeletePricingRule (..),
+    newDeletePricingRule,
+
+    -- * Request Lenses
+    deletePricingRule_arn,
+
+    -- * Destructuring the Response
+    DeletePricingRuleResponse (..),
+    newDeletePricingRuleResponse,
+
+    -- * Response Lenses
+    deletePricingRuleResponse_arn,
+    deletePricingRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeletePricingRule' smart constructor.
+data DeletePricingRule = DeletePricingRule'
+  { -- | The Amazon Resource Name (ARN) of the pricing rule that you are
+    -- deleting.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePricingRule' 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:
+--
+-- 'arn', 'deletePricingRule_arn' - The Amazon Resource Name (ARN) of the pricing rule that you are
+-- deleting.
+newDeletePricingRule ::
+  -- | 'arn'
+  Prelude.Text ->
+  DeletePricingRule
+newDeletePricingRule pArn_ =
+  DeletePricingRule' {arn = pArn_}
+
+-- | The Amazon Resource Name (ARN) of the pricing rule that you are
+-- deleting.
+deletePricingRule_arn :: Lens.Lens' DeletePricingRule Prelude.Text
+deletePricingRule_arn = Lens.lens (\DeletePricingRule' {arn} -> arn) (\s@DeletePricingRule' {} a -> s {arn = a} :: DeletePricingRule)
+
+instance Core.AWSRequest DeletePricingRule where
+  type
+    AWSResponse DeletePricingRule =
+      DeletePricingRuleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeletePricingRuleResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeletePricingRule where
+  hashWithSalt _salt DeletePricingRule' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeletePricingRule where
+  rnf DeletePricingRule' {..} = Prelude.rnf arn
+
+instance Data.ToHeaders DeletePricingRule where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeletePricingRule where
+  toJSON DeletePricingRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Arn" Data..= arn)]
+      )
+
+instance Data.ToPath DeletePricingRule where
+  toPath = Prelude.const "/delete-pricing-rule"
+
+instance Data.ToQuery DeletePricingRule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeletePricingRuleResponse' smart constructor.
+data DeletePricingRuleResponse = DeletePricingRuleResponse'
+  { -- | The Amazon Resource Name (ARN) of the deleted pricing rule.
+    arn :: 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 'DeletePricingRuleResponse' 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:
+--
+-- 'arn', 'deletePricingRuleResponse_arn' - The Amazon Resource Name (ARN) of the deleted pricing rule.
+--
+-- 'httpStatus', 'deletePricingRuleResponse_httpStatus' - The response's http status code.
+newDeletePricingRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeletePricingRuleResponse
+newDeletePricingRuleResponse pHttpStatus_ =
+  DeletePricingRuleResponse'
+    { arn = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the deleted pricing rule.
+deletePricingRuleResponse_arn :: Lens.Lens' DeletePricingRuleResponse (Prelude.Maybe Prelude.Text)
+deletePricingRuleResponse_arn = Lens.lens (\DeletePricingRuleResponse' {arn} -> arn) (\s@DeletePricingRuleResponse' {} a -> s {arn = a} :: DeletePricingRuleResponse)
+
+-- | The response's http status code.
+deletePricingRuleResponse_httpStatus :: Lens.Lens' DeletePricingRuleResponse Prelude.Int
+deletePricingRuleResponse_httpStatus = Lens.lens (\DeletePricingRuleResponse' {httpStatus} -> httpStatus) (\s@DeletePricingRuleResponse' {} a -> s {httpStatus = a} :: DeletePricingRuleResponse)
+
+instance Prelude.NFData DeletePricingRuleResponse where
+  rnf DeletePricingRuleResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/DisassociateAccounts.hs b/gen/Amazonka/BillingConductor/DisassociateAccounts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/DisassociateAccounts.hs
@@ -0,0 +1,190 @@
+{-# 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.BillingConductor.DisassociateAccounts
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the specified list of account IDs from the given billing group.
+module Amazonka.BillingConductor.DisassociateAccounts
+  ( -- * Creating a Request
+    DisassociateAccounts (..),
+    newDisassociateAccounts,
+
+    -- * Request Lenses
+    disassociateAccounts_arn,
+    disassociateAccounts_accountIds,
+
+    -- * Destructuring the Response
+    DisassociateAccountsResponse (..),
+    newDisassociateAccountsResponse,
+
+    -- * Response Lenses
+    disassociateAccountsResponse_arn,
+    disassociateAccountsResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateAccounts' smart constructor.
+data DisassociateAccounts = DisassociateAccounts'
+  { -- | The Amazon Resource Name (ARN) of the billing group that the array of
+    -- account IDs will disassociate from.
+    arn :: Prelude.Text,
+    -- | The array of account IDs to disassociate.
+    accountIds :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateAccounts' 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:
+--
+-- 'arn', 'disassociateAccounts_arn' - The Amazon Resource Name (ARN) of the billing group that the array of
+-- account IDs will disassociate from.
+--
+-- 'accountIds', 'disassociateAccounts_accountIds' - The array of account IDs to disassociate.
+newDisassociateAccounts ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'accountIds'
+  Prelude.NonEmpty Prelude.Text ->
+  DisassociateAccounts
+newDisassociateAccounts pArn_ pAccountIds_ =
+  DisassociateAccounts'
+    { arn = pArn_,
+      accountIds = Lens.coerced Lens.# pAccountIds_
+    }
+
+-- | The Amazon Resource Name (ARN) of the billing group that the array of
+-- account IDs will disassociate from.
+disassociateAccounts_arn :: Lens.Lens' DisassociateAccounts Prelude.Text
+disassociateAccounts_arn = Lens.lens (\DisassociateAccounts' {arn} -> arn) (\s@DisassociateAccounts' {} a -> s {arn = a} :: DisassociateAccounts)
+
+-- | The array of account IDs to disassociate.
+disassociateAccounts_accountIds :: Lens.Lens' DisassociateAccounts (Prelude.NonEmpty Prelude.Text)
+disassociateAccounts_accountIds = Lens.lens (\DisassociateAccounts' {accountIds} -> accountIds) (\s@DisassociateAccounts' {} a -> s {accountIds = a} :: DisassociateAccounts) Prelude.. Lens.coerced
+
+instance Core.AWSRequest DisassociateAccounts where
+  type
+    AWSResponse DisassociateAccounts =
+      DisassociateAccountsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateAccountsResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociateAccounts where
+  hashWithSalt _salt DisassociateAccounts' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` accountIds
+
+instance Prelude.NFData DisassociateAccounts where
+  rnf DisassociateAccounts' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf accountIds
+
+instance Data.ToHeaders DisassociateAccounts where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateAccounts where
+  toJSON DisassociateAccounts' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just ("AccountIds" Data..= accountIds)
+          ]
+      )
+
+instance Data.ToPath DisassociateAccounts where
+  toPath = Prelude.const "/disassociate-accounts"
+
+instance Data.ToQuery DisassociateAccounts where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateAccountsResponse' smart constructor.
+data DisassociateAccountsResponse = DisassociateAccountsResponse'
+  { -- | The Amazon Resource Name (ARN) of the billing group that the array of
+    -- account IDs is disassociated from.
+    arn :: 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 'DisassociateAccountsResponse' 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:
+--
+-- 'arn', 'disassociateAccountsResponse_arn' - The Amazon Resource Name (ARN) of the billing group that the array of
+-- account IDs is disassociated from.
+--
+-- 'httpStatus', 'disassociateAccountsResponse_httpStatus' - The response's http status code.
+newDisassociateAccountsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateAccountsResponse
+newDisassociateAccountsResponse pHttpStatus_ =
+  DisassociateAccountsResponse'
+    { arn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the billing group that the array of
+-- account IDs is disassociated from.
+disassociateAccountsResponse_arn :: Lens.Lens' DisassociateAccountsResponse (Prelude.Maybe Prelude.Text)
+disassociateAccountsResponse_arn = Lens.lens (\DisassociateAccountsResponse' {arn} -> arn) (\s@DisassociateAccountsResponse' {} a -> s {arn = a} :: DisassociateAccountsResponse)
+
+-- | The response's http status code.
+disassociateAccountsResponse_httpStatus :: Lens.Lens' DisassociateAccountsResponse Prelude.Int
+disassociateAccountsResponse_httpStatus = Lens.lens (\DisassociateAccountsResponse' {httpStatus} -> httpStatus) (\s@DisassociateAccountsResponse' {} a -> s {httpStatus = a} :: DisassociateAccountsResponse)
+
+instance Prelude.NFData DisassociateAccountsResponse where
+  rnf DisassociateAccountsResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/DisassociatePricingRules.hs b/gen/Amazonka/BillingConductor/DisassociatePricingRules.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/DisassociatePricingRules.hs
@@ -0,0 +1,198 @@
+{-# 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.BillingConductor.DisassociatePricingRules
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates a list of pricing rules from a pricing plan.
+module Amazonka.BillingConductor.DisassociatePricingRules
+  ( -- * Creating a Request
+    DisassociatePricingRules (..),
+    newDisassociatePricingRules,
+
+    -- * Request Lenses
+    disassociatePricingRules_arn,
+    disassociatePricingRules_pricingRuleArns,
+
+    -- * Destructuring the Response
+    DisassociatePricingRulesResponse (..),
+    newDisassociatePricingRulesResponse,
+
+    -- * Response Lenses
+    disassociatePricingRulesResponse_arn,
+    disassociatePricingRulesResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociatePricingRules' smart constructor.
+data DisassociatePricingRules = DisassociatePricingRules'
+  { -- | The pricing plan Amazon Resource Name (ARN) to disassociate pricing
+    -- rules from.
+    arn :: Prelude.Text,
+    -- | A list containing the Amazon Resource Name (ARN) of the pricing rules
+    -- that will be disassociated.
+    pricingRuleArns :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociatePricingRules' 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:
+--
+-- 'arn', 'disassociatePricingRules_arn' - The pricing plan Amazon Resource Name (ARN) to disassociate pricing
+-- rules from.
+--
+-- 'pricingRuleArns', 'disassociatePricingRules_pricingRuleArns' - A list containing the Amazon Resource Name (ARN) of the pricing rules
+-- that will be disassociated.
+newDisassociatePricingRules ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'pricingRuleArns'
+  Prelude.NonEmpty Prelude.Text ->
+  DisassociatePricingRules
+newDisassociatePricingRules pArn_ pPricingRuleArns_ =
+  DisassociatePricingRules'
+    { arn = pArn_,
+      pricingRuleArns =
+        Lens.coerced Lens.# pPricingRuleArns_
+    }
+
+-- | The pricing plan Amazon Resource Name (ARN) to disassociate pricing
+-- rules from.
+disassociatePricingRules_arn :: Lens.Lens' DisassociatePricingRules Prelude.Text
+disassociatePricingRules_arn = Lens.lens (\DisassociatePricingRules' {arn} -> arn) (\s@DisassociatePricingRules' {} a -> s {arn = a} :: DisassociatePricingRules)
+
+-- | A list containing the Amazon Resource Name (ARN) of the pricing rules
+-- that will be disassociated.
+disassociatePricingRules_pricingRuleArns :: Lens.Lens' DisassociatePricingRules (Prelude.NonEmpty Prelude.Text)
+disassociatePricingRules_pricingRuleArns = Lens.lens (\DisassociatePricingRules' {pricingRuleArns} -> pricingRuleArns) (\s@DisassociatePricingRules' {} a -> s {pricingRuleArns = a} :: DisassociatePricingRules) Prelude.. Lens.coerced
+
+instance Core.AWSRequest DisassociatePricingRules where
+  type
+    AWSResponse DisassociatePricingRules =
+      DisassociatePricingRulesResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociatePricingRulesResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociatePricingRules where
+  hashWithSalt _salt DisassociatePricingRules' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` pricingRuleArns
+
+instance Prelude.NFData DisassociatePricingRules where
+  rnf DisassociatePricingRules' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf pricingRuleArns
+
+instance Data.ToHeaders DisassociatePricingRules where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociatePricingRules where
+  toJSON DisassociatePricingRules' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just
+              ("PricingRuleArns" Data..= pricingRuleArns)
+          ]
+      )
+
+instance Data.ToPath DisassociatePricingRules where
+  toPath = Prelude.const "/disassociate-pricing-rules"
+
+instance Data.ToQuery DisassociatePricingRules where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociatePricingRulesResponse' smart constructor.
+data DisassociatePricingRulesResponse = DisassociatePricingRulesResponse'
+  { -- | The Amazon Resource Name (ARN) of the pricing plan that the pricing
+    -- rules successfully disassociated from.
+    arn :: 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 'DisassociatePricingRulesResponse' 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:
+--
+-- 'arn', 'disassociatePricingRulesResponse_arn' - The Amazon Resource Name (ARN) of the pricing plan that the pricing
+-- rules successfully disassociated from.
+--
+-- 'httpStatus', 'disassociatePricingRulesResponse_httpStatus' - The response's http status code.
+newDisassociatePricingRulesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociatePricingRulesResponse
+newDisassociatePricingRulesResponse pHttpStatus_ =
+  DisassociatePricingRulesResponse'
+    { arn =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the pricing plan that the pricing
+-- rules successfully disassociated from.
+disassociatePricingRulesResponse_arn :: Lens.Lens' DisassociatePricingRulesResponse (Prelude.Maybe Prelude.Text)
+disassociatePricingRulesResponse_arn = Lens.lens (\DisassociatePricingRulesResponse' {arn} -> arn) (\s@DisassociatePricingRulesResponse' {} a -> s {arn = a} :: DisassociatePricingRulesResponse)
+
+-- | The response's http status code.
+disassociatePricingRulesResponse_httpStatus :: Lens.Lens' DisassociatePricingRulesResponse Prelude.Int
+disassociatePricingRulesResponse_httpStatus = Lens.lens (\DisassociatePricingRulesResponse' {httpStatus} -> httpStatus) (\s@DisassociatePricingRulesResponse' {} a -> s {httpStatus = a} :: DisassociatePricingRulesResponse)
+
+instance
+  Prelude.NFData
+    DisassociatePricingRulesResponse
+  where
+  rnf DisassociatePricingRulesResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/Lens.hs b/gen/Amazonka/BillingConductor/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Lens.hs
@@ -0,0 +1,553 @@
+{-# 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.BillingConductor.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.BillingConductor.Lens
+  ( -- * Operations
+
+    -- ** AssociateAccounts
+    associateAccounts_arn,
+    associateAccounts_accountIds,
+    associateAccountsResponse_arn,
+    associateAccountsResponse_httpStatus,
+
+    -- ** AssociatePricingRules
+    associatePricingRules_arn,
+    associatePricingRules_pricingRuleArns,
+    associatePricingRulesResponse_arn,
+    associatePricingRulesResponse_httpStatus,
+
+    -- ** BatchAssociateResourcesToCustomLineItem
+    batchAssociateResourcesToCustomLineItem_billingPeriodRange,
+    batchAssociateResourcesToCustomLineItem_targetArn,
+    batchAssociateResourcesToCustomLineItem_resourceArns,
+    batchAssociateResourcesToCustomLineItemResponse_failedAssociatedResources,
+    batchAssociateResourcesToCustomLineItemResponse_successfullyAssociatedResources,
+    batchAssociateResourcesToCustomLineItemResponse_httpStatus,
+
+    -- ** BatchDisassociateResourcesFromCustomLineItem
+    batchDisassociateResourcesFromCustomLineItem_billingPeriodRange,
+    batchDisassociateResourcesFromCustomLineItem_targetArn,
+    batchDisassociateResourcesFromCustomLineItem_resourceArns,
+    batchDisassociateResourcesFromCustomLineItemResponse_failedDisassociatedResources,
+    batchDisassociateResourcesFromCustomLineItemResponse_successfullyDisassociatedResources,
+    batchDisassociateResourcesFromCustomLineItemResponse_httpStatus,
+
+    -- ** CreateBillingGroup
+    createBillingGroup_clientToken,
+    createBillingGroup_description,
+    createBillingGroup_primaryAccountId,
+    createBillingGroup_tags,
+    createBillingGroup_name,
+    createBillingGroup_accountGrouping,
+    createBillingGroup_computationPreference,
+    createBillingGroupResponse_arn,
+    createBillingGroupResponse_httpStatus,
+
+    -- ** CreateCustomLineItem
+    createCustomLineItem_billingPeriodRange,
+    createCustomLineItem_clientToken,
+    createCustomLineItem_tags,
+    createCustomLineItem_name,
+    createCustomLineItem_description,
+    createCustomLineItem_billingGroupArn,
+    createCustomLineItem_chargeDetails,
+    createCustomLineItemResponse_arn,
+    createCustomLineItemResponse_httpStatus,
+
+    -- ** CreatePricingPlan
+    createPricingPlan_clientToken,
+    createPricingPlan_description,
+    createPricingPlan_pricingRuleArns,
+    createPricingPlan_tags,
+    createPricingPlan_name,
+    createPricingPlanResponse_arn,
+    createPricingPlanResponse_httpStatus,
+
+    -- ** CreatePricingRule
+    createPricingRule_billingEntity,
+    createPricingRule_clientToken,
+    createPricingRule_description,
+    createPricingRule_modifierPercentage,
+    createPricingRule_service,
+    createPricingRule_tags,
+    createPricingRule_tiering,
+    createPricingRule_name,
+    createPricingRule_scope,
+    createPricingRule_type,
+    createPricingRuleResponse_arn,
+    createPricingRuleResponse_httpStatus,
+
+    -- ** DeleteBillingGroup
+    deleteBillingGroup_arn,
+    deleteBillingGroupResponse_arn,
+    deleteBillingGroupResponse_httpStatus,
+
+    -- ** DeleteCustomLineItem
+    deleteCustomLineItem_billingPeriodRange,
+    deleteCustomLineItem_arn,
+    deleteCustomLineItemResponse_arn,
+    deleteCustomLineItemResponse_httpStatus,
+
+    -- ** DeletePricingPlan
+    deletePricingPlan_arn,
+    deletePricingPlanResponse_arn,
+    deletePricingPlanResponse_httpStatus,
+
+    -- ** DeletePricingRule
+    deletePricingRule_arn,
+    deletePricingRuleResponse_arn,
+    deletePricingRuleResponse_httpStatus,
+
+    -- ** DisassociateAccounts
+    disassociateAccounts_arn,
+    disassociateAccounts_accountIds,
+    disassociateAccountsResponse_arn,
+    disassociateAccountsResponse_httpStatus,
+
+    -- ** DisassociatePricingRules
+    disassociatePricingRules_arn,
+    disassociatePricingRules_pricingRuleArns,
+    disassociatePricingRulesResponse_arn,
+    disassociatePricingRulesResponse_httpStatus,
+
+    -- ** ListAccountAssociations
+    listAccountAssociations_billingPeriod,
+    listAccountAssociations_filters,
+    listAccountAssociations_nextToken,
+    listAccountAssociationsResponse_linkedAccounts,
+    listAccountAssociationsResponse_nextToken,
+    listAccountAssociationsResponse_httpStatus,
+
+    -- ** ListBillingGroupCostReports
+    listBillingGroupCostReports_billingPeriod,
+    listBillingGroupCostReports_filters,
+    listBillingGroupCostReports_maxResults,
+    listBillingGroupCostReports_nextToken,
+    listBillingGroupCostReportsResponse_billingGroupCostReports,
+    listBillingGroupCostReportsResponse_nextToken,
+    listBillingGroupCostReportsResponse_httpStatus,
+
+    -- ** ListBillingGroups
+    listBillingGroups_billingPeriod,
+    listBillingGroups_filters,
+    listBillingGroups_maxResults,
+    listBillingGroups_nextToken,
+    listBillingGroupsResponse_billingGroups,
+    listBillingGroupsResponse_nextToken,
+    listBillingGroupsResponse_httpStatus,
+
+    -- ** ListCustomLineItemVersions
+    listCustomLineItemVersions_filters,
+    listCustomLineItemVersions_maxResults,
+    listCustomLineItemVersions_nextToken,
+    listCustomLineItemVersions_arn,
+    listCustomLineItemVersionsResponse_customLineItemVersions,
+    listCustomLineItemVersionsResponse_nextToken,
+    listCustomLineItemVersionsResponse_httpStatus,
+
+    -- ** ListCustomLineItems
+    listCustomLineItems_billingPeriod,
+    listCustomLineItems_filters,
+    listCustomLineItems_maxResults,
+    listCustomLineItems_nextToken,
+    listCustomLineItemsResponse_customLineItems,
+    listCustomLineItemsResponse_nextToken,
+    listCustomLineItemsResponse_httpStatus,
+
+    -- ** ListPricingPlans
+    listPricingPlans_billingPeriod,
+    listPricingPlans_filters,
+    listPricingPlans_maxResults,
+    listPricingPlans_nextToken,
+    listPricingPlansResponse_billingPeriod,
+    listPricingPlansResponse_nextToken,
+    listPricingPlansResponse_pricingPlans,
+    listPricingPlansResponse_httpStatus,
+
+    -- ** ListPricingPlansAssociatedWithPricingRule
+    listPricingPlansAssociatedWithPricingRule_billingPeriod,
+    listPricingPlansAssociatedWithPricingRule_maxResults,
+    listPricingPlansAssociatedWithPricingRule_nextToken,
+    listPricingPlansAssociatedWithPricingRule_pricingRuleArn,
+    listPricingPlansAssociatedWithPricingRuleResponse_billingPeriod,
+    listPricingPlansAssociatedWithPricingRuleResponse_nextToken,
+    listPricingPlansAssociatedWithPricingRuleResponse_pricingPlanArns,
+    listPricingPlansAssociatedWithPricingRuleResponse_pricingRuleArn,
+    listPricingPlansAssociatedWithPricingRuleResponse_httpStatus,
+
+    -- ** ListPricingRules
+    listPricingRules_billingPeriod,
+    listPricingRules_filters,
+    listPricingRules_maxResults,
+    listPricingRules_nextToken,
+    listPricingRulesResponse_billingPeriod,
+    listPricingRulesResponse_nextToken,
+    listPricingRulesResponse_pricingRules,
+    listPricingRulesResponse_httpStatus,
+
+    -- ** ListPricingRulesAssociatedToPricingPlan
+    listPricingRulesAssociatedToPricingPlan_billingPeriod,
+    listPricingRulesAssociatedToPricingPlan_maxResults,
+    listPricingRulesAssociatedToPricingPlan_nextToken,
+    listPricingRulesAssociatedToPricingPlan_pricingPlanArn,
+    listPricingRulesAssociatedToPricingPlanResponse_billingPeriod,
+    listPricingRulesAssociatedToPricingPlanResponse_nextToken,
+    listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn,
+    listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns,
+    listPricingRulesAssociatedToPricingPlanResponse_httpStatus,
+
+    -- ** ListResourcesAssociatedToCustomLineItem
+    listResourcesAssociatedToCustomLineItem_billingPeriod,
+    listResourcesAssociatedToCustomLineItem_filters,
+    listResourcesAssociatedToCustomLineItem_maxResults,
+    listResourcesAssociatedToCustomLineItem_nextToken,
+    listResourcesAssociatedToCustomLineItem_arn,
+    listResourcesAssociatedToCustomLineItemResponse_arn,
+    listResourcesAssociatedToCustomLineItemResponse_associatedResources,
+    listResourcesAssociatedToCustomLineItemResponse_nextToken,
+    listResourcesAssociatedToCustomLineItemResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdateBillingGroup
+    updateBillingGroup_computationPreference,
+    updateBillingGroup_description,
+    updateBillingGroup_name,
+    updateBillingGroup_status,
+    updateBillingGroup_arn,
+    updateBillingGroupResponse_arn,
+    updateBillingGroupResponse_description,
+    updateBillingGroupResponse_lastModifiedTime,
+    updateBillingGroupResponse_name,
+    updateBillingGroupResponse_pricingPlanArn,
+    updateBillingGroupResponse_primaryAccountId,
+    updateBillingGroupResponse_size,
+    updateBillingGroupResponse_status,
+    updateBillingGroupResponse_statusReason,
+    updateBillingGroupResponse_httpStatus,
+
+    -- ** UpdateCustomLineItem
+    updateCustomLineItem_billingPeriodRange,
+    updateCustomLineItem_chargeDetails,
+    updateCustomLineItem_description,
+    updateCustomLineItem_name,
+    updateCustomLineItem_arn,
+    updateCustomLineItemResponse_arn,
+    updateCustomLineItemResponse_associationSize,
+    updateCustomLineItemResponse_billingGroupArn,
+    updateCustomLineItemResponse_chargeDetails,
+    updateCustomLineItemResponse_description,
+    updateCustomLineItemResponse_lastModifiedTime,
+    updateCustomLineItemResponse_name,
+    updateCustomLineItemResponse_httpStatus,
+
+    -- ** UpdatePricingPlan
+    updatePricingPlan_description,
+    updatePricingPlan_name,
+    updatePricingPlan_arn,
+    updatePricingPlanResponse_arn,
+    updatePricingPlanResponse_description,
+    updatePricingPlanResponse_lastModifiedTime,
+    updatePricingPlanResponse_name,
+    updatePricingPlanResponse_size,
+    updatePricingPlanResponse_httpStatus,
+
+    -- ** UpdatePricingRule
+    updatePricingRule_description,
+    updatePricingRule_modifierPercentage,
+    updatePricingRule_name,
+    updatePricingRule_tiering,
+    updatePricingRule_type,
+    updatePricingRule_arn,
+    updatePricingRuleResponse_arn,
+    updatePricingRuleResponse_associatedPricingPlanCount,
+    updatePricingRuleResponse_billingEntity,
+    updatePricingRuleResponse_description,
+    updatePricingRuleResponse_lastModifiedTime,
+    updatePricingRuleResponse_modifierPercentage,
+    updatePricingRuleResponse_name,
+    updatePricingRuleResponse_scope,
+    updatePricingRuleResponse_service,
+    updatePricingRuleResponse_tiering,
+    updatePricingRuleResponse_type,
+    updatePricingRuleResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AccountAssociationsListElement
+    accountAssociationsListElement_accountEmail,
+    accountAssociationsListElement_accountId,
+    accountAssociationsListElement_accountName,
+    accountAssociationsListElement_billingGroupArn,
+
+    -- ** AccountGrouping
+    accountGrouping_linkedAccountIds,
+
+    -- ** AssociateResourceError
+    associateResourceError_message,
+    associateResourceError_reason,
+
+    -- ** AssociateResourceResponseElement
+    associateResourceResponseElement_arn,
+    associateResourceResponseElement_error,
+
+    -- ** BillingGroupCostReportElement
+    billingGroupCostReportElement_aWSCost,
+    billingGroupCostReportElement_arn,
+    billingGroupCostReportElement_currency,
+    billingGroupCostReportElement_margin,
+    billingGroupCostReportElement_marginPercentage,
+    billingGroupCostReportElement_proformaCost,
+
+    -- ** BillingGroupListElement
+    billingGroupListElement_arn,
+    billingGroupListElement_computationPreference,
+    billingGroupListElement_creationTime,
+    billingGroupListElement_description,
+    billingGroupListElement_lastModifiedTime,
+    billingGroupListElement_name,
+    billingGroupListElement_primaryAccountId,
+    billingGroupListElement_size,
+    billingGroupListElement_status,
+    billingGroupListElement_statusReason,
+
+    -- ** ComputationPreference
+    computationPreference_pricingPlanArn,
+
+    -- ** CreateFreeTierConfig
+    createFreeTierConfig_activated,
+
+    -- ** CreateTieringInput
+    createTieringInput_freeTier,
+
+    -- ** CustomLineItemBillingPeriodRange
+    customLineItemBillingPeriodRange_exclusiveEndBillingPeriod,
+    customLineItemBillingPeriodRange_inclusiveStartBillingPeriod,
+
+    -- ** CustomLineItemChargeDetails
+    customLineItemChargeDetails_flat,
+    customLineItemChargeDetails_percentage,
+    customLineItemChargeDetails_type,
+
+    -- ** CustomLineItemFlatChargeDetails
+    customLineItemFlatChargeDetails_chargeValue,
+
+    -- ** CustomLineItemListElement
+    customLineItemListElement_arn,
+    customLineItemListElement_associationSize,
+    customLineItemListElement_billingGroupArn,
+    customLineItemListElement_chargeDetails,
+    customLineItemListElement_creationTime,
+    customLineItemListElement_currencyCode,
+    customLineItemListElement_description,
+    customLineItemListElement_lastModifiedTime,
+    customLineItemListElement_name,
+    customLineItemListElement_productCode,
+
+    -- ** CustomLineItemPercentageChargeDetails
+    customLineItemPercentageChargeDetails_associatedValues,
+    customLineItemPercentageChargeDetails_percentageValue,
+
+    -- ** CustomLineItemVersionListElement
+    customLineItemVersionListElement_associationSize,
+    customLineItemVersionListElement_billingGroupArn,
+    customLineItemVersionListElement_chargeDetails,
+    customLineItemVersionListElement_creationTime,
+    customLineItemVersionListElement_currencyCode,
+    customLineItemVersionListElement_description,
+    customLineItemVersionListElement_endBillingPeriod,
+    customLineItemVersionListElement_lastModifiedTime,
+    customLineItemVersionListElement_name,
+    customLineItemVersionListElement_productCode,
+    customLineItemVersionListElement_startBillingPeriod,
+
+    -- ** DisassociateResourceResponseElement
+    disassociateResourceResponseElement_arn,
+    disassociateResourceResponseElement_error,
+
+    -- ** FreeTierConfig
+    freeTierConfig_activated,
+
+    -- ** ListAccountAssociationsFilter
+    listAccountAssociationsFilter_accountId,
+    listAccountAssociationsFilter_association,
+
+    -- ** ListBillingGroupCostReportsFilter
+    listBillingGroupCostReportsFilter_billingGroupArns,
+
+    -- ** ListBillingGroupsFilter
+    listBillingGroupsFilter_arns,
+    listBillingGroupsFilter_pricingPlan,
+
+    -- ** ListCustomLineItemChargeDetails
+    listCustomLineItemChargeDetails_flat,
+    listCustomLineItemChargeDetails_percentage,
+    listCustomLineItemChargeDetails_type,
+
+    -- ** ListCustomLineItemFlatChargeDetails
+    listCustomLineItemFlatChargeDetails_chargeValue,
+
+    -- ** ListCustomLineItemPercentageChargeDetails
+    listCustomLineItemPercentageChargeDetails_percentageValue,
+
+    -- ** ListCustomLineItemVersionsBillingPeriodRangeFilter
+    listCustomLineItemVersionsBillingPeriodRangeFilter_endBillingPeriod,
+    listCustomLineItemVersionsBillingPeriodRangeFilter_startBillingPeriod,
+
+    -- ** ListCustomLineItemVersionsFilter
+    listCustomLineItemVersionsFilter_billingPeriodRange,
+
+    -- ** ListCustomLineItemsFilter
+    listCustomLineItemsFilter_arns,
+    listCustomLineItemsFilter_billingGroups,
+    listCustomLineItemsFilter_names,
+
+    -- ** ListPricingPlansFilter
+    listPricingPlansFilter_arns,
+
+    -- ** ListPricingRulesFilter
+    listPricingRulesFilter_arns,
+
+    -- ** ListResourcesAssociatedToCustomLineItemFilter
+    listResourcesAssociatedToCustomLineItemFilter_relationship,
+
+    -- ** ListResourcesAssociatedToCustomLineItemResponseElement
+    listResourcesAssociatedToCustomLineItemResponseElement_arn,
+    listResourcesAssociatedToCustomLineItemResponseElement_endBillingPeriod,
+    listResourcesAssociatedToCustomLineItemResponseElement_relationship,
+
+    -- ** PricingPlanListElement
+    pricingPlanListElement_arn,
+    pricingPlanListElement_creationTime,
+    pricingPlanListElement_description,
+    pricingPlanListElement_lastModifiedTime,
+    pricingPlanListElement_name,
+    pricingPlanListElement_size,
+
+    -- ** PricingRuleListElement
+    pricingRuleListElement_arn,
+    pricingRuleListElement_associatedPricingPlanCount,
+    pricingRuleListElement_billingEntity,
+    pricingRuleListElement_creationTime,
+    pricingRuleListElement_description,
+    pricingRuleListElement_lastModifiedTime,
+    pricingRuleListElement_modifierPercentage,
+    pricingRuleListElement_name,
+    pricingRuleListElement_scope,
+    pricingRuleListElement_service,
+    pricingRuleListElement_tiering,
+    pricingRuleListElement_type,
+
+    -- ** Tiering
+    tiering_freeTier,
+
+    -- ** UpdateCustomLineItemChargeDetails
+    updateCustomLineItemChargeDetails_flat,
+    updateCustomLineItemChargeDetails_percentage,
+
+    -- ** UpdateCustomLineItemFlatChargeDetails
+    updateCustomLineItemFlatChargeDetails_chargeValue,
+
+    -- ** UpdateCustomLineItemPercentageChargeDetails
+    updateCustomLineItemPercentageChargeDetails_percentageValue,
+
+    -- ** UpdateFreeTierConfig
+    updateFreeTierConfig_activated,
+
+    -- ** UpdateTieringInput
+    updateTieringInput_freeTier,
+  )
+where
+
+import Amazonka.BillingConductor.AssociateAccounts
+import Amazonka.BillingConductor.AssociatePricingRules
+import Amazonka.BillingConductor.BatchAssociateResourcesToCustomLineItem
+import Amazonka.BillingConductor.BatchDisassociateResourcesFromCustomLineItem
+import Amazonka.BillingConductor.CreateBillingGroup
+import Amazonka.BillingConductor.CreateCustomLineItem
+import Amazonka.BillingConductor.CreatePricingPlan
+import Amazonka.BillingConductor.CreatePricingRule
+import Amazonka.BillingConductor.DeleteBillingGroup
+import Amazonka.BillingConductor.DeleteCustomLineItem
+import Amazonka.BillingConductor.DeletePricingPlan
+import Amazonka.BillingConductor.DeletePricingRule
+import Amazonka.BillingConductor.DisassociateAccounts
+import Amazonka.BillingConductor.DisassociatePricingRules
+import Amazonka.BillingConductor.ListAccountAssociations
+import Amazonka.BillingConductor.ListBillingGroupCostReports
+import Amazonka.BillingConductor.ListBillingGroups
+import Amazonka.BillingConductor.ListCustomLineItemVersions
+import Amazonka.BillingConductor.ListCustomLineItems
+import Amazonka.BillingConductor.ListPricingPlans
+import Amazonka.BillingConductor.ListPricingPlansAssociatedWithPricingRule
+import Amazonka.BillingConductor.ListPricingRules
+import Amazonka.BillingConductor.ListPricingRulesAssociatedToPricingPlan
+import Amazonka.BillingConductor.ListResourcesAssociatedToCustomLineItem
+import Amazonka.BillingConductor.ListTagsForResource
+import Amazonka.BillingConductor.TagResource
+import Amazonka.BillingConductor.Types.AccountAssociationsListElement
+import Amazonka.BillingConductor.Types.AccountGrouping
+import Amazonka.BillingConductor.Types.AssociateResourceError
+import Amazonka.BillingConductor.Types.AssociateResourceResponseElement
+import Amazonka.BillingConductor.Types.BillingGroupCostReportElement
+import Amazonka.BillingConductor.Types.BillingGroupListElement
+import Amazonka.BillingConductor.Types.ComputationPreference
+import Amazonka.BillingConductor.Types.CreateFreeTierConfig
+import Amazonka.BillingConductor.Types.CreateTieringInput
+import Amazonka.BillingConductor.Types.CustomLineItemBillingPeriodRange
+import Amazonka.BillingConductor.Types.CustomLineItemChargeDetails
+import Amazonka.BillingConductor.Types.CustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.CustomLineItemListElement
+import Amazonka.BillingConductor.Types.CustomLineItemPercentageChargeDetails
+import Amazonka.BillingConductor.Types.CustomLineItemVersionListElement
+import Amazonka.BillingConductor.Types.DisassociateResourceResponseElement
+import Amazonka.BillingConductor.Types.FreeTierConfig
+import Amazonka.BillingConductor.Types.ListAccountAssociationsFilter
+import Amazonka.BillingConductor.Types.ListBillingGroupCostReportsFilter
+import Amazonka.BillingConductor.Types.ListBillingGroupsFilter
+import Amazonka.BillingConductor.Types.ListCustomLineItemChargeDetails
+import Amazonka.BillingConductor.Types.ListCustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.ListCustomLineItemPercentageChargeDetails
+import Amazonka.BillingConductor.Types.ListCustomLineItemVersionsBillingPeriodRangeFilter
+import Amazonka.BillingConductor.Types.ListCustomLineItemVersionsFilter
+import Amazonka.BillingConductor.Types.ListCustomLineItemsFilter
+import Amazonka.BillingConductor.Types.ListPricingPlansFilter
+import Amazonka.BillingConductor.Types.ListPricingRulesFilter
+import Amazonka.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemFilter
+import Amazonka.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemResponseElement
+import Amazonka.BillingConductor.Types.PricingPlanListElement
+import Amazonka.BillingConductor.Types.PricingRuleListElement
+import Amazonka.BillingConductor.Types.Tiering
+import Amazonka.BillingConductor.Types.UpdateCustomLineItemChargeDetails
+import Amazonka.BillingConductor.Types.UpdateCustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.UpdateCustomLineItemPercentageChargeDetails
+import Amazonka.BillingConductor.Types.UpdateFreeTierConfig
+import Amazonka.BillingConductor.Types.UpdateTieringInput
+import Amazonka.BillingConductor.UntagResource
+import Amazonka.BillingConductor.UpdateBillingGroup
+import Amazonka.BillingConductor.UpdateCustomLineItem
+import Amazonka.BillingConductor.UpdatePricingPlan
+import Amazonka.BillingConductor.UpdatePricingRule
diff --git a/gen/Amazonka/BillingConductor/ListAccountAssociations.hs b/gen/Amazonka/BillingConductor/ListAccountAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListAccountAssociations.hs
@@ -0,0 +1,267 @@
+{-# 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.BillingConductor.ListAccountAssociations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This is a paginated call to list linked accounts that are linked to the
+-- payer account for the specified time period. If no information is
+-- provided, the current billing period is used. The response will
+-- optionally include the billing group that\'s associated with the linked
+-- account.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListAccountAssociations
+  ( -- * Creating a Request
+    ListAccountAssociations (..),
+    newListAccountAssociations,
+
+    -- * Request Lenses
+    listAccountAssociations_billingPeriod,
+    listAccountAssociations_filters,
+    listAccountAssociations_nextToken,
+
+    -- * Destructuring the Response
+    ListAccountAssociationsResponse (..),
+    newListAccountAssociationsResponse,
+
+    -- * Response Lenses
+    listAccountAssociationsResponse_linkedAccounts,
+    listAccountAssociationsResponse_nextToken,
+    listAccountAssociationsResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListAccountAssociations' smart constructor.
+data ListAccountAssociations = ListAccountAssociations'
+  { -- | The preferred billing period to get account associations.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The filter on the account ID of the linked account, or any of the
+    -- following:
+    --
+    -- @MONITORED@: linked accounts that are associated to billing groups.
+    --
+    -- @UNMONITORED@: linked accounts that aren\'t associated to billing
+    -- groups.
+    --
+    -- @Billing Group Arn@: linked accounts that are associated to the provided
+    -- billing group Arn.
+    filters :: Prelude.Maybe ListAccountAssociationsFilter,
+    -- | The pagination token that\'s used on subsequent calls to retrieve
+    -- accounts.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAccountAssociations' 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:
+--
+-- 'billingPeriod', 'listAccountAssociations_billingPeriod' - The preferred billing period to get account associations.
+--
+-- 'filters', 'listAccountAssociations_filters' - The filter on the account ID of the linked account, or any of the
+-- following:
+--
+-- @MONITORED@: linked accounts that are associated to billing groups.
+--
+-- @UNMONITORED@: linked accounts that aren\'t associated to billing
+-- groups.
+--
+-- @Billing Group Arn@: linked accounts that are associated to the provided
+-- billing group Arn.
+--
+-- 'nextToken', 'listAccountAssociations_nextToken' - The pagination token that\'s used on subsequent calls to retrieve
+-- accounts.
+newListAccountAssociations ::
+  ListAccountAssociations
+newListAccountAssociations =
+  ListAccountAssociations'
+    { billingPeriod =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The preferred billing period to get account associations.
+listAccountAssociations_billingPeriod :: Lens.Lens' ListAccountAssociations (Prelude.Maybe Prelude.Text)
+listAccountAssociations_billingPeriod = Lens.lens (\ListAccountAssociations' {billingPeriod} -> billingPeriod) (\s@ListAccountAssociations' {} a -> s {billingPeriod = a} :: ListAccountAssociations)
+
+-- | The filter on the account ID of the linked account, or any of the
+-- following:
+--
+-- @MONITORED@: linked accounts that are associated to billing groups.
+--
+-- @UNMONITORED@: linked accounts that aren\'t associated to billing
+-- groups.
+--
+-- @Billing Group Arn@: linked accounts that are associated to the provided
+-- billing group Arn.
+listAccountAssociations_filters :: Lens.Lens' ListAccountAssociations (Prelude.Maybe ListAccountAssociationsFilter)
+listAccountAssociations_filters = Lens.lens (\ListAccountAssociations' {filters} -> filters) (\s@ListAccountAssociations' {} a -> s {filters = a} :: ListAccountAssociations)
+
+-- | The pagination token that\'s used on subsequent calls to retrieve
+-- accounts.
+listAccountAssociations_nextToken :: Lens.Lens' ListAccountAssociations (Prelude.Maybe Prelude.Text)
+listAccountAssociations_nextToken = Lens.lens (\ListAccountAssociations' {nextToken} -> nextToken) (\s@ListAccountAssociations' {} a -> s {nextToken = a} :: ListAccountAssociations)
+
+instance Core.AWSPager ListAccountAssociations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAccountAssociationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAccountAssociationsResponse_linkedAccounts
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAccountAssociations_nextToken
+          Lens..~ rs
+          Lens.^? listAccountAssociationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAccountAssociations where
+  type
+    AWSResponse ListAccountAssociations =
+      ListAccountAssociationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAccountAssociationsResponse'
+            Prelude.<$> (x Data..?> "LinkedAccounts" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAccountAssociations where
+  hashWithSalt _salt ListAccountAssociations' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriod
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListAccountAssociations where
+  rnf ListAccountAssociations' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListAccountAssociations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListAccountAssociations where
+  toJSON ListAccountAssociations' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListAccountAssociations where
+  toPath = Prelude.const "/list-account-associations"
+
+instance Data.ToQuery ListAccountAssociations where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAccountAssociationsResponse' smart constructor.
+data ListAccountAssociationsResponse = ListAccountAssociationsResponse'
+  { -- | The list of linked accounts in the payer account.
+    linkedAccounts :: Prelude.Maybe [AccountAssociationsListElement],
+    -- | The pagination token that\'s used on subsequent calls to get accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAccountAssociationsResponse' 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:
+--
+-- 'linkedAccounts', 'listAccountAssociationsResponse_linkedAccounts' - The list of linked accounts in the payer account.
+--
+-- 'nextToken', 'listAccountAssociationsResponse_nextToken' - The pagination token that\'s used on subsequent calls to get accounts.
+--
+-- 'httpStatus', 'listAccountAssociationsResponse_httpStatus' - The response's http status code.
+newListAccountAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAccountAssociationsResponse
+newListAccountAssociationsResponse pHttpStatus_ =
+  ListAccountAssociationsResponse'
+    { linkedAccounts =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of linked accounts in the payer account.
+listAccountAssociationsResponse_linkedAccounts :: Lens.Lens' ListAccountAssociationsResponse (Prelude.Maybe [AccountAssociationsListElement])
+listAccountAssociationsResponse_linkedAccounts = Lens.lens (\ListAccountAssociationsResponse' {linkedAccounts} -> linkedAccounts) (\s@ListAccountAssociationsResponse' {} a -> s {linkedAccounts = a} :: ListAccountAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token that\'s used on subsequent calls to get accounts.
+listAccountAssociationsResponse_nextToken :: Lens.Lens' ListAccountAssociationsResponse (Prelude.Maybe Prelude.Text)
+listAccountAssociationsResponse_nextToken = Lens.lens (\ListAccountAssociationsResponse' {nextToken} -> nextToken) (\s@ListAccountAssociationsResponse' {} a -> s {nextToken = a} :: ListAccountAssociationsResponse)
+
+-- | The response's http status code.
+listAccountAssociationsResponse_httpStatus :: Lens.Lens' ListAccountAssociationsResponse Prelude.Int
+listAccountAssociationsResponse_httpStatus = Lens.lens (\ListAccountAssociationsResponse' {httpStatus} -> httpStatus) (\s@ListAccountAssociationsResponse' {} a -> s {httpStatus = a} :: ListAccountAssociationsResponse)
+
+instance
+  Prelude.NFData
+    ListAccountAssociationsResponse
+  where
+  rnf ListAccountAssociationsResponse' {..} =
+    Prelude.rnf linkedAccounts
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListBillingGroupCostReports.hs b/gen/Amazonka/BillingConductor/ListBillingGroupCostReports.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListBillingGroupCostReports.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.ListBillingGroupCostReports
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A paginated call to retrieve a summary report of actual Amazon Web
+-- Services charges and the calculated Amazon Web Services charges based on
+-- the associated pricing plan of a billing group.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListBillingGroupCostReports
+  ( -- * Creating a Request
+    ListBillingGroupCostReports (..),
+    newListBillingGroupCostReports,
+
+    -- * Request Lenses
+    listBillingGroupCostReports_billingPeriod,
+    listBillingGroupCostReports_filters,
+    listBillingGroupCostReports_maxResults,
+    listBillingGroupCostReports_nextToken,
+
+    -- * Destructuring the Response
+    ListBillingGroupCostReportsResponse (..),
+    newListBillingGroupCostReportsResponse,
+
+    -- * Response Lenses
+    listBillingGroupCostReportsResponse_billingGroupCostReports,
+    listBillingGroupCostReportsResponse_nextToken,
+    listBillingGroupCostReportsResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListBillingGroupCostReports' smart constructor.
+data ListBillingGroupCostReports = ListBillingGroupCostReports'
+  { -- | The preferred billing period for your report.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | A @ListBillingGroupCostReportsFilter@ to specify billing groups to
+    -- retrieve reports from.
+    filters :: Prelude.Maybe ListBillingGroupCostReportsFilter,
+    -- | The maximum number of reports to retrieve.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token that\'s used on subsequent calls to get reports.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBillingGroupCostReports' 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:
+--
+-- 'billingPeriod', 'listBillingGroupCostReports_billingPeriod' - The preferred billing period for your report.
+--
+-- 'filters', 'listBillingGroupCostReports_filters' - A @ListBillingGroupCostReportsFilter@ to specify billing groups to
+-- retrieve reports from.
+--
+-- 'maxResults', 'listBillingGroupCostReports_maxResults' - The maximum number of reports to retrieve.
+--
+-- 'nextToken', 'listBillingGroupCostReports_nextToken' - The pagination token that\'s used on subsequent calls to get reports.
+newListBillingGroupCostReports ::
+  ListBillingGroupCostReports
+newListBillingGroupCostReports =
+  ListBillingGroupCostReports'
+    { billingPeriod =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The preferred billing period for your report.
+listBillingGroupCostReports_billingPeriod :: Lens.Lens' ListBillingGroupCostReports (Prelude.Maybe Prelude.Text)
+listBillingGroupCostReports_billingPeriod = Lens.lens (\ListBillingGroupCostReports' {billingPeriod} -> billingPeriod) (\s@ListBillingGroupCostReports' {} a -> s {billingPeriod = a} :: ListBillingGroupCostReports)
+
+-- | A @ListBillingGroupCostReportsFilter@ to specify billing groups to
+-- retrieve reports from.
+listBillingGroupCostReports_filters :: Lens.Lens' ListBillingGroupCostReports (Prelude.Maybe ListBillingGroupCostReportsFilter)
+listBillingGroupCostReports_filters = Lens.lens (\ListBillingGroupCostReports' {filters} -> filters) (\s@ListBillingGroupCostReports' {} a -> s {filters = a} :: ListBillingGroupCostReports)
+
+-- | The maximum number of reports to retrieve.
+listBillingGroupCostReports_maxResults :: Lens.Lens' ListBillingGroupCostReports (Prelude.Maybe Prelude.Natural)
+listBillingGroupCostReports_maxResults = Lens.lens (\ListBillingGroupCostReports' {maxResults} -> maxResults) (\s@ListBillingGroupCostReports' {} a -> s {maxResults = a} :: ListBillingGroupCostReports)
+
+-- | The pagination token that\'s used on subsequent calls to get reports.
+listBillingGroupCostReports_nextToken :: Lens.Lens' ListBillingGroupCostReports (Prelude.Maybe Prelude.Text)
+listBillingGroupCostReports_nextToken = Lens.lens (\ListBillingGroupCostReports' {nextToken} -> nextToken) (\s@ListBillingGroupCostReports' {} a -> s {nextToken = a} :: ListBillingGroupCostReports)
+
+instance Core.AWSPager ListBillingGroupCostReports where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listBillingGroupCostReportsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listBillingGroupCostReportsResponse_billingGroupCostReports
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listBillingGroupCostReports_nextToken
+          Lens..~ rs
+          Lens.^? listBillingGroupCostReportsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListBillingGroupCostReports where
+  type
+    AWSResponse ListBillingGroupCostReports =
+      ListBillingGroupCostReportsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListBillingGroupCostReportsResponse'
+            Prelude.<$> ( x
+                            Data..?> "BillingGroupCostReports"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListBillingGroupCostReports where
+  hashWithSalt _salt ListBillingGroupCostReports' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriod
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListBillingGroupCostReports where
+  rnf ListBillingGroupCostReports' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListBillingGroupCostReports where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListBillingGroupCostReports where
+  toJSON ListBillingGroupCostReports' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListBillingGroupCostReports where
+  toPath =
+    Prelude.const "/list-billing-group-cost-reports"
+
+instance Data.ToQuery ListBillingGroupCostReports where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListBillingGroupCostReportsResponse' smart constructor.
+data ListBillingGroupCostReportsResponse = ListBillingGroupCostReportsResponse'
+  { -- | A list of @BillingGroupCostReportElement@ retrieved.
+    billingGroupCostReports :: Prelude.Maybe [BillingGroupCostReportElement],
+    -- | The pagination token that\'s used on subsequent calls to get reports.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBillingGroupCostReportsResponse' 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:
+--
+-- 'billingGroupCostReports', 'listBillingGroupCostReportsResponse_billingGroupCostReports' - A list of @BillingGroupCostReportElement@ retrieved.
+--
+-- 'nextToken', 'listBillingGroupCostReportsResponse_nextToken' - The pagination token that\'s used on subsequent calls to get reports.
+--
+-- 'httpStatus', 'listBillingGroupCostReportsResponse_httpStatus' - The response's http status code.
+newListBillingGroupCostReportsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListBillingGroupCostReportsResponse
+newListBillingGroupCostReportsResponse pHttpStatus_ =
+  ListBillingGroupCostReportsResponse'
+    { billingGroupCostReports =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of @BillingGroupCostReportElement@ retrieved.
+listBillingGroupCostReportsResponse_billingGroupCostReports :: Lens.Lens' ListBillingGroupCostReportsResponse (Prelude.Maybe [BillingGroupCostReportElement])
+listBillingGroupCostReportsResponse_billingGroupCostReports = Lens.lens (\ListBillingGroupCostReportsResponse' {billingGroupCostReports} -> billingGroupCostReports) (\s@ListBillingGroupCostReportsResponse' {} a -> s {billingGroupCostReports = a} :: ListBillingGroupCostReportsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token that\'s used on subsequent calls to get reports.
+listBillingGroupCostReportsResponse_nextToken :: Lens.Lens' ListBillingGroupCostReportsResponse (Prelude.Maybe Prelude.Text)
+listBillingGroupCostReportsResponse_nextToken = Lens.lens (\ListBillingGroupCostReportsResponse' {nextToken} -> nextToken) (\s@ListBillingGroupCostReportsResponse' {} a -> s {nextToken = a} :: ListBillingGroupCostReportsResponse)
+
+-- | The response's http status code.
+listBillingGroupCostReportsResponse_httpStatus :: Lens.Lens' ListBillingGroupCostReportsResponse Prelude.Int
+listBillingGroupCostReportsResponse_httpStatus = Lens.lens (\ListBillingGroupCostReportsResponse' {httpStatus} -> httpStatus) (\s@ListBillingGroupCostReportsResponse' {} a -> s {httpStatus = a} :: ListBillingGroupCostReportsResponse)
+
+instance
+  Prelude.NFData
+    ListBillingGroupCostReportsResponse
+  where
+  rnf ListBillingGroupCostReportsResponse' {..} =
+    Prelude.rnf billingGroupCostReports
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListBillingGroups.hs b/gen/Amazonka/BillingConductor/ListBillingGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListBillingGroups.hs
@@ -0,0 +1,253 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.ListBillingGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A paginated call to retrieve a list of billing groups for the given
+-- billing period. If you don\'t provide a billing group, the current
+-- billing period is used.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListBillingGroups
+  ( -- * Creating a Request
+    ListBillingGroups (..),
+    newListBillingGroups,
+
+    -- * Request Lenses
+    listBillingGroups_billingPeriod,
+    listBillingGroups_filters,
+    listBillingGroups_maxResults,
+    listBillingGroups_nextToken,
+
+    -- * Destructuring the Response
+    ListBillingGroupsResponse (..),
+    newListBillingGroupsResponse,
+
+    -- * Response Lenses
+    listBillingGroupsResponse_billingGroups,
+    listBillingGroupsResponse_nextToken,
+    listBillingGroupsResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListBillingGroups' smart constructor.
+data ListBillingGroups = ListBillingGroups'
+  { -- | The preferred billing period to get billing groups.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | A @ListBillingGroupsFilter@ that specifies the billing group and pricing
+    -- plan to retrieve billing group information.
+    filters :: Prelude.Maybe ListBillingGroupsFilter,
+    -- | The maximum number of billing groups to retrieve.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token that\'s used on subsequent calls to get billing
+    -- groups.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBillingGroups' 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:
+--
+-- 'billingPeriod', 'listBillingGroups_billingPeriod' - The preferred billing period to get billing groups.
+--
+-- 'filters', 'listBillingGroups_filters' - A @ListBillingGroupsFilter@ that specifies the billing group and pricing
+-- plan to retrieve billing group information.
+--
+-- 'maxResults', 'listBillingGroups_maxResults' - The maximum number of billing groups to retrieve.
+--
+-- 'nextToken', 'listBillingGroups_nextToken' - The pagination token that\'s used on subsequent calls to get billing
+-- groups.
+newListBillingGroups ::
+  ListBillingGroups
+newListBillingGroups =
+  ListBillingGroups'
+    { billingPeriod = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The preferred billing period to get billing groups.
+listBillingGroups_billingPeriod :: Lens.Lens' ListBillingGroups (Prelude.Maybe Prelude.Text)
+listBillingGroups_billingPeriod = Lens.lens (\ListBillingGroups' {billingPeriod} -> billingPeriod) (\s@ListBillingGroups' {} a -> s {billingPeriod = a} :: ListBillingGroups)
+
+-- | A @ListBillingGroupsFilter@ that specifies the billing group and pricing
+-- plan to retrieve billing group information.
+listBillingGroups_filters :: Lens.Lens' ListBillingGroups (Prelude.Maybe ListBillingGroupsFilter)
+listBillingGroups_filters = Lens.lens (\ListBillingGroups' {filters} -> filters) (\s@ListBillingGroups' {} a -> s {filters = a} :: ListBillingGroups)
+
+-- | The maximum number of billing groups to retrieve.
+listBillingGroups_maxResults :: Lens.Lens' ListBillingGroups (Prelude.Maybe Prelude.Natural)
+listBillingGroups_maxResults = Lens.lens (\ListBillingGroups' {maxResults} -> maxResults) (\s@ListBillingGroups' {} a -> s {maxResults = a} :: ListBillingGroups)
+
+-- | The pagination token that\'s used on subsequent calls to get billing
+-- groups.
+listBillingGroups_nextToken :: Lens.Lens' ListBillingGroups (Prelude.Maybe Prelude.Text)
+listBillingGroups_nextToken = Lens.lens (\ListBillingGroups' {nextToken} -> nextToken) (\s@ListBillingGroups' {} a -> s {nextToken = a} :: ListBillingGroups)
+
+instance Core.AWSPager ListBillingGroups where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listBillingGroupsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listBillingGroupsResponse_billingGroups
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listBillingGroups_nextToken
+          Lens..~ rs
+          Lens.^? listBillingGroupsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListBillingGroups where
+  type
+    AWSResponse ListBillingGroups =
+      ListBillingGroupsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListBillingGroupsResponse'
+            Prelude.<$> (x Data..?> "BillingGroups" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListBillingGroups where
+  hashWithSalt _salt ListBillingGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriod
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListBillingGroups where
+  rnf ListBillingGroups' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListBillingGroups where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListBillingGroups where
+  toJSON ListBillingGroups' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListBillingGroups where
+  toPath = Prelude.const "/list-billing-groups"
+
+instance Data.ToQuery ListBillingGroups where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListBillingGroupsResponse' smart constructor.
+data ListBillingGroupsResponse = ListBillingGroupsResponse'
+  { -- | A list of @BillingGroupListElement@ retrieved.
+    billingGroups :: Prelude.Maybe [BillingGroupListElement],
+    -- | The pagination token that\'s used on subsequent calls to get billing
+    -- groups.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBillingGroupsResponse' 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:
+--
+-- 'billingGroups', 'listBillingGroupsResponse_billingGroups' - A list of @BillingGroupListElement@ retrieved.
+--
+-- 'nextToken', 'listBillingGroupsResponse_nextToken' - The pagination token that\'s used on subsequent calls to get billing
+-- groups.
+--
+-- 'httpStatus', 'listBillingGroupsResponse_httpStatus' - The response's http status code.
+newListBillingGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListBillingGroupsResponse
+newListBillingGroupsResponse pHttpStatus_ =
+  ListBillingGroupsResponse'
+    { billingGroups =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of @BillingGroupListElement@ retrieved.
+listBillingGroupsResponse_billingGroups :: Lens.Lens' ListBillingGroupsResponse (Prelude.Maybe [BillingGroupListElement])
+listBillingGroupsResponse_billingGroups = Lens.lens (\ListBillingGroupsResponse' {billingGroups} -> billingGroups) (\s@ListBillingGroupsResponse' {} a -> s {billingGroups = a} :: ListBillingGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token that\'s used on subsequent calls to get billing
+-- groups.
+listBillingGroupsResponse_nextToken :: Lens.Lens' ListBillingGroupsResponse (Prelude.Maybe Prelude.Text)
+listBillingGroupsResponse_nextToken = Lens.lens (\ListBillingGroupsResponse' {nextToken} -> nextToken) (\s@ListBillingGroupsResponse' {} a -> s {nextToken = a} :: ListBillingGroupsResponse)
+
+-- | The response's http status code.
+listBillingGroupsResponse_httpStatus :: Lens.Lens' ListBillingGroupsResponse Prelude.Int
+listBillingGroupsResponse_httpStatus = Lens.lens (\ListBillingGroupsResponse' {httpStatus} -> httpStatus) (\s@ListBillingGroupsResponse' {} a -> s {httpStatus = a} :: ListBillingGroupsResponse)
+
+instance Prelude.NFData ListBillingGroupsResponse where
+  rnf ListBillingGroupsResponse' {..} =
+    Prelude.rnf billingGroups
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListCustomLineItemVersions.hs b/gen/Amazonka/BillingConductor/ListCustomLineItemVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListCustomLineItemVersions.hs
@@ -0,0 +1,261 @@
+{-# 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.BillingConductor.ListCustomLineItemVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A paginated call to get a list of all custom line item versions.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListCustomLineItemVersions
+  ( -- * Creating a Request
+    ListCustomLineItemVersions (..),
+    newListCustomLineItemVersions,
+
+    -- * Request Lenses
+    listCustomLineItemVersions_filters,
+    listCustomLineItemVersions_maxResults,
+    listCustomLineItemVersions_nextToken,
+    listCustomLineItemVersions_arn,
+
+    -- * Destructuring the Response
+    ListCustomLineItemVersionsResponse (..),
+    newListCustomLineItemVersionsResponse,
+
+    -- * Response Lenses
+    listCustomLineItemVersionsResponse_customLineItemVersions,
+    listCustomLineItemVersionsResponse_nextToken,
+    listCustomLineItemVersionsResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListCustomLineItemVersions' smart constructor.
+data ListCustomLineItemVersions = ListCustomLineItemVersions'
+  { -- | A @ListCustomLineItemVersionsFilter@ that specifies the billing period
+    -- range in which the custom line item versions are applied.
+    filters :: Prelude.Maybe ListCustomLineItemVersionsFilter,
+    -- | The maximum number of custom line item versions to retrieve.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token that\'s used on subsequent calls to retrieve custom
+    -- line item versions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the custom line item.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemVersions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listCustomLineItemVersions_filters' - A @ListCustomLineItemVersionsFilter@ that specifies the billing period
+-- range in which the custom line item versions are applied.
+--
+-- 'maxResults', 'listCustomLineItemVersions_maxResults' - The maximum number of custom line item versions to retrieve.
+--
+-- 'nextToken', 'listCustomLineItemVersions_nextToken' - The pagination token that\'s used on subsequent calls to retrieve custom
+-- line item versions.
+--
+-- 'arn', 'listCustomLineItemVersions_arn' - The Amazon Resource Name (ARN) for the custom line item.
+newListCustomLineItemVersions ::
+  -- | 'arn'
+  Prelude.Text ->
+  ListCustomLineItemVersions
+newListCustomLineItemVersions pArn_ =
+  ListCustomLineItemVersions'
+    { filters =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | A @ListCustomLineItemVersionsFilter@ that specifies the billing period
+-- range in which the custom line item versions are applied.
+listCustomLineItemVersions_filters :: Lens.Lens' ListCustomLineItemVersions (Prelude.Maybe ListCustomLineItemVersionsFilter)
+listCustomLineItemVersions_filters = Lens.lens (\ListCustomLineItemVersions' {filters} -> filters) (\s@ListCustomLineItemVersions' {} a -> s {filters = a} :: ListCustomLineItemVersions)
+
+-- | The maximum number of custom line item versions to retrieve.
+listCustomLineItemVersions_maxResults :: Lens.Lens' ListCustomLineItemVersions (Prelude.Maybe Prelude.Natural)
+listCustomLineItemVersions_maxResults = Lens.lens (\ListCustomLineItemVersions' {maxResults} -> maxResults) (\s@ListCustomLineItemVersions' {} a -> s {maxResults = a} :: ListCustomLineItemVersions)
+
+-- | The pagination token that\'s used on subsequent calls to retrieve custom
+-- line item versions.
+listCustomLineItemVersions_nextToken :: Lens.Lens' ListCustomLineItemVersions (Prelude.Maybe Prelude.Text)
+listCustomLineItemVersions_nextToken = Lens.lens (\ListCustomLineItemVersions' {nextToken} -> nextToken) (\s@ListCustomLineItemVersions' {} a -> s {nextToken = a} :: ListCustomLineItemVersions)
+
+-- | The Amazon Resource Name (ARN) for the custom line item.
+listCustomLineItemVersions_arn :: Lens.Lens' ListCustomLineItemVersions Prelude.Text
+listCustomLineItemVersions_arn = Lens.lens (\ListCustomLineItemVersions' {arn} -> arn) (\s@ListCustomLineItemVersions' {} a -> s {arn = a} :: ListCustomLineItemVersions)
+
+instance Core.AWSPager ListCustomLineItemVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCustomLineItemVersionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listCustomLineItemVersionsResponse_customLineItemVersions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCustomLineItemVersions_nextToken
+          Lens..~ rs
+          Lens.^? listCustomLineItemVersionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListCustomLineItemVersions where
+  type
+    AWSResponse ListCustomLineItemVersions =
+      ListCustomLineItemVersionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCustomLineItemVersionsResponse'
+            Prelude.<$> ( x
+                            Data..?> "CustomLineItemVersions"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListCustomLineItemVersions where
+  hashWithSalt _salt ListCustomLineItemVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData ListCustomLineItemVersions where
+  rnf ListCustomLineItemVersions' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders ListCustomLineItemVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListCustomLineItemVersions where
+  toJSON ListCustomLineItemVersions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath ListCustomLineItemVersions where
+  toPath =
+    Prelude.const "/list-custom-line-item-versions"
+
+instance Data.ToQuery ListCustomLineItemVersions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListCustomLineItemVersionsResponse' smart constructor.
+data ListCustomLineItemVersionsResponse = ListCustomLineItemVersionsResponse'
+  { -- | A list of @CustomLineItemVersionListElements@ that are received.
+    customLineItemVersions :: Prelude.Maybe [CustomLineItemVersionListElement],
+    -- | The pagination token that\'s used on subsequent calls to retrieve custom
+    -- line item versions.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemVersionsResponse' 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:
+--
+-- 'customLineItemVersions', 'listCustomLineItemVersionsResponse_customLineItemVersions' - A list of @CustomLineItemVersionListElements@ that are received.
+--
+-- 'nextToken', 'listCustomLineItemVersionsResponse_nextToken' - The pagination token that\'s used on subsequent calls to retrieve custom
+-- line item versions.
+--
+-- 'httpStatus', 'listCustomLineItemVersionsResponse_httpStatus' - The response's http status code.
+newListCustomLineItemVersionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCustomLineItemVersionsResponse
+newListCustomLineItemVersionsResponse pHttpStatus_ =
+  ListCustomLineItemVersionsResponse'
+    { customLineItemVersions =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of @CustomLineItemVersionListElements@ that are received.
+listCustomLineItemVersionsResponse_customLineItemVersions :: Lens.Lens' ListCustomLineItemVersionsResponse (Prelude.Maybe [CustomLineItemVersionListElement])
+listCustomLineItemVersionsResponse_customLineItemVersions = Lens.lens (\ListCustomLineItemVersionsResponse' {customLineItemVersions} -> customLineItemVersions) (\s@ListCustomLineItemVersionsResponse' {} a -> s {customLineItemVersions = a} :: ListCustomLineItemVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token that\'s used on subsequent calls to retrieve custom
+-- line item versions.
+listCustomLineItemVersionsResponse_nextToken :: Lens.Lens' ListCustomLineItemVersionsResponse (Prelude.Maybe Prelude.Text)
+listCustomLineItemVersionsResponse_nextToken = Lens.lens (\ListCustomLineItemVersionsResponse' {nextToken} -> nextToken) (\s@ListCustomLineItemVersionsResponse' {} a -> s {nextToken = a} :: ListCustomLineItemVersionsResponse)
+
+-- | The response's http status code.
+listCustomLineItemVersionsResponse_httpStatus :: Lens.Lens' ListCustomLineItemVersionsResponse Prelude.Int
+listCustomLineItemVersionsResponse_httpStatus = Lens.lens (\ListCustomLineItemVersionsResponse' {httpStatus} -> httpStatus) (\s@ListCustomLineItemVersionsResponse' {} a -> s {httpStatus = a} :: ListCustomLineItemVersionsResponse)
+
+instance
+  Prelude.NFData
+    ListCustomLineItemVersionsResponse
+  where
+  rnf ListCustomLineItemVersionsResponse' {..} =
+    Prelude.rnf customLineItemVersions
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListCustomLineItems.hs b/gen/Amazonka/BillingConductor/ListCustomLineItems.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListCustomLineItems.hs
@@ -0,0 +1,260 @@
+{-# 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.BillingConductor.ListCustomLineItems
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A paginated call to get a list of all custom line items (FFLIs) for the
+-- given billing period. If you don\'t provide a billing period, the
+-- current billing period is used.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListCustomLineItems
+  ( -- * Creating a Request
+    ListCustomLineItems (..),
+    newListCustomLineItems,
+
+    -- * Request Lenses
+    listCustomLineItems_billingPeriod,
+    listCustomLineItems_filters,
+    listCustomLineItems_maxResults,
+    listCustomLineItems_nextToken,
+
+    -- * Destructuring the Response
+    ListCustomLineItemsResponse (..),
+    newListCustomLineItemsResponse,
+
+    -- * Response Lenses
+    listCustomLineItemsResponse_customLineItems,
+    listCustomLineItemsResponse_nextToken,
+    listCustomLineItemsResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListCustomLineItems' smart constructor.
+data ListCustomLineItems = ListCustomLineItems'
+  { -- | The preferred billing period to get custom line items (FFLIs).
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | A @ListCustomLineItemsFilter@ that specifies the custom line item names
+    -- and\/or billing group Amazon Resource Names (ARNs) to retrieve FFLI
+    -- information.
+    filters :: Prelude.Maybe ListCustomLineItemsFilter,
+    -- | The maximum number of billing groups to retrieve.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token that\'s used on subsequent calls to get custom line
+    -- items (FFLIs).
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItems' 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:
+--
+-- 'billingPeriod', 'listCustomLineItems_billingPeriod' - The preferred billing period to get custom line items (FFLIs).
+--
+-- 'filters', 'listCustomLineItems_filters' - A @ListCustomLineItemsFilter@ that specifies the custom line item names
+-- and\/or billing group Amazon Resource Names (ARNs) to retrieve FFLI
+-- information.
+--
+-- 'maxResults', 'listCustomLineItems_maxResults' - The maximum number of billing groups to retrieve.
+--
+-- 'nextToken', 'listCustomLineItems_nextToken' - The pagination token that\'s used on subsequent calls to get custom line
+-- items (FFLIs).
+newListCustomLineItems ::
+  ListCustomLineItems
+newListCustomLineItems =
+  ListCustomLineItems'
+    { billingPeriod =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The preferred billing period to get custom line items (FFLIs).
+listCustomLineItems_billingPeriod :: Lens.Lens' ListCustomLineItems (Prelude.Maybe Prelude.Text)
+listCustomLineItems_billingPeriod = Lens.lens (\ListCustomLineItems' {billingPeriod} -> billingPeriod) (\s@ListCustomLineItems' {} a -> s {billingPeriod = a} :: ListCustomLineItems)
+
+-- | A @ListCustomLineItemsFilter@ that specifies the custom line item names
+-- and\/or billing group Amazon Resource Names (ARNs) to retrieve FFLI
+-- information.
+listCustomLineItems_filters :: Lens.Lens' ListCustomLineItems (Prelude.Maybe ListCustomLineItemsFilter)
+listCustomLineItems_filters = Lens.lens (\ListCustomLineItems' {filters} -> filters) (\s@ListCustomLineItems' {} a -> s {filters = a} :: ListCustomLineItems)
+
+-- | The maximum number of billing groups to retrieve.
+listCustomLineItems_maxResults :: Lens.Lens' ListCustomLineItems (Prelude.Maybe Prelude.Natural)
+listCustomLineItems_maxResults = Lens.lens (\ListCustomLineItems' {maxResults} -> maxResults) (\s@ListCustomLineItems' {} a -> s {maxResults = a} :: ListCustomLineItems)
+
+-- | The pagination token that\'s used on subsequent calls to get custom line
+-- items (FFLIs).
+listCustomLineItems_nextToken :: Lens.Lens' ListCustomLineItems (Prelude.Maybe Prelude.Text)
+listCustomLineItems_nextToken = Lens.lens (\ListCustomLineItems' {nextToken} -> nextToken) (\s@ListCustomLineItems' {} a -> s {nextToken = a} :: ListCustomLineItems)
+
+instance Core.AWSPager ListCustomLineItems where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCustomLineItemsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listCustomLineItemsResponse_customLineItems
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCustomLineItems_nextToken
+          Lens..~ rs
+          Lens.^? listCustomLineItemsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListCustomLineItems where
+  type
+    AWSResponse ListCustomLineItems =
+      ListCustomLineItemsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCustomLineItemsResponse'
+            Prelude.<$> ( x
+                            Data..?> "CustomLineItems"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListCustomLineItems where
+  hashWithSalt _salt ListCustomLineItems' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriod
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListCustomLineItems where
+  rnf ListCustomLineItems' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListCustomLineItems where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListCustomLineItems where
+  toJSON ListCustomLineItems' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListCustomLineItems where
+  toPath = Prelude.const "/list-custom-line-items"
+
+instance Data.ToQuery ListCustomLineItems where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListCustomLineItemsResponse' smart constructor.
+data ListCustomLineItemsResponse = ListCustomLineItemsResponse'
+  { -- | A list of @FreeFormLineItemListElements@ received.
+    customLineItems :: Prelude.Maybe [CustomLineItemListElement],
+    -- | The pagination token that\'s used on subsequent calls to get custom line
+    -- items (FFLIs).
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemsResponse' 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:
+--
+-- 'customLineItems', 'listCustomLineItemsResponse_customLineItems' - A list of @FreeFormLineItemListElements@ received.
+--
+-- 'nextToken', 'listCustomLineItemsResponse_nextToken' - The pagination token that\'s used on subsequent calls to get custom line
+-- items (FFLIs).
+--
+-- 'httpStatus', 'listCustomLineItemsResponse_httpStatus' - The response's http status code.
+newListCustomLineItemsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCustomLineItemsResponse
+newListCustomLineItemsResponse pHttpStatus_ =
+  ListCustomLineItemsResponse'
+    { customLineItems =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of @FreeFormLineItemListElements@ received.
+listCustomLineItemsResponse_customLineItems :: Lens.Lens' ListCustomLineItemsResponse (Prelude.Maybe [CustomLineItemListElement])
+listCustomLineItemsResponse_customLineItems = Lens.lens (\ListCustomLineItemsResponse' {customLineItems} -> customLineItems) (\s@ListCustomLineItemsResponse' {} a -> s {customLineItems = a} :: ListCustomLineItemsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token that\'s used on subsequent calls to get custom line
+-- items (FFLIs).
+listCustomLineItemsResponse_nextToken :: Lens.Lens' ListCustomLineItemsResponse (Prelude.Maybe Prelude.Text)
+listCustomLineItemsResponse_nextToken = Lens.lens (\ListCustomLineItemsResponse' {nextToken} -> nextToken) (\s@ListCustomLineItemsResponse' {} a -> s {nextToken = a} :: ListCustomLineItemsResponse)
+
+-- | The response's http status code.
+listCustomLineItemsResponse_httpStatus :: Lens.Lens' ListCustomLineItemsResponse Prelude.Int
+listCustomLineItemsResponse_httpStatus = Lens.lens (\ListCustomLineItemsResponse' {httpStatus} -> httpStatus) (\s@ListCustomLineItemsResponse' {} a -> s {httpStatus = a} :: ListCustomLineItemsResponse)
+
+instance Prelude.NFData ListCustomLineItemsResponse where
+  rnf ListCustomLineItemsResponse' {..} =
+    Prelude.rnf customLineItems
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListPricingPlans.hs b/gen/Amazonka/BillingConductor/ListPricingPlans.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListPricingPlans.hs
@@ -0,0 +1,264 @@
+{-# 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.BillingConductor.ListPricingPlans
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A paginated call to get pricing plans for the given billing period. If
+-- you don\'t provide a billing period, the current billing period is used.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListPricingPlans
+  ( -- * Creating a Request
+    ListPricingPlans (..),
+    newListPricingPlans,
+
+    -- * Request Lenses
+    listPricingPlans_billingPeriod,
+    listPricingPlans_filters,
+    listPricingPlans_maxResults,
+    listPricingPlans_nextToken,
+
+    -- * Destructuring the Response
+    ListPricingPlansResponse (..),
+    newListPricingPlansResponse,
+
+    -- * Response Lenses
+    listPricingPlansResponse_billingPeriod,
+    listPricingPlansResponse_nextToken,
+    listPricingPlansResponse_pricingPlans,
+    listPricingPlansResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPricingPlans' smart constructor.
+data ListPricingPlans = ListPricingPlans'
+  { -- | The preferred billing period to get pricing plan.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | A @ListPricingPlansFilter@ that specifies the Amazon Resource Name
+    -- (ARNs) of pricing plans to retrieve pricing plans information.
+    filters :: Prelude.Maybe ListPricingPlansFilter,
+    -- | The maximum number of pricing plans to retrieve.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token that\'s used on subsequent call to get pricing
+    -- plans.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingPlans' 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:
+--
+-- 'billingPeriod', 'listPricingPlans_billingPeriod' - The preferred billing period to get pricing plan.
+--
+-- 'filters', 'listPricingPlans_filters' - A @ListPricingPlansFilter@ that specifies the Amazon Resource Name
+-- (ARNs) of pricing plans to retrieve pricing plans information.
+--
+-- 'maxResults', 'listPricingPlans_maxResults' - The maximum number of pricing plans to retrieve.
+--
+-- 'nextToken', 'listPricingPlans_nextToken' - The pagination token that\'s used on subsequent call to get pricing
+-- plans.
+newListPricingPlans ::
+  ListPricingPlans
+newListPricingPlans =
+  ListPricingPlans'
+    { billingPeriod = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The preferred billing period to get pricing plan.
+listPricingPlans_billingPeriod :: Lens.Lens' ListPricingPlans (Prelude.Maybe Prelude.Text)
+listPricingPlans_billingPeriod = Lens.lens (\ListPricingPlans' {billingPeriod} -> billingPeriod) (\s@ListPricingPlans' {} a -> s {billingPeriod = a} :: ListPricingPlans)
+
+-- | A @ListPricingPlansFilter@ that specifies the Amazon Resource Name
+-- (ARNs) of pricing plans to retrieve pricing plans information.
+listPricingPlans_filters :: Lens.Lens' ListPricingPlans (Prelude.Maybe ListPricingPlansFilter)
+listPricingPlans_filters = Lens.lens (\ListPricingPlans' {filters} -> filters) (\s@ListPricingPlans' {} a -> s {filters = a} :: ListPricingPlans)
+
+-- | The maximum number of pricing plans to retrieve.
+listPricingPlans_maxResults :: Lens.Lens' ListPricingPlans (Prelude.Maybe Prelude.Natural)
+listPricingPlans_maxResults = Lens.lens (\ListPricingPlans' {maxResults} -> maxResults) (\s@ListPricingPlans' {} a -> s {maxResults = a} :: ListPricingPlans)
+
+-- | The pagination token that\'s used on subsequent call to get pricing
+-- plans.
+listPricingPlans_nextToken :: Lens.Lens' ListPricingPlans (Prelude.Maybe Prelude.Text)
+listPricingPlans_nextToken = Lens.lens (\ListPricingPlans' {nextToken} -> nextToken) (\s@ListPricingPlans' {} a -> s {nextToken = a} :: ListPricingPlans)
+
+instance Core.AWSPager ListPricingPlans where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPricingPlansResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPricingPlansResponse_pricingPlans
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPricingPlans_nextToken
+          Lens..~ rs
+          Lens.^? listPricingPlansResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListPricingPlans where
+  type
+    AWSResponse ListPricingPlans =
+      ListPricingPlansResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPricingPlansResponse'
+            Prelude.<$> (x Data..?> "BillingPeriod")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "PricingPlans" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPricingPlans where
+  hashWithSalt _salt ListPricingPlans' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriod
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListPricingPlans where
+  rnf ListPricingPlans' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListPricingPlans where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListPricingPlans where
+  toJSON ListPricingPlans' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListPricingPlans where
+  toPath = Prelude.const "/list-pricing-plans"
+
+instance Data.ToQuery ListPricingPlans where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListPricingPlansResponse' smart constructor.
+data ListPricingPlansResponse = ListPricingPlansResponse'
+  { -- | The billing period for which the described pricing plans are applicable.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The pagination token that\'s used on subsequent calls to get pricing
+    -- plans.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of @PricingPlanListElement@ retrieved.
+    pricingPlans :: Prelude.Maybe [PricingPlanListElement],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingPlansResponse' 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:
+--
+-- 'billingPeriod', 'listPricingPlansResponse_billingPeriod' - The billing period for which the described pricing plans are applicable.
+--
+-- 'nextToken', 'listPricingPlansResponse_nextToken' - The pagination token that\'s used on subsequent calls to get pricing
+-- plans.
+--
+-- 'pricingPlans', 'listPricingPlansResponse_pricingPlans' - A list of @PricingPlanListElement@ retrieved.
+--
+-- 'httpStatus', 'listPricingPlansResponse_httpStatus' - The response's http status code.
+newListPricingPlansResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPricingPlansResponse
+newListPricingPlansResponse pHttpStatus_ =
+  ListPricingPlansResponse'
+    { billingPeriod =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      pricingPlans = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The billing period for which the described pricing plans are applicable.
+listPricingPlansResponse_billingPeriod :: Lens.Lens' ListPricingPlansResponse (Prelude.Maybe Prelude.Text)
+listPricingPlansResponse_billingPeriod = Lens.lens (\ListPricingPlansResponse' {billingPeriod} -> billingPeriod) (\s@ListPricingPlansResponse' {} a -> s {billingPeriod = a} :: ListPricingPlansResponse)
+
+-- | The pagination token that\'s used on subsequent calls to get pricing
+-- plans.
+listPricingPlansResponse_nextToken :: Lens.Lens' ListPricingPlansResponse (Prelude.Maybe Prelude.Text)
+listPricingPlansResponse_nextToken = Lens.lens (\ListPricingPlansResponse' {nextToken} -> nextToken) (\s@ListPricingPlansResponse' {} a -> s {nextToken = a} :: ListPricingPlansResponse)
+
+-- | A list of @PricingPlanListElement@ retrieved.
+listPricingPlansResponse_pricingPlans :: Lens.Lens' ListPricingPlansResponse (Prelude.Maybe [PricingPlanListElement])
+listPricingPlansResponse_pricingPlans = Lens.lens (\ListPricingPlansResponse' {pricingPlans} -> pricingPlans) (\s@ListPricingPlansResponse' {} a -> s {pricingPlans = a} :: ListPricingPlansResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPricingPlansResponse_httpStatus :: Lens.Lens' ListPricingPlansResponse Prelude.Int
+listPricingPlansResponse_httpStatus = Lens.lens (\ListPricingPlansResponse' {httpStatus} -> httpStatus) (\s@ListPricingPlansResponse' {} a -> s {httpStatus = a} :: ListPricingPlansResponse)
+
+instance Prelude.NFData ListPricingPlansResponse where
+  rnf ListPricingPlansResponse' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pricingPlans
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListPricingPlansAssociatedWithPricingRule.hs b/gen/Amazonka/BillingConductor/ListPricingPlansAssociatedWithPricingRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListPricingPlansAssociatedWithPricingRule.hs
@@ -0,0 +1,320 @@
+{-# 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.BillingConductor.ListPricingPlansAssociatedWithPricingRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A list of the pricing plans that are associated with a pricing rule.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListPricingPlansAssociatedWithPricingRule
+  ( -- * Creating a Request
+    ListPricingPlansAssociatedWithPricingRule (..),
+    newListPricingPlansAssociatedWithPricingRule,
+
+    -- * Request Lenses
+    listPricingPlansAssociatedWithPricingRule_billingPeriod,
+    listPricingPlansAssociatedWithPricingRule_maxResults,
+    listPricingPlansAssociatedWithPricingRule_nextToken,
+    listPricingPlansAssociatedWithPricingRule_pricingRuleArn,
+
+    -- * Destructuring the Response
+    ListPricingPlansAssociatedWithPricingRuleResponse (..),
+    newListPricingPlansAssociatedWithPricingRuleResponse,
+
+    -- * Response Lenses
+    listPricingPlansAssociatedWithPricingRuleResponse_billingPeriod,
+    listPricingPlansAssociatedWithPricingRuleResponse_nextToken,
+    listPricingPlansAssociatedWithPricingRuleResponse_pricingPlanArns,
+    listPricingPlansAssociatedWithPricingRuleResponse_pricingRuleArn,
+    listPricingPlansAssociatedWithPricingRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPricingPlansAssociatedWithPricingRule' smart constructor.
+data ListPricingPlansAssociatedWithPricingRule = ListPricingPlansAssociatedWithPricingRule'
+  { -- | The pricing plan billing period for which associations will be listed.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The optional maximum number of pricing rule associations to retrieve.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The optional pagination token returned by a previous call.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The pricing rule Amazon Resource Name (ARN) for which associations will
+    -- be listed.
+    pricingRuleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingPlansAssociatedWithPricingRule' 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:
+--
+-- 'billingPeriod', 'listPricingPlansAssociatedWithPricingRule_billingPeriod' - The pricing plan billing period for which associations will be listed.
+--
+-- 'maxResults', 'listPricingPlansAssociatedWithPricingRule_maxResults' - The optional maximum number of pricing rule associations to retrieve.
+--
+-- 'nextToken', 'listPricingPlansAssociatedWithPricingRule_nextToken' - The optional pagination token returned by a previous call.
+--
+-- 'pricingRuleArn', 'listPricingPlansAssociatedWithPricingRule_pricingRuleArn' - The pricing rule Amazon Resource Name (ARN) for which associations will
+-- be listed.
+newListPricingPlansAssociatedWithPricingRule ::
+  -- | 'pricingRuleArn'
+  Prelude.Text ->
+  ListPricingPlansAssociatedWithPricingRule
+newListPricingPlansAssociatedWithPricingRule
+  pPricingRuleArn_ =
+    ListPricingPlansAssociatedWithPricingRule'
+      { billingPeriod =
+          Prelude.Nothing,
+        maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        pricingRuleArn =
+          pPricingRuleArn_
+      }
+
+-- | The pricing plan billing period for which associations will be listed.
+listPricingPlansAssociatedWithPricingRule_billingPeriod :: Lens.Lens' ListPricingPlansAssociatedWithPricingRule (Prelude.Maybe Prelude.Text)
+listPricingPlansAssociatedWithPricingRule_billingPeriod = Lens.lens (\ListPricingPlansAssociatedWithPricingRule' {billingPeriod} -> billingPeriod) (\s@ListPricingPlansAssociatedWithPricingRule' {} a -> s {billingPeriod = a} :: ListPricingPlansAssociatedWithPricingRule)
+
+-- | The optional maximum number of pricing rule associations to retrieve.
+listPricingPlansAssociatedWithPricingRule_maxResults :: Lens.Lens' ListPricingPlansAssociatedWithPricingRule (Prelude.Maybe Prelude.Natural)
+listPricingPlansAssociatedWithPricingRule_maxResults = Lens.lens (\ListPricingPlansAssociatedWithPricingRule' {maxResults} -> maxResults) (\s@ListPricingPlansAssociatedWithPricingRule' {} a -> s {maxResults = a} :: ListPricingPlansAssociatedWithPricingRule)
+
+-- | The optional pagination token returned by a previous call.
+listPricingPlansAssociatedWithPricingRule_nextToken :: Lens.Lens' ListPricingPlansAssociatedWithPricingRule (Prelude.Maybe Prelude.Text)
+listPricingPlansAssociatedWithPricingRule_nextToken = Lens.lens (\ListPricingPlansAssociatedWithPricingRule' {nextToken} -> nextToken) (\s@ListPricingPlansAssociatedWithPricingRule' {} a -> s {nextToken = a} :: ListPricingPlansAssociatedWithPricingRule)
+
+-- | The pricing rule Amazon Resource Name (ARN) for which associations will
+-- be listed.
+listPricingPlansAssociatedWithPricingRule_pricingRuleArn :: Lens.Lens' ListPricingPlansAssociatedWithPricingRule Prelude.Text
+listPricingPlansAssociatedWithPricingRule_pricingRuleArn = Lens.lens (\ListPricingPlansAssociatedWithPricingRule' {pricingRuleArn} -> pricingRuleArn) (\s@ListPricingPlansAssociatedWithPricingRule' {} a -> s {pricingRuleArn = a} :: ListPricingPlansAssociatedWithPricingRule)
+
+instance
+  Core.AWSPager
+    ListPricingPlansAssociatedWithPricingRule
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPricingPlansAssociatedWithPricingRuleResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPricingPlansAssociatedWithPricingRuleResponse_pricingPlanArns
+            Prelude.. Lens._Just
+            Prelude.. Lens.to Prelude.toList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPricingPlansAssociatedWithPricingRule_nextToken
+          Lens..~ rs
+          Lens.^? listPricingPlansAssociatedWithPricingRuleResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListPricingPlansAssociatedWithPricingRule
+  where
+  type
+    AWSResponse
+      ListPricingPlansAssociatedWithPricingRule =
+      ListPricingPlansAssociatedWithPricingRuleResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPricingPlansAssociatedWithPricingRuleResponse'
+            Prelude.<$> (x Data..?> "BillingPeriod")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "PricingPlanArns")
+            Prelude.<*> (x Data..?> "PricingRuleArn")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListPricingPlansAssociatedWithPricingRule
+  where
+  hashWithSalt
+    _salt
+    ListPricingPlansAssociatedWithPricingRule' {..} =
+      _salt
+        `Prelude.hashWithSalt` billingPeriod
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` pricingRuleArn
+
+instance
+  Prelude.NFData
+    ListPricingPlansAssociatedWithPricingRule
+  where
+  rnf ListPricingPlansAssociatedWithPricingRule' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pricingRuleArn
+
+instance
+  Data.ToHeaders
+    ListPricingPlansAssociatedWithPricingRule
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListPricingPlansAssociatedWithPricingRule
+  where
+  toJSON ListPricingPlansAssociatedWithPricingRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("PricingRuleArn" Data..= pricingRuleArn)
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListPricingPlansAssociatedWithPricingRule
+  where
+  toPath =
+    Prelude.const
+      "/list-pricing-plans-associated-with-pricing-rule"
+
+instance
+  Data.ToQuery
+    ListPricingPlansAssociatedWithPricingRule
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListPricingPlansAssociatedWithPricingRuleResponse' smart constructor.
+data ListPricingPlansAssociatedWithPricingRuleResponse = ListPricingPlansAssociatedWithPricingRuleResponse'
+  { -- | The pricing plan billing period for which associations will be listed.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The pagination token to be used on subsequent calls.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The list containing pricing plans that are associated with the requested
+    -- pricing rule.
+    pricingPlanArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The pricing rule Amazon Resource Name (ARN) for which associations will
+    -- be listed.
+    pricingRuleArn :: 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 'ListPricingPlansAssociatedWithPricingRuleResponse' 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:
+--
+-- 'billingPeriod', 'listPricingPlansAssociatedWithPricingRuleResponse_billingPeriod' - The pricing plan billing period for which associations will be listed.
+--
+-- 'nextToken', 'listPricingPlansAssociatedWithPricingRuleResponse_nextToken' - The pagination token to be used on subsequent calls.
+--
+-- 'pricingPlanArns', 'listPricingPlansAssociatedWithPricingRuleResponse_pricingPlanArns' - The list containing pricing plans that are associated with the requested
+-- pricing rule.
+--
+-- 'pricingRuleArn', 'listPricingPlansAssociatedWithPricingRuleResponse_pricingRuleArn' - The pricing rule Amazon Resource Name (ARN) for which associations will
+-- be listed.
+--
+-- 'httpStatus', 'listPricingPlansAssociatedWithPricingRuleResponse_httpStatus' - The response's http status code.
+newListPricingPlansAssociatedWithPricingRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPricingPlansAssociatedWithPricingRuleResponse
+newListPricingPlansAssociatedWithPricingRuleResponse
+  pHttpStatus_ =
+    ListPricingPlansAssociatedWithPricingRuleResponse'
+      { billingPeriod =
+          Prelude.Nothing,
+        nextToken =
+          Prelude.Nothing,
+        pricingPlanArns =
+          Prelude.Nothing,
+        pricingRuleArn =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The pricing plan billing period for which associations will be listed.
+listPricingPlansAssociatedWithPricingRuleResponse_billingPeriod :: Lens.Lens' ListPricingPlansAssociatedWithPricingRuleResponse (Prelude.Maybe Prelude.Text)
+listPricingPlansAssociatedWithPricingRuleResponse_billingPeriod = Lens.lens (\ListPricingPlansAssociatedWithPricingRuleResponse' {billingPeriod} -> billingPeriod) (\s@ListPricingPlansAssociatedWithPricingRuleResponse' {} a -> s {billingPeriod = a} :: ListPricingPlansAssociatedWithPricingRuleResponse)
+
+-- | The pagination token to be used on subsequent calls.
+listPricingPlansAssociatedWithPricingRuleResponse_nextToken :: Lens.Lens' ListPricingPlansAssociatedWithPricingRuleResponse (Prelude.Maybe Prelude.Text)
+listPricingPlansAssociatedWithPricingRuleResponse_nextToken = Lens.lens (\ListPricingPlansAssociatedWithPricingRuleResponse' {nextToken} -> nextToken) (\s@ListPricingPlansAssociatedWithPricingRuleResponse' {} a -> s {nextToken = a} :: ListPricingPlansAssociatedWithPricingRuleResponse)
+
+-- | The list containing pricing plans that are associated with the requested
+-- pricing rule.
+listPricingPlansAssociatedWithPricingRuleResponse_pricingPlanArns :: Lens.Lens' ListPricingPlansAssociatedWithPricingRuleResponse (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listPricingPlansAssociatedWithPricingRuleResponse_pricingPlanArns = Lens.lens (\ListPricingPlansAssociatedWithPricingRuleResponse' {pricingPlanArns} -> pricingPlanArns) (\s@ListPricingPlansAssociatedWithPricingRuleResponse' {} a -> s {pricingPlanArns = a} :: ListPricingPlansAssociatedWithPricingRuleResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pricing rule Amazon Resource Name (ARN) for which associations will
+-- be listed.
+listPricingPlansAssociatedWithPricingRuleResponse_pricingRuleArn :: Lens.Lens' ListPricingPlansAssociatedWithPricingRuleResponse (Prelude.Maybe Prelude.Text)
+listPricingPlansAssociatedWithPricingRuleResponse_pricingRuleArn = Lens.lens (\ListPricingPlansAssociatedWithPricingRuleResponse' {pricingRuleArn} -> pricingRuleArn) (\s@ListPricingPlansAssociatedWithPricingRuleResponse' {} a -> s {pricingRuleArn = a} :: ListPricingPlansAssociatedWithPricingRuleResponse)
+
+-- | The response's http status code.
+listPricingPlansAssociatedWithPricingRuleResponse_httpStatus :: Lens.Lens' ListPricingPlansAssociatedWithPricingRuleResponse Prelude.Int
+listPricingPlansAssociatedWithPricingRuleResponse_httpStatus = Lens.lens (\ListPricingPlansAssociatedWithPricingRuleResponse' {httpStatus} -> httpStatus) (\s@ListPricingPlansAssociatedWithPricingRuleResponse' {} a -> s {httpStatus = a} :: ListPricingPlansAssociatedWithPricingRuleResponse)
+
+instance
+  Prelude.NFData
+    ListPricingPlansAssociatedWithPricingRuleResponse
+  where
+  rnf
+    ListPricingPlansAssociatedWithPricingRuleResponse' {..} =
+      Prelude.rnf billingPeriod
+        `Prelude.seq` Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf pricingPlanArns
+        `Prelude.seq` Prelude.rnf pricingRuleArn
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListPricingRules.hs b/gen/Amazonka/BillingConductor/ListPricingRules.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListPricingRules.hs
@@ -0,0 +1,264 @@
+{-# 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.BillingConductor.ListPricingRules
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a pricing rule that can be associated to a pricing plan, or
+-- set of pricing plans.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListPricingRules
+  ( -- * Creating a Request
+    ListPricingRules (..),
+    newListPricingRules,
+
+    -- * Request Lenses
+    listPricingRules_billingPeriod,
+    listPricingRules_filters,
+    listPricingRules_maxResults,
+    listPricingRules_nextToken,
+
+    -- * Destructuring the Response
+    ListPricingRulesResponse (..),
+    newListPricingRulesResponse,
+
+    -- * Response Lenses
+    listPricingRulesResponse_billingPeriod,
+    listPricingRulesResponse_nextToken,
+    listPricingRulesResponse_pricingRules,
+    listPricingRulesResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPricingRules' smart constructor.
+data ListPricingRules = ListPricingRules'
+  { -- | The preferred billing period to get the pricing plan.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | A @DescribePricingRuleFilter@ that specifies the Amazon Resource Name
+    -- (ARNs) of pricing rules to retrieve pricing rules information.
+    filters :: Prelude.Maybe ListPricingRulesFilter,
+    -- | The maximum number of pricing rules to retrieve.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The pagination token that\'s used on subsequent call to get pricing
+    -- rules.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingRules' 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:
+--
+-- 'billingPeriod', 'listPricingRules_billingPeriod' - The preferred billing period to get the pricing plan.
+--
+-- 'filters', 'listPricingRules_filters' - A @DescribePricingRuleFilter@ that specifies the Amazon Resource Name
+-- (ARNs) of pricing rules to retrieve pricing rules information.
+--
+-- 'maxResults', 'listPricingRules_maxResults' - The maximum number of pricing rules to retrieve.
+--
+-- 'nextToken', 'listPricingRules_nextToken' - The pagination token that\'s used on subsequent call to get pricing
+-- rules.
+newListPricingRules ::
+  ListPricingRules
+newListPricingRules =
+  ListPricingRules'
+    { billingPeriod = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The preferred billing period to get the pricing plan.
+listPricingRules_billingPeriod :: Lens.Lens' ListPricingRules (Prelude.Maybe Prelude.Text)
+listPricingRules_billingPeriod = Lens.lens (\ListPricingRules' {billingPeriod} -> billingPeriod) (\s@ListPricingRules' {} a -> s {billingPeriod = a} :: ListPricingRules)
+
+-- | A @DescribePricingRuleFilter@ that specifies the Amazon Resource Name
+-- (ARNs) of pricing rules to retrieve pricing rules information.
+listPricingRules_filters :: Lens.Lens' ListPricingRules (Prelude.Maybe ListPricingRulesFilter)
+listPricingRules_filters = Lens.lens (\ListPricingRules' {filters} -> filters) (\s@ListPricingRules' {} a -> s {filters = a} :: ListPricingRules)
+
+-- | The maximum number of pricing rules to retrieve.
+listPricingRules_maxResults :: Lens.Lens' ListPricingRules (Prelude.Maybe Prelude.Natural)
+listPricingRules_maxResults = Lens.lens (\ListPricingRules' {maxResults} -> maxResults) (\s@ListPricingRules' {} a -> s {maxResults = a} :: ListPricingRules)
+
+-- | The pagination token that\'s used on subsequent call to get pricing
+-- rules.
+listPricingRules_nextToken :: Lens.Lens' ListPricingRules (Prelude.Maybe Prelude.Text)
+listPricingRules_nextToken = Lens.lens (\ListPricingRules' {nextToken} -> nextToken) (\s@ListPricingRules' {} a -> s {nextToken = a} :: ListPricingRules)
+
+instance Core.AWSPager ListPricingRules where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPricingRulesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPricingRulesResponse_pricingRules
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPricingRules_nextToken
+          Lens..~ rs
+          Lens.^? listPricingRulesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListPricingRules where
+  type
+    AWSResponse ListPricingRules =
+      ListPricingRulesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPricingRulesResponse'
+            Prelude.<$> (x Data..?> "BillingPeriod")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "PricingRules" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPricingRules where
+  hashWithSalt _salt ListPricingRules' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriod
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListPricingRules where
+  rnf ListPricingRules' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListPricingRules where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListPricingRules where
+  toJSON ListPricingRules' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListPricingRules where
+  toPath = Prelude.const "/list-pricing-rules"
+
+instance Data.ToQuery ListPricingRules where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListPricingRulesResponse' smart constructor.
+data ListPricingRulesResponse = ListPricingRulesResponse'
+  { -- | The billing period for which the described pricing rules are applicable.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The pagination token that\'s used on subsequent calls to get pricing
+    -- rules.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list containing the described pricing rules.
+    pricingRules :: Prelude.Maybe [PricingRuleListElement],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingRulesResponse' 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:
+--
+-- 'billingPeriod', 'listPricingRulesResponse_billingPeriod' - The billing period for which the described pricing rules are applicable.
+--
+-- 'nextToken', 'listPricingRulesResponse_nextToken' - The pagination token that\'s used on subsequent calls to get pricing
+-- rules.
+--
+-- 'pricingRules', 'listPricingRulesResponse_pricingRules' - A list containing the described pricing rules.
+--
+-- 'httpStatus', 'listPricingRulesResponse_httpStatus' - The response's http status code.
+newListPricingRulesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPricingRulesResponse
+newListPricingRulesResponse pHttpStatus_ =
+  ListPricingRulesResponse'
+    { billingPeriod =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      pricingRules = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The billing period for which the described pricing rules are applicable.
+listPricingRulesResponse_billingPeriod :: Lens.Lens' ListPricingRulesResponse (Prelude.Maybe Prelude.Text)
+listPricingRulesResponse_billingPeriod = Lens.lens (\ListPricingRulesResponse' {billingPeriod} -> billingPeriod) (\s@ListPricingRulesResponse' {} a -> s {billingPeriod = a} :: ListPricingRulesResponse)
+
+-- | The pagination token that\'s used on subsequent calls to get pricing
+-- rules.
+listPricingRulesResponse_nextToken :: Lens.Lens' ListPricingRulesResponse (Prelude.Maybe Prelude.Text)
+listPricingRulesResponse_nextToken = Lens.lens (\ListPricingRulesResponse' {nextToken} -> nextToken) (\s@ListPricingRulesResponse' {} a -> s {nextToken = a} :: ListPricingRulesResponse)
+
+-- | A list containing the described pricing rules.
+listPricingRulesResponse_pricingRules :: Lens.Lens' ListPricingRulesResponse (Prelude.Maybe [PricingRuleListElement])
+listPricingRulesResponse_pricingRules = Lens.lens (\ListPricingRulesResponse' {pricingRules} -> pricingRules) (\s@ListPricingRulesResponse' {} a -> s {pricingRules = a} :: ListPricingRulesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPricingRulesResponse_httpStatus :: Lens.Lens' ListPricingRulesResponse Prelude.Int
+listPricingRulesResponse_httpStatus = Lens.lens (\ListPricingRulesResponse' {httpStatus} -> httpStatus) (\s@ListPricingRulesResponse' {} a -> s {httpStatus = a} :: ListPricingRulesResponse)
+
+instance Prelude.NFData ListPricingRulesResponse where
+  rnf ListPricingRulesResponse' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pricingRules
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListPricingRulesAssociatedToPricingPlan.hs b/gen/Amazonka/BillingConductor/ListPricingRulesAssociatedToPricingPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListPricingRulesAssociatedToPricingPlan.hs
@@ -0,0 +1,321 @@
+{-# 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.BillingConductor.ListPricingRulesAssociatedToPricingPlan
+-- 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 pricing rules that are associated with a pricing plan.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListPricingRulesAssociatedToPricingPlan
+  ( -- * Creating a Request
+    ListPricingRulesAssociatedToPricingPlan (..),
+    newListPricingRulesAssociatedToPricingPlan,
+
+    -- * Request Lenses
+    listPricingRulesAssociatedToPricingPlan_billingPeriod,
+    listPricingRulesAssociatedToPricingPlan_maxResults,
+    listPricingRulesAssociatedToPricingPlan_nextToken,
+    listPricingRulesAssociatedToPricingPlan_pricingPlanArn,
+
+    -- * Destructuring the Response
+    ListPricingRulesAssociatedToPricingPlanResponse (..),
+    newListPricingRulesAssociatedToPricingPlanResponse,
+
+    -- * Response Lenses
+    listPricingRulesAssociatedToPricingPlanResponse_billingPeriod,
+    listPricingRulesAssociatedToPricingPlanResponse_nextToken,
+    listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn,
+    listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns,
+    listPricingRulesAssociatedToPricingPlanResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPricingRulesAssociatedToPricingPlan' smart constructor.
+data ListPricingRulesAssociatedToPricingPlan = ListPricingRulesAssociatedToPricingPlan'
+  { -- | The billing period for which the pricing rule associations are to be
+    -- listed.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The optional maximum number of pricing rule associations to retrieve.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The optional pagination token returned by a previous call.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the pricing plan for which
+    -- associations are to be listed.
+    pricingPlanArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingRulesAssociatedToPricingPlan' 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:
+--
+-- 'billingPeriod', 'listPricingRulesAssociatedToPricingPlan_billingPeriod' - The billing period for which the pricing rule associations are to be
+-- listed.
+--
+-- 'maxResults', 'listPricingRulesAssociatedToPricingPlan_maxResults' - The optional maximum number of pricing rule associations to retrieve.
+--
+-- 'nextToken', 'listPricingRulesAssociatedToPricingPlan_nextToken' - The optional pagination token returned by a previous call.
+--
+-- 'pricingPlanArn', 'listPricingRulesAssociatedToPricingPlan_pricingPlanArn' - The Amazon Resource Name (ARN) of the pricing plan for which
+-- associations are to be listed.
+newListPricingRulesAssociatedToPricingPlan ::
+  -- | 'pricingPlanArn'
+  Prelude.Text ->
+  ListPricingRulesAssociatedToPricingPlan
+newListPricingRulesAssociatedToPricingPlan
+  pPricingPlanArn_ =
+    ListPricingRulesAssociatedToPricingPlan'
+      { billingPeriod =
+          Prelude.Nothing,
+        maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        pricingPlanArn = pPricingPlanArn_
+      }
+
+-- | The billing period for which the pricing rule associations are to be
+-- listed.
+listPricingRulesAssociatedToPricingPlan_billingPeriod :: Lens.Lens' ListPricingRulesAssociatedToPricingPlan (Prelude.Maybe Prelude.Text)
+listPricingRulesAssociatedToPricingPlan_billingPeriod = Lens.lens (\ListPricingRulesAssociatedToPricingPlan' {billingPeriod} -> billingPeriod) (\s@ListPricingRulesAssociatedToPricingPlan' {} a -> s {billingPeriod = a} :: ListPricingRulesAssociatedToPricingPlan)
+
+-- | The optional maximum number of pricing rule associations to retrieve.
+listPricingRulesAssociatedToPricingPlan_maxResults :: Lens.Lens' ListPricingRulesAssociatedToPricingPlan (Prelude.Maybe Prelude.Natural)
+listPricingRulesAssociatedToPricingPlan_maxResults = Lens.lens (\ListPricingRulesAssociatedToPricingPlan' {maxResults} -> maxResults) (\s@ListPricingRulesAssociatedToPricingPlan' {} a -> s {maxResults = a} :: ListPricingRulesAssociatedToPricingPlan)
+
+-- | The optional pagination token returned by a previous call.
+listPricingRulesAssociatedToPricingPlan_nextToken :: Lens.Lens' ListPricingRulesAssociatedToPricingPlan (Prelude.Maybe Prelude.Text)
+listPricingRulesAssociatedToPricingPlan_nextToken = Lens.lens (\ListPricingRulesAssociatedToPricingPlan' {nextToken} -> nextToken) (\s@ListPricingRulesAssociatedToPricingPlan' {} a -> s {nextToken = a} :: ListPricingRulesAssociatedToPricingPlan)
+
+-- | The Amazon Resource Name (ARN) of the pricing plan for which
+-- associations are to be listed.
+listPricingRulesAssociatedToPricingPlan_pricingPlanArn :: Lens.Lens' ListPricingRulesAssociatedToPricingPlan Prelude.Text
+listPricingRulesAssociatedToPricingPlan_pricingPlanArn = Lens.lens (\ListPricingRulesAssociatedToPricingPlan' {pricingPlanArn} -> pricingPlanArn) (\s@ListPricingRulesAssociatedToPricingPlan' {} a -> s {pricingPlanArn = a} :: ListPricingRulesAssociatedToPricingPlan)
+
+instance
+  Core.AWSPager
+    ListPricingRulesAssociatedToPricingPlan
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPricingRulesAssociatedToPricingPlanResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns
+            Prelude.. Lens._Just
+            Prelude.. Lens.to Prelude.toList
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPricingRulesAssociatedToPricingPlan_nextToken
+          Lens..~ rs
+          Lens.^? listPricingRulesAssociatedToPricingPlanResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListPricingRulesAssociatedToPricingPlan
+  where
+  type
+    AWSResponse
+      ListPricingRulesAssociatedToPricingPlan =
+      ListPricingRulesAssociatedToPricingPlanResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPricingRulesAssociatedToPricingPlanResponse'
+            Prelude.<$> (x Data..?> "BillingPeriod")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "PricingPlanArn")
+            Prelude.<*> (x Data..?> "PricingRuleArns")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListPricingRulesAssociatedToPricingPlan
+  where
+  hashWithSalt
+    _salt
+    ListPricingRulesAssociatedToPricingPlan' {..} =
+      _salt
+        `Prelude.hashWithSalt` billingPeriod
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` pricingPlanArn
+
+instance
+  Prelude.NFData
+    ListPricingRulesAssociatedToPricingPlan
+  where
+  rnf ListPricingRulesAssociatedToPricingPlan' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pricingPlanArn
+
+instance
+  Data.ToHeaders
+    ListPricingRulesAssociatedToPricingPlan
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListPricingRulesAssociatedToPricingPlan
+  where
+  toJSON ListPricingRulesAssociatedToPricingPlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just
+              ("PricingPlanArn" Data..= pricingPlanArn)
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListPricingRulesAssociatedToPricingPlan
+  where
+  toPath =
+    Prelude.const
+      "/list-pricing-rules-associated-to-pricing-plan"
+
+instance
+  Data.ToQuery
+    ListPricingRulesAssociatedToPricingPlan
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListPricingRulesAssociatedToPricingPlanResponse' smart constructor.
+data ListPricingRulesAssociatedToPricingPlanResponse = ListPricingRulesAssociatedToPricingPlanResponse'
+  { -- | The billing period for which the pricing rule associations are listed.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The pagination token to be used on subsequent calls.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the pricing plan for which
+    -- associations are listed.
+    pricingPlanArn :: Prelude.Maybe Prelude.Text,
+    -- | A list containing pricing rules that are associated with the requested
+    -- pricing plan.
+    pricingRuleArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingRulesAssociatedToPricingPlanResponse' 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:
+--
+-- 'billingPeriod', 'listPricingRulesAssociatedToPricingPlanResponse_billingPeriod' - The billing period for which the pricing rule associations are listed.
+--
+-- 'nextToken', 'listPricingRulesAssociatedToPricingPlanResponse_nextToken' - The pagination token to be used on subsequent calls.
+--
+-- 'pricingPlanArn', 'listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn' - The Amazon Resource Name (ARN) of the pricing plan for which
+-- associations are listed.
+--
+-- 'pricingRuleArns', 'listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns' - A list containing pricing rules that are associated with the requested
+-- pricing plan.
+--
+-- 'httpStatus', 'listPricingRulesAssociatedToPricingPlanResponse_httpStatus' - The response's http status code.
+newListPricingRulesAssociatedToPricingPlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPricingRulesAssociatedToPricingPlanResponse
+newListPricingRulesAssociatedToPricingPlanResponse
+  pHttpStatus_ =
+    ListPricingRulesAssociatedToPricingPlanResponse'
+      { billingPeriod =
+          Prelude.Nothing,
+        nextToken =
+          Prelude.Nothing,
+        pricingPlanArn =
+          Prelude.Nothing,
+        pricingRuleArns =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The billing period for which the pricing rule associations are listed.
+listPricingRulesAssociatedToPricingPlanResponse_billingPeriod :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse (Prelude.Maybe Prelude.Text)
+listPricingRulesAssociatedToPricingPlanResponse_billingPeriod = Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {billingPeriod} -> billingPeriod) (\s@ListPricingRulesAssociatedToPricingPlanResponse' {} a -> s {billingPeriod = a} :: ListPricingRulesAssociatedToPricingPlanResponse)
+
+-- | The pagination token to be used on subsequent calls.
+listPricingRulesAssociatedToPricingPlanResponse_nextToken :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse (Prelude.Maybe Prelude.Text)
+listPricingRulesAssociatedToPricingPlanResponse_nextToken = Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {nextToken} -> nextToken) (\s@ListPricingRulesAssociatedToPricingPlanResponse' {} a -> s {nextToken = a} :: ListPricingRulesAssociatedToPricingPlanResponse)
+
+-- | The Amazon Resource Name (ARN) of the pricing plan for which
+-- associations are listed.
+listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse (Prelude.Maybe Prelude.Text)
+listPricingRulesAssociatedToPricingPlanResponse_pricingPlanArn = Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {pricingPlanArn} -> pricingPlanArn) (\s@ListPricingRulesAssociatedToPricingPlanResponse' {} a -> s {pricingPlanArn = a} :: ListPricingRulesAssociatedToPricingPlanResponse)
+
+-- | A list containing pricing rules that are associated with the requested
+-- pricing plan.
+listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listPricingRulesAssociatedToPricingPlanResponse_pricingRuleArns = Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {pricingRuleArns} -> pricingRuleArns) (\s@ListPricingRulesAssociatedToPricingPlanResponse' {} a -> s {pricingRuleArns = a} :: ListPricingRulesAssociatedToPricingPlanResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPricingRulesAssociatedToPricingPlanResponse_httpStatus :: Lens.Lens' ListPricingRulesAssociatedToPricingPlanResponse Prelude.Int
+listPricingRulesAssociatedToPricingPlanResponse_httpStatus = Lens.lens (\ListPricingRulesAssociatedToPricingPlanResponse' {httpStatus} -> httpStatus) (\s@ListPricingRulesAssociatedToPricingPlanResponse' {} a -> s {httpStatus = a} :: ListPricingRulesAssociatedToPricingPlanResponse)
+
+instance
+  Prelude.NFData
+    ListPricingRulesAssociatedToPricingPlanResponse
+  where
+  rnf
+    ListPricingRulesAssociatedToPricingPlanResponse' {..} =
+      Prelude.rnf billingPeriod
+        `Prelude.seq` Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf pricingPlanArn
+        `Prelude.seq` Prelude.rnf pricingRuleArns
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListResourcesAssociatedToCustomLineItem.hs b/gen/Amazonka/BillingConductor/ListResourcesAssociatedToCustomLineItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListResourcesAssociatedToCustomLineItem.hs
@@ -0,0 +1,321 @@
+{-# 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.BillingConductor.ListResourcesAssociatedToCustomLineItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the resources that are associated to a custom line item.
+--
+-- This operation returns paginated results.
+module Amazonka.BillingConductor.ListResourcesAssociatedToCustomLineItem
+  ( -- * Creating a Request
+    ListResourcesAssociatedToCustomLineItem (..),
+    newListResourcesAssociatedToCustomLineItem,
+
+    -- * Request Lenses
+    listResourcesAssociatedToCustomLineItem_billingPeriod,
+    listResourcesAssociatedToCustomLineItem_filters,
+    listResourcesAssociatedToCustomLineItem_maxResults,
+    listResourcesAssociatedToCustomLineItem_nextToken,
+    listResourcesAssociatedToCustomLineItem_arn,
+
+    -- * Destructuring the Response
+    ListResourcesAssociatedToCustomLineItemResponse (..),
+    newListResourcesAssociatedToCustomLineItemResponse,
+
+    -- * Response Lenses
+    listResourcesAssociatedToCustomLineItemResponse_arn,
+    listResourcesAssociatedToCustomLineItemResponse_associatedResources,
+    listResourcesAssociatedToCustomLineItemResponse_nextToken,
+    listResourcesAssociatedToCustomLineItemResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListResourcesAssociatedToCustomLineItem' smart constructor.
+data ListResourcesAssociatedToCustomLineItem = ListResourcesAssociatedToCustomLineItem'
+  { -- | The billing period for which the resource associations will be listed.
+    billingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | (Optional) A @ListResourcesAssociatedToCustomLineItemFilter@ that can
+    -- specify the types of resources that should be retrieved.
+    filters :: Prelude.Maybe ListResourcesAssociatedToCustomLineItemFilter,
+    -- | (Optional) The maximum number of resource associations to be retrieved.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | (Optional) The pagination token that\'s returned by a previous request.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the custom line item for which the resource associations will
+    -- be listed.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListResourcesAssociatedToCustomLineItem' 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:
+--
+-- 'billingPeriod', 'listResourcesAssociatedToCustomLineItem_billingPeriod' - The billing period for which the resource associations will be listed.
+--
+-- 'filters', 'listResourcesAssociatedToCustomLineItem_filters' - (Optional) A @ListResourcesAssociatedToCustomLineItemFilter@ that can
+-- specify the types of resources that should be retrieved.
+--
+-- 'maxResults', 'listResourcesAssociatedToCustomLineItem_maxResults' - (Optional) The maximum number of resource associations to be retrieved.
+--
+-- 'nextToken', 'listResourcesAssociatedToCustomLineItem_nextToken' - (Optional) The pagination token that\'s returned by a previous request.
+--
+-- 'arn', 'listResourcesAssociatedToCustomLineItem_arn' - The ARN of the custom line item for which the resource associations will
+-- be listed.
+newListResourcesAssociatedToCustomLineItem ::
+  -- | 'arn'
+  Prelude.Text ->
+  ListResourcesAssociatedToCustomLineItem
+newListResourcesAssociatedToCustomLineItem pArn_ =
+  ListResourcesAssociatedToCustomLineItem'
+    { billingPeriod =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | The billing period for which the resource associations will be listed.
+listResourcesAssociatedToCustomLineItem_billingPeriod :: Lens.Lens' ListResourcesAssociatedToCustomLineItem (Prelude.Maybe Prelude.Text)
+listResourcesAssociatedToCustomLineItem_billingPeriod = Lens.lens (\ListResourcesAssociatedToCustomLineItem' {billingPeriod} -> billingPeriod) (\s@ListResourcesAssociatedToCustomLineItem' {} a -> s {billingPeriod = a} :: ListResourcesAssociatedToCustomLineItem)
+
+-- | (Optional) A @ListResourcesAssociatedToCustomLineItemFilter@ that can
+-- specify the types of resources that should be retrieved.
+listResourcesAssociatedToCustomLineItem_filters :: Lens.Lens' ListResourcesAssociatedToCustomLineItem (Prelude.Maybe ListResourcesAssociatedToCustomLineItemFilter)
+listResourcesAssociatedToCustomLineItem_filters = Lens.lens (\ListResourcesAssociatedToCustomLineItem' {filters} -> filters) (\s@ListResourcesAssociatedToCustomLineItem' {} a -> s {filters = a} :: ListResourcesAssociatedToCustomLineItem)
+
+-- | (Optional) The maximum number of resource associations to be retrieved.
+listResourcesAssociatedToCustomLineItem_maxResults :: Lens.Lens' ListResourcesAssociatedToCustomLineItem (Prelude.Maybe Prelude.Natural)
+listResourcesAssociatedToCustomLineItem_maxResults = Lens.lens (\ListResourcesAssociatedToCustomLineItem' {maxResults} -> maxResults) (\s@ListResourcesAssociatedToCustomLineItem' {} a -> s {maxResults = a} :: ListResourcesAssociatedToCustomLineItem)
+
+-- | (Optional) The pagination token that\'s returned by a previous request.
+listResourcesAssociatedToCustomLineItem_nextToken :: Lens.Lens' ListResourcesAssociatedToCustomLineItem (Prelude.Maybe Prelude.Text)
+listResourcesAssociatedToCustomLineItem_nextToken = Lens.lens (\ListResourcesAssociatedToCustomLineItem' {nextToken} -> nextToken) (\s@ListResourcesAssociatedToCustomLineItem' {} a -> s {nextToken = a} :: ListResourcesAssociatedToCustomLineItem)
+
+-- | The ARN of the custom line item for which the resource associations will
+-- be listed.
+listResourcesAssociatedToCustomLineItem_arn :: Lens.Lens' ListResourcesAssociatedToCustomLineItem Prelude.Text
+listResourcesAssociatedToCustomLineItem_arn = Lens.lens (\ListResourcesAssociatedToCustomLineItem' {arn} -> arn) (\s@ListResourcesAssociatedToCustomLineItem' {} a -> s {arn = a} :: ListResourcesAssociatedToCustomLineItem)
+
+instance
+  Core.AWSPager
+    ListResourcesAssociatedToCustomLineItem
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listResourcesAssociatedToCustomLineItemResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listResourcesAssociatedToCustomLineItemResponse_associatedResources
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listResourcesAssociatedToCustomLineItem_nextToken
+          Lens..~ rs
+          Lens.^? listResourcesAssociatedToCustomLineItemResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListResourcesAssociatedToCustomLineItem
+  where
+  type
+    AWSResponse
+      ListResourcesAssociatedToCustomLineItem =
+      ListResourcesAssociatedToCustomLineItemResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListResourcesAssociatedToCustomLineItemResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> ( x
+                            Data..?> "AssociatedResources"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListResourcesAssociatedToCustomLineItem
+  where
+  hashWithSalt
+    _salt
+    ListResourcesAssociatedToCustomLineItem' {..} =
+      _salt
+        `Prelude.hashWithSalt` billingPeriod
+        `Prelude.hashWithSalt` filters
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` arn
+
+instance
+  Prelude.NFData
+    ListResourcesAssociatedToCustomLineItem
+  where
+  rnf ListResourcesAssociatedToCustomLineItem' {..} =
+    Prelude.rnf billingPeriod
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf arn
+
+instance
+  Data.ToHeaders
+    ListResourcesAssociatedToCustomLineItem
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListResourcesAssociatedToCustomLineItem
+  where
+  toJSON ListResourcesAssociatedToCustomLineItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriod" Data..=) Prelude.<$> billingPeriod,
+            ("Filters" Data..=) Prelude.<$> filters,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListResourcesAssociatedToCustomLineItem
+  where
+  toPath =
+    Prelude.const
+      "/list-resources-associated-to-custom-line-item"
+
+instance
+  Data.ToQuery
+    ListResourcesAssociatedToCustomLineItem
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListResourcesAssociatedToCustomLineItemResponse' smart constructor.
+data ListResourcesAssociatedToCustomLineItemResponse = ListResourcesAssociatedToCustomLineItemResponse'
+  { -- | The custom line item ARN for which the resource associations are listed.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A list of @ListResourcesAssociatedToCustomLineItemResponseElement@ for
+    -- each resource association retrieved.
+    associatedResources :: Prelude.Maybe [ListResourcesAssociatedToCustomLineItemResponseElement],
+    -- | The pagination token to be used in subsequent requests to retrieve
+    -- additional results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListResourcesAssociatedToCustomLineItemResponse' 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:
+--
+-- 'arn', 'listResourcesAssociatedToCustomLineItemResponse_arn' - The custom line item ARN for which the resource associations are listed.
+--
+-- 'associatedResources', 'listResourcesAssociatedToCustomLineItemResponse_associatedResources' - A list of @ListResourcesAssociatedToCustomLineItemResponseElement@ for
+-- each resource association retrieved.
+--
+-- 'nextToken', 'listResourcesAssociatedToCustomLineItemResponse_nextToken' - The pagination token to be used in subsequent requests to retrieve
+-- additional results.
+--
+-- 'httpStatus', 'listResourcesAssociatedToCustomLineItemResponse_httpStatus' - The response's http status code.
+newListResourcesAssociatedToCustomLineItemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListResourcesAssociatedToCustomLineItemResponse
+newListResourcesAssociatedToCustomLineItemResponse
+  pHttpStatus_ =
+    ListResourcesAssociatedToCustomLineItemResponse'
+      { arn =
+          Prelude.Nothing,
+        associatedResources =
+          Prelude.Nothing,
+        nextToken =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The custom line item ARN for which the resource associations are listed.
+listResourcesAssociatedToCustomLineItemResponse_arn :: Lens.Lens' ListResourcesAssociatedToCustomLineItemResponse (Prelude.Maybe Prelude.Text)
+listResourcesAssociatedToCustomLineItemResponse_arn = Lens.lens (\ListResourcesAssociatedToCustomLineItemResponse' {arn} -> arn) (\s@ListResourcesAssociatedToCustomLineItemResponse' {} a -> s {arn = a} :: ListResourcesAssociatedToCustomLineItemResponse)
+
+-- | A list of @ListResourcesAssociatedToCustomLineItemResponseElement@ for
+-- each resource association retrieved.
+listResourcesAssociatedToCustomLineItemResponse_associatedResources :: Lens.Lens' ListResourcesAssociatedToCustomLineItemResponse (Prelude.Maybe [ListResourcesAssociatedToCustomLineItemResponseElement])
+listResourcesAssociatedToCustomLineItemResponse_associatedResources = Lens.lens (\ListResourcesAssociatedToCustomLineItemResponse' {associatedResources} -> associatedResources) (\s@ListResourcesAssociatedToCustomLineItemResponse' {} a -> s {associatedResources = a} :: ListResourcesAssociatedToCustomLineItemResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pagination token to be used in subsequent requests to retrieve
+-- additional results.
+listResourcesAssociatedToCustomLineItemResponse_nextToken :: Lens.Lens' ListResourcesAssociatedToCustomLineItemResponse (Prelude.Maybe Prelude.Text)
+listResourcesAssociatedToCustomLineItemResponse_nextToken = Lens.lens (\ListResourcesAssociatedToCustomLineItemResponse' {nextToken} -> nextToken) (\s@ListResourcesAssociatedToCustomLineItemResponse' {} a -> s {nextToken = a} :: ListResourcesAssociatedToCustomLineItemResponse)
+
+-- | The response's http status code.
+listResourcesAssociatedToCustomLineItemResponse_httpStatus :: Lens.Lens' ListResourcesAssociatedToCustomLineItemResponse Prelude.Int
+listResourcesAssociatedToCustomLineItemResponse_httpStatus = Lens.lens (\ListResourcesAssociatedToCustomLineItemResponse' {httpStatus} -> httpStatus) (\s@ListResourcesAssociatedToCustomLineItemResponse' {} a -> s {httpStatus = a} :: ListResourcesAssociatedToCustomLineItemResponse)
+
+instance
+  Prelude.NFData
+    ListResourcesAssociatedToCustomLineItemResponse
+  where
+  rnf
+    ListResourcesAssociatedToCustomLineItemResponse' {..} =
+      Prelude.rnf arn
+        `Prelude.seq` Prelude.rnf associatedResources
+        `Prelude.seq` Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/ListTagsForResource.hs b/gen/Amazonka/BillingConductor/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/ListTagsForResource.hs
@@ -0,0 +1,162 @@
+{-# 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.BillingConductor.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- A list the tags for a resource.
+module Amazonka.BillingConductor.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) that identifies the resource to list the
+    -- tags.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' 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:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) that identifies the resource to list the
+-- tags.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) that identifies the resource to list the
+-- tags.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The tags for the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The tags for the resource.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The tags for the resource.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/TagResource.hs b/gen/Amazonka/BillingConductor/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/TagResource.hs
@@ -0,0 +1,165 @@
+{-# 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.BillingConductor.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates the specified tags to a resource with the specified
+-- @resourceArn@. If existing tags on a resource are not specified in the
+-- request parameters, they are not changed.
+module Amazonka.BillingConductor.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource to which to add tags.
+    resourceArn :: Prelude.Text,
+    -- | The tags to add to the resource as a list of key-value pairs.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' 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:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource to which to add tags.
+--
+-- 'tags', 'tagResource_tags' - The tags to add to the resource as a list of key-value pairs.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource to which to add tags.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | The tags to add to the resource as a list of key-value pairs.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' 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', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/Types.hs b/gen/Amazonka/BillingConductor/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types.hs
@@ -0,0 +1,486 @@
+{-# 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.BillingConductor.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.BillingConductor.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ServiceLimitExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * AssociateResourceErrorReason
+    AssociateResourceErrorReason (..),
+
+    -- * BillingGroupStatus
+    BillingGroupStatus (..),
+
+    -- * CurrencyCode
+    CurrencyCode (..),
+
+    -- * CustomLineItemRelationship
+    CustomLineItemRelationship (..),
+
+    -- * CustomLineItemType
+    CustomLineItemType (..),
+
+    -- * PricingRuleScope
+    PricingRuleScope (..),
+
+    -- * PricingRuleType
+    PricingRuleType (..),
+
+    -- * AccountAssociationsListElement
+    AccountAssociationsListElement (..),
+    newAccountAssociationsListElement,
+    accountAssociationsListElement_accountEmail,
+    accountAssociationsListElement_accountId,
+    accountAssociationsListElement_accountName,
+    accountAssociationsListElement_billingGroupArn,
+
+    -- * AccountGrouping
+    AccountGrouping (..),
+    newAccountGrouping,
+    accountGrouping_linkedAccountIds,
+
+    -- * AssociateResourceError
+    AssociateResourceError (..),
+    newAssociateResourceError,
+    associateResourceError_message,
+    associateResourceError_reason,
+
+    -- * AssociateResourceResponseElement
+    AssociateResourceResponseElement (..),
+    newAssociateResourceResponseElement,
+    associateResourceResponseElement_arn,
+    associateResourceResponseElement_error,
+
+    -- * BillingGroupCostReportElement
+    BillingGroupCostReportElement (..),
+    newBillingGroupCostReportElement,
+    billingGroupCostReportElement_aWSCost,
+    billingGroupCostReportElement_arn,
+    billingGroupCostReportElement_currency,
+    billingGroupCostReportElement_margin,
+    billingGroupCostReportElement_marginPercentage,
+    billingGroupCostReportElement_proformaCost,
+
+    -- * BillingGroupListElement
+    BillingGroupListElement (..),
+    newBillingGroupListElement,
+    billingGroupListElement_arn,
+    billingGroupListElement_computationPreference,
+    billingGroupListElement_creationTime,
+    billingGroupListElement_description,
+    billingGroupListElement_lastModifiedTime,
+    billingGroupListElement_name,
+    billingGroupListElement_primaryAccountId,
+    billingGroupListElement_size,
+    billingGroupListElement_status,
+    billingGroupListElement_statusReason,
+
+    -- * ComputationPreference
+    ComputationPreference (..),
+    newComputationPreference,
+    computationPreference_pricingPlanArn,
+
+    -- * CreateFreeTierConfig
+    CreateFreeTierConfig (..),
+    newCreateFreeTierConfig,
+    createFreeTierConfig_activated,
+
+    -- * CreateTieringInput
+    CreateTieringInput (..),
+    newCreateTieringInput,
+    createTieringInput_freeTier,
+
+    -- * CustomLineItemBillingPeriodRange
+    CustomLineItemBillingPeriodRange (..),
+    newCustomLineItemBillingPeriodRange,
+    customLineItemBillingPeriodRange_exclusiveEndBillingPeriod,
+    customLineItemBillingPeriodRange_inclusiveStartBillingPeriod,
+
+    -- * CustomLineItemChargeDetails
+    CustomLineItemChargeDetails (..),
+    newCustomLineItemChargeDetails,
+    customLineItemChargeDetails_flat,
+    customLineItemChargeDetails_percentage,
+    customLineItemChargeDetails_type,
+
+    -- * CustomLineItemFlatChargeDetails
+    CustomLineItemFlatChargeDetails (..),
+    newCustomLineItemFlatChargeDetails,
+    customLineItemFlatChargeDetails_chargeValue,
+
+    -- * CustomLineItemListElement
+    CustomLineItemListElement (..),
+    newCustomLineItemListElement,
+    customLineItemListElement_arn,
+    customLineItemListElement_associationSize,
+    customLineItemListElement_billingGroupArn,
+    customLineItemListElement_chargeDetails,
+    customLineItemListElement_creationTime,
+    customLineItemListElement_currencyCode,
+    customLineItemListElement_description,
+    customLineItemListElement_lastModifiedTime,
+    customLineItemListElement_name,
+    customLineItemListElement_productCode,
+
+    -- * CustomLineItemPercentageChargeDetails
+    CustomLineItemPercentageChargeDetails (..),
+    newCustomLineItemPercentageChargeDetails,
+    customLineItemPercentageChargeDetails_associatedValues,
+    customLineItemPercentageChargeDetails_percentageValue,
+
+    -- * CustomLineItemVersionListElement
+    CustomLineItemVersionListElement (..),
+    newCustomLineItemVersionListElement,
+    customLineItemVersionListElement_associationSize,
+    customLineItemVersionListElement_billingGroupArn,
+    customLineItemVersionListElement_chargeDetails,
+    customLineItemVersionListElement_creationTime,
+    customLineItemVersionListElement_currencyCode,
+    customLineItemVersionListElement_description,
+    customLineItemVersionListElement_endBillingPeriod,
+    customLineItemVersionListElement_lastModifiedTime,
+    customLineItemVersionListElement_name,
+    customLineItemVersionListElement_productCode,
+    customLineItemVersionListElement_startBillingPeriod,
+
+    -- * DisassociateResourceResponseElement
+    DisassociateResourceResponseElement (..),
+    newDisassociateResourceResponseElement,
+    disassociateResourceResponseElement_arn,
+    disassociateResourceResponseElement_error,
+
+    -- * FreeTierConfig
+    FreeTierConfig (..),
+    newFreeTierConfig,
+    freeTierConfig_activated,
+
+    -- * ListAccountAssociationsFilter
+    ListAccountAssociationsFilter (..),
+    newListAccountAssociationsFilter,
+    listAccountAssociationsFilter_accountId,
+    listAccountAssociationsFilter_association,
+
+    -- * ListBillingGroupCostReportsFilter
+    ListBillingGroupCostReportsFilter (..),
+    newListBillingGroupCostReportsFilter,
+    listBillingGroupCostReportsFilter_billingGroupArns,
+
+    -- * ListBillingGroupsFilter
+    ListBillingGroupsFilter (..),
+    newListBillingGroupsFilter,
+    listBillingGroupsFilter_arns,
+    listBillingGroupsFilter_pricingPlan,
+
+    -- * ListCustomLineItemChargeDetails
+    ListCustomLineItemChargeDetails (..),
+    newListCustomLineItemChargeDetails,
+    listCustomLineItemChargeDetails_flat,
+    listCustomLineItemChargeDetails_percentage,
+    listCustomLineItemChargeDetails_type,
+
+    -- * ListCustomLineItemFlatChargeDetails
+    ListCustomLineItemFlatChargeDetails (..),
+    newListCustomLineItemFlatChargeDetails,
+    listCustomLineItemFlatChargeDetails_chargeValue,
+
+    -- * ListCustomLineItemPercentageChargeDetails
+    ListCustomLineItemPercentageChargeDetails (..),
+    newListCustomLineItemPercentageChargeDetails,
+    listCustomLineItemPercentageChargeDetails_percentageValue,
+
+    -- * ListCustomLineItemVersionsBillingPeriodRangeFilter
+    ListCustomLineItemVersionsBillingPeriodRangeFilter (..),
+    newListCustomLineItemVersionsBillingPeriodRangeFilter,
+    listCustomLineItemVersionsBillingPeriodRangeFilter_endBillingPeriod,
+    listCustomLineItemVersionsBillingPeriodRangeFilter_startBillingPeriod,
+
+    -- * ListCustomLineItemVersionsFilter
+    ListCustomLineItemVersionsFilter (..),
+    newListCustomLineItemVersionsFilter,
+    listCustomLineItemVersionsFilter_billingPeriodRange,
+
+    -- * ListCustomLineItemsFilter
+    ListCustomLineItemsFilter (..),
+    newListCustomLineItemsFilter,
+    listCustomLineItemsFilter_arns,
+    listCustomLineItemsFilter_billingGroups,
+    listCustomLineItemsFilter_names,
+
+    -- * ListPricingPlansFilter
+    ListPricingPlansFilter (..),
+    newListPricingPlansFilter,
+    listPricingPlansFilter_arns,
+
+    -- * ListPricingRulesFilter
+    ListPricingRulesFilter (..),
+    newListPricingRulesFilter,
+    listPricingRulesFilter_arns,
+
+    -- * ListResourcesAssociatedToCustomLineItemFilter
+    ListResourcesAssociatedToCustomLineItemFilter (..),
+    newListResourcesAssociatedToCustomLineItemFilter,
+    listResourcesAssociatedToCustomLineItemFilter_relationship,
+
+    -- * ListResourcesAssociatedToCustomLineItemResponseElement
+    ListResourcesAssociatedToCustomLineItemResponseElement (..),
+    newListResourcesAssociatedToCustomLineItemResponseElement,
+    listResourcesAssociatedToCustomLineItemResponseElement_arn,
+    listResourcesAssociatedToCustomLineItemResponseElement_endBillingPeriod,
+    listResourcesAssociatedToCustomLineItemResponseElement_relationship,
+
+    -- * PricingPlanListElement
+    PricingPlanListElement (..),
+    newPricingPlanListElement,
+    pricingPlanListElement_arn,
+    pricingPlanListElement_creationTime,
+    pricingPlanListElement_description,
+    pricingPlanListElement_lastModifiedTime,
+    pricingPlanListElement_name,
+    pricingPlanListElement_size,
+
+    -- * PricingRuleListElement
+    PricingRuleListElement (..),
+    newPricingRuleListElement,
+    pricingRuleListElement_arn,
+    pricingRuleListElement_associatedPricingPlanCount,
+    pricingRuleListElement_billingEntity,
+    pricingRuleListElement_creationTime,
+    pricingRuleListElement_description,
+    pricingRuleListElement_lastModifiedTime,
+    pricingRuleListElement_modifierPercentage,
+    pricingRuleListElement_name,
+    pricingRuleListElement_scope,
+    pricingRuleListElement_service,
+    pricingRuleListElement_tiering,
+    pricingRuleListElement_type,
+
+    -- * Tiering
+    Tiering (..),
+    newTiering,
+    tiering_freeTier,
+
+    -- * UpdateCustomLineItemChargeDetails
+    UpdateCustomLineItemChargeDetails (..),
+    newUpdateCustomLineItemChargeDetails,
+    updateCustomLineItemChargeDetails_flat,
+    updateCustomLineItemChargeDetails_percentage,
+
+    -- * UpdateCustomLineItemFlatChargeDetails
+    UpdateCustomLineItemFlatChargeDetails (..),
+    newUpdateCustomLineItemFlatChargeDetails,
+    updateCustomLineItemFlatChargeDetails_chargeValue,
+
+    -- * UpdateCustomLineItemPercentageChargeDetails
+    UpdateCustomLineItemPercentageChargeDetails (..),
+    newUpdateCustomLineItemPercentageChargeDetails,
+    updateCustomLineItemPercentageChargeDetails_percentageValue,
+
+    -- * UpdateFreeTierConfig
+    UpdateFreeTierConfig (..),
+    newUpdateFreeTierConfig,
+    updateFreeTierConfig_activated,
+
+    -- * UpdateTieringInput
+    UpdateTieringInput (..),
+    newUpdateTieringInput,
+    updateTieringInput_freeTier,
+  )
+where
+
+import Amazonka.BillingConductor.Types.AccountAssociationsListElement
+import Amazonka.BillingConductor.Types.AccountGrouping
+import Amazonka.BillingConductor.Types.AssociateResourceError
+import Amazonka.BillingConductor.Types.AssociateResourceErrorReason
+import Amazonka.BillingConductor.Types.AssociateResourceResponseElement
+import Amazonka.BillingConductor.Types.BillingGroupCostReportElement
+import Amazonka.BillingConductor.Types.BillingGroupListElement
+import Amazonka.BillingConductor.Types.BillingGroupStatus
+import Amazonka.BillingConductor.Types.ComputationPreference
+import Amazonka.BillingConductor.Types.CreateFreeTierConfig
+import Amazonka.BillingConductor.Types.CreateTieringInput
+import Amazonka.BillingConductor.Types.CurrencyCode
+import Amazonka.BillingConductor.Types.CustomLineItemBillingPeriodRange
+import Amazonka.BillingConductor.Types.CustomLineItemChargeDetails
+import Amazonka.BillingConductor.Types.CustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.CustomLineItemListElement
+import Amazonka.BillingConductor.Types.CustomLineItemPercentageChargeDetails
+import Amazonka.BillingConductor.Types.CustomLineItemRelationship
+import Amazonka.BillingConductor.Types.CustomLineItemType
+import Amazonka.BillingConductor.Types.CustomLineItemVersionListElement
+import Amazonka.BillingConductor.Types.DisassociateResourceResponseElement
+import Amazonka.BillingConductor.Types.FreeTierConfig
+import Amazonka.BillingConductor.Types.ListAccountAssociationsFilter
+import Amazonka.BillingConductor.Types.ListBillingGroupCostReportsFilter
+import Amazonka.BillingConductor.Types.ListBillingGroupsFilter
+import Amazonka.BillingConductor.Types.ListCustomLineItemChargeDetails
+import Amazonka.BillingConductor.Types.ListCustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.ListCustomLineItemPercentageChargeDetails
+import Amazonka.BillingConductor.Types.ListCustomLineItemVersionsBillingPeriodRangeFilter
+import Amazonka.BillingConductor.Types.ListCustomLineItemVersionsFilter
+import Amazonka.BillingConductor.Types.ListCustomLineItemsFilter
+import Amazonka.BillingConductor.Types.ListPricingPlansFilter
+import Amazonka.BillingConductor.Types.ListPricingRulesFilter
+import Amazonka.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemFilter
+import Amazonka.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemResponseElement
+import Amazonka.BillingConductor.Types.PricingPlanListElement
+import Amazonka.BillingConductor.Types.PricingRuleListElement
+import Amazonka.BillingConductor.Types.PricingRuleScope
+import Amazonka.BillingConductor.Types.PricingRuleType
+import Amazonka.BillingConductor.Types.Tiering
+import Amazonka.BillingConductor.Types.UpdateCustomLineItemChargeDetails
+import Amazonka.BillingConductor.Types.UpdateCustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.UpdateCustomLineItemPercentageChargeDetails
+import Amazonka.BillingConductor.Types.UpdateFreeTierConfig
+import Amazonka.BillingConductor.Types.UpdateTieringInput
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2021-07-30@ of the Amazon BillingConductor SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "BillingConductor",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "billingconductor",
+      Core.signingName = "billingconductor",
+      Core.version = "2021-07-30",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "BillingConductor",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | You do not have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | You can cause an inconsistent state by updating or deleting a resource.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | An unexpected error occurred while processing a request.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | The request references a resource that doesn\'t exist.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request would cause a service limit to exceed.
+_ServiceLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceLimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceLimitExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | The request was denied due to request throttling.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The input doesn\'t match with the constraints specified by Amazon Web
+-- Services services.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/BillingConductor/Types/AccountAssociationsListElement.hs b/gen/Amazonka/BillingConductor/Types/AccountAssociationsListElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/AccountAssociationsListElement.hs
@@ -0,0 +1,117 @@
+{-# 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.BillingConductor.Types.AccountAssociationsListElement
+-- 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.BillingConductor.Types.AccountAssociationsListElement where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of a linked account.
+--
+-- /See:/ 'newAccountAssociationsListElement' smart constructor.
+data AccountAssociationsListElement = AccountAssociationsListElement'
+  { -- | The Amazon Web Services account email.
+    accountEmail :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The associating array of account IDs.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services account name.
+    accountName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Billing Group Arn that the linked account is associated to.
+    billingGroupArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AccountAssociationsListElement' 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:
+--
+-- 'accountEmail', 'accountAssociationsListElement_accountEmail' - The Amazon Web Services account email.
+--
+-- 'accountId', 'accountAssociationsListElement_accountId' - The associating array of account IDs.
+--
+-- 'accountName', 'accountAssociationsListElement_accountName' - The Amazon Web Services account name.
+--
+-- 'billingGroupArn', 'accountAssociationsListElement_billingGroupArn' - The Billing Group Arn that the linked account is associated to.
+newAccountAssociationsListElement ::
+  AccountAssociationsListElement
+newAccountAssociationsListElement =
+  AccountAssociationsListElement'
+    { accountEmail =
+        Prelude.Nothing,
+      accountId = Prelude.Nothing,
+      accountName = Prelude.Nothing,
+      billingGroupArn = Prelude.Nothing
+    }
+
+-- | The Amazon Web Services account email.
+accountAssociationsListElement_accountEmail :: Lens.Lens' AccountAssociationsListElement (Prelude.Maybe Prelude.Text)
+accountAssociationsListElement_accountEmail = Lens.lens (\AccountAssociationsListElement' {accountEmail} -> accountEmail) (\s@AccountAssociationsListElement' {} a -> s {accountEmail = a} :: AccountAssociationsListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The associating array of account IDs.
+accountAssociationsListElement_accountId :: Lens.Lens' AccountAssociationsListElement (Prelude.Maybe Prelude.Text)
+accountAssociationsListElement_accountId = Lens.lens (\AccountAssociationsListElement' {accountId} -> accountId) (\s@AccountAssociationsListElement' {} a -> s {accountId = a} :: AccountAssociationsListElement)
+
+-- | The Amazon Web Services account name.
+accountAssociationsListElement_accountName :: Lens.Lens' AccountAssociationsListElement (Prelude.Maybe Prelude.Text)
+accountAssociationsListElement_accountName = Lens.lens (\AccountAssociationsListElement' {accountName} -> accountName) (\s@AccountAssociationsListElement' {} a -> s {accountName = a} :: AccountAssociationsListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Billing Group Arn that the linked account is associated to.
+accountAssociationsListElement_billingGroupArn :: Lens.Lens' AccountAssociationsListElement (Prelude.Maybe Prelude.Text)
+accountAssociationsListElement_billingGroupArn = Lens.lens (\AccountAssociationsListElement' {billingGroupArn} -> billingGroupArn) (\s@AccountAssociationsListElement' {} a -> s {billingGroupArn = a} :: AccountAssociationsListElement)
+
+instance Data.FromJSON AccountAssociationsListElement where
+  parseJSON =
+    Data.withObject
+      "AccountAssociationsListElement"
+      ( \x ->
+          AccountAssociationsListElement'
+            Prelude.<$> (x Data..:? "AccountEmail")
+            Prelude.<*> (x Data..:? "AccountId")
+            Prelude.<*> (x Data..:? "AccountName")
+            Prelude.<*> (x Data..:? "BillingGroupArn")
+      )
+
+instance
+  Prelude.Hashable
+    AccountAssociationsListElement
+  where
+  hashWithSalt
+    _salt
+    AccountAssociationsListElement' {..} =
+      _salt
+        `Prelude.hashWithSalt` accountEmail
+        `Prelude.hashWithSalt` accountId
+        `Prelude.hashWithSalt` accountName
+        `Prelude.hashWithSalt` billingGroupArn
+
+instance
+  Prelude.NFData
+    AccountAssociationsListElement
+  where
+  rnf AccountAssociationsListElement' {..} =
+    Prelude.rnf accountEmail
+      `Prelude.seq` Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf accountName
+      `Prelude.seq` Prelude.rnf billingGroupArn
diff --git a/gen/Amazonka/BillingConductor/Types/AccountGrouping.hs b/gen/Amazonka/BillingConductor/Types/AccountGrouping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/AccountGrouping.hs
@@ -0,0 +1,81 @@
+{-# 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.BillingConductor.Types.AccountGrouping
+-- 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.BillingConductor.Types.AccountGrouping where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The set of accounts that will be under the billing group. The set of
+-- accounts resemble the linked accounts in a consolidated family.
+--
+-- /See:/ 'newAccountGrouping' smart constructor.
+data AccountGrouping = AccountGrouping'
+  { -- | The account IDs that make up the billing group. Account IDs must be a
+    -- part of the consolidated billing family, and not associated with another
+    -- billing group.
+    linkedAccountIds :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AccountGrouping' 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:
+--
+-- 'linkedAccountIds', 'accountGrouping_linkedAccountIds' - The account IDs that make up the billing group. Account IDs must be a
+-- part of the consolidated billing family, and not associated with another
+-- billing group.
+newAccountGrouping ::
+  -- | 'linkedAccountIds'
+  Prelude.NonEmpty Prelude.Text ->
+  AccountGrouping
+newAccountGrouping pLinkedAccountIds_ =
+  AccountGrouping'
+    { linkedAccountIds =
+        Lens.coerced Lens.# pLinkedAccountIds_
+    }
+
+-- | The account IDs that make up the billing group. Account IDs must be a
+-- part of the consolidated billing family, and not associated with another
+-- billing group.
+accountGrouping_linkedAccountIds :: Lens.Lens' AccountGrouping (Prelude.NonEmpty Prelude.Text)
+accountGrouping_linkedAccountIds = Lens.lens (\AccountGrouping' {linkedAccountIds} -> linkedAccountIds) (\s@AccountGrouping' {} a -> s {linkedAccountIds = a} :: AccountGrouping) Prelude.. Lens.coerced
+
+instance Prelude.Hashable AccountGrouping where
+  hashWithSalt _salt AccountGrouping' {..} =
+    _salt `Prelude.hashWithSalt` linkedAccountIds
+
+instance Prelude.NFData AccountGrouping where
+  rnf AccountGrouping' {..} =
+    Prelude.rnf linkedAccountIds
+
+instance Data.ToJSON AccountGrouping where
+  toJSON AccountGrouping' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("LinkedAccountIds" Data..= linkedAccountIds)
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/AssociateResourceError.hs b/gen/Amazonka/BillingConductor/Types/AssociateResourceError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/AssociateResourceError.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.AssociateResourceError
+-- 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.BillingConductor.Types.AssociateResourceError where
+
+import Amazonka.BillingConductor.Types.AssociateResourceErrorReason
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of a resource association error.
+--
+-- /See:/ 'newAssociateResourceError' smart constructor.
+data AssociateResourceError = AssociateResourceError'
+  { -- | The reason why the resource association failed.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | A static error code that\'s used to classify the type of failure.
+    reason :: Prelude.Maybe AssociateResourceErrorReason
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateResourceError' 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:
+--
+-- 'message', 'associateResourceError_message' - The reason why the resource association failed.
+--
+-- 'reason', 'associateResourceError_reason' - A static error code that\'s used to classify the type of failure.
+newAssociateResourceError ::
+  AssociateResourceError
+newAssociateResourceError =
+  AssociateResourceError'
+    { message = Prelude.Nothing,
+      reason = Prelude.Nothing
+    }
+
+-- | The reason why the resource association failed.
+associateResourceError_message :: Lens.Lens' AssociateResourceError (Prelude.Maybe Prelude.Text)
+associateResourceError_message = Lens.lens (\AssociateResourceError' {message} -> message) (\s@AssociateResourceError' {} a -> s {message = a} :: AssociateResourceError)
+
+-- | A static error code that\'s used to classify the type of failure.
+associateResourceError_reason :: Lens.Lens' AssociateResourceError (Prelude.Maybe AssociateResourceErrorReason)
+associateResourceError_reason = Lens.lens (\AssociateResourceError' {reason} -> reason) (\s@AssociateResourceError' {} a -> s {reason = a} :: AssociateResourceError)
+
+instance Data.FromJSON AssociateResourceError where
+  parseJSON =
+    Data.withObject
+      "AssociateResourceError"
+      ( \x ->
+          AssociateResourceError'
+            Prelude.<$> (x Data..:? "Message")
+            Prelude.<*> (x Data..:? "Reason")
+      )
+
+instance Prelude.Hashable AssociateResourceError where
+  hashWithSalt _salt AssociateResourceError' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` reason
+
+instance Prelude.NFData AssociateResourceError where
+  rnf AssociateResourceError' {..} =
+    Prelude.rnf message
+      `Prelude.seq` Prelude.rnf reason
diff --git a/gen/Amazonka/BillingConductor/Types/AssociateResourceErrorReason.hs b/gen/Amazonka/BillingConductor/Types/AssociateResourceErrorReason.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/AssociateResourceErrorReason.hs
@@ -0,0 +1,86 @@
+{-# 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.BillingConductor.Types.AssociateResourceErrorReason
+-- 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.BillingConductor.Types.AssociateResourceErrorReason
+  ( AssociateResourceErrorReason
+      ( ..,
+        AssociateResourceErrorReason_ILLEGAL_CUSTOMLINEITEM,
+        AssociateResourceErrorReason_INTERNAL_SERVER_EXCEPTION,
+        AssociateResourceErrorReason_INVALID_ARN,
+        AssociateResourceErrorReason_INVALID_BILLING_PERIOD_RANGE,
+        AssociateResourceErrorReason_SERVICE_LIMIT_EXCEEDED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AssociateResourceErrorReason = AssociateResourceErrorReason'
+  { fromAssociateResourceErrorReason ::
+      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 AssociateResourceErrorReason_ILLEGAL_CUSTOMLINEITEM :: AssociateResourceErrorReason
+pattern AssociateResourceErrorReason_ILLEGAL_CUSTOMLINEITEM = AssociateResourceErrorReason' "ILLEGAL_CUSTOMLINEITEM"
+
+pattern AssociateResourceErrorReason_INTERNAL_SERVER_EXCEPTION :: AssociateResourceErrorReason
+pattern AssociateResourceErrorReason_INTERNAL_SERVER_EXCEPTION = AssociateResourceErrorReason' "INTERNAL_SERVER_EXCEPTION"
+
+pattern AssociateResourceErrorReason_INVALID_ARN :: AssociateResourceErrorReason
+pattern AssociateResourceErrorReason_INVALID_ARN = AssociateResourceErrorReason' "INVALID_ARN"
+
+pattern AssociateResourceErrorReason_INVALID_BILLING_PERIOD_RANGE :: AssociateResourceErrorReason
+pattern AssociateResourceErrorReason_INVALID_BILLING_PERIOD_RANGE = AssociateResourceErrorReason' "INVALID_BILLING_PERIOD_RANGE"
+
+pattern AssociateResourceErrorReason_SERVICE_LIMIT_EXCEEDED :: AssociateResourceErrorReason
+pattern AssociateResourceErrorReason_SERVICE_LIMIT_EXCEEDED = AssociateResourceErrorReason' "SERVICE_LIMIT_EXCEEDED"
+
+{-# COMPLETE
+  AssociateResourceErrorReason_ILLEGAL_CUSTOMLINEITEM,
+  AssociateResourceErrorReason_INTERNAL_SERVER_EXCEPTION,
+  AssociateResourceErrorReason_INVALID_ARN,
+  AssociateResourceErrorReason_INVALID_BILLING_PERIOD_RANGE,
+  AssociateResourceErrorReason_SERVICE_LIMIT_EXCEEDED,
+  AssociateResourceErrorReason'
+  #-}
diff --git a/gen/Amazonka/BillingConductor/Types/AssociateResourceResponseElement.hs b/gen/Amazonka/BillingConductor/Types/AssociateResourceResponseElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/AssociateResourceResponseElement.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.AssociateResourceResponseElement
+-- 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.BillingConductor.Types.AssociateResourceResponseElement where
+
+import Amazonka.BillingConductor.Types.AssociateResourceError
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A resource association result for a percentage custom line item.
+--
+-- /See:/ 'newAssociateResourceResponseElement' smart constructor.
+data AssociateResourceResponseElement = AssociateResourceResponseElement'
+  { -- | The resource ARN that was associated to the custom line item.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | An @AssociateResourceError@ that will populate if the resource
+    -- association fails.
+    error :: Prelude.Maybe AssociateResourceError
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateResourceResponseElement' 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:
+--
+-- 'arn', 'associateResourceResponseElement_arn' - The resource ARN that was associated to the custom line item.
+--
+-- 'error', 'associateResourceResponseElement_error' - An @AssociateResourceError@ that will populate if the resource
+-- association fails.
+newAssociateResourceResponseElement ::
+  AssociateResourceResponseElement
+newAssociateResourceResponseElement =
+  AssociateResourceResponseElement'
+    { arn =
+        Prelude.Nothing,
+      error = Prelude.Nothing
+    }
+
+-- | The resource ARN that was associated to the custom line item.
+associateResourceResponseElement_arn :: Lens.Lens' AssociateResourceResponseElement (Prelude.Maybe Prelude.Text)
+associateResourceResponseElement_arn = Lens.lens (\AssociateResourceResponseElement' {arn} -> arn) (\s@AssociateResourceResponseElement' {} a -> s {arn = a} :: AssociateResourceResponseElement)
+
+-- | An @AssociateResourceError@ that will populate if the resource
+-- association fails.
+associateResourceResponseElement_error :: Lens.Lens' AssociateResourceResponseElement (Prelude.Maybe AssociateResourceError)
+associateResourceResponseElement_error = Lens.lens (\AssociateResourceResponseElement' {error} -> error) (\s@AssociateResourceResponseElement' {} a -> s {error = a} :: AssociateResourceResponseElement)
+
+instance
+  Data.FromJSON
+    AssociateResourceResponseElement
+  where
+  parseJSON =
+    Data.withObject
+      "AssociateResourceResponseElement"
+      ( \x ->
+          AssociateResourceResponseElement'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "Error")
+      )
+
+instance
+  Prelude.Hashable
+    AssociateResourceResponseElement
+  where
+  hashWithSalt
+    _salt
+    AssociateResourceResponseElement' {..} =
+      _salt
+        `Prelude.hashWithSalt` arn
+        `Prelude.hashWithSalt` error
+
+instance
+  Prelude.NFData
+    AssociateResourceResponseElement
+  where
+  rnf AssociateResourceResponseElement' {..} =
+    Prelude.rnf arn `Prelude.seq` Prelude.rnf error
diff --git a/gen/Amazonka/BillingConductor/Types/BillingGroupCostReportElement.hs b/gen/Amazonka/BillingConductor/Types/BillingGroupCostReportElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/BillingGroupCostReportElement.hs
@@ -0,0 +1,141 @@
+{-# 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.BillingConductor.Types.BillingGroupCostReportElement
+-- 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.BillingConductor.Types.BillingGroupCostReportElement where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A summary report of actual Amazon Web Services charges and calculated
+-- Amazon Web Services charges, based on the associated pricing plan of a
+-- billing group.
+--
+-- /See:/ 'newBillingGroupCostReportElement' smart constructor.
+data BillingGroupCostReportElement = BillingGroupCostReportElement'
+  { -- | The actual Amazon Web Services charges for the billing group.
+    aWSCost :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of a billing group.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The displayed currency.
+    currency :: Prelude.Maybe Prelude.Text,
+    -- | The billing group margin.
+    margin :: Prelude.Maybe Prelude.Text,
+    -- | The percentage of billing group margin.
+    marginPercentage :: Prelude.Maybe Prelude.Text,
+    -- | The hypothetical Amazon Web Services charges based on the associated
+    -- pricing plan of a billing group.
+    proformaCost :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BillingGroupCostReportElement' 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:
+--
+-- 'aWSCost', 'billingGroupCostReportElement_aWSCost' - The actual Amazon Web Services charges for the billing group.
+--
+-- 'arn', 'billingGroupCostReportElement_arn' - The Amazon Resource Name (ARN) of a billing group.
+--
+-- 'currency', 'billingGroupCostReportElement_currency' - The displayed currency.
+--
+-- 'margin', 'billingGroupCostReportElement_margin' - The billing group margin.
+--
+-- 'marginPercentage', 'billingGroupCostReportElement_marginPercentage' - The percentage of billing group margin.
+--
+-- 'proformaCost', 'billingGroupCostReportElement_proformaCost' - The hypothetical Amazon Web Services charges based on the associated
+-- pricing plan of a billing group.
+newBillingGroupCostReportElement ::
+  BillingGroupCostReportElement
+newBillingGroupCostReportElement =
+  BillingGroupCostReportElement'
+    { aWSCost =
+        Prelude.Nothing,
+      arn = Prelude.Nothing,
+      currency = Prelude.Nothing,
+      margin = Prelude.Nothing,
+      marginPercentage = Prelude.Nothing,
+      proformaCost = Prelude.Nothing
+    }
+
+-- | The actual Amazon Web Services charges for the billing group.
+billingGroupCostReportElement_aWSCost :: Lens.Lens' BillingGroupCostReportElement (Prelude.Maybe Prelude.Text)
+billingGroupCostReportElement_aWSCost = Lens.lens (\BillingGroupCostReportElement' {aWSCost} -> aWSCost) (\s@BillingGroupCostReportElement' {} a -> s {aWSCost = a} :: BillingGroupCostReportElement)
+
+-- | The Amazon Resource Name (ARN) of a billing group.
+billingGroupCostReportElement_arn :: Lens.Lens' BillingGroupCostReportElement (Prelude.Maybe Prelude.Text)
+billingGroupCostReportElement_arn = Lens.lens (\BillingGroupCostReportElement' {arn} -> arn) (\s@BillingGroupCostReportElement' {} a -> s {arn = a} :: BillingGroupCostReportElement)
+
+-- | The displayed currency.
+billingGroupCostReportElement_currency :: Lens.Lens' BillingGroupCostReportElement (Prelude.Maybe Prelude.Text)
+billingGroupCostReportElement_currency = Lens.lens (\BillingGroupCostReportElement' {currency} -> currency) (\s@BillingGroupCostReportElement' {} a -> s {currency = a} :: BillingGroupCostReportElement)
+
+-- | The billing group margin.
+billingGroupCostReportElement_margin :: Lens.Lens' BillingGroupCostReportElement (Prelude.Maybe Prelude.Text)
+billingGroupCostReportElement_margin = Lens.lens (\BillingGroupCostReportElement' {margin} -> margin) (\s@BillingGroupCostReportElement' {} a -> s {margin = a} :: BillingGroupCostReportElement)
+
+-- | The percentage of billing group margin.
+billingGroupCostReportElement_marginPercentage :: Lens.Lens' BillingGroupCostReportElement (Prelude.Maybe Prelude.Text)
+billingGroupCostReportElement_marginPercentage = Lens.lens (\BillingGroupCostReportElement' {marginPercentage} -> marginPercentage) (\s@BillingGroupCostReportElement' {} a -> s {marginPercentage = a} :: BillingGroupCostReportElement)
+
+-- | The hypothetical Amazon Web Services charges based on the associated
+-- pricing plan of a billing group.
+billingGroupCostReportElement_proformaCost :: Lens.Lens' BillingGroupCostReportElement (Prelude.Maybe Prelude.Text)
+billingGroupCostReportElement_proformaCost = Lens.lens (\BillingGroupCostReportElement' {proformaCost} -> proformaCost) (\s@BillingGroupCostReportElement' {} a -> s {proformaCost = a} :: BillingGroupCostReportElement)
+
+instance Data.FromJSON BillingGroupCostReportElement where
+  parseJSON =
+    Data.withObject
+      "BillingGroupCostReportElement"
+      ( \x ->
+          BillingGroupCostReportElement'
+            Prelude.<$> (x Data..:? "AWSCost")
+            Prelude.<*> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "Currency")
+            Prelude.<*> (x Data..:? "Margin")
+            Prelude.<*> (x Data..:? "MarginPercentage")
+            Prelude.<*> (x Data..:? "ProformaCost")
+      )
+
+instance
+  Prelude.Hashable
+    BillingGroupCostReportElement
+  where
+  hashWithSalt _salt BillingGroupCostReportElement' {..} =
+    _salt
+      `Prelude.hashWithSalt` aWSCost
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` currency
+      `Prelude.hashWithSalt` margin
+      `Prelude.hashWithSalt` marginPercentage
+      `Prelude.hashWithSalt` proformaCost
+
+instance Prelude.NFData BillingGroupCostReportElement where
+  rnf BillingGroupCostReportElement' {..} =
+    Prelude.rnf aWSCost
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf currency
+      `Prelude.seq` Prelude.rnf margin
+      `Prelude.seq` Prelude.rnf marginPercentage
+      `Prelude.seq` Prelude.rnf proformaCost
diff --git a/gen/Amazonka/BillingConductor/Types/BillingGroupListElement.hs b/gen/Amazonka/BillingConductor/Types/BillingGroupListElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/BillingGroupListElement.hs
@@ -0,0 +1,184 @@
+{-# 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.BillingConductor.Types.BillingGroupListElement
+-- 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.BillingConductor.Types.BillingGroupListElement where
+
+import Amazonka.BillingConductor.Types.BillingGroupStatus
+import Amazonka.BillingConductor.Types.ComputationPreference
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of a billing group.
+--
+-- /See:/ 'newBillingGroupListElement' smart constructor.
+data BillingGroupListElement = BillingGroupListElement'
+  { -- | The Amazon Resource Number (ARN) that can be used to uniquely identify
+    -- the billing group.
+    arn :: Prelude.Maybe Prelude.Text,
+    computationPreference :: Prelude.Maybe ComputationPreference,
+    -- | The time when the billing group was created.
+    creationTime :: Prelude.Maybe Prelude.Integer,
+    -- | The description of the billing group.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The most recent time when the billing group was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | The name of the billing group.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The account ID that serves as the main account in a billing group.
+    primaryAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The number of accounts in the particular billing group.
+    size :: Prelude.Maybe Prelude.Natural,
+    -- | The billing group status. Only one of the valid values can be used.
+    status :: Prelude.Maybe BillingGroupStatus,
+    -- | The reason why the billing group is in its current status.
+    statusReason :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BillingGroupListElement' 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:
+--
+-- 'arn', 'billingGroupListElement_arn' - The Amazon Resource Number (ARN) that can be used to uniquely identify
+-- the billing group.
+--
+-- 'computationPreference', 'billingGroupListElement_computationPreference' - Undocumented member.
+--
+-- 'creationTime', 'billingGroupListElement_creationTime' - The time when the billing group was created.
+--
+-- 'description', 'billingGroupListElement_description' - The description of the billing group.
+--
+-- 'lastModifiedTime', 'billingGroupListElement_lastModifiedTime' - The most recent time when the billing group was modified.
+--
+-- 'name', 'billingGroupListElement_name' - The name of the billing group.
+--
+-- 'primaryAccountId', 'billingGroupListElement_primaryAccountId' - The account ID that serves as the main account in a billing group.
+--
+-- 'size', 'billingGroupListElement_size' - The number of accounts in the particular billing group.
+--
+-- 'status', 'billingGroupListElement_status' - The billing group status. Only one of the valid values can be used.
+--
+-- 'statusReason', 'billingGroupListElement_statusReason' - The reason why the billing group is in its current status.
+newBillingGroupListElement ::
+  BillingGroupListElement
+newBillingGroupListElement =
+  BillingGroupListElement'
+    { arn = Prelude.Nothing,
+      computationPreference = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      primaryAccountId = Prelude.Nothing,
+      size = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusReason = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Number (ARN) that can be used to uniquely identify
+-- the billing group.
+billingGroupListElement_arn :: Lens.Lens' BillingGroupListElement (Prelude.Maybe Prelude.Text)
+billingGroupListElement_arn = Lens.lens (\BillingGroupListElement' {arn} -> arn) (\s@BillingGroupListElement' {} a -> s {arn = a} :: BillingGroupListElement)
+
+-- | Undocumented member.
+billingGroupListElement_computationPreference :: Lens.Lens' BillingGroupListElement (Prelude.Maybe ComputationPreference)
+billingGroupListElement_computationPreference = Lens.lens (\BillingGroupListElement' {computationPreference} -> computationPreference) (\s@BillingGroupListElement' {} a -> s {computationPreference = a} :: BillingGroupListElement)
+
+-- | The time when the billing group was created.
+billingGroupListElement_creationTime :: Lens.Lens' BillingGroupListElement (Prelude.Maybe Prelude.Integer)
+billingGroupListElement_creationTime = Lens.lens (\BillingGroupListElement' {creationTime} -> creationTime) (\s@BillingGroupListElement' {} a -> s {creationTime = a} :: BillingGroupListElement)
+
+-- | The description of the billing group.
+billingGroupListElement_description :: Lens.Lens' BillingGroupListElement (Prelude.Maybe Prelude.Text)
+billingGroupListElement_description = Lens.lens (\BillingGroupListElement' {description} -> description) (\s@BillingGroupListElement' {} a -> s {description = a} :: BillingGroupListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The most recent time when the billing group was modified.
+billingGroupListElement_lastModifiedTime :: Lens.Lens' BillingGroupListElement (Prelude.Maybe Prelude.Integer)
+billingGroupListElement_lastModifiedTime = Lens.lens (\BillingGroupListElement' {lastModifiedTime} -> lastModifiedTime) (\s@BillingGroupListElement' {} a -> s {lastModifiedTime = a} :: BillingGroupListElement)
+
+-- | The name of the billing group.
+billingGroupListElement_name :: Lens.Lens' BillingGroupListElement (Prelude.Maybe Prelude.Text)
+billingGroupListElement_name = Lens.lens (\BillingGroupListElement' {name} -> name) (\s@BillingGroupListElement' {} a -> s {name = a} :: BillingGroupListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The account ID that serves as the main account in a billing group.
+billingGroupListElement_primaryAccountId :: Lens.Lens' BillingGroupListElement (Prelude.Maybe Prelude.Text)
+billingGroupListElement_primaryAccountId = Lens.lens (\BillingGroupListElement' {primaryAccountId} -> primaryAccountId) (\s@BillingGroupListElement' {} a -> s {primaryAccountId = a} :: BillingGroupListElement)
+
+-- | The number of accounts in the particular billing group.
+billingGroupListElement_size :: Lens.Lens' BillingGroupListElement (Prelude.Maybe Prelude.Natural)
+billingGroupListElement_size = Lens.lens (\BillingGroupListElement' {size} -> size) (\s@BillingGroupListElement' {} a -> s {size = a} :: BillingGroupListElement)
+
+-- | The billing group status. Only one of the valid values can be used.
+billingGroupListElement_status :: Lens.Lens' BillingGroupListElement (Prelude.Maybe BillingGroupStatus)
+billingGroupListElement_status = Lens.lens (\BillingGroupListElement' {status} -> status) (\s@BillingGroupListElement' {} a -> s {status = a} :: BillingGroupListElement)
+
+-- | The reason why the billing group is in its current status.
+billingGroupListElement_statusReason :: Lens.Lens' BillingGroupListElement (Prelude.Maybe Prelude.Text)
+billingGroupListElement_statusReason = Lens.lens (\BillingGroupListElement' {statusReason} -> statusReason) (\s@BillingGroupListElement' {} a -> s {statusReason = a} :: BillingGroupListElement)
+
+instance Data.FromJSON BillingGroupListElement where
+  parseJSON =
+    Data.withObject
+      "BillingGroupListElement"
+      ( \x ->
+          BillingGroupListElement'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "ComputationPreference")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "PrimaryAccountId")
+            Prelude.<*> (x Data..:? "Size")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "StatusReason")
+      )
+
+instance Prelude.Hashable BillingGroupListElement where
+  hashWithSalt _salt BillingGroupListElement' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` computationPreference
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` primaryAccountId
+      `Prelude.hashWithSalt` size
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusReason
+
+instance Prelude.NFData BillingGroupListElement where
+  rnf BillingGroupListElement' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf computationPreference
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf primaryAccountId
+      `Prelude.seq` Prelude.rnf size
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusReason
diff --git a/gen/Amazonka/BillingConductor/Types/BillingGroupStatus.hs b/gen/Amazonka/BillingConductor/Types/BillingGroupStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/BillingGroupStatus.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.BillingConductor.Types.BillingGroupStatus
+-- 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.BillingConductor.Types.BillingGroupStatus
+  ( BillingGroupStatus
+      ( ..,
+        BillingGroupStatus_ACTIVE,
+        BillingGroupStatus_PRIMARY_ACCOUNT_MISSING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BillingGroupStatus = BillingGroupStatus'
+  { fromBillingGroupStatus ::
+      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 BillingGroupStatus_ACTIVE :: BillingGroupStatus
+pattern BillingGroupStatus_ACTIVE = BillingGroupStatus' "ACTIVE"
+
+pattern BillingGroupStatus_PRIMARY_ACCOUNT_MISSING :: BillingGroupStatus
+pattern BillingGroupStatus_PRIMARY_ACCOUNT_MISSING = BillingGroupStatus' "PRIMARY_ACCOUNT_MISSING"
+
+{-# COMPLETE
+  BillingGroupStatus_ACTIVE,
+  BillingGroupStatus_PRIMARY_ACCOUNT_MISSING,
+  BillingGroupStatus'
+  #-}
diff --git a/gen/Amazonka/BillingConductor/Types/ComputationPreference.hs b/gen/Amazonka/BillingConductor/Types/ComputationPreference.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ComputationPreference.hs
@@ -0,0 +1,87 @@
+{-# 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.BillingConductor.Types.ComputationPreference
+-- 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.BillingConductor.Types.ComputationPreference where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The preferences and settings that will be used to compute the Amazon Web
+-- Services charges for a billing group.
+--
+-- /See:/ 'newComputationPreference' smart constructor.
+data ComputationPreference = ComputationPreference'
+  { -- | The Amazon Resource Name (ARN) of the pricing plan that\'s used to
+    -- compute the Amazon Web Services charges for a billing group.
+    pricingPlanArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ComputationPreference' 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:
+--
+-- 'pricingPlanArn', 'computationPreference_pricingPlanArn' - The Amazon Resource Name (ARN) of the pricing plan that\'s used to
+-- compute the Amazon Web Services charges for a billing group.
+newComputationPreference ::
+  -- | 'pricingPlanArn'
+  Prelude.Text ->
+  ComputationPreference
+newComputationPreference pPricingPlanArn_ =
+  ComputationPreference'
+    { pricingPlanArn =
+        pPricingPlanArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the pricing plan that\'s used to
+-- compute the Amazon Web Services charges for a billing group.
+computationPreference_pricingPlanArn :: Lens.Lens' ComputationPreference Prelude.Text
+computationPreference_pricingPlanArn = Lens.lens (\ComputationPreference' {pricingPlanArn} -> pricingPlanArn) (\s@ComputationPreference' {} a -> s {pricingPlanArn = a} :: ComputationPreference)
+
+instance Data.FromJSON ComputationPreference where
+  parseJSON =
+    Data.withObject
+      "ComputationPreference"
+      ( \x ->
+          ComputationPreference'
+            Prelude.<$> (x Data..: "PricingPlanArn")
+      )
+
+instance Prelude.Hashable ComputationPreference where
+  hashWithSalt _salt ComputationPreference' {..} =
+    _salt `Prelude.hashWithSalt` pricingPlanArn
+
+instance Prelude.NFData ComputationPreference where
+  rnf ComputationPreference' {..} =
+    Prelude.rnf pricingPlanArn
+
+instance Data.ToJSON ComputationPreference where
+  toJSON ComputationPreference' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("PricingPlanArn" Data..= pricingPlanArn)
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/CreateFreeTierConfig.hs b/gen/Amazonka/BillingConductor/Types/CreateFreeTierConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CreateFreeTierConfig.hs
@@ -0,0 +1,68 @@
+{-# 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.BillingConductor.Types.CreateFreeTierConfig
+-- 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.BillingConductor.Types.CreateFreeTierConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The possible Amazon Web Services Free Tier configurations.
+--
+-- /See:/ 'newCreateFreeTierConfig' smart constructor.
+data CreateFreeTierConfig = CreateFreeTierConfig'
+  { -- | Activate or deactivate Amazon Web Services Free Tier.
+    activated :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFreeTierConfig' 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:
+--
+-- 'activated', 'createFreeTierConfig_activated' - Activate or deactivate Amazon Web Services Free Tier.
+newCreateFreeTierConfig ::
+  -- | 'activated'
+  Prelude.Bool ->
+  CreateFreeTierConfig
+newCreateFreeTierConfig pActivated_ =
+  CreateFreeTierConfig' {activated = pActivated_}
+
+-- | Activate or deactivate Amazon Web Services Free Tier.
+createFreeTierConfig_activated :: Lens.Lens' CreateFreeTierConfig Prelude.Bool
+createFreeTierConfig_activated = Lens.lens (\CreateFreeTierConfig' {activated} -> activated) (\s@CreateFreeTierConfig' {} a -> s {activated = a} :: CreateFreeTierConfig)
+
+instance Prelude.Hashable CreateFreeTierConfig where
+  hashWithSalt _salt CreateFreeTierConfig' {..} =
+    _salt `Prelude.hashWithSalt` activated
+
+instance Prelude.NFData CreateFreeTierConfig where
+  rnf CreateFreeTierConfig' {..} = Prelude.rnf activated
+
+instance Data.ToJSON CreateFreeTierConfig where
+  toJSON CreateFreeTierConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Activated" Data..= activated)]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/CreateTieringInput.hs b/gen/Amazonka/BillingConductor/Types/CreateTieringInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CreateTieringInput.hs
@@ -0,0 +1,69 @@
+{-# 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.BillingConductor.Types.CreateTieringInput
+-- 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.BillingConductor.Types.CreateTieringInput where
+
+import Amazonka.BillingConductor.Types.CreateFreeTierConfig
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The set of tiering configurations for the pricing rule.
+--
+-- /See:/ 'newCreateTieringInput' smart constructor.
+data CreateTieringInput = CreateTieringInput'
+  { -- | The possible Amazon Web Services Free Tier configurations.
+    freeTier :: CreateFreeTierConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTieringInput' 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:
+--
+-- 'freeTier', 'createTieringInput_freeTier' - The possible Amazon Web Services Free Tier configurations.
+newCreateTieringInput ::
+  -- | 'freeTier'
+  CreateFreeTierConfig ->
+  CreateTieringInput
+newCreateTieringInput pFreeTier_ =
+  CreateTieringInput' {freeTier = pFreeTier_}
+
+-- | The possible Amazon Web Services Free Tier configurations.
+createTieringInput_freeTier :: Lens.Lens' CreateTieringInput CreateFreeTierConfig
+createTieringInput_freeTier = Lens.lens (\CreateTieringInput' {freeTier} -> freeTier) (\s@CreateTieringInput' {} a -> s {freeTier = a} :: CreateTieringInput)
+
+instance Prelude.Hashable CreateTieringInput where
+  hashWithSalt _salt CreateTieringInput' {..} =
+    _salt `Prelude.hashWithSalt` freeTier
+
+instance Prelude.NFData CreateTieringInput where
+  rnf CreateTieringInput' {..} = Prelude.rnf freeTier
+
+instance Data.ToJSON CreateTieringInput where
+  toJSON CreateTieringInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("FreeTier" Data..= freeTier)]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/CurrencyCode.hs b/gen/Amazonka/BillingConductor/Types/CurrencyCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CurrencyCode.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.BillingConductor.Types.CurrencyCode
+-- 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.BillingConductor.Types.CurrencyCode
+  ( CurrencyCode
+      ( ..,
+        CurrencyCode_CNY,
+        CurrencyCode_USD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CurrencyCode = CurrencyCode'
+  { fromCurrencyCode ::
+      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 CurrencyCode_CNY :: CurrencyCode
+pattern CurrencyCode_CNY = CurrencyCode' "CNY"
+
+pattern CurrencyCode_USD :: CurrencyCode
+pattern CurrencyCode_USD = CurrencyCode' "USD"
+
+{-# COMPLETE
+  CurrencyCode_CNY,
+  CurrencyCode_USD,
+  CurrencyCode'
+  #-}
diff --git a/gen/Amazonka/BillingConductor/Types/CustomLineItemBillingPeriodRange.hs b/gen/Amazonka/BillingConductor/Types/CustomLineItemBillingPeriodRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CustomLineItemBillingPeriodRange.hs
@@ -0,0 +1,107 @@
+{-# 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.BillingConductor.Types.CustomLineItemBillingPeriodRange
+-- 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.BillingConductor.Types.CustomLineItemBillingPeriodRange where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The billing period range in which the custom line item request will be
+-- applied.
+--
+-- /See:/ 'newCustomLineItemBillingPeriodRange' smart constructor.
+data CustomLineItemBillingPeriodRange = CustomLineItemBillingPeriodRange'
+  { -- | The inclusive end billing period that defines a billing period range
+    -- where a custom line is applied.
+    exclusiveEndBillingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The inclusive start billing period that defines a billing period range
+    -- where a custom line is applied.
+    inclusiveStartBillingPeriod :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomLineItemBillingPeriodRange' 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:
+--
+-- 'exclusiveEndBillingPeriod', 'customLineItemBillingPeriodRange_exclusiveEndBillingPeriod' - The inclusive end billing period that defines a billing period range
+-- where a custom line is applied.
+--
+-- 'inclusiveStartBillingPeriod', 'customLineItemBillingPeriodRange_inclusiveStartBillingPeriod' - The inclusive start billing period that defines a billing period range
+-- where a custom line is applied.
+newCustomLineItemBillingPeriodRange ::
+  -- | 'inclusiveStartBillingPeriod'
+  Prelude.Text ->
+  CustomLineItemBillingPeriodRange
+newCustomLineItemBillingPeriodRange
+  pInclusiveStartBillingPeriod_ =
+    CustomLineItemBillingPeriodRange'
+      { exclusiveEndBillingPeriod =
+          Prelude.Nothing,
+        inclusiveStartBillingPeriod =
+          pInclusiveStartBillingPeriod_
+      }
+
+-- | The inclusive end billing period that defines a billing period range
+-- where a custom line is applied.
+customLineItemBillingPeriodRange_exclusiveEndBillingPeriod :: Lens.Lens' CustomLineItemBillingPeriodRange (Prelude.Maybe Prelude.Text)
+customLineItemBillingPeriodRange_exclusiveEndBillingPeriod = Lens.lens (\CustomLineItemBillingPeriodRange' {exclusiveEndBillingPeriod} -> exclusiveEndBillingPeriod) (\s@CustomLineItemBillingPeriodRange' {} a -> s {exclusiveEndBillingPeriod = a} :: CustomLineItemBillingPeriodRange)
+
+-- | The inclusive start billing period that defines a billing period range
+-- where a custom line is applied.
+customLineItemBillingPeriodRange_inclusiveStartBillingPeriod :: Lens.Lens' CustomLineItemBillingPeriodRange Prelude.Text
+customLineItemBillingPeriodRange_inclusiveStartBillingPeriod = Lens.lens (\CustomLineItemBillingPeriodRange' {inclusiveStartBillingPeriod} -> inclusiveStartBillingPeriod) (\s@CustomLineItemBillingPeriodRange' {} a -> s {inclusiveStartBillingPeriod = a} :: CustomLineItemBillingPeriodRange)
+
+instance
+  Prelude.Hashable
+    CustomLineItemBillingPeriodRange
+  where
+  hashWithSalt
+    _salt
+    CustomLineItemBillingPeriodRange' {..} =
+      _salt
+        `Prelude.hashWithSalt` exclusiveEndBillingPeriod
+        `Prelude.hashWithSalt` inclusiveStartBillingPeriod
+
+instance
+  Prelude.NFData
+    CustomLineItemBillingPeriodRange
+  where
+  rnf CustomLineItemBillingPeriodRange' {..} =
+    Prelude.rnf exclusiveEndBillingPeriod
+      `Prelude.seq` Prelude.rnf inclusiveStartBillingPeriod
+
+instance Data.ToJSON CustomLineItemBillingPeriodRange where
+  toJSON CustomLineItemBillingPeriodRange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ExclusiveEndBillingPeriod" Data..=)
+              Prelude.<$> exclusiveEndBillingPeriod,
+            Prelude.Just
+              ( "InclusiveStartBillingPeriod"
+                  Data..= inclusiveStartBillingPeriod
+              )
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/CustomLineItemChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/CustomLineItemChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CustomLineItemChargeDetails.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.CustomLineItemChargeDetails
+-- 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.BillingConductor.Types.CustomLineItemChargeDetails where
+
+import Amazonka.BillingConductor.Types.CustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.CustomLineItemPercentageChargeDetails
+import Amazonka.BillingConductor.Types.CustomLineItemType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The charge details of a custom line item. It should contain only one of
+-- @Flat@ or @Percentage@.
+--
+-- /See:/ 'newCustomLineItemChargeDetails' smart constructor.
+data CustomLineItemChargeDetails = CustomLineItemChargeDetails'
+  { -- | A @CustomLineItemFlatChargeDetails@ that describes the charge details of
+    -- a flat custom line item.
+    flat :: Prelude.Maybe CustomLineItemFlatChargeDetails,
+    -- | A @CustomLineItemPercentageChargeDetails@ that describes the charge
+    -- details of a percentage custom line item.
+    percentage :: Prelude.Maybe CustomLineItemPercentageChargeDetails,
+    -- | The type of the custom line item that indicates whether the charge is a
+    -- fee or credit.
+    type' :: CustomLineItemType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomLineItemChargeDetails' 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:
+--
+-- 'flat', 'customLineItemChargeDetails_flat' - A @CustomLineItemFlatChargeDetails@ that describes the charge details of
+-- a flat custom line item.
+--
+-- 'percentage', 'customLineItemChargeDetails_percentage' - A @CustomLineItemPercentageChargeDetails@ that describes the charge
+-- details of a percentage custom line item.
+--
+-- 'type'', 'customLineItemChargeDetails_type' - The type of the custom line item that indicates whether the charge is a
+-- fee or credit.
+newCustomLineItemChargeDetails ::
+  -- | 'type''
+  CustomLineItemType ->
+  CustomLineItemChargeDetails
+newCustomLineItemChargeDetails pType_ =
+  CustomLineItemChargeDetails'
+    { flat =
+        Prelude.Nothing,
+      percentage = Prelude.Nothing,
+      type' = pType_
+    }
+
+-- | A @CustomLineItemFlatChargeDetails@ that describes the charge details of
+-- a flat custom line item.
+customLineItemChargeDetails_flat :: Lens.Lens' CustomLineItemChargeDetails (Prelude.Maybe CustomLineItemFlatChargeDetails)
+customLineItemChargeDetails_flat = Lens.lens (\CustomLineItemChargeDetails' {flat} -> flat) (\s@CustomLineItemChargeDetails' {} a -> s {flat = a} :: CustomLineItemChargeDetails)
+
+-- | A @CustomLineItemPercentageChargeDetails@ that describes the charge
+-- details of a percentage custom line item.
+customLineItemChargeDetails_percentage :: Lens.Lens' CustomLineItemChargeDetails (Prelude.Maybe CustomLineItemPercentageChargeDetails)
+customLineItemChargeDetails_percentage = Lens.lens (\CustomLineItemChargeDetails' {percentage} -> percentage) (\s@CustomLineItemChargeDetails' {} a -> s {percentage = a} :: CustomLineItemChargeDetails)
+
+-- | The type of the custom line item that indicates whether the charge is a
+-- fee or credit.
+customLineItemChargeDetails_type :: Lens.Lens' CustomLineItemChargeDetails CustomLineItemType
+customLineItemChargeDetails_type = Lens.lens (\CustomLineItemChargeDetails' {type'} -> type') (\s@CustomLineItemChargeDetails' {} a -> s {type' = a} :: CustomLineItemChargeDetails)
+
+instance Prelude.Hashable CustomLineItemChargeDetails where
+  hashWithSalt _salt CustomLineItemChargeDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` flat
+      `Prelude.hashWithSalt` percentage
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CustomLineItemChargeDetails where
+  rnf CustomLineItemChargeDetails' {..} =
+    Prelude.rnf flat
+      `Prelude.seq` Prelude.rnf percentage
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON CustomLineItemChargeDetails where
+  toJSON CustomLineItemChargeDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Flat" Data..=) Prelude.<$> flat,
+            ("Percentage" Data..=) Prelude.<$> percentage,
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/CustomLineItemFlatChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/CustomLineItemFlatChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CustomLineItemFlatChargeDetails.hs
@@ -0,0 +1,81 @@
+{-# 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.BillingConductor.Types.CustomLineItemFlatChargeDetails
+-- 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.BillingConductor.Types.CustomLineItemFlatChargeDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of the charge details that are associated with a flat
+-- custom line item.
+--
+-- /See:/ 'newCustomLineItemFlatChargeDetails' smart constructor.
+data CustomLineItemFlatChargeDetails = CustomLineItemFlatChargeDetails'
+  { -- | The custom line item\'s fixed charge value in USD.
+    chargeValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomLineItemFlatChargeDetails' 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:
+--
+-- 'chargeValue', 'customLineItemFlatChargeDetails_chargeValue' - The custom line item\'s fixed charge value in USD.
+newCustomLineItemFlatChargeDetails ::
+  -- | 'chargeValue'
+  Prelude.Double ->
+  CustomLineItemFlatChargeDetails
+newCustomLineItemFlatChargeDetails pChargeValue_ =
+  CustomLineItemFlatChargeDetails'
+    { chargeValue =
+        pChargeValue_
+    }
+
+-- | The custom line item\'s fixed charge value in USD.
+customLineItemFlatChargeDetails_chargeValue :: Lens.Lens' CustomLineItemFlatChargeDetails Prelude.Double
+customLineItemFlatChargeDetails_chargeValue = Lens.lens (\CustomLineItemFlatChargeDetails' {chargeValue} -> chargeValue) (\s@CustomLineItemFlatChargeDetails' {} a -> s {chargeValue = a} :: CustomLineItemFlatChargeDetails)
+
+instance
+  Prelude.Hashable
+    CustomLineItemFlatChargeDetails
+  where
+  hashWithSalt
+    _salt
+    CustomLineItemFlatChargeDetails' {..} =
+      _salt `Prelude.hashWithSalt` chargeValue
+
+instance
+  Prelude.NFData
+    CustomLineItemFlatChargeDetails
+  where
+  rnf CustomLineItemFlatChargeDetails' {..} =
+    Prelude.rnf chargeValue
+
+instance Data.ToJSON CustomLineItemFlatChargeDetails where
+  toJSON CustomLineItemFlatChargeDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ChargeValue" Data..= chargeValue)]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/CustomLineItemListElement.hs b/gen/Amazonka/BillingConductor/Types/CustomLineItemListElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CustomLineItemListElement.hs
@@ -0,0 +1,194 @@
+{-# 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.BillingConductor.Types.CustomLineItemListElement
+-- 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.BillingConductor.Types.CustomLineItemListElement where
+
+import Amazonka.BillingConductor.Types.CurrencyCode
+import Amazonka.BillingConductor.Types.ListCustomLineItemChargeDetails
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of a custom line item.
+--
+-- /See:/ 'newCustomLineItemListElement' smart constructor.
+data CustomLineItemListElement = CustomLineItemListElement'
+  { -- | The Amazon Resource Names (ARNs) for custom line items.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The number of resources that are associated to the custom line item.
+    associationSize :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon Resource Name (ARN) that references the billing group where
+    -- the custom line item applies to.
+    billingGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | A @ListCustomLineItemChargeDetails@ that describes the charge details of
+    -- a custom line item.
+    chargeDetails :: Prelude.Maybe ListCustomLineItemChargeDetails,
+    -- | The time created.
+    creationTime :: Prelude.Maybe Prelude.Integer,
+    -- | The custom line item\'s charge value currency. Only one of the valid
+    -- values can be used.
+    currencyCode :: Prelude.Maybe CurrencyCode,
+    -- | The custom line item\'s description. This is shown on the Bills page in
+    -- association with the charge value.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The most recent time when the custom line item was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | The custom line item\'s name.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The product code that\'s associated with the custom line item.
+    productCode :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomLineItemListElement' 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:
+--
+-- 'arn', 'customLineItemListElement_arn' - The Amazon Resource Names (ARNs) for custom line items.
+--
+-- 'associationSize', 'customLineItemListElement_associationSize' - The number of resources that are associated to the custom line item.
+--
+-- 'billingGroupArn', 'customLineItemListElement_billingGroupArn' - The Amazon Resource Name (ARN) that references the billing group where
+-- the custom line item applies to.
+--
+-- 'chargeDetails', 'customLineItemListElement_chargeDetails' - A @ListCustomLineItemChargeDetails@ that describes the charge details of
+-- a custom line item.
+--
+-- 'creationTime', 'customLineItemListElement_creationTime' - The time created.
+--
+-- 'currencyCode', 'customLineItemListElement_currencyCode' - The custom line item\'s charge value currency. Only one of the valid
+-- values can be used.
+--
+-- 'description', 'customLineItemListElement_description' - The custom line item\'s description. This is shown on the Bills page in
+-- association with the charge value.
+--
+-- 'lastModifiedTime', 'customLineItemListElement_lastModifiedTime' - The most recent time when the custom line item was modified.
+--
+-- 'name', 'customLineItemListElement_name' - The custom line item\'s name.
+--
+-- 'productCode', 'customLineItemListElement_productCode' - The product code that\'s associated with the custom line item.
+newCustomLineItemListElement ::
+  CustomLineItemListElement
+newCustomLineItemListElement =
+  CustomLineItemListElement'
+    { arn = Prelude.Nothing,
+      associationSize = Prelude.Nothing,
+      billingGroupArn = Prelude.Nothing,
+      chargeDetails = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currencyCode = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      productCode = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Names (ARNs) for custom line items.
+customLineItemListElement_arn :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe Prelude.Text)
+customLineItemListElement_arn = Lens.lens (\CustomLineItemListElement' {arn} -> arn) (\s@CustomLineItemListElement' {} a -> s {arn = a} :: CustomLineItemListElement)
+
+-- | The number of resources that are associated to the custom line item.
+customLineItemListElement_associationSize :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe Prelude.Natural)
+customLineItemListElement_associationSize = Lens.lens (\CustomLineItemListElement' {associationSize} -> associationSize) (\s@CustomLineItemListElement' {} a -> s {associationSize = a} :: CustomLineItemListElement)
+
+-- | The Amazon Resource Name (ARN) that references the billing group where
+-- the custom line item applies to.
+customLineItemListElement_billingGroupArn :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe Prelude.Text)
+customLineItemListElement_billingGroupArn = Lens.lens (\CustomLineItemListElement' {billingGroupArn} -> billingGroupArn) (\s@CustomLineItemListElement' {} a -> s {billingGroupArn = a} :: CustomLineItemListElement)
+
+-- | A @ListCustomLineItemChargeDetails@ that describes the charge details of
+-- a custom line item.
+customLineItemListElement_chargeDetails :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe ListCustomLineItemChargeDetails)
+customLineItemListElement_chargeDetails = Lens.lens (\CustomLineItemListElement' {chargeDetails} -> chargeDetails) (\s@CustomLineItemListElement' {} a -> s {chargeDetails = a} :: CustomLineItemListElement)
+
+-- | The time created.
+customLineItemListElement_creationTime :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe Prelude.Integer)
+customLineItemListElement_creationTime = Lens.lens (\CustomLineItemListElement' {creationTime} -> creationTime) (\s@CustomLineItemListElement' {} a -> s {creationTime = a} :: CustomLineItemListElement)
+
+-- | The custom line item\'s charge value currency. Only one of the valid
+-- values can be used.
+customLineItemListElement_currencyCode :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe CurrencyCode)
+customLineItemListElement_currencyCode = Lens.lens (\CustomLineItemListElement' {currencyCode} -> currencyCode) (\s@CustomLineItemListElement' {} a -> s {currencyCode = a} :: CustomLineItemListElement)
+
+-- | The custom line item\'s description. This is shown on the Bills page in
+-- association with the charge value.
+customLineItemListElement_description :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe Prelude.Text)
+customLineItemListElement_description = Lens.lens (\CustomLineItemListElement' {description} -> description) (\s@CustomLineItemListElement' {} a -> s {description = a} :: CustomLineItemListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The most recent time when the custom line item was modified.
+customLineItemListElement_lastModifiedTime :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe Prelude.Integer)
+customLineItemListElement_lastModifiedTime = Lens.lens (\CustomLineItemListElement' {lastModifiedTime} -> lastModifiedTime) (\s@CustomLineItemListElement' {} a -> s {lastModifiedTime = a} :: CustomLineItemListElement)
+
+-- | The custom line item\'s name.
+customLineItemListElement_name :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe Prelude.Text)
+customLineItemListElement_name = Lens.lens (\CustomLineItemListElement' {name} -> name) (\s@CustomLineItemListElement' {} a -> s {name = a} :: CustomLineItemListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The product code that\'s associated with the custom line item.
+customLineItemListElement_productCode :: Lens.Lens' CustomLineItemListElement (Prelude.Maybe Prelude.Text)
+customLineItemListElement_productCode = Lens.lens (\CustomLineItemListElement' {productCode} -> productCode) (\s@CustomLineItemListElement' {} a -> s {productCode = a} :: CustomLineItemListElement)
+
+instance Data.FromJSON CustomLineItemListElement where
+  parseJSON =
+    Data.withObject
+      "CustomLineItemListElement"
+      ( \x ->
+          CustomLineItemListElement'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "AssociationSize")
+            Prelude.<*> (x Data..:? "BillingGroupArn")
+            Prelude.<*> (x Data..:? "ChargeDetails")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "CurrencyCode")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "ProductCode")
+      )
+
+instance Prelude.Hashable CustomLineItemListElement where
+  hashWithSalt _salt CustomLineItemListElement' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` associationSize
+      `Prelude.hashWithSalt` billingGroupArn
+      `Prelude.hashWithSalt` chargeDetails
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` currencyCode
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` productCode
+
+instance Prelude.NFData CustomLineItemListElement where
+  rnf CustomLineItemListElement' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf associationSize
+      `Prelude.seq` Prelude.rnf billingGroupArn
+      `Prelude.seq` Prelude.rnf chargeDetails
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currencyCode
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf productCode
diff --git a/gen/Amazonka/BillingConductor/Types/CustomLineItemPercentageChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/CustomLineItemPercentageChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CustomLineItemPercentageChargeDetails.hs
@@ -0,0 +1,107 @@
+{-# 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.BillingConductor.Types.CustomLineItemPercentageChargeDetails
+-- 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.BillingConductor.Types.CustomLineItemPercentageChargeDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of the charge details that are associated with a
+-- percentage custom line item.
+--
+-- /See:/ 'newCustomLineItemPercentageChargeDetails' smart constructor.
+data CustomLineItemPercentageChargeDetails = CustomLineItemPercentageChargeDetails'
+  { -- | A list of resource ARNs to associate to the percentage custom line item.
+    associatedValues :: Prelude.Maybe [Prelude.Text],
+    -- | The custom line item\'s percentage value. This will be multiplied
+    -- against the combined value of its associated resources to determine its
+    -- charge value.
+    percentageValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomLineItemPercentageChargeDetails' 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:
+--
+-- 'associatedValues', 'customLineItemPercentageChargeDetails_associatedValues' - A list of resource ARNs to associate to the percentage custom line item.
+--
+-- 'percentageValue', 'customLineItemPercentageChargeDetails_percentageValue' - The custom line item\'s percentage value. This will be multiplied
+-- against the combined value of its associated resources to determine its
+-- charge value.
+newCustomLineItemPercentageChargeDetails ::
+  -- | 'percentageValue'
+  Prelude.Double ->
+  CustomLineItemPercentageChargeDetails
+newCustomLineItemPercentageChargeDetails
+  pPercentageValue_ =
+    CustomLineItemPercentageChargeDetails'
+      { associatedValues =
+          Prelude.Nothing,
+        percentageValue = pPercentageValue_
+      }
+
+-- | A list of resource ARNs to associate to the percentage custom line item.
+customLineItemPercentageChargeDetails_associatedValues :: Lens.Lens' CustomLineItemPercentageChargeDetails (Prelude.Maybe [Prelude.Text])
+customLineItemPercentageChargeDetails_associatedValues = Lens.lens (\CustomLineItemPercentageChargeDetails' {associatedValues} -> associatedValues) (\s@CustomLineItemPercentageChargeDetails' {} a -> s {associatedValues = a} :: CustomLineItemPercentageChargeDetails) Prelude.. Lens.mapping Lens.coerced
+
+-- | The custom line item\'s percentage value. This will be multiplied
+-- against the combined value of its associated resources to determine its
+-- charge value.
+customLineItemPercentageChargeDetails_percentageValue :: Lens.Lens' CustomLineItemPercentageChargeDetails Prelude.Double
+customLineItemPercentageChargeDetails_percentageValue = Lens.lens (\CustomLineItemPercentageChargeDetails' {percentageValue} -> percentageValue) (\s@CustomLineItemPercentageChargeDetails' {} a -> s {percentageValue = a} :: CustomLineItemPercentageChargeDetails)
+
+instance
+  Prelude.Hashable
+    CustomLineItemPercentageChargeDetails
+  where
+  hashWithSalt
+    _salt
+    CustomLineItemPercentageChargeDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` associatedValues
+        `Prelude.hashWithSalt` percentageValue
+
+instance
+  Prelude.NFData
+    CustomLineItemPercentageChargeDetails
+  where
+  rnf CustomLineItemPercentageChargeDetails' {..} =
+    Prelude.rnf associatedValues
+      `Prelude.seq` Prelude.rnf percentageValue
+
+instance
+  Data.ToJSON
+    CustomLineItemPercentageChargeDetails
+  where
+  toJSON CustomLineItemPercentageChargeDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AssociatedValues" Data..=)
+              Prelude.<$> associatedValues,
+            Prelude.Just
+              ("PercentageValue" Data..= percentageValue)
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/CustomLineItemRelationship.hs b/gen/Amazonka/BillingConductor/Types/CustomLineItemRelationship.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CustomLineItemRelationship.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.BillingConductor.Types.CustomLineItemRelationship
+-- 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.BillingConductor.Types.CustomLineItemRelationship
+  ( CustomLineItemRelationship
+      ( ..,
+        CustomLineItemRelationship_CHILD,
+        CustomLineItemRelationship_PARENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CustomLineItemRelationship = CustomLineItemRelationship'
+  { fromCustomLineItemRelationship ::
+      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 CustomLineItemRelationship_CHILD :: CustomLineItemRelationship
+pattern CustomLineItemRelationship_CHILD = CustomLineItemRelationship' "CHILD"
+
+pattern CustomLineItemRelationship_PARENT :: CustomLineItemRelationship
+pattern CustomLineItemRelationship_PARENT = CustomLineItemRelationship' "PARENT"
+
+{-# COMPLETE
+  CustomLineItemRelationship_CHILD,
+  CustomLineItemRelationship_PARENT,
+  CustomLineItemRelationship'
+  #-}
diff --git a/gen/Amazonka/BillingConductor/Types/CustomLineItemType.hs b/gen/Amazonka/BillingConductor/Types/CustomLineItemType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CustomLineItemType.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.BillingConductor.Types.CustomLineItemType
+-- 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.BillingConductor.Types.CustomLineItemType
+  ( CustomLineItemType
+      ( ..,
+        CustomLineItemType_CREDIT,
+        CustomLineItemType_FEE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CustomLineItemType = CustomLineItemType'
+  { fromCustomLineItemType ::
+      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 CustomLineItemType_CREDIT :: CustomLineItemType
+pattern CustomLineItemType_CREDIT = CustomLineItemType' "CREDIT"
+
+pattern CustomLineItemType_FEE :: CustomLineItemType
+pattern CustomLineItemType_FEE = CustomLineItemType' "FEE"
+
+{-# COMPLETE
+  CustomLineItemType_CREDIT,
+  CustomLineItemType_FEE,
+  CustomLineItemType'
+  #-}
diff --git a/gen/Amazonka/BillingConductor/Types/CustomLineItemVersionListElement.hs b/gen/Amazonka/BillingConductor/Types/CustomLineItemVersionListElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/CustomLineItemVersionListElement.hs
@@ -0,0 +1,208 @@
+{-# 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.BillingConductor.Types.CustomLineItemVersionListElement
+-- 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.BillingConductor.Types.CustomLineItemVersionListElement where
+
+import Amazonka.BillingConductor.Types.CurrencyCode
+import Amazonka.BillingConductor.Types.ListCustomLineItemChargeDetails
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of a custom line item version.
+--
+-- /See:/ 'newCustomLineItemVersionListElement' smart constructor.
+data CustomLineItemVersionListElement = CustomLineItemVersionListElement'
+  { -- | The number of resources that are associated with the custom line item.
+    associationSize :: Prelude.Maybe Prelude.Natural,
+    -- | The Amazon Resource Name (ARN) of the billing group that the custom line
+    -- item applies to.
+    billingGroupArn :: Prelude.Maybe Prelude.Text,
+    chargeDetails :: Prelude.Maybe ListCustomLineItemChargeDetails,
+    -- | The time when the custom line item version was created.
+    creationTime :: Prelude.Maybe Prelude.Integer,
+    -- | The charge value currency of the custom line item.
+    currencyCode :: Prelude.Maybe CurrencyCode,
+    -- | The description of the custom line item.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The end billing period of the custom line item version.
+    endBillingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The most recent time that the custom line item version was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | The name of the custom line item.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The product code that’s associated with the custom line item.
+    productCode :: Prelude.Maybe Prelude.Text,
+    -- | The start billing period of the custom line item version.
+    startBillingPeriod :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomLineItemVersionListElement' 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:
+--
+-- 'associationSize', 'customLineItemVersionListElement_associationSize' - The number of resources that are associated with the custom line item.
+--
+-- 'billingGroupArn', 'customLineItemVersionListElement_billingGroupArn' - The Amazon Resource Name (ARN) of the billing group that the custom line
+-- item applies to.
+--
+-- 'chargeDetails', 'customLineItemVersionListElement_chargeDetails' - Undocumented member.
+--
+-- 'creationTime', 'customLineItemVersionListElement_creationTime' - The time when the custom line item version was created.
+--
+-- 'currencyCode', 'customLineItemVersionListElement_currencyCode' - The charge value currency of the custom line item.
+--
+-- 'description', 'customLineItemVersionListElement_description' - The description of the custom line item.
+--
+-- 'endBillingPeriod', 'customLineItemVersionListElement_endBillingPeriod' - The end billing period of the custom line item version.
+--
+-- 'lastModifiedTime', 'customLineItemVersionListElement_lastModifiedTime' - The most recent time that the custom line item version was modified.
+--
+-- 'name', 'customLineItemVersionListElement_name' - The name of the custom line item.
+--
+-- 'productCode', 'customLineItemVersionListElement_productCode' - The product code that’s associated with the custom line item.
+--
+-- 'startBillingPeriod', 'customLineItemVersionListElement_startBillingPeriod' - The start billing period of the custom line item version.
+newCustomLineItemVersionListElement ::
+  CustomLineItemVersionListElement
+newCustomLineItemVersionListElement =
+  CustomLineItemVersionListElement'
+    { associationSize =
+        Prelude.Nothing,
+      billingGroupArn = Prelude.Nothing,
+      chargeDetails = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currencyCode = Prelude.Nothing,
+      description = Prelude.Nothing,
+      endBillingPeriod = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      productCode = Prelude.Nothing,
+      startBillingPeriod = Prelude.Nothing
+    }
+
+-- | The number of resources that are associated with the custom line item.
+customLineItemVersionListElement_associationSize :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Natural)
+customLineItemVersionListElement_associationSize = Lens.lens (\CustomLineItemVersionListElement' {associationSize} -> associationSize) (\s@CustomLineItemVersionListElement' {} a -> s {associationSize = a} :: CustomLineItemVersionListElement)
+
+-- | The Amazon Resource Name (ARN) of the billing group that the custom line
+-- item applies to.
+customLineItemVersionListElement_billingGroupArn :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Text)
+customLineItemVersionListElement_billingGroupArn = Lens.lens (\CustomLineItemVersionListElement' {billingGroupArn} -> billingGroupArn) (\s@CustomLineItemVersionListElement' {} a -> s {billingGroupArn = a} :: CustomLineItemVersionListElement)
+
+-- | Undocumented member.
+customLineItemVersionListElement_chargeDetails :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe ListCustomLineItemChargeDetails)
+customLineItemVersionListElement_chargeDetails = Lens.lens (\CustomLineItemVersionListElement' {chargeDetails} -> chargeDetails) (\s@CustomLineItemVersionListElement' {} a -> s {chargeDetails = a} :: CustomLineItemVersionListElement)
+
+-- | The time when the custom line item version was created.
+customLineItemVersionListElement_creationTime :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Integer)
+customLineItemVersionListElement_creationTime = Lens.lens (\CustomLineItemVersionListElement' {creationTime} -> creationTime) (\s@CustomLineItemVersionListElement' {} a -> s {creationTime = a} :: CustomLineItemVersionListElement)
+
+-- | The charge value currency of the custom line item.
+customLineItemVersionListElement_currencyCode :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe CurrencyCode)
+customLineItemVersionListElement_currencyCode = Lens.lens (\CustomLineItemVersionListElement' {currencyCode} -> currencyCode) (\s@CustomLineItemVersionListElement' {} a -> s {currencyCode = a} :: CustomLineItemVersionListElement)
+
+-- | The description of the custom line item.
+customLineItemVersionListElement_description :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Text)
+customLineItemVersionListElement_description = Lens.lens (\CustomLineItemVersionListElement' {description} -> description) (\s@CustomLineItemVersionListElement' {} a -> s {description = a} :: CustomLineItemVersionListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The end billing period of the custom line item version.
+customLineItemVersionListElement_endBillingPeriod :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Text)
+customLineItemVersionListElement_endBillingPeriod = Lens.lens (\CustomLineItemVersionListElement' {endBillingPeriod} -> endBillingPeriod) (\s@CustomLineItemVersionListElement' {} a -> s {endBillingPeriod = a} :: CustomLineItemVersionListElement)
+
+-- | The most recent time that the custom line item version was modified.
+customLineItemVersionListElement_lastModifiedTime :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Integer)
+customLineItemVersionListElement_lastModifiedTime = Lens.lens (\CustomLineItemVersionListElement' {lastModifiedTime} -> lastModifiedTime) (\s@CustomLineItemVersionListElement' {} a -> s {lastModifiedTime = a} :: CustomLineItemVersionListElement)
+
+-- | The name of the custom line item.
+customLineItemVersionListElement_name :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Text)
+customLineItemVersionListElement_name = Lens.lens (\CustomLineItemVersionListElement' {name} -> name) (\s@CustomLineItemVersionListElement' {} a -> s {name = a} :: CustomLineItemVersionListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The product code that’s associated with the custom line item.
+customLineItemVersionListElement_productCode :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Text)
+customLineItemVersionListElement_productCode = Lens.lens (\CustomLineItemVersionListElement' {productCode} -> productCode) (\s@CustomLineItemVersionListElement' {} a -> s {productCode = a} :: CustomLineItemVersionListElement)
+
+-- | The start billing period of the custom line item version.
+customLineItemVersionListElement_startBillingPeriod :: Lens.Lens' CustomLineItemVersionListElement (Prelude.Maybe Prelude.Text)
+customLineItemVersionListElement_startBillingPeriod = Lens.lens (\CustomLineItemVersionListElement' {startBillingPeriod} -> startBillingPeriod) (\s@CustomLineItemVersionListElement' {} a -> s {startBillingPeriod = a} :: CustomLineItemVersionListElement)
+
+instance
+  Data.FromJSON
+    CustomLineItemVersionListElement
+  where
+  parseJSON =
+    Data.withObject
+      "CustomLineItemVersionListElement"
+      ( \x ->
+          CustomLineItemVersionListElement'
+            Prelude.<$> (x Data..:? "AssociationSize")
+            Prelude.<*> (x Data..:? "BillingGroupArn")
+            Prelude.<*> (x Data..:? "ChargeDetails")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "CurrencyCode")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "EndBillingPeriod")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "ProductCode")
+            Prelude.<*> (x Data..:? "StartBillingPeriod")
+      )
+
+instance
+  Prelude.Hashable
+    CustomLineItemVersionListElement
+  where
+  hashWithSalt
+    _salt
+    CustomLineItemVersionListElement' {..} =
+      _salt
+        `Prelude.hashWithSalt` associationSize
+        `Prelude.hashWithSalt` billingGroupArn
+        `Prelude.hashWithSalt` chargeDetails
+        `Prelude.hashWithSalt` creationTime
+        `Prelude.hashWithSalt` currencyCode
+        `Prelude.hashWithSalt` description
+        `Prelude.hashWithSalt` endBillingPeriod
+        `Prelude.hashWithSalt` lastModifiedTime
+        `Prelude.hashWithSalt` name
+        `Prelude.hashWithSalt` productCode
+        `Prelude.hashWithSalt` startBillingPeriod
+
+instance
+  Prelude.NFData
+    CustomLineItemVersionListElement
+  where
+  rnf CustomLineItemVersionListElement' {..} =
+    Prelude.rnf associationSize
+      `Prelude.seq` Prelude.rnf billingGroupArn
+      `Prelude.seq` Prelude.rnf chargeDetails
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currencyCode
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf endBillingPeriod
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf productCode
+      `Prelude.seq` Prelude.rnf startBillingPeriod
diff --git a/gen/Amazonka/BillingConductor/Types/DisassociateResourceResponseElement.hs b/gen/Amazonka/BillingConductor/Types/DisassociateResourceResponseElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/DisassociateResourceResponseElement.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.DisassociateResourceResponseElement
+-- 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.BillingConductor.Types.DisassociateResourceResponseElement where
+
+import Amazonka.BillingConductor.Types.AssociateResourceError
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A resource disassociation result for a percentage custom line item.
+--
+-- /See:/ 'newDisassociateResourceResponseElement' smart constructor.
+data DisassociateResourceResponseElement = DisassociateResourceResponseElement'
+  { -- | The resource ARN that was disassociated from the custom line item.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | An @AssociateResourceError@ that\'s shown if the resource disassociation
+    -- fails.
+    error :: Prelude.Maybe AssociateResourceError
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateResourceResponseElement' 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:
+--
+-- 'arn', 'disassociateResourceResponseElement_arn' - The resource ARN that was disassociated from the custom line item.
+--
+-- 'error', 'disassociateResourceResponseElement_error' - An @AssociateResourceError@ that\'s shown if the resource disassociation
+-- fails.
+newDisassociateResourceResponseElement ::
+  DisassociateResourceResponseElement
+newDisassociateResourceResponseElement =
+  DisassociateResourceResponseElement'
+    { arn =
+        Prelude.Nothing,
+      error = Prelude.Nothing
+    }
+
+-- | The resource ARN that was disassociated from the custom line item.
+disassociateResourceResponseElement_arn :: Lens.Lens' DisassociateResourceResponseElement (Prelude.Maybe Prelude.Text)
+disassociateResourceResponseElement_arn = Lens.lens (\DisassociateResourceResponseElement' {arn} -> arn) (\s@DisassociateResourceResponseElement' {} a -> s {arn = a} :: DisassociateResourceResponseElement)
+
+-- | An @AssociateResourceError@ that\'s shown if the resource disassociation
+-- fails.
+disassociateResourceResponseElement_error :: Lens.Lens' DisassociateResourceResponseElement (Prelude.Maybe AssociateResourceError)
+disassociateResourceResponseElement_error = Lens.lens (\DisassociateResourceResponseElement' {error} -> error) (\s@DisassociateResourceResponseElement' {} a -> s {error = a} :: DisassociateResourceResponseElement)
+
+instance
+  Data.FromJSON
+    DisassociateResourceResponseElement
+  where
+  parseJSON =
+    Data.withObject
+      "DisassociateResourceResponseElement"
+      ( \x ->
+          DisassociateResourceResponseElement'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "Error")
+      )
+
+instance
+  Prelude.Hashable
+    DisassociateResourceResponseElement
+  where
+  hashWithSalt
+    _salt
+    DisassociateResourceResponseElement' {..} =
+      _salt
+        `Prelude.hashWithSalt` arn
+        `Prelude.hashWithSalt` error
+
+instance
+  Prelude.NFData
+    DisassociateResourceResponseElement
+  where
+  rnf DisassociateResourceResponseElement' {..} =
+    Prelude.rnf arn `Prelude.seq` Prelude.rnf error
diff --git a/gen/Amazonka/BillingConductor/Types/FreeTierConfig.hs b/gen/Amazonka/BillingConductor/Types/FreeTierConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/FreeTierConfig.hs
@@ -0,0 +1,69 @@
+{-# 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.BillingConductor.Types.FreeTierConfig
+-- 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.BillingConductor.Types.FreeTierConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The possible Amazon Web Services Free Tier configurations.
+--
+-- /See:/ 'newFreeTierConfig' smart constructor.
+data FreeTierConfig = FreeTierConfig'
+  { -- | Activate or deactivate Amazon Web Services Free Tier application.
+    activated :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FreeTierConfig' 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:
+--
+-- 'activated', 'freeTierConfig_activated' - Activate or deactivate Amazon Web Services Free Tier application.
+newFreeTierConfig ::
+  -- | 'activated'
+  Prelude.Bool ->
+  FreeTierConfig
+newFreeTierConfig pActivated_ =
+  FreeTierConfig' {activated = pActivated_}
+
+-- | Activate or deactivate Amazon Web Services Free Tier application.
+freeTierConfig_activated :: Lens.Lens' FreeTierConfig Prelude.Bool
+freeTierConfig_activated = Lens.lens (\FreeTierConfig' {activated} -> activated) (\s@FreeTierConfig' {} a -> s {activated = a} :: FreeTierConfig)
+
+instance Data.FromJSON FreeTierConfig where
+  parseJSON =
+    Data.withObject
+      "FreeTierConfig"
+      ( \x ->
+          FreeTierConfig' Prelude.<$> (x Data..: "Activated")
+      )
+
+instance Prelude.Hashable FreeTierConfig where
+  hashWithSalt _salt FreeTierConfig' {..} =
+    _salt `Prelude.hashWithSalt` activated
+
+instance Prelude.NFData FreeTierConfig where
+  rnf FreeTierConfig' {..} = Prelude.rnf activated
diff --git a/gen/Amazonka/BillingConductor/Types/ListAccountAssociationsFilter.hs b/gen/Amazonka/BillingConductor/Types/ListAccountAssociationsFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListAccountAssociationsFilter.hs
@@ -0,0 +1,114 @@
+{-# 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.BillingConductor.Types.ListAccountAssociationsFilter
+-- 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.BillingConductor.Types.ListAccountAssociationsFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The filter on the account ID of the linked account, or any of the
+-- following:
+--
+-- @MONITORED@: linked accounts that are associated to billing groups.
+--
+-- @UNMONITORED@: linked accounts that are not associated to billing
+-- groups.
+--
+-- @Billing Group Arn@: linked accounts that are associated to the provided
+-- Billing Group Arn.
+--
+-- /See:/ 'newListAccountAssociationsFilter' smart constructor.
+data ListAccountAssociationsFilter = ListAccountAssociationsFilter'
+  { -- | The Amazon Web Services account ID to filter on.
+    accountId :: Prelude.Maybe Prelude.Text,
+    -- | @MONITORED@: linked accounts that are associated to billing groups.
+    --
+    -- @UNMONITORED@: linked accounts that are not associated to billing
+    -- groups.
+    --
+    -- @Billing Group Arn@: linked accounts that are associated to the provided
+    -- Billing Group Arn.
+    association :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAccountAssociationsFilter' 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:
+--
+-- 'accountId', 'listAccountAssociationsFilter_accountId' - The Amazon Web Services account ID to filter on.
+--
+-- 'association', 'listAccountAssociationsFilter_association' - @MONITORED@: linked accounts that are associated to billing groups.
+--
+-- @UNMONITORED@: linked accounts that are not associated to billing
+-- groups.
+--
+-- @Billing Group Arn@: linked accounts that are associated to the provided
+-- Billing Group Arn.
+newListAccountAssociationsFilter ::
+  ListAccountAssociationsFilter
+newListAccountAssociationsFilter =
+  ListAccountAssociationsFilter'
+    { accountId =
+        Prelude.Nothing,
+      association = Prelude.Nothing
+    }
+
+-- | The Amazon Web Services account ID to filter on.
+listAccountAssociationsFilter_accountId :: Lens.Lens' ListAccountAssociationsFilter (Prelude.Maybe Prelude.Text)
+listAccountAssociationsFilter_accountId = Lens.lens (\ListAccountAssociationsFilter' {accountId} -> accountId) (\s@ListAccountAssociationsFilter' {} a -> s {accountId = a} :: ListAccountAssociationsFilter)
+
+-- | @MONITORED@: linked accounts that are associated to billing groups.
+--
+-- @UNMONITORED@: linked accounts that are not associated to billing
+-- groups.
+--
+-- @Billing Group Arn@: linked accounts that are associated to the provided
+-- Billing Group Arn.
+listAccountAssociationsFilter_association :: Lens.Lens' ListAccountAssociationsFilter (Prelude.Maybe Prelude.Text)
+listAccountAssociationsFilter_association = Lens.lens (\ListAccountAssociationsFilter' {association} -> association) (\s@ListAccountAssociationsFilter' {} a -> s {association = a} :: ListAccountAssociationsFilter)
+
+instance
+  Prelude.Hashable
+    ListAccountAssociationsFilter
+  where
+  hashWithSalt _salt ListAccountAssociationsFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` accountId
+      `Prelude.hashWithSalt` association
+
+instance Prelude.NFData ListAccountAssociationsFilter where
+  rnf ListAccountAssociationsFilter' {..} =
+    Prelude.rnf accountId
+      `Prelude.seq` Prelude.rnf association
+
+instance Data.ToJSON ListAccountAssociationsFilter where
+  toJSON ListAccountAssociationsFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AccountId" Data..=) Prelude.<$> accountId,
+            ("Association" Data..=) Prelude.<$> association
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/ListBillingGroupCostReportsFilter.hs b/gen/Amazonka/BillingConductor/Types/ListBillingGroupCostReportsFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListBillingGroupCostReportsFilter.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.ListBillingGroupCostReportsFilter
+-- 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.BillingConductor.Types.ListBillingGroupCostReportsFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The filter used to retrieve specific @BillingGroupCostReportElements@.
+--
+-- /See:/ 'newListBillingGroupCostReportsFilter' smart constructor.
+data ListBillingGroupCostReportsFilter = ListBillingGroupCostReportsFilter'
+  { -- | The list of Amazon Resource Names (ARNs) used to filter billing groups
+    -- to retrieve reports.
+    billingGroupArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBillingGroupCostReportsFilter' 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:
+--
+-- 'billingGroupArns', 'listBillingGroupCostReportsFilter_billingGroupArns' - The list of Amazon Resource Names (ARNs) used to filter billing groups
+-- to retrieve reports.
+newListBillingGroupCostReportsFilter ::
+  ListBillingGroupCostReportsFilter
+newListBillingGroupCostReportsFilter =
+  ListBillingGroupCostReportsFilter'
+    { billingGroupArns =
+        Prelude.Nothing
+    }
+
+-- | The list of Amazon Resource Names (ARNs) used to filter billing groups
+-- to retrieve reports.
+listBillingGroupCostReportsFilter_billingGroupArns :: Lens.Lens' ListBillingGroupCostReportsFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listBillingGroupCostReportsFilter_billingGroupArns = Lens.lens (\ListBillingGroupCostReportsFilter' {billingGroupArns} -> billingGroupArns) (\s@ListBillingGroupCostReportsFilter' {} a -> s {billingGroupArns = a} :: ListBillingGroupCostReportsFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Prelude.Hashable
+    ListBillingGroupCostReportsFilter
+  where
+  hashWithSalt
+    _salt
+    ListBillingGroupCostReportsFilter' {..} =
+      _salt `Prelude.hashWithSalt` billingGroupArns
+
+instance
+  Prelude.NFData
+    ListBillingGroupCostReportsFilter
+  where
+  rnf ListBillingGroupCostReportsFilter' {..} =
+    Prelude.rnf billingGroupArns
+
+instance
+  Data.ToJSON
+    ListBillingGroupCostReportsFilter
+  where
+  toJSON ListBillingGroupCostReportsFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingGroupArns" Data..=)
+              Prelude.<$> billingGroupArns
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/ListBillingGroupsFilter.hs b/gen/Amazonka/BillingConductor/Types/ListBillingGroupsFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListBillingGroupsFilter.hs
@@ -0,0 +1,87 @@
+{-# 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.BillingConductor.Types.ListBillingGroupsFilter
+-- 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.BillingConductor.Types.ListBillingGroupsFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The filter that specifies the billing groups and pricing plans to
+-- retrieve billing group information.
+--
+-- /See:/ 'newListBillingGroupsFilter' smart constructor.
+data ListBillingGroupsFilter = ListBillingGroupsFilter'
+  { -- | The list of billing group Amazon Resource Names (ARNs) to retrieve
+    -- information.
+    arns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The pricing plan Amazon Resource Names (ARNs) to retrieve information.
+    pricingPlan :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBillingGroupsFilter' 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:
+--
+-- 'arns', 'listBillingGroupsFilter_arns' - The list of billing group Amazon Resource Names (ARNs) to retrieve
+-- information.
+--
+-- 'pricingPlan', 'listBillingGroupsFilter_pricingPlan' - The pricing plan Amazon Resource Names (ARNs) to retrieve information.
+newListBillingGroupsFilter ::
+  ListBillingGroupsFilter
+newListBillingGroupsFilter =
+  ListBillingGroupsFilter'
+    { arns = Prelude.Nothing,
+      pricingPlan = Prelude.Nothing
+    }
+
+-- | The list of billing group Amazon Resource Names (ARNs) to retrieve
+-- information.
+listBillingGroupsFilter_arns :: Lens.Lens' ListBillingGroupsFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listBillingGroupsFilter_arns = Lens.lens (\ListBillingGroupsFilter' {arns} -> arns) (\s@ListBillingGroupsFilter' {} a -> s {arns = a} :: ListBillingGroupsFilter) Prelude.. Lens.mapping Lens.coerced
+
+-- | The pricing plan Amazon Resource Names (ARNs) to retrieve information.
+listBillingGroupsFilter_pricingPlan :: Lens.Lens' ListBillingGroupsFilter (Prelude.Maybe Prelude.Text)
+listBillingGroupsFilter_pricingPlan = Lens.lens (\ListBillingGroupsFilter' {pricingPlan} -> pricingPlan) (\s@ListBillingGroupsFilter' {} a -> s {pricingPlan = a} :: ListBillingGroupsFilter)
+
+instance Prelude.Hashable ListBillingGroupsFilter where
+  hashWithSalt _salt ListBillingGroupsFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` arns
+      `Prelude.hashWithSalt` pricingPlan
+
+instance Prelude.NFData ListBillingGroupsFilter where
+  rnf ListBillingGroupsFilter' {..} =
+    Prelude.rnf arns
+      `Prelude.seq` Prelude.rnf pricingPlan
+
+instance Data.ToJSON ListBillingGroupsFilter where
+  toJSON ListBillingGroupsFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Arns" Data..=) Prelude.<$> arns,
+            ("PricingPlan" Data..=) Prelude.<$> pricingPlan
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/ListCustomLineItemChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemChargeDetails.hs
@@ -0,0 +1,122 @@
+{-# 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.BillingConductor.Types.ListCustomLineItemChargeDetails
+-- 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.BillingConductor.Types.ListCustomLineItemChargeDetails where
+
+import Amazonka.BillingConductor.Types.CustomLineItemType
+import Amazonka.BillingConductor.Types.ListCustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.ListCustomLineItemPercentageChargeDetails
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of the charge details of a custom line item.
+--
+-- /See:/ 'newListCustomLineItemChargeDetails' smart constructor.
+data ListCustomLineItemChargeDetails = ListCustomLineItemChargeDetails'
+  { -- | A @ListCustomLineItemFlatChargeDetails@ that describes the charge
+    -- details of a flat custom line item.
+    flat :: Prelude.Maybe ListCustomLineItemFlatChargeDetails,
+    -- | A @ListCustomLineItemPercentageChargeDetails@ that describes the charge
+    -- details of a percentage custom line item.
+    percentage :: Prelude.Maybe ListCustomLineItemPercentageChargeDetails,
+    -- | The type of the custom line item that indicates whether the charge is a
+    -- @fee@ or @credit@.
+    type' :: CustomLineItemType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemChargeDetails' 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:
+--
+-- 'flat', 'listCustomLineItemChargeDetails_flat' - A @ListCustomLineItemFlatChargeDetails@ that describes the charge
+-- details of a flat custom line item.
+--
+-- 'percentage', 'listCustomLineItemChargeDetails_percentage' - A @ListCustomLineItemPercentageChargeDetails@ that describes the charge
+-- details of a percentage custom line item.
+--
+-- 'type'', 'listCustomLineItemChargeDetails_type' - The type of the custom line item that indicates whether the charge is a
+-- @fee@ or @credit@.
+newListCustomLineItemChargeDetails ::
+  -- | 'type''
+  CustomLineItemType ->
+  ListCustomLineItemChargeDetails
+newListCustomLineItemChargeDetails pType_ =
+  ListCustomLineItemChargeDetails'
+    { flat =
+        Prelude.Nothing,
+      percentage = Prelude.Nothing,
+      type' = pType_
+    }
+
+-- | A @ListCustomLineItemFlatChargeDetails@ that describes the charge
+-- details of a flat custom line item.
+listCustomLineItemChargeDetails_flat :: Lens.Lens' ListCustomLineItemChargeDetails (Prelude.Maybe ListCustomLineItemFlatChargeDetails)
+listCustomLineItemChargeDetails_flat = Lens.lens (\ListCustomLineItemChargeDetails' {flat} -> flat) (\s@ListCustomLineItemChargeDetails' {} a -> s {flat = a} :: ListCustomLineItemChargeDetails)
+
+-- | A @ListCustomLineItemPercentageChargeDetails@ that describes the charge
+-- details of a percentage custom line item.
+listCustomLineItemChargeDetails_percentage :: Lens.Lens' ListCustomLineItemChargeDetails (Prelude.Maybe ListCustomLineItemPercentageChargeDetails)
+listCustomLineItemChargeDetails_percentage = Lens.lens (\ListCustomLineItemChargeDetails' {percentage} -> percentage) (\s@ListCustomLineItemChargeDetails' {} a -> s {percentage = a} :: ListCustomLineItemChargeDetails)
+
+-- | The type of the custom line item that indicates whether the charge is a
+-- @fee@ or @credit@.
+listCustomLineItemChargeDetails_type :: Lens.Lens' ListCustomLineItemChargeDetails CustomLineItemType
+listCustomLineItemChargeDetails_type = Lens.lens (\ListCustomLineItemChargeDetails' {type'} -> type') (\s@ListCustomLineItemChargeDetails' {} a -> s {type' = a} :: ListCustomLineItemChargeDetails)
+
+instance
+  Data.FromJSON
+    ListCustomLineItemChargeDetails
+  where
+  parseJSON =
+    Data.withObject
+      "ListCustomLineItemChargeDetails"
+      ( \x ->
+          ListCustomLineItemChargeDetails'
+            Prelude.<$> (x Data..:? "Flat")
+            Prelude.<*> (x Data..:? "Percentage")
+            Prelude.<*> (x Data..: "Type")
+      )
+
+instance
+  Prelude.Hashable
+    ListCustomLineItemChargeDetails
+  where
+  hashWithSalt
+    _salt
+    ListCustomLineItemChargeDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` flat
+        `Prelude.hashWithSalt` percentage
+        `Prelude.hashWithSalt` type'
+
+instance
+  Prelude.NFData
+    ListCustomLineItemChargeDetails
+  where
+  rnf ListCustomLineItemChargeDetails' {..} =
+    Prelude.rnf flat
+      `Prelude.seq` Prelude.rnf percentage
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/BillingConductor/Types/ListCustomLineItemFlatChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemFlatChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemFlatChargeDetails.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.ListCustomLineItemFlatChargeDetails
+-- 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.BillingConductor.Types.ListCustomLineItemFlatChargeDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of the charge details that are associated with a flat
+-- custom line item.
+--
+-- /See:/ 'newListCustomLineItemFlatChargeDetails' smart constructor.
+data ListCustomLineItemFlatChargeDetails = ListCustomLineItemFlatChargeDetails'
+  { -- | The custom line item\'s fixed charge value in USD.
+    chargeValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemFlatChargeDetails' 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:
+--
+-- 'chargeValue', 'listCustomLineItemFlatChargeDetails_chargeValue' - The custom line item\'s fixed charge value in USD.
+newListCustomLineItemFlatChargeDetails ::
+  -- | 'chargeValue'
+  Prelude.Double ->
+  ListCustomLineItemFlatChargeDetails
+newListCustomLineItemFlatChargeDetails pChargeValue_ =
+  ListCustomLineItemFlatChargeDetails'
+    { chargeValue =
+        pChargeValue_
+    }
+
+-- | The custom line item\'s fixed charge value in USD.
+listCustomLineItemFlatChargeDetails_chargeValue :: Lens.Lens' ListCustomLineItemFlatChargeDetails Prelude.Double
+listCustomLineItemFlatChargeDetails_chargeValue = Lens.lens (\ListCustomLineItemFlatChargeDetails' {chargeValue} -> chargeValue) (\s@ListCustomLineItemFlatChargeDetails' {} a -> s {chargeValue = a} :: ListCustomLineItemFlatChargeDetails)
+
+instance
+  Data.FromJSON
+    ListCustomLineItemFlatChargeDetails
+  where
+  parseJSON =
+    Data.withObject
+      "ListCustomLineItemFlatChargeDetails"
+      ( \x ->
+          ListCustomLineItemFlatChargeDetails'
+            Prelude.<$> (x Data..: "ChargeValue")
+      )
+
+instance
+  Prelude.Hashable
+    ListCustomLineItemFlatChargeDetails
+  where
+  hashWithSalt
+    _salt
+    ListCustomLineItemFlatChargeDetails' {..} =
+      _salt `Prelude.hashWithSalt` chargeValue
+
+instance
+  Prelude.NFData
+    ListCustomLineItemFlatChargeDetails
+  where
+  rnf ListCustomLineItemFlatChargeDetails' {..} =
+    Prelude.rnf chargeValue
diff --git a/gen/Amazonka/BillingConductor/Types/ListCustomLineItemPercentageChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemPercentageChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemPercentageChargeDetails.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.ListCustomLineItemPercentageChargeDetails
+-- 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.BillingConductor.Types.ListCustomLineItemPercentageChargeDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of the charge details that are associated with a
+-- percentage custom line item.
+--
+-- /See:/ 'newListCustomLineItemPercentageChargeDetails' smart constructor.
+data ListCustomLineItemPercentageChargeDetails = ListCustomLineItemPercentageChargeDetails'
+  { -- | The custom line item\'s percentage value. This will be multiplied
+    -- against the combined value of its associated resources to determine its
+    -- charge value.
+    percentageValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemPercentageChargeDetails' 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:
+--
+-- 'percentageValue', 'listCustomLineItemPercentageChargeDetails_percentageValue' - The custom line item\'s percentage value. This will be multiplied
+-- against the combined value of its associated resources to determine its
+-- charge value.
+newListCustomLineItemPercentageChargeDetails ::
+  -- | 'percentageValue'
+  Prelude.Double ->
+  ListCustomLineItemPercentageChargeDetails
+newListCustomLineItemPercentageChargeDetails
+  pPercentageValue_ =
+    ListCustomLineItemPercentageChargeDetails'
+      { percentageValue =
+          pPercentageValue_
+      }
+
+-- | The custom line item\'s percentage value. This will be multiplied
+-- against the combined value of its associated resources to determine its
+-- charge value.
+listCustomLineItemPercentageChargeDetails_percentageValue :: Lens.Lens' ListCustomLineItemPercentageChargeDetails Prelude.Double
+listCustomLineItemPercentageChargeDetails_percentageValue = Lens.lens (\ListCustomLineItemPercentageChargeDetails' {percentageValue} -> percentageValue) (\s@ListCustomLineItemPercentageChargeDetails' {} a -> s {percentageValue = a} :: ListCustomLineItemPercentageChargeDetails)
+
+instance
+  Data.FromJSON
+    ListCustomLineItemPercentageChargeDetails
+  where
+  parseJSON =
+    Data.withObject
+      "ListCustomLineItemPercentageChargeDetails"
+      ( \x ->
+          ListCustomLineItemPercentageChargeDetails'
+            Prelude.<$> (x Data..: "PercentageValue")
+      )
+
+instance
+  Prelude.Hashable
+    ListCustomLineItemPercentageChargeDetails
+  where
+  hashWithSalt
+    _salt
+    ListCustomLineItemPercentageChargeDetails' {..} =
+      _salt `Prelude.hashWithSalt` percentageValue
+
+instance
+  Prelude.NFData
+    ListCustomLineItemPercentageChargeDetails
+  where
+  rnf ListCustomLineItemPercentageChargeDetails' {..} =
+    Prelude.rnf percentageValue
diff --git a/gen/Amazonka/BillingConductor/Types/ListCustomLineItemVersionsBillingPeriodRangeFilter.hs b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemVersionsBillingPeriodRangeFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemVersionsBillingPeriodRangeFilter.hs
@@ -0,0 +1,107 @@
+{-# 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.BillingConductor.Types.ListCustomLineItemVersionsBillingPeriodRangeFilter
+-- 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.BillingConductor.Types.ListCustomLineItemVersionsBillingPeriodRangeFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A billing period filter that specifies the custom line item versions to
+-- retrieve.
+--
+-- /See:/ 'newListCustomLineItemVersionsBillingPeriodRangeFilter' smart constructor.
+data ListCustomLineItemVersionsBillingPeriodRangeFilter = ListCustomLineItemVersionsBillingPeriodRangeFilter'
+  { -- | The exclusive end billing period that defines a billing period range
+    -- where a custom line item version is applied.
+    endBillingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The inclusive start billing period that defines a billing period range
+    -- where a custom line item version is applied.
+    startBillingPeriod :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemVersionsBillingPeriodRangeFilter' 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:
+--
+-- 'endBillingPeriod', 'listCustomLineItemVersionsBillingPeriodRangeFilter_endBillingPeriod' - The exclusive end billing period that defines a billing period range
+-- where a custom line item version is applied.
+--
+-- 'startBillingPeriod', 'listCustomLineItemVersionsBillingPeriodRangeFilter_startBillingPeriod' - The inclusive start billing period that defines a billing period range
+-- where a custom line item version is applied.
+newListCustomLineItemVersionsBillingPeriodRangeFilter ::
+  ListCustomLineItemVersionsBillingPeriodRangeFilter
+newListCustomLineItemVersionsBillingPeriodRangeFilter =
+  ListCustomLineItemVersionsBillingPeriodRangeFilter'
+    { endBillingPeriod =
+        Prelude.Nothing,
+      startBillingPeriod =
+        Prelude.Nothing
+    }
+
+-- | The exclusive end billing period that defines a billing period range
+-- where a custom line item version is applied.
+listCustomLineItemVersionsBillingPeriodRangeFilter_endBillingPeriod :: Lens.Lens' ListCustomLineItemVersionsBillingPeriodRangeFilter (Prelude.Maybe Prelude.Text)
+listCustomLineItemVersionsBillingPeriodRangeFilter_endBillingPeriod = Lens.lens (\ListCustomLineItemVersionsBillingPeriodRangeFilter' {endBillingPeriod} -> endBillingPeriod) (\s@ListCustomLineItemVersionsBillingPeriodRangeFilter' {} a -> s {endBillingPeriod = a} :: ListCustomLineItemVersionsBillingPeriodRangeFilter)
+
+-- | The inclusive start billing period that defines a billing period range
+-- where a custom line item version is applied.
+listCustomLineItemVersionsBillingPeriodRangeFilter_startBillingPeriod :: Lens.Lens' ListCustomLineItemVersionsBillingPeriodRangeFilter (Prelude.Maybe Prelude.Text)
+listCustomLineItemVersionsBillingPeriodRangeFilter_startBillingPeriod = Lens.lens (\ListCustomLineItemVersionsBillingPeriodRangeFilter' {startBillingPeriod} -> startBillingPeriod) (\s@ListCustomLineItemVersionsBillingPeriodRangeFilter' {} a -> s {startBillingPeriod = a} :: ListCustomLineItemVersionsBillingPeriodRangeFilter)
+
+instance
+  Prelude.Hashable
+    ListCustomLineItemVersionsBillingPeriodRangeFilter
+  where
+  hashWithSalt
+    _salt
+    ListCustomLineItemVersionsBillingPeriodRangeFilter' {..} =
+      _salt
+        `Prelude.hashWithSalt` endBillingPeriod
+        `Prelude.hashWithSalt` startBillingPeriod
+
+instance
+  Prelude.NFData
+    ListCustomLineItemVersionsBillingPeriodRangeFilter
+  where
+  rnf
+    ListCustomLineItemVersionsBillingPeriodRangeFilter' {..} =
+      Prelude.rnf endBillingPeriod
+        `Prelude.seq` Prelude.rnf startBillingPeriod
+
+instance
+  Data.ToJSON
+    ListCustomLineItemVersionsBillingPeriodRangeFilter
+  where
+  toJSON
+    ListCustomLineItemVersionsBillingPeriodRangeFilter' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("EndBillingPeriod" Data..=)
+                Prelude.<$> endBillingPeriod,
+              ("StartBillingPeriod" Data..=)
+                Prelude.<$> startBillingPeriod
+            ]
+        )
diff --git a/gen/Amazonka/BillingConductor/Types/ListCustomLineItemVersionsFilter.hs b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemVersionsFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemVersionsFilter.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.ListCustomLineItemVersionsFilter
+-- 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.BillingConductor.Types.ListCustomLineItemVersionsFilter where
+
+import Amazonka.BillingConductor.Types.ListCustomLineItemVersionsBillingPeriodRangeFilter
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter that specifies the billing period range where the custom line
+-- item versions reside.
+--
+-- /See:/ 'newListCustomLineItemVersionsFilter' smart constructor.
+data ListCustomLineItemVersionsFilter = ListCustomLineItemVersionsFilter'
+  { -- | The billing period range in which the custom line item version is
+    -- applied.
+    billingPeriodRange :: Prelude.Maybe ListCustomLineItemVersionsBillingPeriodRangeFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemVersionsFilter' 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:
+--
+-- 'billingPeriodRange', 'listCustomLineItemVersionsFilter_billingPeriodRange' - The billing period range in which the custom line item version is
+-- applied.
+newListCustomLineItemVersionsFilter ::
+  ListCustomLineItemVersionsFilter
+newListCustomLineItemVersionsFilter =
+  ListCustomLineItemVersionsFilter'
+    { billingPeriodRange =
+        Prelude.Nothing
+    }
+
+-- | The billing period range in which the custom line item version is
+-- applied.
+listCustomLineItemVersionsFilter_billingPeriodRange :: Lens.Lens' ListCustomLineItemVersionsFilter (Prelude.Maybe ListCustomLineItemVersionsBillingPeriodRangeFilter)
+listCustomLineItemVersionsFilter_billingPeriodRange = Lens.lens (\ListCustomLineItemVersionsFilter' {billingPeriodRange} -> billingPeriodRange) (\s@ListCustomLineItemVersionsFilter' {} a -> s {billingPeriodRange = a} :: ListCustomLineItemVersionsFilter)
+
+instance
+  Prelude.Hashable
+    ListCustomLineItemVersionsFilter
+  where
+  hashWithSalt
+    _salt
+    ListCustomLineItemVersionsFilter' {..} =
+      _salt `Prelude.hashWithSalt` billingPeriodRange
+
+instance
+  Prelude.NFData
+    ListCustomLineItemVersionsFilter
+  where
+  rnf ListCustomLineItemVersionsFilter' {..} =
+    Prelude.rnf billingPeriodRange
+
+instance Data.ToJSON ListCustomLineItemVersionsFilter where
+  toJSON ListCustomLineItemVersionsFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriodRange" Data..=)
+              Prelude.<$> billingPeriodRange
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/ListCustomLineItemsFilter.hs b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemsFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListCustomLineItemsFilter.hs
@@ -0,0 +1,96 @@
+{-# 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.BillingConductor.Types.ListCustomLineItemsFilter
+-- 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.BillingConductor.Types.ListCustomLineItemsFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter that specifies the custom line items and billing groups to
+-- retrieve FFLI information.
+--
+-- /See:/ 'newListCustomLineItemsFilter' smart constructor.
+data ListCustomLineItemsFilter = ListCustomLineItemsFilter'
+  { -- | A list of custom line item ARNs to retrieve information.
+    arns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The billing group Amazon Resource Names (ARNs) to retrieve information.
+    billingGroups :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | A list of custom line items to retrieve information.
+    names :: Prelude.Maybe (Prelude.NonEmpty (Data.Sensitive Prelude.Text))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomLineItemsFilter' 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:
+--
+-- 'arns', 'listCustomLineItemsFilter_arns' - A list of custom line item ARNs to retrieve information.
+--
+-- 'billingGroups', 'listCustomLineItemsFilter_billingGroups' - The billing group Amazon Resource Names (ARNs) to retrieve information.
+--
+-- 'names', 'listCustomLineItemsFilter_names' - A list of custom line items to retrieve information.
+newListCustomLineItemsFilter ::
+  ListCustomLineItemsFilter
+newListCustomLineItemsFilter =
+  ListCustomLineItemsFilter'
+    { arns = Prelude.Nothing,
+      billingGroups = Prelude.Nothing,
+      names = Prelude.Nothing
+    }
+
+-- | A list of custom line item ARNs to retrieve information.
+listCustomLineItemsFilter_arns :: Lens.Lens' ListCustomLineItemsFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listCustomLineItemsFilter_arns = Lens.lens (\ListCustomLineItemsFilter' {arns} -> arns) (\s@ListCustomLineItemsFilter' {} a -> s {arns = a} :: ListCustomLineItemsFilter) Prelude.. Lens.mapping Lens.coerced
+
+-- | The billing group Amazon Resource Names (ARNs) to retrieve information.
+listCustomLineItemsFilter_billingGroups :: Lens.Lens' ListCustomLineItemsFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listCustomLineItemsFilter_billingGroups = Lens.lens (\ListCustomLineItemsFilter' {billingGroups} -> billingGroups) (\s@ListCustomLineItemsFilter' {} a -> s {billingGroups = a} :: ListCustomLineItemsFilter) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of custom line items to retrieve information.
+listCustomLineItemsFilter_names :: Lens.Lens' ListCustomLineItemsFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listCustomLineItemsFilter_names = Lens.lens (\ListCustomLineItemsFilter' {names} -> names) (\s@ListCustomLineItemsFilter' {} a -> s {names = a} :: ListCustomLineItemsFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable ListCustomLineItemsFilter where
+  hashWithSalt _salt ListCustomLineItemsFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` arns
+      `Prelude.hashWithSalt` billingGroups
+      `Prelude.hashWithSalt` names
+
+instance Prelude.NFData ListCustomLineItemsFilter where
+  rnf ListCustomLineItemsFilter' {..} =
+    Prelude.rnf arns
+      `Prelude.seq` Prelude.rnf billingGroups
+      `Prelude.seq` Prelude.rnf names
+
+instance Data.ToJSON ListCustomLineItemsFilter where
+  toJSON ListCustomLineItemsFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Arns" Data..=) Prelude.<$> arns,
+            ("BillingGroups" Data..=) Prelude.<$> billingGroups,
+            ("Names" Data..=) Prelude.<$> names
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/ListPricingPlansFilter.hs b/gen/Amazonka/BillingConductor/Types/ListPricingPlansFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListPricingPlansFilter.hs
@@ -0,0 +1,70 @@
+{-# 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.BillingConductor.Types.ListPricingPlansFilter
+-- 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.BillingConductor.Types.ListPricingPlansFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The filter that specifies the Amazon Resource Names (ARNs) of pricing
+-- plans, to retrieve pricing plan information.
+--
+-- /See:/ 'newListPricingPlansFilter' smart constructor.
+data ListPricingPlansFilter = ListPricingPlansFilter'
+  { -- | A list of pricing plan Amazon Resource Names (ARNs) to retrieve
+    -- information.
+    arns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingPlansFilter' 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:
+--
+-- 'arns', 'listPricingPlansFilter_arns' - A list of pricing plan Amazon Resource Names (ARNs) to retrieve
+-- information.
+newListPricingPlansFilter ::
+  ListPricingPlansFilter
+newListPricingPlansFilter =
+  ListPricingPlansFilter' {arns = Prelude.Nothing}
+
+-- | A list of pricing plan Amazon Resource Names (ARNs) to retrieve
+-- information.
+listPricingPlansFilter_arns :: Lens.Lens' ListPricingPlansFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listPricingPlansFilter_arns = Lens.lens (\ListPricingPlansFilter' {arns} -> arns) (\s@ListPricingPlansFilter' {} a -> s {arns = a} :: ListPricingPlansFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable ListPricingPlansFilter where
+  hashWithSalt _salt ListPricingPlansFilter' {..} =
+    _salt `Prelude.hashWithSalt` arns
+
+instance Prelude.NFData ListPricingPlansFilter where
+  rnf ListPricingPlansFilter' {..} = Prelude.rnf arns
+
+instance Data.ToJSON ListPricingPlansFilter where
+  toJSON ListPricingPlansFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Arns" Data..=) Prelude.<$> arns]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/ListPricingRulesFilter.hs b/gen/Amazonka/BillingConductor/Types/ListPricingRulesFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListPricingRulesFilter.hs
@@ -0,0 +1,70 @@
+{-# 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.BillingConductor.Types.ListPricingRulesFilter
+-- 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.BillingConductor.Types.ListPricingRulesFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The filter that specifies criteria that the pricing rules returned by
+-- the @ListPricingRules@ API will adhere to.
+--
+-- /See:/ 'newListPricingRulesFilter' smart constructor.
+data ListPricingRulesFilter = ListPricingRulesFilter'
+  { -- | A list containing the pricing rule Amazon Resource Names (ARNs) to
+    -- include in the API response.
+    arns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPricingRulesFilter' 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:
+--
+-- 'arns', 'listPricingRulesFilter_arns' - A list containing the pricing rule Amazon Resource Names (ARNs) to
+-- include in the API response.
+newListPricingRulesFilter ::
+  ListPricingRulesFilter
+newListPricingRulesFilter =
+  ListPricingRulesFilter' {arns = Prelude.Nothing}
+
+-- | A list containing the pricing rule Amazon Resource Names (ARNs) to
+-- include in the API response.
+listPricingRulesFilter_arns :: Lens.Lens' ListPricingRulesFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listPricingRulesFilter_arns = Lens.lens (\ListPricingRulesFilter' {arns} -> arns) (\s@ListPricingRulesFilter' {} a -> s {arns = a} :: ListPricingRulesFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable ListPricingRulesFilter where
+  hashWithSalt _salt ListPricingRulesFilter' {..} =
+    _salt `Prelude.hashWithSalt` arns
+
+instance Prelude.NFData ListPricingRulesFilter where
+  rnf ListPricingRulesFilter' {..} = Prelude.rnf arns
+
+instance Data.ToJSON ListPricingRulesFilter where
+  toJSON ListPricingRulesFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Arns" Data..=) Prelude.<$> arns]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/ListResourcesAssociatedToCustomLineItemFilter.hs b/gen/Amazonka/BillingConductor/Types/ListResourcesAssociatedToCustomLineItemFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListResourcesAssociatedToCustomLineItemFilter.hs
@@ -0,0 +1,88 @@
+{-# 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.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemFilter
+-- 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.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemFilter where
+
+import Amazonka.BillingConductor.Types.CustomLineItemRelationship
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter that specifies the type of resource associations that should be
+-- retrieved for a custom line item.
+--
+-- /See:/ 'newListResourcesAssociatedToCustomLineItemFilter' smart constructor.
+data ListResourcesAssociatedToCustomLineItemFilter = ListResourcesAssociatedToCustomLineItemFilter'
+  { -- | The type of relationship between the custom line item and the associated
+    -- resource.
+    relationship :: Prelude.Maybe CustomLineItemRelationship
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListResourcesAssociatedToCustomLineItemFilter' 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:
+--
+-- 'relationship', 'listResourcesAssociatedToCustomLineItemFilter_relationship' - The type of relationship between the custom line item and the associated
+-- resource.
+newListResourcesAssociatedToCustomLineItemFilter ::
+  ListResourcesAssociatedToCustomLineItemFilter
+newListResourcesAssociatedToCustomLineItemFilter =
+  ListResourcesAssociatedToCustomLineItemFilter'
+    { relationship =
+        Prelude.Nothing
+    }
+
+-- | The type of relationship between the custom line item and the associated
+-- resource.
+listResourcesAssociatedToCustomLineItemFilter_relationship :: Lens.Lens' ListResourcesAssociatedToCustomLineItemFilter (Prelude.Maybe CustomLineItemRelationship)
+listResourcesAssociatedToCustomLineItemFilter_relationship = Lens.lens (\ListResourcesAssociatedToCustomLineItemFilter' {relationship} -> relationship) (\s@ListResourcesAssociatedToCustomLineItemFilter' {} a -> s {relationship = a} :: ListResourcesAssociatedToCustomLineItemFilter)
+
+instance
+  Prelude.Hashable
+    ListResourcesAssociatedToCustomLineItemFilter
+  where
+  hashWithSalt
+    _salt
+    ListResourcesAssociatedToCustomLineItemFilter' {..} =
+      _salt `Prelude.hashWithSalt` relationship
+
+instance
+  Prelude.NFData
+    ListResourcesAssociatedToCustomLineItemFilter
+  where
+  rnf
+    ListResourcesAssociatedToCustomLineItemFilter' {..} =
+      Prelude.rnf relationship
+
+instance
+  Data.ToJSON
+    ListResourcesAssociatedToCustomLineItemFilter
+  where
+  toJSON
+    ListResourcesAssociatedToCustomLineItemFilter' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [("Relationship" Data..=) Prelude.<$> relationship]
+        )
diff --git a/gen/Amazonka/BillingConductor/Types/ListResourcesAssociatedToCustomLineItemResponseElement.hs b/gen/Amazonka/BillingConductor/Types/ListResourcesAssociatedToCustomLineItemResponseElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/ListResourcesAssociatedToCustomLineItemResponseElement.hs
@@ -0,0 +1,115 @@
+{-# 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.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemResponseElement
+-- 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.BillingConductor.Types.ListResourcesAssociatedToCustomLineItemResponseElement where
+
+import Amazonka.BillingConductor.Types.CustomLineItemRelationship
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of a resource association for a custom line item.
+--
+-- /See:/ 'newListResourcesAssociatedToCustomLineItemResponseElement' smart constructor.
+data ListResourcesAssociatedToCustomLineItemResponseElement = ListResourcesAssociatedToCustomLineItemResponseElement'
+  { -- | The ARN of the associated resource.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The end billing period of the associated resource.
+    endBillingPeriod :: Prelude.Maybe Prelude.Text,
+    -- | The type of relationship between the custom line item and the associated
+    -- resource.
+    relationship :: Prelude.Maybe CustomLineItemRelationship
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListResourcesAssociatedToCustomLineItemResponseElement' 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:
+--
+-- 'arn', 'listResourcesAssociatedToCustomLineItemResponseElement_arn' - The ARN of the associated resource.
+--
+-- 'endBillingPeriod', 'listResourcesAssociatedToCustomLineItemResponseElement_endBillingPeriod' - The end billing period of the associated resource.
+--
+-- 'relationship', 'listResourcesAssociatedToCustomLineItemResponseElement_relationship' - The type of relationship between the custom line item and the associated
+-- resource.
+newListResourcesAssociatedToCustomLineItemResponseElement ::
+  ListResourcesAssociatedToCustomLineItemResponseElement
+newListResourcesAssociatedToCustomLineItemResponseElement =
+  ListResourcesAssociatedToCustomLineItemResponseElement'
+    { arn =
+        Prelude.Nothing,
+      endBillingPeriod =
+        Prelude.Nothing,
+      relationship =
+        Prelude.Nothing
+    }
+
+-- | The ARN of the associated resource.
+listResourcesAssociatedToCustomLineItemResponseElement_arn :: Lens.Lens' ListResourcesAssociatedToCustomLineItemResponseElement (Prelude.Maybe Prelude.Text)
+listResourcesAssociatedToCustomLineItemResponseElement_arn = Lens.lens (\ListResourcesAssociatedToCustomLineItemResponseElement' {arn} -> arn) (\s@ListResourcesAssociatedToCustomLineItemResponseElement' {} a -> s {arn = a} :: ListResourcesAssociatedToCustomLineItemResponseElement)
+
+-- | The end billing period of the associated resource.
+listResourcesAssociatedToCustomLineItemResponseElement_endBillingPeriod :: Lens.Lens' ListResourcesAssociatedToCustomLineItemResponseElement (Prelude.Maybe Prelude.Text)
+listResourcesAssociatedToCustomLineItemResponseElement_endBillingPeriod = Lens.lens (\ListResourcesAssociatedToCustomLineItemResponseElement' {endBillingPeriod} -> endBillingPeriod) (\s@ListResourcesAssociatedToCustomLineItemResponseElement' {} a -> s {endBillingPeriod = a} :: ListResourcesAssociatedToCustomLineItemResponseElement)
+
+-- | The type of relationship between the custom line item and the associated
+-- resource.
+listResourcesAssociatedToCustomLineItemResponseElement_relationship :: Lens.Lens' ListResourcesAssociatedToCustomLineItemResponseElement (Prelude.Maybe CustomLineItemRelationship)
+listResourcesAssociatedToCustomLineItemResponseElement_relationship = Lens.lens (\ListResourcesAssociatedToCustomLineItemResponseElement' {relationship} -> relationship) (\s@ListResourcesAssociatedToCustomLineItemResponseElement' {} a -> s {relationship = a} :: ListResourcesAssociatedToCustomLineItemResponseElement)
+
+instance
+  Data.FromJSON
+    ListResourcesAssociatedToCustomLineItemResponseElement
+  where
+  parseJSON =
+    Data.withObject
+      "ListResourcesAssociatedToCustomLineItemResponseElement"
+      ( \x ->
+          ListResourcesAssociatedToCustomLineItemResponseElement'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "EndBillingPeriod")
+            Prelude.<*> (x Data..:? "Relationship")
+      )
+
+instance
+  Prelude.Hashable
+    ListResourcesAssociatedToCustomLineItemResponseElement
+  where
+  hashWithSalt
+    _salt
+    ListResourcesAssociatedToCustomLineItemResponseElement' {..} =
+      _salt
+        `Prelude.hashWithSalt` arn
+        `Prelude.hashWithSalt` endBillingPeriod
+        `Prelude.hashWithSalt` relationship
+
+instance
+  Prelude.NFData
+    ListResourcesAssociatedToCustomLineItemResponseElement
+  where
+  rnf
+    ListResourcesAssociatedToCustomLineItemResponseElement' {..} =
+      Prelude.rnf arn
+        `Prelude.seq` Prelude.rnf endBillingPeriod
+        `Prelude.seq` Prelude.rnf relationship
diff --git a/gen/Amazonka/BillingConductor/Types/PricingPlanListElement.hs b/gen/Amazonka/BillingConductor/Types/PricingPlanListElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/PricingPlanListElement.hs
@@ -0,0 +1,138 @@
+{-# 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.BillingConductor.Types.PricingPlanListElement
+-- 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.BillingConductor.Types.PricingPlanListElement where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of a pricing plan.
+--
+-- /See:/ 'newPricingPlanListElement' smart constructor.
+data PricingPlanListElement = PricingPlanListElement'
+  { -- | The pricing plan Amazon Resource Names (ARN). This can be used to
+    -- uniquely identify a pricing plan.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time when the pricing plan was created.
+    creationTime :: Prelude.Maybe Prelude.Integer,
+    -- | The pricing plan description.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The most recent time when the pricing plan was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | The name of a pricing plan.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The pricing rules count that\'s currently associated with this pricing
+    -- plan list element.
+    size :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PricingPlanListElement' 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:
+--
+-- 'arn', 'pricingPlanListElement_arn' - The pricing plan Amazon Resource Names (ARN). This can be used to
+-- uniquely identify a pricing plan.
+--
+-- 'creationTime', 'pricingPlanListElement_creationTime' - The time when the pricing plan was created.
+--
+-- 'description', 'pricingPlanListElement_description' - The pricing plan description.
+--
+-- 'lastModifiedTime', 'pricingPlanListElement_lastModifiedTime' - The most recent time when the pricing plan was modified.
+--
+-- 'name', 'pricingPlanListElement_name' - The name of a pricing plan.
+--
+-- 'size', 'pricingPlanListElement_size' - The pricing rules count that\'s currently associated with this pricing
+-- plan list element.
+newPricingPlanListElement ::
+  PricingPlanListElement
+newPricingPlanListElement =
+  PricingPlanListElement'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      size = Prelude.Nothing
+    }
+
+-- | The pricing plan Amazon Resource Names (ARN). This can be used to
+-- uniquely identify a pricing plan.
+pricingPlanListElement_arn :: Lens.Lens' PricingPlanListElement (Prelude.Maybe Prelude.Text)
+pricingPlanListElement_arn = Lens.lens (\PricingPlanListElement' {arn} -> arn) (\s@PricingPlanListElement' {} a -> s {arn = a} :: PricingPlanListElement)
+
+-- | The time when the pricing plan was created.
+pricingPlanListElement_creationTime :: Lens.Lens' PricingPlanListElement (Prelude.Maybe Prelude.Integer)
+pricingPlanListElement_creationTime = Lens.lens (\PricingPlanListElement' {creationTime} -> creationTime) (\s@PricingPlanListElement' {} a -> s {creationTime = a} :: PricingPlanListElement)
+
+-- | The pricing plan description.
+pricingPlanListElement_description :: Lens.Lens' PricingPlanListElement (Prelude.Maybe Prelude.Text)
+pricingPlanListElement_description = Lens.lens (\PricingPlanListElement' {description} -> description) (\s@PricingPlanListElement' {} a -> s {description = a} :: PricingPlanListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The most recent time when the pricing plan was modified.
+pricingPlanListElement_lastModifiedTime :: Lens.Lens' PricingPlanListElement (Prelude.Maybe Prelude.Integer)
+pricingPlanListElement_lastModifiedTime = Lens.lens (\PricingPlanListElement' {lastModifiedTime} -> lastModifiedTime) (\s@PricingPlanListElement' {} a -> s {lastModifiedTime = a} :: PricingPlanListElement)
+
+-- | The name of a pricing plan.
+pricingPlanListElement_name :: Lens.Lens' PricingPlanListElement (Prelude.Maybe Prelude.Text)
+pricingPlanListElement_name = Lens.lens (\PricingPlanListElement' {name} -> name) (\s@PricingPlanListElement' {} a -> s {name = a} :: PricingPlanListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The pricing rules count that\'s currently associated with this pricing
+-- plan list element.
+pricingPlanListElement_size :: Lens.Lens' PricingPlanListElement (Prelude.Maybe Prelude.Natural)
+pricingPlanListElement_size = Lens.lens (\PricingPlanListElement' {size} -> size) (\s@PricingPlanListElement' {} a -> s {size = a} :: PricingPlanListElement)
+
+instance Data.FromJSON PricingPlanListElement where
+  parseJSON =
+    Data.withObject
+      "PricingPlanListElement"
+      ( \x ->
+          PricingPlanListElement'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Size")
+      )
+
+instance Prelude.Hashable PricingPlanListElement where
+  hashWithSalt _salt PricingPlanListElement' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` size
+
+instance Prelude.NFData PricingPlanListElement where
+  rnf PricingPlanListElement' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf size
diff --git a/gen/Amazonka/BillingConductor/Types/PricingRuleListElement.hs b/gen/Amazonka/BillingConductor/Types/PricingRuleListElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/PricingRuleListElement.hs
@@ -0,0 +1,219 @@
+{-# 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.BillingConductor.Types.PricingRuleListElement
+-- 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.BillingConductor.Types.PricingRuleListElement where
+
+import Amazonka.BillingConductor.Types.PricingRuleScope
+import Amazonka.BillingConductor.Types.PricingRuleType
+import Amazonka.BillingConductor.Types.Tiering
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of a pricing rule.
+--
+-- /See:/ 'newPricingRuleListElement' smart constructor.
+data PricingRuleListElement = PricingRuleListElement'
+  { -- | The Amazon Resource Name (ARN) used to uniquely identify a pricing rule.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The pricing plans count that this pricing rule is associated with.
+    associatedPricingPlanCount :: Prelude.Maybe Prelude.Natural,
+    -- | The seller of services provided by Amazon Web Services, their
+    -- affiliates, or third-party providers selling services via Amazon Web
+    -- Services Marketplace.
+    billingEntity :: Prelude.Maybe Prelude.Text,
+    -- | The time when the pricing rule was created.
+    creationTime :: Prelude.Maybe Prelude.Integer,
+    -- | The pricing rule description.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The most recent time when the pricing rule was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | A percentage modifier applied on the public pricing rates.
+    modifierPercentage :: Prelude.Maybe Prelude.Double,
+    -- | The name of a pricing rule.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The scope of pricing rule that indicates if it is globally applicable,
+    -- or if it is service-specific.
+    scope :: Prelude.Maybe PricingRuleScope,
+    -- | If the @Scope@ attribute is @SERVICE@, this attribute indicates which
+    -- service the @PricingRule@ is applicable for.
+    service :: Prelude.Maybe Prelude.Text,
+    -- | The set of tiering configurations for the pricing rule.
+    tiering :: Prelude.Maybe Tiering,
+    -- | The type of pricing rule.
+    type' :: Prelude.Maybe PricingRuleType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PricingRuleListElement' 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:
+--
+-- 'arn', 'pricingRuleListElement_arn' - The Amazon Resource Name (ARN) used to uniquely identify a pricing rule.
+--
+-- 'associatedPricingPlanCount', 'pricingRuleListElement_associatedPricingPlanCount' - The pricing plans count that this pricing rule is associated with.
+--
+-- 'billingEntity', 'pricingRuleListElement_billingEntity' - The seller of services provided by Amazon Web Services, their
+-- affiliates, or third-party providers selling services via Amazon Web
+-- Services Marketplace.
+--
+-- 'creationTime', 'pricingRuleListElement_creationTime' - The time when the pricing rule was created.
+--
+-- 'description', 'pricingRuleListElement_description' - The pricing rule description.
+--
+-- 'lastModifiedTime', 'pricingRuleListElement_lastModifiedTime' - The most recent time when the pricing rule was modified.
+--
+-- 'modifierPercentage', 'pricingRuleListElement_modifierPercentage' - A percentage modifier applied on the public pricing rates.
+--
+-- 'name', 'pricingRuleListElement_name' - The name of a pricing rule.
+--
+-- 'scope', 'pricingRuleListElement_scope' - The scope of pricing rule that indicates if it is globally applicable,
+-- or if it is service-specific.
+--
+-- 'service', 'pricingRuleListElement_service' - If the @Scope@ attribute is @SERVICE@, this attribute indicates which
+-- service the @PricingRule@ is applicable for.
+--
+-- 'tiering', 'pricingRuleListElement_tiering' - The set of tiering configurations for the pricing rule.
+--
+-- 'type'', 'pricingRuleListElement_type' - The type of pricing rule.
+newPricingRuleListElement ::
+  PricingRuleListElement
+newPricingRuleListElement =
+  PricingRuleListElement'
+    { arn = Prelude.Nothing,
+      associatedPricingPlanCount = Prelude.Nothing,
+      billingEntity = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      modifierPercentage = Prelude.Nothing,
+      name = Prelude.Nothing,
+      scope = Prelude.Nothing,
+      service = Prelude.Nothing,
+      tiering = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) used to uniquely identify a pricing rule.
+pricingRuleListElement_arn :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Text)
+pricingRuleListElement_arn = Lens.lens (\PricingRuleListElement' {arn} -> arn) (\s@PricingRuleListElement' {} a -> s {arn = a} :: PricingRuleListElement)
+
+-- | The pricing plans count that this pricing rule is associated with.
+pricingRuleListElement_associatedPricingPlanCount :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Natural)
+pricingRuleListElement_associatedPricingPlanCount = Lens.lens (\PricingRuleListElement' {associatedPricingPlanCount} -> associatedPricingPlanCount) (\s@PricingRuleListElement' {} a -> s {associatedPricingPlanCount = a} :: PricingRuleListElement)
+
+-- | The seller of services provided by Amazon Web Services, their
+-- affiliates, or third-party providers selling services via Amazon Web
+-- Services Marketplace.
+pricingRuleListElement_billingEntity :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Text)
+pricingRuleListElement_billingEntity = Lens.lens (\PricingRuleListElement' {billingEntity} -> billingEntity) (\s@PricingRuleListElement' {} a -> s {billingEntity = a} :: PricingRuleListElement)
+
+-- | The time when the pricing rule was created.
+pricingRuleListElement_creationTime :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Integer)
+pricingRuleListElement_creationTime = Lens.lens (\PricingRuleListElement' {creationTime} -> creationTime) (\s@PricingRuleListElement' {} a -> s {creationTime = a} :: PricingRuleListElement)
+
+-- | The pricing rule description.
+pricingRuleListElement_description :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Text)
+pricingRuleListElement_description = Lens.lens (\PricingRuleListElement' {description} -> description) (\s@PricingRuleListElement' {} a -> s {description = a} :: PricingRuleListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The most recent time when the pricing rule was modified.
+pricingRuleListElement_lastModifiedTime :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Integer)
+pricingRuleListElement_lastModifiedTime = Lens.lens (\PricingRuleListElement' {lastModifiedTime} -> lastModifiedTime) (\s@PricingRuleListElement' {} a -> s {lastModifiedTime = a} :: PricingRuleListElement)
+
+-- | A percentage modifier applied on the public pricing rates.
+pricingRuleListElement_modifierPercentage :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Double)
+pricingRuleListElement_modifierPercentage = Lens.lens (\PricingRuleListElement' {modifierPercentage} -> modifierPercentage) (\s@PricingRuleListElement' {} a -> s {modifierPercentage = a} :: PricingRuleListElement)
+
+-- | The name of a pricing rule.
+pricingRuleListElement_name :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Text)
+pricingRuleListElement_name = Lens.lens (\PricingRuleListElement' {name} -> name) (\s@PricingRuleListElement' {} a -> s {name = a} :: PricingRuleListElement) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The scope of pricing rule that indicates if it is globally applicable,
+-- or if it is service-specific.
+pricingRuleListElement_scope :: Lens.Lens' PricingRuleListElement (Prelude.Maybe PricingRuleScope)
+pricingRuleListElement_scope = Lens.lens (\PricingRuleListElement' {scope} -> scope) (\s@PricingRuleListElement' {} a -> s {scope = a} :: PricingRuleListElement)
+
+-- | If the @Scope@ attribute is @SERVICE@, this attribute indicates which
+-- service the @PricingRule@ is applicable for.
+pricingRuleListElement_service :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Prelude.Text)
+pricingRuleListElement_service = Lens.lens (\PricingRuleListElement' {service} -> service) (\s@PricingRuleListElement' {} a -> s {service = a} :: PricingRuleListElement)
+
+-- | The set of tiering configurations for the pricing rule.
+pricingRuleListElement_tiering :: Lens.Lens' PricingRuleListElement (Prelude.Maybe Tiering)
+pricingRuleListElement_tiering = Lens.lens (\PricingRuleListElement' {tiering} -> tiering) (\s@PricingRuleListElement' {} a -> s {tiering = a} :: PricingRuleListElement)
+
+-- | The type of pricing rule.
+pricingRuleListElement_type :: Lens.Lens' PricingRuleListElement (Prelude.Maybe PricingRuleType)
+pricingRuleListElement_type = Lens.lens (\PricingRuleListElement' {type'} -> type') (\s@PricingRuleListElement' {} a -> s {type' = a} :: PricingRuleListElement)
+
+instance Data.FromJSON PricingRuleListElement where
+  parseJSON =
+    Data.withObject
+      "PricingRuleListElement"
+      ( \x ->
+          PricingRuleListElement'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "AssociatedPricingPlanCount")
+            Prelude.<*> (x Data..:? "BillingEntity")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "ModifierPercentage")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Scope")
+            Prelude.<*> (x Data..:? "Service")
+            Prelude.<*> (x Data..:? "Tiering")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable PricingRuleListElement where
+  hashWithSalt _salt PricingRuleListElement' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` associatedPricingPlanCount
+      `Prelude.hashWithSalt` billingEntity
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` modifierPercentage
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` scope
+      `Prelude.hashWithSalt` service
+      `Prelude.hashWithSalt` tiering
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData PricingRuleListElement where
+  rnf PricingRuleListElement' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf associatedPricingPlanCount
+      `Prelude.seq` Prelude.rnf billingEntity
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modifierPercentage
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf scope
+      `Prelude.seq` Prelude.rnf service
+      `Prelude.seq` Prelude.rnf tiering
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/BillingConductor/Types/PricingRuleScope.hs b/gen/Amazonka/BillingConductor/Types/PricingRuleScope.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/PricingRuleScope.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.PricingRuleScope
+-- 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.BillingConductor.Types.PricingRuleScope
+  ( PricingRuleScope
+      ( ..,
+        PricingRuleScope_BILLING_ENTITY,
+        PricingRuleScope_GLOBAL,
+        PricingRuleScope_SERVICE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PricingRuleScope = PricingRuleScope'
+  { fromPricingRuleScope ::
+      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 PricingRuleScope_BILLING_ENTITY :: PricingRuleScope
+pattern PricingRuleScope_BILLING_ENTITY = PricingRuleScope' "BILLING_ENTITY"
+
+pattern PricingRuleScope_GLOBAL :: PricingRuleScope
+pattern PricingRuleScope_GLOBAL = PricingRuleScope' "GLOBAL"
+
+pattern PricingRuleScope_SERVICE :: PricingRuleScope
+pattern PricingRuleScope_SERVICE = PricingRuleScope' "SERVICE"
+
+{-# COMPLETE
+  PricingRuleScope_BILLING_ENTITY,
+  PricingRuleScope_GLOBAL,
+  PricingRuleScope_SERVICE,
+  PricingRuleScope'
+  #-}
diff --git a/gen/Amazonka/BillingConductor/Types/PricingRuleType.hs b/gen/Amazonka/BillingConductor/Types/PricingRuleType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/PricingRuleType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.PricingRuleType
+-- 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.BillingConductor.Types.PricingRuleType
+  ( PricingRuleType
+      ( ..,
+        PricingRuleType_DISCOUNT,
+        PricingRuleType_MARKUP,
+        PricingRuleType_TIERING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PricingRuleType = PricingRuleType'
+  { fromPricingRuleType ::
+      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 PricingRuleType_DISCOUNT :: PricingRuleType
+pattern PricingRuleType_DISCOUNT = PricingRuleType' "DISCOUNT"
+
+pattern PricingRuleType_MARKUP :: PricingRuleType
+pattern PricingRuleType_MARKUP = PricingRuleType' "MARKUP"
+
+pattern PricingRuleType_TIERING :: PricingRuleType
+pattern PricingRuleType_TIERING = PricingRuleType' "TIERING"
+
+{-# COMPLETE
+  PricingRuleType_DISCOUNT,
+  PricingRuleType_MARKUP,
+  PricingRuleType_TIERING,
+  PricingRuleType'
+  #-}
diff --git a/gen/Amazonka/BillingConductor/Types/Tiering.hs b/gen/Amazonka/BillingConductor/Types/Tiering.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/Tiering.hs
@@ -0,0 +1,68 @@
+{-# 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.BillingConductor.Types.Tiering
+-- 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.BillingConductor.Types.Tiering where
+
+import Amazonka.BillingConductor.Types.FreeTierConfig
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The set of tiering configurations for the pricing rule.
+--
+-- /See:/ 'newTiering' smart constructor.
+data Tiering = Tiering'
+  { -- | The possible Amazon Web Services Free Tier configurations.
+    freeTier :: FreeTierConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tiering' 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:
+--
+-- 'freeTier', 'tiering_freeTier' - The possible Amazon Web Services Free Tier configurations.
+newTiering ::
+  -- | 'freeTier'
+  FreeTierConfig ->
+  Tiering
+newTiering pFreeTier_ =
+  Tiering' {freeTier = pFreeTier_}
+
+-- | The possible Amazon Web Services Free Tier configurations.
+tiering_freeTier :: Lens.Lens' Tiering FreeTierConfig
+tiering_freeTier = Lens.lens (\Tiering' {freeTier} -> freeTier) (\s@Tiering' {} a -> s {freeTier = a} :: Tiering)
+
+instance Data.FromJSON Tiering where
+  parseJSON =
+    Data.withObject
+      "Tiering"
+      (\x -> Tiering' Prelude.<$> (x Data..: "FreeTier"))
+
+instance Prelude.Hashable Tiering where
+  hashWithSalt _salt Tiering' {..} =
+    _salt `Prelude.hashWithSalt` freeTier
+
+instance Prelude.NFData Tiering where
+  rnf Tiering' {..} = Prelude.rnf freeTier
diff --git a/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemChargeDetails.hs
@@ -0,0 +1,104 @@
+{-# 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.BillingConductor.Types.UpdateCustomLineItemChargeDetails
+-- 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.BillingConductor.Types.UpdateCustomLineItemChargeDetails where
+
+import Amazonka.BillingConductor.Types.UpdateCustomLineItemFlatChargeDetails
+import Amazonka.BillingConductor.Types.UpdateCustomLineItemPercentageChargeDetails
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of the new charge details of a custom line item. This
+-- should contain only one of @Flat@ or @Percentage@.
+--
+-- /See:/ 'newUpdateCustomLineItemChargeDetails' smart constructor.
+data UpdateCustomLineItemChargeDetails = UpdateCustomLineItemChargeDetails'
+  { -- | An @UpdateCustomLineItemFlatChargeDetails@ that describes the new charge
+    -- details of a flat custom line item.
+    flat :: Prelude.Maybe UpdateCustomLineItemFlatChargeDetails,
+    -- | An @UpdateCustomLineItemPercentageChargeDetails@ that describes the new
+    -- charge details of a percentage custom line item.
+    percentage :: Prelude.Maybe UpdateCustomLineItemPercentageChargeDetails
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCustomLineItemChargeDetails' 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:
+--
+-- 'flat', 'updateCustomLineItemChargeDetails_flat' - An @UpdateCustomLineItemFlatChargeDetails@ that describes the new charge
+-- details of a flat custom line item.
+--
+-- 'percentage', 'updateCustomLineItemChargeDetails_percentage' - An @UpdateCustomLineItemPercentageChargeDetails@ that describes the new
+-- charge details of a percentage custom line item.
+newUpdateCustomLineItemChargeDetails ::
+  UpdateCustomLineItemChargeDetails
+newUpdateCustomLineItemChargeDetails =
+  UpdateCustomLineItemChargeDetails'
+    { flat =
+        Prelude.Nothing,
+      percentage = Prelude.Nothing
+    }
+
+-- | An @UpdateCustomLineItemFlatChargeDetails@ that describes the new charge
+-- details of a flat custom line item.
+updateCustomLineItemChargeDetails_flat :: Lens.Lens' UpdateCustomLineItemChargeDetails (Prelude.Maybe UpdateCustomLineItemFlatChargeDetails)
+updateCustomLineItemChargeDetails_flat = Lens.lens (\UpdateCustomLineItemChargeDetails' {flat} -> flat) (\s@UpdateCustomLineItemChargeDetails' {} a -> s {flat = a} :: UpdateCustomLineItemChargeDetails)
+
+-- | An @UpdateCustomLineItemPercentageChargeDetails@ that describes the new
+-- charge details of a percentage custom line item.
+updateCustomLineItemChargeDetails_percentage :: Lens.Lens' UpdateCustomLineItemChargeDetails (Prelude.Maybe UpdateCustomLineItemPercentageChargeDetails)
+updateCustomLineItemChargeDetails_percentage = Lens.lens (\UpdateCustomLineItemChargeDetails' {percentage} -> percentage) (\s@UpdateCustomLineItemChargeDetails' {} a -> s {percentage = a} :: UpdateCustomLineItemChargeDetails)
+
+instance
+  Prelude.Hashable
+    UpdateCustomLineItemChargeDetails
+  where
+  hashWithSalt
+    _salt
+    UpdateCustomLineItemChargeDetails' {..} =
+      _salt
+        `Prelude.hashWithSalt` flat
+        `Prelude.hashWithSalt` percentage
+
+instance
+  Prelude.NFData
+    UpdateCustomLineItemChargeDetails
+  where
+  rnf UpdateCustomLineItemChargeDetails' {..} =
+    Prelude.rnf flat
+      `Prelude.seq` Prelude.rnf percentage
+
+instance
+  Data.ToJSON
+    UpdateCustomLineItemChargeDetails
+  where
+  toJSON UpdateCustomLineItemChargeDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Flat" Data..=) Prelude.<$> flat,
+            ("Percentage" Data..=) Prelude.<$> percentage
+          ]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemFlatChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemFlatChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemFlatChargeDetails.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.UpdateCustomLineItemFlatChargeDetails
+-- 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.BillingConductor.Types.UpdateCustomLineItemFlatChargeDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of the new charge details that are associated with a
+-- flat custom line item.
+--
+-- /See:/ 'newUpdateCustomLineItemFlatChargeDetails' smart constructor.
+data UpdateCustomLineItemFlatChargeDetails = UpdateCustomLineItemFlatChargeDetails'
+  { -- | The custom line item\'s new fixed charge value in USD.
+    chargeValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCustomLineItemFlatChargeDetails' 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:
+--
+-- 'chargeValue', 'updateCustomLineItemFlatChargeDetails_chargeValue' - The custom line item\'s new fixed charge value in USD.
+newUpdateCustomLineItemFlatChargeDetails ::
+  -- | 'chargeValue'
+  Prelude.Double ->
+  UpdateCustomLineItemFlatChargeDetails
+newUpdateCustomLineItemFlatChargeDetails
+  pChargeValue_ =
+    UpdateCustomLineItemFlatChargeDetails'
+      { chargeValue =
+          pChargeValue_
+      }
+
+-- | The custom line item\'s new fixed charge value in USD.
+updateCustomLineItemFlatChargeDetails_chargeValue :: Lens.Lens' UpdateCustomLineItemFlatChargeDetails Prelude.Double
+updateCustomLineItemFlatChargeDetails_chargeValue = Lens.lens (\UpdateCustomLineItemFlatChargeDetails' {chargeValue} -> chargeValue) (\s@UpdateCustomLineItemFlatChargeDetails' {} a -> s {chargeValue = a} :: UpdateCustomLineItemFlatChargeDetails)
+
+instance
+  Prelude.Hashable
+    UpdateCustomLineItemFlatChargeDetails
+  where
+  hashWithSalt
+    _salt
+    UpdateCustomLineItemFlatChargeDetails' {..} =
+      _salt `Prelude.hashWithSalt` chargeValue
+
+instance
+  Prelude.NFData
+    UpdateCustomLineItemFlatChargeDetails
+  where
+  rnf UpdateCustomLineItemFlatChargeDetails' {..} =
+    Prelude.rnf chargeValue
+
+instance
+  Data.ToJSON
+    UpdateCustomLineItemFlatChargeDetails
+  where
+  toJSON UpdateCustomLineItemFlatChargeDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ChargeValue" Data..= chargeValue)]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemPercentageChargeDetails.hs b/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemPercentageChargeDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/UpdateCustomLineItemPercentageChargeDetails.hs
@@ -0,0 +1,94 @@
+{-# 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.BillingConductor.Types.UpdateCustomLineItemPercentageChargeDetails
+-- 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.BillingConductor.Types.UpdateCustomLineItemPercentageChargeDetails where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A representation of the new charge details that are associated with a
+-- percentage custom line item.
+--
+-- /See:/ 'newUpdateCustomLineItemPercentageChargeDetails' smart constructor.
+data UpdateCustomLineItemPercentageChargeDetails = UpdateCustomLineItemPercentageChargeDetails'
+  { -- | The custom line item\'s new percentage value. This will be multiplied
+    -- against the combined value of its associated resources to determine its
+    -- charge value.
+    percentageValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCustomLineItemPercentageChargeDetails' 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:
+--
+-- 'percentageValue', 'updateCustomLineItemPercentageChargeDetails_percentageValue' - The custom line item\'s new percentage value. This will be multiplied
+-- against the combined value of its associated resources to determine its
+-- charge value.
+newUpdateCustomLineItemPercentageChargeDetails ::
+  -- | 'percentageValue'
+  Prelude.Double ->
+  UpdateCustomLineItemPercentageChargeDetails
+newUpdateCustomLineItemPercentageChargeDetails
+  pPercentageValue_ =
+    UpdateCustomLineItemPercentageChargeDetails'
+      { percentageValue =
+          pPercentageValue_
+      }
+
+-- | The custom line item\'s new percentage value. This will be multiplied
+-- against the combined value of its associated resources to determine its
+-- charge value.
+updateCustomLineItemPercentageChargeDetails_percentageValue :: Lens.Lens' UpdateCustomLineItemPercentageChargeDetails Prelude.Double
+updateCustomLineItemPercentageChargeDetails_percentageValue = Lens.lens (\UpdateCustomLineItemPercentageChargeDetails' {percentageValue} -> percentageValue) (\s@UpdateCustomLineItemPercentageChargeDetails' {} a -> s {percentageValue = a} :: UpdateCustomLineItemPercentageChargeDetails)
+
+instance
+  Prelude.Hashable
+    UpdateCustomLineItemPercentageChargeDetails
+  where
+  hashWithSalt
+    _salt
+    UpdateCustomLineItemPercentageChargeDetails' {..} =
+      _salt `Prelude.hashWithSalt` percentageValue
+
+instance
+  Prelude.NFData
+    UpdateCustomLineItemPercentageChargeDetails
+  where
+  rnf UpdateCustomLineItemPercentageChargeDetails' {..} =
+    Prelude.rnf percentageValue
+
+instance
+  Data.ToJSON
+    UpdateCustomLineItemPercentageChargeDetails
+  where
+  toJSON
+    UpdateCustomLineItemPercentageChargeDetails' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ("PercentageValue" Data..= percentageValue)
+            ]
+        )
diff --git a/gen/Amazonka/BillingConductor/Types/UpdateFreeTierConfig.hs b/gen/Amazonka/BillingConductor/Types/UpdateFreeTierConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/UpdateFreeTierConfig.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.BillingConductor.Types.UpdateFreeTierConfig
+-- 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.BillingConductor.Types.UpdateFreeTierConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The possible Amazon Web Services Free Tier configurations.
+--
+-- /See:/ 'newUpdateFreeTierConfig' smart constructor.
+data UpdateFreeTierConfig = UpdateFreeTierConfig'
+  { -- | Activate or deactivate application of Amazon Web Services Free Tier.
+    activated :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFreeTierConfig' 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:
+--
+-- 'activated', 'updateFreeTierConfig_activated' - Activate or deactivate application of Amazon Web Services Free Tier.
+newUpdateFreeTierConfig ::
+  -- | 'activated'
+  Prelude.Bool ->
+  UpdateFreeTierConfig
+newUpdateFreeTierConfig pActivated_ =
+  UpdateFreeTierConfig' {activated = pActivated_}
+
+-- | Activate or deactivate application of Amazon Web Services Free Tier.
+updateFreeTierConfig_activated :: Lens.Lens' UpdateFreeTierConfig Prelude.Bool
+updateFreeTierConfig_activated = Lens.lens (\UpdateFreeTierConfig' {activated} -> activated) (\s@UpdateFreeTierConfig' {} a -> s {activated = a} :: UpdateFreeTierConfig)
+
+instance Data.FromJSON UpdateFreeTierConfig where
+  parseJSON =
+    Data.withObject
+      "UpdateFreeTierConfig"
+      ( \x ->
+          UpdateFreeTierConfig'
+            Prelude.<$> (x Data..: "Activated")
+      )
+
+instance Prelude.Hashable UpdateFreeTierConfig where
+  hashWithSalt _salt UpdateFreeTierConfig' {..} =
+    _salt `Prelude.hashWithSalt` activated
+
+instance Prelude.NFData UpdateFreeTierConfig where
+  rnf UpdateFreeTierConfig' {..} = Prelude.rnf activated
+
+instance Data.ToJSON UpdateFreeTierConfig where
+  toJSON UpdateFreeTierConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Activated" Data..= activated)]
+      )
diff --git a/gen/Amazonka/BillingConductor/Types/UpdateTieringInput.hs b/gen/Amazonka/BillingConductor/Types/UpdateTieringInput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/Types/UpdateTieringInput.hs
@@ -0,0 +1,78 @@
+{-# 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.BillingConductor.Types.UpdateTieringInput
+-- 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.BillingConductor.Types.UpdateTieringInput where
+
+import Amazonka.BillingConductor.Types.UpdateFreeTierConfig
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The set of tiering configurations for the pricing rule.
+--
+-- /See:/ 'newUpdateTieringInput' smart constructor.
+data UpdateTieringInput = UpdateTieringInput'
+  { -- | The possible Amazon Web Services Free Tier configurations.
+    freeTier :: UpdateFreeTierConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTieringInput' 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:
+--
+-- 'freeTier', 'updateTieringInput_freeTier' - The possible Amazon Web Services Free Tier configurations.
+newUpdateTieringInput ::
+  -- | 'freeTier'
+  UpdateFreeTierConfig ->
+  UpdateTieringInput
+newUpdateTieringInput pFreeTier_ =
+  UpdateTieringInput' {freeTier = pFreeTier_}
+
+-- | The possible Amazon Web Services Free Tier configurations.
+updateTieringInput_freeTier :: Lens.Lens' UpdateTieringInput UpdateFreeTierConfig
+updateTieringInput_freeTier = Lens.lens (\UpdateTieringInput' {freeTier} -> freeTier) (\s@UpdateTieringInput' {} a -> s {freeTier = a} :: UpdateTieringInput)
+
+instance Data.FromJSON UpdateTieringInput where
+  parseJSON =
+    Data.withObject
+      "UpdateTieringInput"
+      ( \x ->
+          UpdateTieringInput'
+            Prelude.<$> (x Data..: "FreeTier")
+      )
+
+instance Prelude.Hashable UpdateTieringInput where
+  hashWithSalt _salt UpdateTieringInput' {..} =
+    _salt `Prelude.hashWithSalt` freeTier
+
+instance Prelude.NFData UpdateTieringInput where
+  rnf UpdateTieringInput' {..} = Prelude.rnf freeTier
+
+instance Data.ToJSON UpdateTieringInput where
+  toJSON UpdateTieringInput' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("FreeTier" Data..= freeTier)]
+      )
diff --git a/gen/Amazonka/BillingConductor/UntagResource.hs b/gen/Amazonka/BillingConductor/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/UntagResource.hs
@@ -0,0 +1,163 @@
+{-# 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.BillingConductor.UntagResource
+-- 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 specified tags from a resource.
+module Amazonka.BillingConductor.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the resource to which to delete tags.
+    resourceArn :: Prelude.Text,
+    -- | The tags to delete from the resource as a list of key-value pairs.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' 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:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource to which to delete tags.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The tags to delete from the resource as a list of key-value pairs.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ pTagKeys_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Resource Name (ARN) of the resource to which to delete tags.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | The tags to delete from the resource as a list of key-value pairs.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' 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', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/UpdateBillingGroup.hs b/gen/Amazonka/BillingConductor/UpdateBillingGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/UpdateBillingGroup.hs
@@ -0,0 +1,336 @@
+{-# 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.BillingConductor.UpdateBillingGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This updates an existing billing group.
+module Amazonka.BillingConductor.UpdateBillingGroup
+  ( -- * Creating a Request
+    UpdateBillingGroup (..),
+    newUpdateBillingGroup,
+
+    -- * Request Lenses
+    updateBillingGroup_computationPreference,
+    updateBillingGroup_description,
+    updateBillingGroup_name,
+    updateBillingGroup_status,
+    updateBillingGroup_arn,
+
+    -- * Destructuring the Response
+    UpdateBillingGroupResponse (..),
+    newUpdateBillingGroupResponse,
+
+    -- * Response Lenses
+    updateBillingGroupResponse_arn,
+    updateBillingGroupResponse_description,
+    updateBillingGroupResponse_lastModifiedTime,
+    updateBillingGroupResponse_name,
+    updateBillingGroupResponse_pricingPlanArn,
+    updateBillingGroupResponse_primaryAccountId,
+    updateBillingGroupResponse_size,
+    updateBillingGroupResponse_status,
+    updateBillingGroupResponse_statusReason,
+    updateBillingGroupResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateBillingGroup' smart constructor.
+data UpdateBillingGroup = UpdateBillingGroup'
+  { -- | The preferences and settings that will be used to compute the Amazon Web
+    -- Services charges for a billing group.
+    computationPreference :: Prelude.Maybe ComputationPreference,
+    -- | A description of the billing group.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of the billing group. The names must be unique to each billing
+    -- group.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The status of the billing group. Only one of the valid values can be
+    -- used.
+    status :: Prelude.Maybe BillingGroupStatus,
+    -- | The Amazon Resource Name (ARN) of the billing group being updated.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBillingGroup' 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:
+--
+-- 'computationPreference', 'updateBillingGroup_computationPreference' - The preferences and settings that will be used to compute the Amazon Web
+-- Services charges for a billing group.
+--
+-- 'description', 'updateBillingGroup_description' - A description of the billing group.
+--
+-- 'name', 'updateBillingGroup_name' - The name of the billing group. The names must be unique to each billing
+-- group.
+--
+-- 'status', 'updateBillingGroup_status' - The status of the billing group. Only one of the valid values can be
+-- used.
+--
+-- 'arn', 'updateBillingGroup_arn' - The Amazon Resource Name (ARN) of the billing group being updated.
+newUpdateBillingGroup ::
+  -- | 'arn'
+  Prelude.Text ->
+  UpdateBillingGroup
+newUpdateBillingGroup pArn_ =
+  UpdateBillingGroup'
+    { computationPreference =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      name = Prelude.Nothing,
+      status = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | The preferences and settings that will be used to compute the Amazon Web
+-- Services charges for a billing group.
+updateBillingGroup_computationPreference :: Lens.Lens' UpdateBillingGroup (Prelude.Maybe ComputationPreference)
+updateBillingGroup_computationPreference = Lens.lens (\UpdateBillingGroup' {computationPreference} -> computationPreference) (\s@UpdateBillingGroup' {} a -> s {computationPreference = a} :: UpdateBillingGroup)
+
+-- | A description of the billing group.
+updateBillingGroup_description :: Lens.Lens' UpdateBillingGroup (Prelude.Maybe Prelude.Text)
+updateBillingGroup_description = Lens.lens (\UpdateBillingGroup' {description} -> description) (\s@UpdateBillingGroup' {} a -> s {description = a} :: UpdateBillingGroup) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of the billing group. The names must be unique to each billing
+-- group.
+updateBillingGroup_name :: Lens.Lens' UpdateBillingGroup (Prelude.Maybe Prelude.Text)
+updateBillingGroup_name = Lens.lens (\UpdateBillingGroup' {name} -> name) (\s@UpdateBillingGroup' {} a -> s {name = a} :: UpdateBillingGroup) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The status of the billing group. Only one of the valid values can be
+-- used.
+updateBillingGroup_status :: Lens.Lens' UpdateBillingGroup (Prelude.Maybe BillingGroupStatus)
+updateBillingGroup_status = Lens.lens (\UpdateBillingGroup' {status} -> status) (\s@UpdateBillingGroup' {} a -> s {status = a} :: UpdateBillingGroup)
+
+-- | The Amazon Resource Name (ARN) of the billing group being updated.
+updateBillingGroup_arn :: Lens.Lens' UpdateBillingGroup Prelude.Text
+updateBillingGroup_arn = Lens.lens (\UpdateBillingGroup' {arn} -> arn) (\s@UpdateBillingGroup' {} a -> s {arn = a} :: UpdateBillingGroup)
+
+instance Core.AWSRequest UpdateBillingGroup where
+  type
+    AWSResponse UpdateBillingGroup =
+      UpdateBillingGroupResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateBillingGroupResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "PricingPlanArn")
+            Prelude.<*> (x Data..?> "PrimaryAccountId")
+            Prelude.<*> (x Data..?> "Size")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (x Data..?> "StatusReason")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateBillingGroup where
+  hashWithSalt _salt UpdateBillingGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` computationPreference
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData UpdateBillingGroup where
+  rnf UpdateBillingGroup' {..} =
+    Prelude.rnf computationPreference
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders UpdateBillingGroup where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateBillingGroup where
+  toJSON UpdateBillingGroup' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ComputationPreference" Data..=)
+              Prelude.<$> computationPreference,
+            ("Description" Data..=) Prelude.<$> description,
+            ("Name" Data..=) Prelude.<$> name,
+            ("Status" Data..=) Prelude.<$> status,
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath UpdateBillingGroup where
+  toPath = Prelude.const "/update-billing-group"
+
+instance Data.ToQuery UpdateBillingGroup where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateBillingGroupResponse' smart constructor.
+data UpdateBillingGroupResponse = UpdateBillingGroupResponse'
+  { -- | The Amazon Resource Name (ARN) of the billing group that was updated.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A description of the billing group.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The most recent time when the billing group was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | The name of the billing group. The names must be unique to each billing
+    -- group.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the pricing plan to compute Amazon Web
+    -- Services charges for the billing group.
+    pricingPlanArn :: Prelude.Maybe Prelude.Text,
+    -- | The account ID that serves as the main account in a billing group.
+    primaryAccountId :: Prelude.Maybe Prelude.Text,
+    -- | The number of accounts in the particular billing group.
+    size :: Prelude.Maybe Prelude.Natural,
+    -- | The status of the billing group. Only one of the valid values can be
+    -- used.
+    status :: Prelude.Maybe BillingGroupStatus,
+    -- | The reason why the billing group is in its current status.
+    statusReason :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBillingGroupResponse' 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:
+--
+-- 'arn', 'updateBillingGroupResponse_arn' - The Amazon Resource Name (ARN) of the billing group that was updated.
+--
+-- 'description', 'updateBillingGroupResponse_description' - A description of the billing group.
+--
+-- 'lastModifiedTime', 'updateBillingGroupResponse_lastModifiedTime' - The most recent time when the billing group was modified.
+--
+-- 'name', 'updateBillingGroupResponse_name' - The name of the billing group. The names must be unique to each billing
+-- group.
+--
+-- 'pricingPlanArn', 'updateBillingGroupResponse_pricingPlanArn' - The Amazon Resource Name (ARN) of the pricing plan to compute Amazon Web
+-- Services charges for the billing group.
+--
+-- 'primaryAccountId', 'updateBillingGroupResponse_primaryAccountId' - The account ID that serves as the main account in a billing group.
+--
+-- 'size', 'updateBillingGroupResponse_size' - The number of accounts in the particular billing group.
+--
+-- 'status', 'updateBillingGroupResponse_status' - The status of the billing group. Only one of the valid values can be
+-- used.
+--
+-- 'statusReason', 'updateBillingGroupResponse_statusReason' - The reason why the billing group is in its current status.
+--
+-- 'httpStatus', 'updateBillingGroupResponse_httpStatus' - The response's http status code.
+newUpdateBillingGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateBillingGroupResponse
+newUpdateBillingGroupResponse pHttpStatus_ =
+  UpdateBillingGroupResponse'
+    { arn = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      pricingPlanArn = Prelude.Nothing,
+      primaryAccountId = Prelude.Nothing,
+      size = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusReason = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the billing group that was updated.
+updateBillingGroupResponse_arn :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe Prelude.Text)
+updateBillingGroupResponse_arn = Lens.lens (\UpdateBillingGroupResponse' {arn} -> arn) (\s@UpdateBillingGroupResponse' {} a -> s {arn = a} :: UpdateBillingGroupResponse)
+
+-- | A description of the billing group.
+updateBillingGroupResponse_description :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe Prelude.Text)
+updateBillingGroupResponse_description = Lens.lens (\UpdateBillingGroupResponse' {description} -> description) (\s@UpdateBillingGroupResponse' {} a -> s {description = a} :: UpdateBillingGroupResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The most recent time when the billing group was modified.
+updateBillingGroupResponse_lastModifiedTime :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe Prelude.Integer)
+updateBillingGroupResponse_lastModifiedTime = Lens.lens (\UpdateBillingGroupResponse' {lastModifiedTime} -> lastModifiedTime) (\s@UpdateBillingGroupResponse' {} a -> s {lastModifiedTime = a} :: UpdateBillingGroupResponse)
+
+-- | The name of the billing group. The names must be unique to each billing
+-- group.
+updateBillingGroupResponse_name :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe Prelude.Text)
+updateBillingGroupResponse_name = Lens.lens (\UpdateBillingGroupResponse' {name} -> name) (\s@UpdateBillingGroupResponse' {} a -> s {name = a} :: UpdateBillingGroupResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Resource Name (ARN) of the pricing plan to compute Amazon Web
+-- Services charges for the billing group.
+updateBillingGroupResponse_pricingPlanArn :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe Prelude.Text)
+updateBillingGroupResponse_pricingPlanArn = Lens.lens (\UpdateBillingGroupResponse' {pricingPlanArn} -> pricingPlanArn) (\s@UpdateBillingGroupResponse' {} a -> s {pricingPlanArn = a} :: UpdateBillingGroupResponse)
+
+-- | The account ID that serves as the main account in a billing group.
+updateBillingGroupResponse_primaryAccountId :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe Prelude.Text)
+updateBillingGroupResponse_primaryAccountId = Lens.lens (\UpdateBillingGroupResponse' {primaryAccountId} -> primaryAccountId) (\s@UpdateBillingGroupResponse' {} a -> s {primaryAccountId = a} :: UpdateBillingGroupResponse)
+
+-- | The number of accounts in the particular billing group.
+updateBillingGroupResponse_size :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe Prelude.Natural)
+updateBillingGroupResponse_size = Lens.lens (\UpdateBillingGroupResponse' {size} -> size) (\s@UpdateBillingGroupResponse' {} a -> s {size = a} :: UpdateBillingGroupResponse)
+
+-- | The status of the billing group. Only one of the valid values can be
+-- used.
+updateBillingGroupResponse_status :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe BillingGroupStatus)
+updateBillingGroupResponse_status = Lens.lens (\UpdateBillingGroupResponse' {status} -> status) (\s@UpdateBillingGroupResponse' {} a -> s {status = a} :: UpdateBillingGroupResponse)
+
+-- | The reason why the billing group is in its current status.
+updateBillingGroupResponse_statusReason :: Lens.Lens' UpdateBillingGroupResponse (Prelude.Maybe Prelude.Text)
+updateBillingGroupResponse_statusReason = Lens.lens (\UpdateBillingGroupResponse' {statusReason} -> statusReason) (\s@UpdateBillingGroupResponse' {} a -> s {statusReason = a} :: UpdateBillingGroupResponse)
+
+-- | The response's http status code.
+updateBillingGroupResponse_httpStatus :: Lens.Lens' UpdateBillingGroupResponse Prelude.Int
+updateBillingGroupResponse_httpStatus = Lens.lens (\UpdateBillingGroupResponse' {httpStatus} -> httpStatus) (\s@UpdateBillingGroupResponse' {} a -> s {httpStatus = a} :: UpdateBillingGroupResponse)
+
+instance Prelude.NFData UpdateBillingGroupResponse where
+  rnf UpdateBillingGroupResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf pricingPlanArn
+      `Prelude.seq` Prelude.rnf primaryAccountId
+      `Prelude.seq` Prelude.rnf size
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusReason
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/UpdateCustomLineItem.hs b/gen/Amazonka/BillingConductor/UpdateCustomLineItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/UpdateCustomLineItem.hs
@@ -0,0 +1,301 @@
+{-# 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.BillingConductor.UpdateCustomLineItem
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an existing custom line item in the current or previous billing
+-- period.
+module Amazonka.BillingConductor.UpdateCustomLineItem
+  ( -- * Creating a Request
+    UpdateCustomLineItem (..),
+    newUpdateCustomLineItem,
+
+    -- * Request Lenses
+    updateCustomLineItem_billingPeriodRange,
+    updateCustomLineItem_chargeDetails,
+    updateCustomLineItem_description,
+    updateCustomLineItem_name,
+    updateCustomLineItem_arn,
+
+    -- * Destructuring the Response
+    UpdateCustomLineItemResponse (..),
+    newUpdateCustomLineItemResponse,
+
+    -- * Response Lenses
+    updateCustomLineItemResponse_arn,
+    updateCustomLineItemResponse_associationSize,
+    updateCustomLineItemResponse_billingGroupArn,
+    updateCustomLineItemResponse_chargeDetails,
+    updateCustomLineItemResponse_description,
+    updateCustomLineItemResponse_lastModifiedTime,
+    updateCustomLineItemResponse_name,
+    updateCustomLineItemResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateCustomLineItem' smart constructor.
+data UpdateCustomLineItem = UpdateCustomLineItem'
+  { billingPeriodRange :: Prelude.Maybe CustomLineItemBillingPeriodRange,
+    -- | A @ListCustomLineItemChargeDetails@ containing the new charge details
+    -- for the custom line item.
+    chargeDetails :: Prelude.Maybe UpdateCustomLineItemChargeDetails,
+    -- | The new line item description of the custom line item.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The new name for the custom line item.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ARN of the custom line item to be updated.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCustomLineItem' 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:
+--
+-- 'billingPeriodRange', 'updateCustomLineItem_billingPeriodRange' - Undocumented member.
+--
+-- 'chargeDetails', 'updateCustomLineItem_chargeDetails' - A @ListCustomLineItemChargeDetails@ containing the new charge details
+-- for the custom line item.
+--
+-- 'description', 'updateCustomLineItem_description' - The new line item description of the custom line item.
+--
+-- 'name', 'updateCustomLineItem_name' - The new name for the custom line item.
+--
+-- 'arn', 'updateCustomLineItem_arn' - The ARN of the custom line item to be updated.
+newUpdateCustomLineItem ::
+  -- | 'arn'
+  Prelude.Text ->
+  UpdateCustomLineItem
+newUpdateCustomLineItem pArn_ =
+  UpdateCustomLineItem'
+    { billingPeriodRange =
+        Prelude.Nothing,
+      chargeDetails = Prelude.Nothing,
+      description = Prelude.Nothing,
+      name = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | Undocumented member.
+updateCustomLineItem_billingPeriodRange :: Lens.Lens' UpdateCustomLineItem (Prelude.Maybe CustomLineItemBillingPeriodRange)
+updateCustomLineItem_billingPeriodRange = Lens.lens (\UpdateCustomLineItem' {billingPeriodRange} -> billingPeriodRange) (\s@UpdateCustomLineItem' {} a -> s {billingPeriodRange = a} :: UpdateCustomLineItem)
+
+-- | A @ListCustomLineItemChargeDetails@ containing the new charge details
+-- for the custom line item.
+updateCustomLineItem_chargeDetails :: Lens.Lens' UpdateCustomLineItem (Prelude.Maybe UpdateCustomLineItemChargeDetails)
+updateCustomLineItem_chargeDetails = Lens.lens (\UpdateCustomLineItem' {chargeDetails} -> chargeDetails) (\s@UpdateCustomLineItem' {} a -> s {chargeDetails = a} :: UpdateCustomLineItem)
+
+-- | The new line item description of the custom line item.
+updateCustomLineItem_description :: Lens.Lens' UpdateCustomLineItem (Prelude.Maybe Prelude.Text)
+updateCustomLineItem_description = Lens.lens (\UpdateCustomLineItem' {description} -> description) (\s@UpdateCustomLineItem' {} a -> s {description = a} :: UpdateCustomLineItem) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The new name for the custom line item.
+updateCustomLineItem_name :: Lens.Lens' UpdateCustomLineItem (Prelude.Maybe Prelude.Text)
+updateCustomLineItem_name = Lens.lens (\UpdateCustomLineItem' {name} -> name) (\s@UpdateCustomLineItem' {} a -> s {name = a} :: UpdateCustomLineItem) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ARN of the custom line item to be updated.
+updateCustomLineItem_arn :: Lens.Lens' UpdateCustomLineItem Prelude.Text
+updateCustomLineItem_arn = Lens.lens (\UpdateCustomLineItem' {arn} -> arn) (\s@UpdateCustomLineItem' {} a -> s {arn = a} :: UpdateCustomLineItem)
+
+instance Core.AWSRequest UpdateCustomLineItem where
+  type
+    AWSResponse UpdateCustomLineItem =
+      UpdateCustomLineItemResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateCustomLineItemResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "AssociationSize")
+            Prelude.<*> (x Data..?> "BillingGroupArn")
+            Prelude.<*> (x Data..?> "ChargeDetails")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateCustomLineItem where
+  hashWithSalt _salt UpdateCustomLineItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` billingPeriodRange
+      `Prelude.hashWithSalt` chargeDetails
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData UpdateCustomLineItem where
+  rnf UpdateCustomLineItem' {..} =
+    Prelude.rnf billingPeriodRange
+      `Prelude.seq` Prelude.rnf chargeDetails
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders UpdateCustomLineItem where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateCustomLineItem where
+  toJSON UpdateCustomLineItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BillingPeriodRange" Data..=)
+              Prelude.<$> billingPeriodRange,
+            ("ChargeDetails" Data..=) Prelude.<$> chargeDetails,
+            ("Description" Data..=) Prelude.<$> description,
+            ("Name" Data..=) Prelude.<$> name,
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath UpdateCustomLineItem where
+  toPath = Prelude.const "/update-custom-line-item"
+
+instance Data.ToQuery UpdateCustomLineItem where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateCustomLineItemResponse' smart constructor.
+data UpdateCustomLineItemResponse = UpdateCustomLineItemResponse'
+  { -- | The ARN of the successfully updated custom line item.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The number of resources that are associated to the custom line item.
+    associationSize :: Prelude.Maybe Prelude.Natural,
+    -- | The ARN of the billing group that the custom line item is applied to.
+    billingGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | A @ListCustomLineItemChargeDetails@ containing the charge details of the
+    -- successfully updated custom line item.
+    chargeDetails :: Prelude.Maybe ListCustomLineItemChargeDetails,
+    -- | The description of the successfully updated custom line item.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The most recent time when the custom line item was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | The name of the successfully updated custom line item.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCustomLineItemResponse' 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:
+--
+-- 'arn', 'updateCustomLineItemResponse_arn' - The ARN of the successfully updated custom line item.
+--
+-- 'associationSize', 'updateCustomLineItemResponse_associationSize' - The number of resources that are associated to the custom line item.
+--
+-- 'billingGroupArn', 'updateCustomLineItemResponse_billingGroupArn' - The ARN of the billing group that the custom line item is applied to.
+--
+-- 'chargeDetails', 'updateCustomLineItemResponse_chargeDetails' - A @ListCustomLineItemChargeDetails@ containing the charge details of the
+-- successfully updated custom line item.
+--
+-- 'description', 'updateCustomLineItemResponse_description' - The description of the successfully updated custom line item.
+--
+-- 'lastModifiedTime', 'updateCustomLineItemResponse_lastModifiedTime' - The most recent time when the custom line item was modified.
+--
+-- 'name', 'updateCustomLineItemResponse_name' - The name of the successfully updated custom line item.
+--
+-- 'httpStatus', 'updateCustomLineItemResponse_httpStatus' - The response's http status code.
+newUpdateCustomLineItemResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateCustomLineItemResponse
+newUpdateCustomLineItemResponse pHttpStatus_ =
+  UpdateCustomLineItemResponse'
+    { arn =
+        Prelude.Nothing,
+      associationSize = Prelude.Nothing,
+      billingGroupArn = Prelude.Nothing,
+      chargeDetails = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the successfully updated custom line item.
+updateCustomLineItemResponse_arn :: Lens.Lens' UpdateCustomLineItemResponse (Prelude.Maybe Prelude.Text)
+updateCustomLineItemResponse_arn = Lens.lens (\UpdateCustomLineItemResponse' {arn} -> arn) (\s@UpdateCustomLineItemResponse' {} a -> s {arn = a} :: UpdateCustomLineItemResponse)
+
+-- | The number of resources that are associated to the custom line item.
+updateCustomLineItemResponse_associationSize :: Lens.Lens' UpdateCustomLineItemResponse (Prelude.Maybe Prelude.Natural)
+updateCustomLineItemResponse_associationSize = Lens.lens (\UpdateCustomLineItemResponse' {associationSize} -> associationSize) (\s@UpdateCustomLineItemResponse' {} a -> s {associationSize = a} :: UpdateCustomLineItemResponse)
+
+-- | The ARN of the billing group that the custom line item is applied to.
+updateCustomLineItemResponse_billingGroupArn :: Lens.Lens' UpdateCustomLineItemResponse (Prelude.Maybe Prelude.Text)
+updateCustomLineItemResponse_billingGroupArn = Lens.lens (\UpdateCustomLineItemResponse' {billingGroupArn} -> billingGroupArn) (\s@UpdateCustomLineItemResponse' {} a -> s {billingGroupArn = a} :: UpdateCustomLineItemResponse)
+
+-- | A @ListCustomLineItemChargeDetails@ containing the charge details of the
+-- successfully updated custom line item.
+updateCustomLineItemResponse_chargeDetails :: Lens.Lens' UpdateCustomLineItemResponse (Prelude.Maybe ListCustomLineItemChargeDetails)
+updateCustomLineItemResponse_chargeDetails = Lens.lens (\UpdateCustomLineItemResponse' {chargeDetails} -> chargeDetails) (\s@UpdateCustomLineItemResponse' {} a -> s {chargeDetails = a} :: UpdateCustomLineItemResponse)
+
+-- | The description of the successfully updated custom line item.
+updateCustomLineItemResponse_description :: Lens.Lens' UpdateCustomLineItemResponse (Prelude.Maybe Prelude.Text)
+updateCustomLineItemResponse_description = Lens.lens (\UpdateCustomLineItemResponse' {description} -> description) (\s@UpdateCustomLineItemResponse' {} a -> s {description = a} :: UpdateCustomLineItemResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The most recent time when the custom line item was modified.
+updateCustomLineItemResponse_lastModifiedTime :: Lens.Lens' UpdateCustomLineItemResponse (Prelude.Maybe Prelude.Integer)
+updateCustomLineItemResponse_lastModifiedTime = Lens.lens (\UpdateCustomLineItemResponse' {lastModifiedTime} -> lastModifiedTime) (\s@UpdateCustomLineItemResponse' {} a -> s {lastModifiedTime = a} :: UpdateCustomLineItemResponse)
+
+-- | The name of the successfully updated custom line item.
+updateCustomLineItemResponse_name :: Lens.Lens' UpdateCustomLineItemResponse (Prelude.Maybe Prelude.Text)
+updateCustomLineItemResponse_name = Lens.lens (\UpdateCustomLineItemResponse' {name} -> name) (\s@UpdateCustomLineItemResponse' {} a -> s {name = a} :: UpdateCustomLineItemResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The response's http status code.
+updateCustomLineItemResponse_httpStatus :: Lens.Lens' UpdateCustomLineItemResponse Prelude.Int
+updateCustomLineItemResponse_httpStatus = Lens.lens (\UpdateCustomLineItemResponse' {httpStatus} -> httpStatus) (\s@UpdateCustomLineItemResponse' {} a -> s {httpStatus = a} :: UpdateCustomLineItemResponse)
+
+instance Prelude.NFData UpdateCustomLineItemResponse where
+  rnf UpdateCustomLineItemResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf associationSize
+      `Prelude.seq` Prelude.rnf billingGroupArn
+      `Prelude.seq` Prelude.rnf chargeDetails
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/UpdatePricingPlan.hs b/gen/Amazonka/BillingConductor/UpdatePricingPlan.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/UpdatePricingPlan.hs
@@ -0,0 +1,254 @@
+{-# 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.BillingConductor.UpdatePricingPlan
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This updates an existing pricing plan.
+module Amazonka.BillingConductor.UpdatePricingPlan
+  ( -- * Creating a Request
+    UpdatePricingPlan (..),
+    newUpdatePricingPlan,
+
+    -- * Request Lenses
+    updatePricingPlan_description,
+    updatePricingPlan_name,
+    updatePricingPlan_arn,
+
+    -- * Destructuring the Response
+    UpdatePricingPlanResponse (..),
+    newUpdatePricingPlanResponse,
+
+    -- * Response Lenses
+    updatePricingPlanResponse_arn,
+    updatePricingPlanResponse_description,
+    updatePricingPlanResponse_lastModifiedTime,
+    updatePricingPlanResponse_name,
+    updatePricingPlanResponse_size,
+    updatePricingPlanResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdatePricingPlan' smart constructor.
+data UpdatePricingPlan = UpdatePricingPlan'
+  { -- | The description of the pricing plan.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of the pricing plan. The name must be unique to each pricing
+    -- plan.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the pricing plan that you\'re
+    -- updating.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePricingPlan' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updatePricingPlan_description' - The description of the pricing plan.
+--
+-- 'name', 'updatePricingPlan_name' - The name of the pricing plan. The name must be unique to each pricing
+-- plan.
+--
+-- 'arn', 'updatePricingPlan_arn' - The Amazon Resource Name (ARN) of the pricing plan that you\'re
+-- updating.
+newUpdatePricingPlan ::
+  -- | 'arn'
+  Prelude.Text ->
+  UpdatePricingPlan
+newUpdatePricingPlan pArn_ =
+  UpdatePricingPlan'
+    { description = Prelude.Nothing,
+      name = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | The description of the pricing plan.
+updatePricingPlan_description :: Lens.Lens' UpdatePricingPlan (Prelude.Maybe Prelude.Text)
+updatePricingPlan_description = Lens.lens (\UpdatePricingPlan' {description} -> description) (\s@UpdatePricingPlan' {} a -> s {description = a} :: UpdatePricingPlan) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of the pricing plan. The name must be unique to each pricing
+-- plan.
+updatePricingPlan_name :: Lens.Lens' UpdatePricingPlan (Prelude.Maybe Prelude.Text)
+updatePricingPlan_name = Lens.lens (\UpdatePricingPlan' {name} -> name) (\s@UpdatePricingPlan' {} a -> s {name = a} :: UpdatePricingPlan) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The Amazon Resource Name (ARN) of the pricing plan that you\'re
+-- updating.
+updatePricingPlan_arn :: Lens.Lens' UpdatePricingPlan Prelude.Text
+updatePricingPlan_arn = Lens.lens (\UpdatePricingPlan' {arn} -> arn) (\s@UpdatePricingPlan' {} a -> s {arn = a} :: UpdatePricingPlan)
+
+instance Core.AWSRequest UpdatePricingPlan where
+  type
+    AWSResponse UpdatePricingPlan =
+      UpdatePricingPlanResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdatePricingPlanResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "Size")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdatePricingPlan where
+  hashWithSalt _salt UpdatePricingPlan' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData UpdatePricingPlan where
+  rnf UpdatePricingPlan' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders UpdatePricingPlan where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdatePricingPlan where
+  toJSON UpdatePricingPlan' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("Name" Data..=) Prelude.<$> name,
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath UpdatePricingPlan where
+  toPath = Prelude.const "/update-pricing-plan"
+
+instance Data.ToQuery UpdatePricingPlan where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePricingPlanResponse' smart constructor.
+data UpdatePricingPlanResponse = UpdatePricingPlanResponse'
+  { -- | The Amazon Resource Name (ARN) of the updated pricing plan.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The new description for the pricing rule.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The most recent time when the pricing plan was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | The name of the pricing plan. The name must be unique to each pricing
+    -- plan.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The pricing rules count that\'s currently associated with this pricing
+    -- plan list.
+    size :: Prelude.Maybe Prelude.Natural,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePricingPlanResponse' 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:
+--
+-- 'arn', 'updatePricingPlanResponse_arn' - The Amazon Resource Name (ARN) of the updated pricing plan.
+--
+-- 'description', 'updatePricingPlanResponse_description' - The new description for the pricing rule.
+--
+-- 'lastModifiedTime', 'updatePricingPlanResponse_lastModifiedTime' - The most recent time when the pricing plan was modified.
+--
+-- 'name', 'updatePricingPlanResponse_name' - The name of the pricing plan. The name must be unique to each pricing
+-- plan.
+--
+-- 'size', 'updatePricingPlanResponse_size' - The pricing rules count that\'s currently associated with this pricing
+-- plan list.
+--
+-- 'httpStatus', 'updatePricingPlanResponse_httpStatus' - The response's http status code.
+newUpdatePricingPlanResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdatePricingPlanResponse
+newUpdatePricingPlanResponse pHttpStatus_ =
+  UpdatePricingPlanResponse'
+    { arn = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      size = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the updated pricing plan.
+updatePricingPlanResponse_arn :: Lens.Lens' UpdatePricingPlanResponse (Prelude.Maybe Prelude.Text)
+updatePricingPlanResponse_arn = Lens.lens (\UpdatePricingPlanResponse' {arn} -> arn) (\s@UpdatePricingPlanResponse' {} a -> s {arn = a} :: UpdatePricingPlanResponse)
+
+-- | The new description for the pricing rule.
+updatePricingPlanResponse_description :: Lens.Lens' UpdatePricingPlanResponse (Prelude.Maybe Prelude.Text)
+updatePricingPlanResponse_description = Lens.lens (\UpdatePricingPlanResponse' {description} -> description) (\s@UpdatePricingPlanResponse' {} a -> s {description = a} :: UpdatePricingPlanResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The most recent time when the pricing plan was modified.
+updatePricingPlanResponse_lastModifiedTime :: Lens.Lens' UpdatePricingPlanResponse (Prelude.Maybe Prelude.Integer)
+updatePricingPlanResponse_lastModifiedTime = Lens.lens (\UpdatePricingPlanResponse' {lastModifiedTime} -> lastModifiedTime) (\s@UpdatePricingPlanResponse' {} a -> s {lastModifiedTime = a} :: UpdatePricingPlanResponse)
+
+-- | The name of the pricing plan. The name must be unique to each pricing
+-- plan.
+updatePricingPlanResponse_name :: Lens.Lens' UpdatePricingPlanResponse (Prelude.Maybe Prelude.Text)
+updatePricingPlanResponse_name = Lens.lens (\UpdatePricingPlanResponse' {name} -> name) (\s@UpdatePricingPlanResponse' {} a -> s {name = a} :: UpdatePricingPlanResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The pricing rules count that\'s currently associated with this pricing
+-- plan list.
+updatePricingPlanResponse_size :: Lens.Lens' UpdatePricingPlanResponse (Prelude.Maybe Prelude.Natural)
+updatePricingPlanResponse_size = Lens.lens (\UpdatePricingPlanResponse' {size} -> size) (\s@UpdatePricingPlanResponse' {} a -> s {size = a} :: UpdatePricingPlanResponse)
+
+-- | The response's http status code.
+updatePricingPlanResponse_httpStatus :: Lens.Lens' UpdatePricingPlanResponse Prelude.Int
+updatePricingPlanResponse_httpStatus = Lens.lens (\UpdatePricingPlanResponse' {httpStatus} -> httpStatus) (\s@UpdatePricingPlanResponse' {} a -> s {httpStatus = a} :: UpdatePricingPlanResponse)
+
+instance Prelude.NFData UpdatePricingPlanResponse where
+  rnf UpdatePricingPlanResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf size
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/UpdatePricingRule.hs b/gen/Amazonka/BillingConductor/UpdatePricingRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/UpdatePricingRule.hs
@@ -0,0 +1,372 @@
+{-# 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.BillingConductor.UpdatePricingRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing pricing rule.
+module Amazonka.BillingConductor.UpdatePricingRule
+  ( -- * Creating a Request
+    UpdatePricingRule (..),
+    newUpdatePricingRule,
+
+    -- * Request Lenses
+    updatePricingRule_description,
+    updatePricingRule_modifierPercentage,
+    updatePricingRule_name,
+    updatePricingRule_tiering,
+    updatePricingRule_type,
+    updatePricingRule_arn,
+
+    -- * Destructuring the Response
+    UpdatePricingRuleResponse (..),
+    newUpdatePricingRuleResponse,
+
+    -- * Response Lenses
+    updatePricingRuleResponse_arn,
+    updatePricingRuleResponse_associatedPricingPlanCount,
+    updatePricingRuleResponse_billingEntity,
+    updatePricingRuleResponse_description,
+    updatePricingRuleResponse_lastModifiedTime,
+    updatePricingRuleResponse_modifierPercentage,
+    updatePricingRuleResponse_name,
+    updatePricingRuleResponse_scope,
+    updatePricingRuleResponse_service,
+    updatePricingRuleResponse_tiering,
+    updatePricingRuleResponse_type,
+    updatePricingRuleResponse_httpStatus,
+  )
+where
+
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdatePricingRule' smart constructor.
+data UpdatePricingRule = UpdatePricingRule'
+  { -- | The new description for the pricing rule.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The new modifier to show pricing plan rates as a percentage.
+    modifierPercentage :: Prelude.Maybe Prelude.Double,
+    -- | The new name of the pricing rule. The name must be unique to each
+    -- pricing rule.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The set of tiering configurations for the pricing rule.
+    tiering :: Prelude.Maybe UpdateTieringInput,
+    -- | The new pricing rule type.
+    type' :: Prelude.Maybe PricingRuleType,
+    -- | The Amazon Resource Name (ARN) of the pricing rule to update.
+    arn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePricingRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updatePricingRule_description' - The new description for the pricing rule.
+--
+-- 'modifierPercentage', 'updatePricingRule_modifierPercentage' - The new modifier to show pricing plan rates as a percentage.
+--
+-- 'name', 'updatePricingRule_name' - The new name of the pricing rule. The name must be unique to each
+-- pricing rule.
+--
+-- 'tiering', 'updatePricingRule_tiering' - The set of tiering configurations for the pricing rule.
+--
+-- 'type'', 'updatePricingRule_type' - The new pricing rule type.
+--
+-- 'arn', 'updatePricingRule_arn' - The Amazon Resource Name (ARN) of the pricing rule to update.
+newUpdatePricingRule ::
+  -- | 'arn'
+  Prelude.Text ->
+  UpdatePricingRule
+newUpdatePricingRule pArn_ =
+  UpdatePricingRule'
+    { description = Prelude.Nothing,
+      modifierPercentage = Prelude.Nothing,
+      name = Prelude.Nothing,
+      tiering = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      arn = pArn_
+    }
+
+-- | The new description for the pricing rule.
+updatePricingRule_description :: Lens.Lens' UpdatePricingRule (Prelude.Maybe Prelude.Text)
+updatePricingRule_description = Lens.lens (\UpdatePricingRule' {description} -> description) (\s@UpdatePricingRule' {} a -> s {description = a} :: UpdatePricingRule) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The new modifier to show pricing plan rates as a percentage.
+updatePricingRule_modifierPercentage :: Lens.Lens' UpdatePricingRule (Prelude.Maybe Prelude.Double)
+updatePricingRule_modifierPercentage = Lens.lens (\UpdatePricingRule' {modifierPercentage} -> modifierPercentage) (\s@UpdatePricingRule' {} a -> s {modifierPercentage = a} :: UpdatePricingRule)
+
+-- | The new name of the pricing rule. The name must be unique to each
+-- pricing rule.
+updatePricingRule_name :: Lens.Lens' UpdatePricingRule (Prelude.Maybe Prelude.Text)
+updatePricingRule_name = Lens.lens (\UpdatePricingRule' {name} -> name) (\s@UpdatePricingRule' {} a -> s {name = a} :: UpdatePricingRule) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The set of tiering configurations for the pricing rule.
+updatePricingRule_tiering :: Lens.Lens' UpdatePricingRule (Prelude.Maybe UpdateTieringInput)
+updatePricingRule_tiering = Lens.lens (\UpdatePricingRule' {tiering} -> tiering) (\s@UpdatePricingRule' {} a -> s {tiering = a} :: UpdatePricingRule)
+
+-- | The new pricing rule type.
+updatePricingRule_type :: Lens.Lens' UpdatePricingRule (Prelude.Maybe PricingRuleType)
+updatePricingRule_type = Lens.lens (\UpdatePricingRule' {type'} -> type') (\s@UpdatePricingRule' {} a -> s {type' = a} :: UpdatePricingRule)
+
+-- | The Amazon Resource Name (ARN) of the pricing rule to update.
+updatePricingRule_arn :: Lens.Lens' UpdatePricingRule Prelude.Text
+updatePricingRule_arn = Lens.lens (\UpdatePricingRule' {arn} -> arn) (\s@UpdatePricingRule' {} a -> s {arn = a} :: UpdatePricingRule)
+
+instance Core.AWSRequest UpdatePricingRule where
+  type
+    AWSResponse UpdatePricingRule =
+      UpdatePricingRuleResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdatePricingRuleResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "AssociatedPricingPlanCount")
+            Prelude.<*> (x Data..?> "BillingEntity")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "ModifierPercentage")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "Scope")
+            Prelude.<*> (x Data..?> "Service")
+            Prelude.<*> (x Data..?> "Tiering")
+            Prelude.<*> (x Data..?> "Type")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdatePricingRule where
+  hashWithSalt _salt UpdatePricingRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` modifierPercentage
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` tiering
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData UpdatePricingRule where
+  rnf UpdatePricingRule' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf modifierPercentage
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf tiering
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf arn
+
+instance Data.ToHeaders UpdatePricingRule where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdatePricingRule where
+  toJSON UpdatePricingRule' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("ModifierPercentage" Data..=)
+              Prelude.<$> modifierPercentage,
+            ("Name" Data..=) Prelude.<$> name,
+            ("Tiering" Data..=) Prelude.<$> tiering,
+            ("Type" Data..=) Prelude.<$> type',
+            Prelude.Just ("Arn" Data..= arn)
+          ]
+      )
+
+instance Data.ToPath UpdatePricingRule where
+  toPath = Prelude.const "/update-pricing-rule"
+
+instance Data.ToQuery UpdatePricingRule where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePricingRuleResponse' smart constructor.
+data UpdatePricingRuleResponse = UpdatePricingRuleResponse'
+  { -- | The Amazon Resource Name (ARN) of the successfully updated pricing rule.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The pricing plans count that this pricing rule is associated with.
+    associatedPricingPlanCount :: Prelude.Maybe Prelude.Natural,
+    -- | The seller of services provided by Amazon Web Services, their
+    -- affiliates, or third-party providers selling services via Amazon Web
+    -- Services Marketplace.
+    billingEntity :: Prelude.Maybe Prelude.Text,
+    -- | The new description for the pricing rule.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The most recent time the pricing rule was modified.
+    lastModifiedTime :: Prelude.Maybe Prelude.Integer,
+    -- | The new modifier to show pricing plan rates as a percentage.
+    modifierPercentage :: Prelude.Maybe Prelude.Double,
+    -- | The new name of the pricing rule. The name must be unique to each
+    -- pricing rule.
+    name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The scope of pricing rule that indicates if it\'s globally applicable,
+    -- or it\'s service-specific.
+    scope :: Prelude.Maybe PricingRuleScope,
+    -- | If the @Scope@ attribute is set to @SERVICE@, the attribute indicates
+    -- which service the @PricingRule@ is applicable for.
+    service :: Prelude.Maybe Prelude.Text,
+    -- | The set of tiering configurations for the pricing rule.
+    tiering :: Prelude.Maybe UpdateTieringInput,
+    -- | The new pricing rule type.
+    type' :: Prelude.Maybe PricingRuleType,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePricingRuleResponse' 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:
+--
+-- 'arn', 'updatePricingRuleResponse_arn' - The Amazon Resource Name (ARN) of the successfully updated pricing rule.
+--
+-- 'associatedPricingPlanCount', 'updatePricingRuleResponse_associatedPricingPlanCount' - The pricing plans count that this pricing rule is associated with.
+--
+-- 'billingEntity', 'updatePricingRuleResponse_billingEntity' - The seller of services provided by Amazon Web Services, their
+-- affiliates, or third-party providers selling services via Amazon Web
+-- Services Marketplace.
+--
+-- 'description', 'updatePricingRuleResponse_description' - The new description for the pricing rule.
+--
+-- 'lastModifiedTime', 'updatePricingRuleResponse_lastModifiedTime' - The most recent time the pricing rule was modified.
+--
+-- 'modifierPercentage', 'updatePricingRuleResponse_modifierPercentage' - The new modifier to show pricing plan rates as a percentage.
+--
+-- 'name', 'updatePricingRuleResponse_name' - The new name of the pricing rule. The name must be unique to each
+-- pricing rule.
+--
+-- 'scope', 'updatePricingRuleResponse_scope' - The scope of pricing rule that indicates if it\'s globally applicable,
+-- or it\'s service-specific.
+--
+-- 'service', 'updatePricingRuleResponse_service' - If the @Scope@ attribute is set to @SERVICE@, the attribute indicates
+-- which service the @PricingRule@ is applicable for.
+--
+-- 'tiering', 'updatePricingRuleResponse_tiering' - The set of tiering configurations for the pricing rule.
+--
+-- 'type'', 'updatePricingRuleResponse_type' - The new pricing rule type.
+--
+-- 'httpStatus', 'updatePricingRuleResponse_httpStatus' - The response's http status code.
+newUpdatePricingRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdatePricingRuleResponse
+newUpdatePricingRuleResponse pHttpStatus_ =
+  UpdatePricingRuleResponse'
+    { arn = Prelude.Nothing,
+      associatedPricingPlanCount = Prelude.Nothing,
+      billingEntity = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      modifierPercentage = Prelude.Nothing,
+      name = Prelude.Nothing,
+      scope = Prelude.Nothing,
+      service = Prelude.Nothing,
+      tiering = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) of the successfully updated pricing rule.
+updatePricingRuleResponse_arn :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe Prelude.Text)
+updatePricingRuleResponse_arn = Lens.lens (\UpdatePricingRuleResponse' {arn} -> arn) (\s@UpdatePricingRuleResponse' {} a -> s {arn = a} :: UpdatePricingRuleResponse)
+
+-- | The pricing plans count that this pricing rule is associated with.
+updatePricingRuleResponse_associatedPricingPlanCount :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe Prelude.Natural)
+updatePricingRuleResponse_associatedPricingPlanCount = Lens.lens (\UpdatePricingRuleResponse' {associatedPricingPlanCount} -> associatedPricingPlanCount) (\s@UpdatePricingRuleResponse' {} a -> s {associatedPricingPlanCount = a} :: UpdatePricingRuleResponse)
+
+-- | The seller of services provided by Amazon Web Services, their
+-- affiliates, or third-party providers selling services via Amazon Web
+-- Services Marketplace.
+updatePricingRuleResponse_billingEntity :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe Prelude.Text)
+updatePricingRuleResponse_billingEntity = Lens.lens (\UpdatePricingRuleResponse' {billingEntity} -> billingEntity) (\s@UpdatePricingRuleResponse' {} a -> s {billingEntity = a} :: UpdatePricingRuleResponse)
+
+-- | The new description for the pricing rule.
+updatePricingRuleResponse_description :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe Prelude.Text)
+updatePricingRuleResponse_description = Lens.lens (\UpdatePricingRuleResponse' {description} -> description) (\s@UpdatePricingRuleResponse' {} a -> s {description = a} :: UpdatePricingRuleResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The most recent time the pricing rule was modified.
+updatePricingRuleResponse_lastModifiedTime :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe Prelude.Integer)
+updatePricingRuleResponse_lastModifiedTime = Lens.lens (\UpdatePricingRuleResponse' {lastModifiedTime} -> lastModifiedTime) (\s@UpdatePricingRuleResponse' {} a -> s {lastModifiedTime = a} :: UpdatePricingRuleResponse)
+
+-- | The new modifier to show pricing plan rates as a percentage.
+updatePricingRuleResponse_modifierPercentage :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe Prelude.Double)
+updatePricingRuleResponse_modifierPercentage = Lens.lens (\UpdatePricingRuleResponse' {modifierPercentage} -> modifierPercentage) (\s@UpdatePricingRuleResponse' {} a -> s {modifierPercentage = a} :: UpdatePricingRuleResponse)
+
+-- | The new name of the pricing rule. The name must be unique to each
+-- pricing rule.
+updatePricingRuleResponse_name :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe Prelude.Text)
+updatePricingRuleResponse_name = Lens.lens (\UpdatePricingRuleResponse' {name} -> name) (\s@UpdatePricingRuleResponse' {} a -> s {name = a} :: UpdatePricingRuleResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The scope of pricing rule that indicates if it\'s globally applicable,
+-- or it\'s service-specific.
+updatePricingRuleResponse_scope :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe PricingRuleScope)
+updatePricingRuleResponse_scope = Lens.lens (\UpdatePricingRuleResponse' {scope} -> scope) (\s@UpdatePricingRuleResponse' {} a -> s {scope = a} :: UpdatePricingRuleResponse)
+
+-- | If the @Scope@ attribute is set to @SERVICE@, the attribute indicates
+-- which service the @PricingRule@ is applicable for.
+updatePricingRuleResponse_service :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe Prelude.Text)
+updatePricingRuleResponse_service = Lens.lens (\UpdatePricingRuleResponse' {service} -> service) (\s@UpdatePricingRuleResponse' {} a -> s {service = a} :: UpdatePricingRuleResponse)
+
+-- | The set of tiering configurations for the pricing rule.
+updatePricingRuleResponse_tiering :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe UpdateTieringInput)
+updatePricingRuleResponse_tiering = Lens.lens (\UpdatePricingRuleResponse' {tiering} -> tiering) (\s@UpdatePricingRuleResponse' {} a -> s {tiering = a} :: UpdatePricingRuleResponse)
+
+-- | The new pricing rule type.
+updatePricingRuleResponse_type :: Lens.Lens' UpdatePricingRuleResponse (Prelude.Maybe PricingRuleType)
+updatePricingRuleResponse_type = Lens.lens (\UpdatePricingRuleResponse' {type'} -> type') (\s@UpdatePricingRuleResponse' {} a -> s {type' = a} :: UpdatePricingRuleResponse)
+
+-- | The response's http status code.
+updatePricingRuleResponse_httpStatus :: Lens.Lens' UpdatePricingRuleResponse Prelude.Int
+updatePricingRuleResponse_httpStatus = Lens.lens (\UpdatePricingRuleResponse' {httpStatus} -> httpStatus) (\s@UpdatePricingRuleResponse' {} a -> s {httpStatus = a} :: UpdatePricingRuleResponse)
+
+instance Prelude.NFData UpdatePricingRuleResponse where
+  rnf UpdatePricingRuleResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf associatedPricingPlanCount
+      `Prelude.seq` Prelude.rnf billingEntity
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf modifierPercentage
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf scope
+      `Prelude.seq` Prelude.rnf service
+      `Prelude.seq` Prelude.rnf tiering
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/BillingConductor/Waiters.hs b/gen/Amazonka/BillingConductor/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/BillingConductor/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.BillingConductor.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.BillingConductor.Waiters where
+
+import Amazonka.BillingConductor.Lens
+import Amazonka.BillingConductor.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- 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 Main (main) where
+
+import Test.Amazonka.BillingConductor
+import Test.Amazonka.BillingConductor.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "BillingConductor"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/BillingConductor.hs b/test/Test/Amazonka/BillingConductor.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/BillingConductor.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.BillingConductor
+-- 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.BillingConductor
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/BillingConductor/Internal.hs b/test/Test/Amazonka/BillingConductor/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/BillingConductor/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.BillingConductor.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.BillingConductor.Internal where
diff --git a/test/Test/Amazonka/Gen/BillingConductor.hs b/test/Test/Amazonka/Gen/BillingConductor.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/BillingConductor.hs
@@ -0,0 +1,658 @@
+{-# 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.BillingConductor
+-- 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.BillingConductor where
+
+import Amazonka.BillingConductor
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.BillingConductor.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"
+--         [ requestAssociateAccounts $
+--             newAssociateAccounts
+--
+--         , requestAssociatePricingRules $
+--             newAssociatePricingRules
+--
+--         , requestBatchAssociateResourcesToCustomLineItem $
+--             newBatchAssociateResourcesToCustomLineItem
+--
+--         , requestBatchDisassociateResourcesFromCustomLineItem $
+--             newBatchDisassociateResourcesFromCustomLineItem
+--
+--         , requestCreateBillingGroup $
+--             newCreateBillingGroup
+--
+--         , requestCreateCustomLineItem $
+--             newCreateCustomLineItem
+--
+--         , requestCreatePricingPlan $
+--             newCreatePricingPlan
+--
+--         , requestCreatePricingRule $
+--             newCreatePricingRule
+--
+--         , requestDeleteBillingGroup $
+--             newDeleteBillingGroup
+--
+--         , requestDeleteCustomLineItem $
+--             newDeleteCustomLineItem
+--
+--         , requestDeletePricingPlan $
+--             newDeletePricingPlan
+--
+--         , requestDeletePricingRule $
+--             newDeletePricingRule
+--
+--         , requestDisassociateAccounts $
+--             newDisassociateAccounts
+--
+--         , requestDisassociatePricingRules $
+--             newDisassociatePricingRules
+--
+--         , requestListAccountAssociations $
+--             newListAccountAssociations
+--
+--         , requestListBillingGroupCostReports $
+--             newListBillingGroupCostReports
+--
+--         , requestListBillingGroups $
+--             newListBillingGroups
+--
+--         , requestListCustomLineItemVersions $
+--             newListCustomLineItemVersions
+--
+--         , requestListCustomLineItems $
+--             newListCustomLineItems
+--
+--         , requestListPricingPlans $
+--             newListPricingPlans
+--
+--         , requestListPricingPlansAssociatedWithPricingRule $
+--             newListPricingPlansAssociatedWithPricingRule
+--
+--         , requestListPricingRules $
+--             newListPricingRules
+--
+--         , requestListPricingRulesAssociatedToPricingPlan $
+--             newListPricingRulesAssociatedToPricingPlan
+--
+--         , requestListResourcesAssociatedToCustomLineItem $
+--             newListResourcesAssociatedToCustomLineItem
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateBillingGroup $
+--             newUpdateBillingGroup
+--
+--         , requestUpdateCustomLineItem $
+--             newUpdateCustomLineItem
+--
+--         , requestUpdatePricingPlan $
+--             newUpdatePricingPlan
+--
+--         , requestUpdatePricingRule $
+--             newUpdatePricingRule
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateAccounts $
+--             newAssociateAccountsResponse
+--
+--         , responseAssociatePricingRules $
+--             newAssociatePricingRulesResponse
+--
+--         , responseBatchAssociateResourcesToCustomLineItem $
+--             newBatchAssociateResourcesToCustomLineItemResponse
+--
+--         , responseBatchDisassociateResourcesFromCustomLineItem $
+--             newBatchDisassociateResourcesFromCustomLineItemResponse
+--
+--         , responseCreateBillingGroup $
+--             newCreateBillingGroupResponse
+--
+--         , responseCreateCustomLineItem $
+--             newCreateCustomLineItemResponse
+--
+--         , responseCreatePricingPlan $
+--             newCreatePricingPlanResponse
+--
+--         , responseCreatePricingRule $
+--             newCreatePricingRuleResponse
+--
+--         , responseDeleteBillingGroup $
+--             newDeleteBillingGroupResponse
+--
+--         , responseDeleteCustomLineItem $
+--             newDeleteCustomLineItemResponse
+--
+--         , responseDeletePricingPlan $
+--             newDeletePricingPlanResponse
+--
+--         , responseDeletePricingRule $
+--             newDeletePricingRuleResponse
+--
+--         , responseDisassociateAccounts $
+--             newDisassociateAccountsResponse
+--
+--         , responseDisassociatePricingRules $
+--             newDisassociatePricingRulesResponse
+--
+--         , responseListAccountAssociations $
+--             newListAccountAssociationsResponse
+--
+--         , responseListBillingGroupCostReports $
+--             newListBillingGroupCostReportsResponse
+--
+--         , responseListBillingGroups $
+--             newListBillingGroupsResponse
+--
+--         , responseListCustomLineItemVersions $
+--             newListCustomLineItemVersionsResponse
+--
+--         , responseListCustomLineItems $
+--             newListCustomLineItemsResponse
+--
+--         , responseListPricingPlans $
+--             newListPricingPlansResponse
+--
+--         , responseListPricingPlansAssociatedWithPricingRule $
+--             newListPricingPlansAssociatedWithPricingRuleResponse
+--
+--         , responseListPricingRules $
+--             newListPricingRulesResponse
+--
+--         , responseListPricingRulesAssociatedToPricingPlan $
+--             newListPricingRulesAssociatedToPricingPlanResponse
+--
+--         , responseListResourcesAssociatedToCustomLineItem $
+--             newListResourcesAssociatedToCustomLineItemResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateBillingGroup $
+--             newUpdateBillingGroupResponse
+--
+--         , responseUpdateCustomLineItem $
+--             newUpdateCustomLineItemResponse
+--
+--         , responseUpdatePricingPlan $
+--             newUpdatePricingPlanResponse
+--
+--         , responseUpdatePricingRule $
+--             newUpdatePricingRuleResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateAccounts :: AssociateAccounts -> TestTree
+requestAssociateAccounts =
+  req
+    "AssociateAccounts"
+    "fixture/AssociateAccounts.yaml"
+
+requestAssociatePricingRules :: AssociatePricingRules -> TestTree
+requestAssociatePricingRules =
+  req
+    "AssociatePricingRules"
+    "fixture/AssociatePricingRules.yaml"
+
+requestBatchAssociateResourcesToCustomLineItem :: BatchAssociateResourcesToCustomLineItem -> TestTree
+requestBatchAssociateResourcesToCustomLineItem =
+  req
+    "BatchAssociateResourcesToCustomLineItem"
+    "fixture/BatchAssociateResourcesToCustomLineItem.yaml"
+
+requestBatchDisassociateResourcesFromCustomLineItem :: BatchDisassociateResourcesFromCustomLineItem -> TestTree
+requestBatchDisassociateResourcesFromCustomLineItem =
+  req
+    "BatchDisassociateResourcesFromCustomLineItem"
+    "fixture/BatchDisassociateResourcesFromCustomLineItem.yaml"
+
+requestCreateBillingGroup :: CreateBillingGroup -> TestTree
+requestCreateBillingGroup =
+  req
+    "CreateBillingGroup"
+    "fixture/CreateBillingGroup.yaml"
+
+requestCreateCustomLineItem :: CreateCustomLineItem -> TestTree
+requestCreateCustomLineItem =
+  req
+    "CreateCustomLineItem"
+    "fixture/CreateCustomLineItem.yaml"
+
+requestCreatePricingPlan :: CreatePricingPlan -> TestTree
+requestCreatePricingPlan =
+  req
+    "CreatePricingPlan"
+    "fixture/CreatePricingPlan.yaml"
+
+requestCreatePricingRule :: CreatePricingRule -> TestTree
+requestCreatePricingRule =
+  req
+    "CreatePricingRule"
+    "fixture/CreatePricingRule.yaml"
+
+requestDeleteBillingGroup :: DeleteBillingGroup -> TestTree
+requestDeleteBillingGroup =
+  req
+    "DeleteBillingGroup"
+    "fixture/DeleteBillingGroup.yaml"
+
+requestDeleteCustomLineItem :: DeleteCustomLineItem -> TestTree
+requestDeleteCustomLineItem =
+  req
+    "DeleteCustomLineItem"
+    "fixture/DeleteCustomLineItem.yaml"
+
+requestDeletePricingPlan :: DeletePricingPlan -> TestTree
+requestDeletePricingPlan =
+  req
+    "DeletePricingPlan"
+    "fixture/DeletePricingPlan.yaml"
+
+requestDeletePricingRule :: DeletePricingRule -> TestTree
+requestDeletePricingRule =
+  req
+    "DeletePricingRule"
+    "fixture/DeletePricingRule.yaml"
+
+requestDisassociateAccounts :: DisassociateAccounts -> TestTree
+requestDisassociateAccounts =
+  req
+    "DisassociateAccounts"
+    "fixture/DisassociateAccounts.yaml"
+
+requestDisassociatePricingRules :: DisassociatePricingRules -> TestTree
+requestDisassociatePricingRules =
+  req
+    "DisassociatePricingRules"
+    "fixture/DisassociatePricingRules.yaml"
+
+requestListAccountAssociations :: ListAccountAssociations -> TestTree
+requestListAccountAssociations =
+  req
+    "ListAccountAssociations"
+    "fixture/ListAccountAssociations.yaml"
+
+requestListBillingGroupCostReports :: ListBillingGroupCostReports -> TestTree
+requestListBillingGroupCostReports =
+  req
+    "ListBillingGroupCostReports"
+    "fixture/ListBillingGroupCostReports.yaml"
+
+requestListBillingGroups :: ListBillingGroups -> TestTree
+requestListBillingGroups =
+  req
+    "ListBillingGroups"
+    "fixture/ListBillingGroups.yaml"
+
+requestListCustomLineItemVersions :: ListCustomLineItemVersions -> TestTree
+requestListCustomLineItemVersions =
+  req
+    "ListCustomLineItemVersions"
+    "fixture/ListCustomLineItemVersions.yaml"
+
+requestListCustomLineItems :: ListCustomLineItems -> TestTree
+requestListCustomLineItems =
+  req
+    "ListCustomLineItems"
+    "fixture/ListCustomLineItems.yaml"
+
+requestListPricingPlans :: ListPricingPlans -> TestTree
+requestListPricingPlans =
+  req
+    "ListPricingPlans"
+    "fixture/ListPricingPlans.yaml"
+
+requestListPricingPlansAssociatedWithPricingRule :: ListPricingPlansAssociatedWithPricingRule -> TestTree
+requestListPricingPlansAssociatedWithPricingRule =
+  req
+    "ListPricingPlansAssociatedWithPricingRule"
+    "fixture/ListPricingPlansAssociatedWithPricingRule.yaml"
+
+requestListPricingRules :: ListPricingRules -> TestTree
+requestListPricingRules =
+  req
+    "ListPricingRules"
+    "fixture/ListPricingRules.yaml"
+
+requestListPricingRulesAssociatedToPricingPlan :: ListPricingRulesAssociatedToPricingPlan -> TestTree
+requestListPricingRulesAssociatedToPricingPlan =
+  req
+    "ListPricingRulesAssociatedToPricingPlan"
+    "fixture/ListPricingRulesAssociatedToPricingPlan.yaml"
+
+requestListResourcesAssociatedToCustomLineItem :: ListResourcesAssociatedToCustomLineItem -> TestTree
+requestListResourcesAssociatedToCustomLineItem =
+  req
+    "ListResourcesAssociatedToCustomLineItem"
+    "fixture/ListResourcesAssociatedToCustomLineItem.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateBillingGroup :: UpdateBillingGroup -> TestTree
+requestUpdateBillingGroup =
+  req
+    "UpdateBillingGroup"
+    "fixture/UpdateBillingGroup.yaml"
+
+requestUpdateCustomLineItem :: UpdateCustomLineItem -> TestTree
+requestUpdateCustomLineItem =
+  req
+    "UpdateCustomLineItem"
+    "fixture/UpdateCustomLineItem.yaml"
+
+requestUpdatePricingPlan :: UpdatePricingPlan -> TestTree
+requestUpdatePricingPlan =
+  req
+    "UpdatePricingPlan"
+    "fixture/UpdatePricingPlan.yaml"
+
+requestUpdatePricingRule :: UpdatePricingRule -> TestTree
+requestUpdatePricingRule =
+  req
+    "UpdatePricingRule"
+    "fixture/UpdatePricingRule.yaml"
+
+-- Responses
+
+responseAssociateAccounts :: AssociateAccountsResponse -> TestTree
+responseAssociateAccounts =
+  res
+    "AssociateAccountsResponse"
+    "fixture/AssociateAccountsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateAccounts)
+
+responseAssociatePricingRules :: AssociatePricingRulesResponse -> TestTree
+responseAssociatePricingRules =
+  res
+    "AssociatePricingRulesResponse"
+    "fixture/AssociatePricingRulesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociatePricingRules)
+
+responseBatchAssociateResourcesToCustomLineItem :: BatchAssociateResourcesToCustomLineItemResponse -> TestTree
+responseBatchAssociateResourcesToCustomLineItem =
+  res
+    "BatchAssociateResourcesToCustomLineItemResponse"
+    "fixture/BatchAssociateResourcesToCustomLineItemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchAssociateResourcesToCustomLineItem)
+
+responseBatchDisassociateResourcesFromCustomLineItem :: BatchDisassociateResourcesFromCustomLineItemResponse -> TestTree
+responseBatchDisassociateResourcesFromCustomLineItem =
+  res
+    "BatchDisassociateResourcesFromCustomLineItemResponse"
+    "fixture/BatchDisassociateResourcesFromCustomLineItemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchDisassociateResourcesFromCustomLineItem)
+
+responseCreateBillingGroup :: CreateBillingGroupResponse -> TestTree
+responseCreateBillingGroup =
+  res
+    "CreateBillingGroupResponse"
+    "fixture/CreateBillingGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateBillingGroup)
+
+responseCreateCustomLineItem :: CreateCustomLineItemResponse -> TestTree
+responseCreateCustomLineItem =
+  res
+    "CreateCustomLineItemResponse"
+    "fixture/CreateCustomLineItemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateCustomLineItem)
+
+responseCreatePricingPlan :: CreatePricingPlanResponse -> TestTree
+responseCreatePricingPlan =
+  res
+    "CreatePricingPlanResponse"
+    "fixture/CreatePricingPlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreatePricingPlan)
+
+responseCreatePricingRule :: CreatePricingRuleResponse -> TestTree
+responseCreatePricingRule =
+  res
+    "CreatePricingRuleResponse"
+    "fixture/CreatePricingRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreatePricingRule)
+
+responseDeleteBillingGroup :: DeleteBillingGroupResponse -> TestTree
+responseDeleteBillingGroup =
+  res
+    "DeleteBillingGroupResponse"
+    "fixture/DeleteBillingGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteBillingGroup)
+
+responseDeleteCustomLineItem :: DeleteCustomLineItemResponse -> TestTree
+responseDeleteCustomLineItem =
+  res
+    "DeleteCustomLineItemResponse"
+    "fixture/DeleteCustomLineItemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteCustomLineItem)
+
+responseDeletePricingPlan :: DeletePricingPlanResponse -> TestTree
+responseDeletePricingPlan =
+  res
+    "DeletePricingPlanResponse"
+    "fixture/DeletePricingPlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeletePricingPlan)
+
+responseDeletePricingRule :: DeletePricingRuleResponse -> TestTree
+responseDeletePricingRule =
+  res
+    "DeletePricingRuleResponse"
+    "fixture/DeletePricingRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeletePricingRule)
+
+responseDisassociateAccounts :: DisassociateAccountsResponse -> TestTree
+responseDisassociateAccounts =
+  res
+    "DisassociateAccountsResponse"
+    "fixture/DisassociateAccountsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateAccounts)
+
+responseDisassociatePricingRules :: DisassociatePricingRulesResponse -> TestTree
+responseDisassociatePricingRules =
+  res
+    "DisassociatePricingRulesResponse"
+    "fixture/DisassociatePricingRulesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociatePricingRules)
+
+responseListAccountAssociations :: ListAccountAssociationsResponse -> TestTree
+responseListAccountAssociations =
+  res
+    "ListAccountAssociationsResponse"
+    "fixture/ListAccountAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAccountAssociations)
+
+responseListBillingGroupCostReports :: ListBillingGroupCostReportsResponse -> TestTree
+responseListBillingGroupCostReports =
+  res
+    "ListBillingGroupCostReportsResponse"
+    "fixture/ListBillingGroupCostReportsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListBillingGroupCostReports)
+
+responseListBillingGroups :: ListBillingGroupsResponse -> TestTree
+responseListBillingGroups =
+  res
+    "ListBillingGroupsResponse"
+    "fixture/ListBillingGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListBillingGroups)
+
+responseListCustomLineItemVersions :: ListCustomLineItemVersionsResponse -> TestTree
+responseListCustomLineItemVersions =
+  res
+    "ListCustomLineItemVersionsResponse"
+    "fixture/ListCustomLineItemVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCustomLineItemVersions)
+
+responseListCustomLineItems :: ListCustomLineItemsResponse -> TestTree
+responseListCustomLineItems =
+  res
+    "ListCustomLineItemsResponse"
+    "fixture/ListCustomLineItemsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCustomLineItems)
+
+responseListPricingPlans :: ListPricingPlansResponse -> TestTree
+responseListPricingPlans =
+  res
+    "ListPricingPlansResponse"
+    "fixture/ListPricingPlansResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPricingPlans)
+
+responseListPricingPlansAssociatedWithPricingRule :: ListPricingPlansAssociatedWithPricingRuleResponse -> TestTree
+responseListPricingPlansAssociatedWithPricingRule =
+  res
+    "ListPricingPlansAssociatedWithPricingRuleResponse"
+    "fixture/ListPricingPlansAssociatedWithPricingRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPricingPlansAssociatedWithPricingRule)
+
+responseListPricingRules :: ListPricingRulesResponse -> TestTree
+responseListPricingRules =
+  res
+    "ListPricingRulesResponse"
+    "fixture/ListPricingRulesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPricingRules)
+
+responseListPricingRulesAssociatedToPricingPlan :: ListPricingRulesAssociatedToPricingPlanResponse -> TestTree
+responseListPricingRulesAssociatedToPricingPlan =
+  res
+    "ListPricingRulesAssociatedToPricingPlanResponse"
+    "fixture/ListPricingRulesAssociatedToPricingPlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPricingRulesAssociatedToPricingPlan)
+
+responseListResourcesAssociatedToCustomLineItem :: ListResourcesAssociatedToCustomLineItemResponse -> TestTree
+responseListResourcesAssociatedToCustomLineItem =
+  res
+    "ListResourcesAssociatedToCustomLineItemResponse"
+    "fixture/ListResourcesAssociatedToCustomLineItemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListResourcesAssociatedToCustomLineItem)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
+
+responseUpdateBillingGroup :: UpdateBillingGroupResponse -> TestTree
+responseUpdateBillingGroup =
+  res
+    "UpdateBillingGroupResponse"
+    "fixture/UpdateBillingGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateBillingGroup)
+
+responseUpdateCustomLineItem :: UpdateCustomLineItemResponse -> TestTree
+responseUpdateCustomLineItem =
+  res
+    "UpdateCustomLineItemResponse"
+    "fixture/UpdateCustomLineItemResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateCustomLineItem)
+
+responseUpdatePricingPlan :: UpdatePricingPlanResponse -> TestTree
+responseUpdatePricingPlan =
+  res
+    "UpdatePricingPlanResponse"
+    "fixture/UpdatePricingPlanResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePricingPlan)
+
+responseUpdatePricingRule :: UpdatePricingRuleResponse -> TestTree
+responseUpdatePricingRule =
+  res
+    "UpdatePricingRuleResponse"
+    "fixture/UpdatePricingRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePricingRule)
