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 DocumentDB with MongoDB compatibility SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2014-10-31@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-docdb)
+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.DocumentDB](http://hackage.haskell.org/package/amazonka-docdb/docs/Amazonka-DocumentDB.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-docdb` 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-docdb.cabal b/amazonka-docdb.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-docdb.cabal
@@ -0,0 +1,171 @@
+cabal-version:      2.2
+name:               amazonka-docdb
+version:            2.0
+synopsis:           Amazon DocumentDB with MongoDB compatibility 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 @2014-10-31@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.DocumentDB.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.DocumentDB" 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-docdb
+
+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.DocumentDB
+    Amazonka.DocumentDB.AddSourceIdentifierToSubscription
+    Amazonka.DocumentDB.AddTagsToResource
+    Amazonka.DocumentDB.ApplyPendingMaintenanceAction
+    Amazonka.DocumentDB.CopyDBClusterParameterGroup
+    Amazonka.DocumentDB.CopyDBClusterSnapshot
+    Amazonka.DocumentDB.CreateDBCluster
+    Amazonka.DocumentDB.CreateDBClusterParameterGroup
+    Amazonka.DocumentDB.CreateDBClusterSnapshot
+    Amazonka.DocumentDB.CreateDBInstance
+    Amazonka.DocumentDB.CreateDBSubnetGroup
+    Amazonka.DocumentDB.CreateEventSubscription
+    Amazonka.DocumentDB.CreateGlobalCluster
+    Amazonka.DocumentDB.DeleteDBCluster
+    Amazonka.DocumentDB.DeleteDBClusterParameterGroup
+    Amazonka.DocumentDB.DeleteDBClusterSnapshot
+    Amazonka.DocumentDB.DeleteDBInstance
+    Amazonka.DocumentDB.DeleteDBSubnetGroup
+    Amazonka.DocumentDB.DeleteEventSubscription
+    Amazonka.DocumentDB.DeleteGlobalCluster
+    Amazonka.DocumentDB.DescribeCertificates
+    Amazonka.DocumentDB.DescribeDBClusterParameterGroups
+    Amazonka.DocumentDB.DescribeDBClusterParameters
+    Amazonka.DocumentDB.DescribeDBClusters
+    Amazonka.DocumentDB.DescribeDBClusterSnapshotAttributes
+    Amazonka.DocumentDB.DescribeDBClusterSnapshots
+    Amazonka.DocumentDB.DescribeDBEngineVersions
+    Amazonka.DocumentDB.DescribeDBInstances
+    Amazonka.DocumentDB.DescribeDBSubnetGroups
+    Amazonka.DocumentDB.DescribeEngineDefaultClusterParameters
+    Amazonka.DocumentDB.DescribeEventCategories
+    Amazonka.DocumentDB.DescribeEvents
+    Amazonka.DocumentDB.DescribeEventSubscriptions
+    Amazonka.DocumentDB.DescribeGlobalClusters
+    Amazonka.DocumentDB.DescribeOrderableDBInstanceOptions
+    Amazonka.DocumentDB.DescribePendingMaintenanceActions
+    Amazonka.DocumentDB.FailoverDBCluster
+    Amazonka.DocumentDB.Lens
+    Amazonka.DocumentDB.ListTagsForResource
+    Amazonka.DocumentDB.ModifyDBCluster
+    Amazonka.DocumentDB.ModifyDBClusterParameterGroup
+    Amazonka.DocumentDB.ModifyDBClusterSnapshotAttribute
+    Amazonka.DocumentDB.ModifyDBInstance
+    Amazonka.DocumentDB.ModifyDBSubnetGroup
+    Amazonka.DocumentDB.ModifyEventSubscription
+    Amazonka.DocumentDB.ModifyGlobalCluster
+    Amazonka.DocumentDB.RebootDBInstance
+    Amazonka.DocumentDB.RemoveFromGlobalCluster
+    Amazonka.DocumentDB.RemoveSourceIdentifierFromSubscription
+    Amazonka.DocumentDB.RemoveTagsFromResource
+    Amazonka.DocumentDB.ResetDBClusterParameterGroup
+    Amazonka.DocumentDB.RestoreDBClusterFromSnapshot
+    Amazonka.DocumentDB.RestoreDBClusterToPointInTime
+    Amazonka.DocumentDB.StartDBCluster
+    Amazonka.DocumentDB.StopDBCluster
+    Amazonka.DocumentDB.Types
+    Amazonka.DocumentDB.Types.ApplyMethod
+    Amazonka.DocumentDB.Types.AvailabilityZone
+    Amazonka.DocumentDB.Types.Certificate
+    Amazonka.DocumentDB.Types.CloudwatchLogsExportConfiguration
+    Amazonka.DocumentDB.Types.DBCluster
+    Amazonka.DocumentDB.Types.DBClusterMember
+    Amazonka.DocumentDB.Types.DBClusterParameterGroup
+    Amazonka.DocumentDB.Types.DBClusterParameterGroupNameMessage
+    Amazonka.DocumentDB.Types.DBClusterRole
+    Amazonka.DocumentDB.Types.DBClusterSnapshot
+    Amazonka.DocumentDB.Types.DBClusterSnapshotAttribute
+    Amazonka.DocumentDB.Types.DBClusterSnapshotAttributesResult
+    Amazonka.DocumentDB.Types.DBEngineVersion
+    Amazonka.DocumentDB.Types.DBInstance
+    Amazonka.DocumentDB.Types.DBInstanceStatusInfo
+    Amazonka.DocumentDB.Types.DBSubnetGroup
+    Amazonka.DocumentDB.Types.Endpoint
+    Amazonka.DocumentDB.Types.EngineDefaults
+    Amazonka.DocumentDB.Types.Event
+    Amazonka.DocumentDB.Types.EventCategoriesMap
+    Amazonka.DocumentDB.Types.EventSubscription
+    Amazonka.DocumentDB.Types.Filter
+    Amazonka.DocumentDB.Types.GlobalCluster
+    Amazonka.DocumentDB.Types.GlobalClusterMember
+    Amazonka.DocumentDB.Types.OrderableDBInstanceOption
+    Amazonka.DocumentDB.Types.Parameter
+    Amazonka.DocumentDB.Types.PendingCloudwatchLogsExports
+    Amazonka.DocumentDB.Types.PendingMaintenanceAction
+    Amazonka.DocumentDB.Types.PendingModifiedValues
+    Amazonka.DocumentDB.Types.ResourcePendingMaintenanceActions
+    Amazonka.DocumentDB.Types.SourceType
+    Amazonka.DocumentDB.Types.Subnet
+    Amazonka.DocumentDB.Types.Tag
+    Amazonka.DocumentDB.Types.UpgradeTarget
+    Amazonka.DocumentDB.Types.VpcSecurityGroupMembership
+    Amazonka.DocumentDB.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-docdb-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.DocumentDB
+    Test.Amazonka.DocumentDB.Internal
+    Test.Amazonka.Gen.DocumentDB
+
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-docdb
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AddSourceIdentifierToSubscription.yaml b/fixture/AddSourceIdentifierToSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AddSourceIdentifierToSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/AddSourceIdentifierToSubscriptionResponse.proto b/fixture/AddSourceIdentifierToSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AddSourceIdentifierToSubscriptionResponse.proto
diff --git a/fixture/AddTagsToResource.yaml b/fixture/AddTagsToResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AddTagsToResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/AddTagsToResourceResponse.proto b/fixture/AddTagsToResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AddTagsToResourceResponse.proto
diff --git a/fixture/ApplyPendingMaintenanceAction.yaml b/fixture/ApplyPendingMaintenanceAction.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ApplyPendingMaintenanceAction.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ApplyPendingMaintenanceActionResponse.proto b/fixture/ApplyPendingMaintenanceActionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ApplyPendingMaintenanceActionResponse.proto
diff --git a/fixture/CopyDBClusterParameterGroup.yaml b/fixture/CopyDBClusterParameterGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CopyDBClusterParameterGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CopyDBClusterParameterGroupResponse.proto b/fixture/CopyDBClusterParameterGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CopyDBClusterParameterGroupResponse.proto
diff --git a/fixture/CopyDBClusterSnapshot.yaml b/fixture/CopyDBClusterSnapshot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CopyDBClusterSnapshot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CopyDBClusterSnapshotResponse.proto b/fixture/CopyDBClusterSnapshotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CopyDBClusterSnapshotResponse.proto
diff --git a/fixture/CreateDBCluster.yaml b/fixture/CreateDBCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CreateDBClusterParameterGroup.yaml b/fixture/CreateDBClusterParameterGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBClusterParameterGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CreateDBClusterParameterGroupResponse.proto b/fixture/CreateDBClusterParameterGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBClusterParameterGroupResponse.proto
diff --git a/fixture/CreateDBClusterResponse.proto b/fixture/CreateDBClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBClusterResponse.proto
diff --git a/fixture/CreateDBClusterSnapshot.yaml b/fixture/CreateDBClusterSnapshot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBClusterSnapshot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CreateDBClusterSnapshotResponse.proto b/fixture/CreateDBClusterSnapshotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBClusterSnapshotResponse.proto
diff --git a/fixture/CreateDBInstance.yaml b/fixture/CreateDBInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CreateDBInstanceResponse.proto b/fixture/CreateDBInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBInstanceResponse.proto
diff --git a/fixture/CreateDBSubnetGroup.yaml b/fixture/CreateDBSubnetGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBSubnetGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CreateDBSubnetGroupResponse.proto b/fixture/CreateDBSubnetGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDBSubnetGroupResponse.proto
diff --git a/fixture/CreateEventSubscription.yaml b/fixture/CreateEventSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEventSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CreateEventSubscriptionResponse.proto b/fixture/CreateEventSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateEventSubscriptionResponse.proto
diff --git a/fixture/CreateGlobalCluster.yaml b/fixture/CreateGlobalCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateGlobalCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/CreateGlobalClusterResponse.proto b/fixture/CreateGlobalClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateGlobalClusterResponse.proto
diff --git a/fixture/DeleteDBCluster.yaml b/fixture/DeleteDBCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DeleteDBClusterParameterGroup.yaml b/fixture/DeleteDBClusterParameterGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBClusterParameterGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DeleteDBClusterParameterGroupResponse.proto b/fixture/DeleteDBClusterParameterGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBClusterParameterGroupResponse.proto
diff --git a/fixture/DeleteDBClusterResponse.proto b/fixture/DeleteDBClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBClusterResponse.proto
diff --git a/fixture/DeleteDBClusterSnapshot.yaml b/fixture/DeleteDBClusterSnapshot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBClusterSnapshot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DeleteDBClusterSnapshotResponse.proto b/fixture/DeleteDBClusterSnapshotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBClusterSnapshotResponse.proto
diff --git a/fixture/DeleteDBInstance.yaml b/fixture/DeleteDBInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DeleteDBInstanceResponse.proto b/fixture/DeleteDBInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBInstanceResponse.proto
diff --git a/fixture/DeleteDBSubnetGroup.yaml b/fixture/DeleteDBSubnetGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBSubnetGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DeleteDBSubnetGroupResponse.proto b/fixture/DeleteDBSubnetGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDBSubnetGroupResponse.proto
diff --git a/fixture/DeleteEventSubscription.yaml b/fixture/DeleteEventSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEventSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DeleteEventSubscriptionResponse.proto b/fixture/DeleteEventSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteEventSubscriptionResponse.proto
diff --git a/fixture/DeleteGlobalCluster.yaml b/fixture/DeleteGlobalCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteGlobalCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DeleteGlobalClusterResponse.proto b/fixture/DeleteGlobalClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteGlobalClusterResponse.proto
diff --git a/fixture/DescribeCertificates.yaml b/fixture/DescribeCertificates.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCertificates.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeCertificatesResponse.proto b/fixture/DescribeCertificatesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCertificatesResponse.proto
diff --git a/fixture/DescribeDBClusterParameterGroups.yaml b/fixture/DescribeDBClusterParameterGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusterParameterGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeDBClusterParameterGroupsResponse.proto b/fixture/DescribeDBClusterParameterGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusterParameterGroupsResponse.proto
diff --git a/fixture/DescribeDBClusterParameters.yaml b/fixture/DescribeDBClusterParameters.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusterParameters.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeDBClusterParametersResponse.proto b/fixture/DescribeDBClusterParametersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusterParametersResponse.proto
diff --git a/fixture/DescribeDBClusterSnapshotAttributes.yaml b/fixture/DescribeDBClusterSnapshotAttributes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusterSnapshotAttributes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeDBClusterSnapshotAttributesResponse.proto b/fixture/DescribeDBClusterSnapshotAttributesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusterSnapshotAttributesResponse.proto
diff --git a/fixture/DescribeDBClusterSnapshots.yaml b/fixture/DescribeDBClusterSnapshots.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusterSnapshots.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeDBClusterSnapshotsResponse.proto b/fixture/DescribeDBClusterSnapshotsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusterSnapshotsResponse.proto
diff --git a/fixture/DescribeDBClusters.yaml b/fixture/DescribeDBClusters.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClusters.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeDBClustersResponse.proto b/fixture/DescribeDBClustersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBClustersResponse.proto
diff --git a/fixture/DescribeDBEngineVersions.yaml b/fixture/DescribeDBEngineVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBEngineVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeDBEngineVersionsResponse.proto b/fixture/DescribeDBEngineVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBEngineVersionsResponse.proto
diff --git a/fixture/DescribeDBInstances.yaml b/fixture/DescribeDBInstances.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBInstances.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeDBInstancesResponse.proto b/fixture/DescribeDBInstancesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBInstancesResponse.proto
diff --git a/fixture/DescribeDBSubnetGroups.yaml b/fixture/DescribeDBSubnetGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBSubnetGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeDBSubnetGroupsResponse.proto b/fixture/DescribeDBSubnetGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDBSubnetGroupsResponse.proto
diff --git a/fixture/DescribeEngineDefaultClusterParameters.yaml b/fixture/DescribeEngineDefaultClusterParameters.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEngineDefaultClusterParameters.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeEngineDefaultClusterParametersResponse.proto b/fixture/DescribeEngineDefaultClusterParametersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEngineDefaultClusterParametersResponse.proto
diff --git a/fixture/DescribeEventCategories.yaml b/fixture/DescribeEventCategories.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEventCategories.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeEventCategoriesResponse.proto b/fixture/DescribeEventCategoriesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEventCategoriesResponse.proto
diff --git a/fixture/DescribeEventSubscriptions.yaml b/fixture/DescribeEventSubscriptions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEventSubscriptions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeEventSubscriptionsResponse.proto b/fixture/DescribeEventSubscriptionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEventSubscriptionsResponse.proto
diff --git a/fixture/DescribeEvents.yaml b/fixture/DescribeEvents.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEvents.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeEventsResponse.proto b/fixture/DescribeEventsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEventsResponse.proto
diff --git a/fixture/DescribeGlobalClusters.yaml b/fixture/DescribeGlobalClusters.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeGlobalClusters.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeGlobalClustersResponse.proto b/fixture/DescribeGlobalClustersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeGlobalClustersResponse.proto
diff --git a/fixture/DescribeOrderableDBInstanceOptions.yaml b/fixture/DescribeOrderableDBInstanceOptions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeOrderableDBInstanceOptions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribeOrderableDBInstanceOptionsResponse.proto b/fixture/DescribeOrderableDBInstanceOptionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeOrderableDBInstanceOptionsResponse.proto
diff --git a/fixture/DescribePendingMaintenanceActions.yaml b/fixture/DescribePendingMaintenanceActions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePendingMaintenanceActions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/DescribePendingMaintenanceActionsResponse.proto b/fixture/DescribePendingMaintenanceActionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePendingMaintenanceActionsResponse.proto
diff --git a/fixture/FailoverDBCluster.yaml b/fixture/FailoverDBCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/FailoverDBCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/FailoverDBClusterResponse.proto b/fixture/FailoverDBClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/FailoverDBClusterResponse.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: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ModifyDBCluster.yaml b/fixture/ModifyDBCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ModifyDBClusterParameterGroup.yaml b/fixture/ModifyDBClusterParameterGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBClusterParameterGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ModifyDBClusterParameterGroupResponse.proto b/fixture/ModifyDBClusterParameterGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBClusterParameterGroupResponse.proto
diff --git a/fixture/ModifyDBClusterResponse.proto b/fixture/ModifyDBClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBClusterResponse.proto
diff --git a/fixture/ModifyDBClusterSnapshotAttribute.yaml b/fixture/ModifyDBClusterSnapshotAttribute.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBClusterSnapshotAttribute.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ModifyDBClusterSnapshotAttributeResponse.proto b/fixture/ModifyDBClusterSnapshotAttributeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBClusterSnapshotAttributeResponse.proto
diff --git a/fixture/ModifyDBInstance.yaml b/fixture/ModifyDBInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ModifyDBInstanceResponse.proto b/fixture/ModifyDBInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBInstanceResponse.proto
diff --git a/fixture/ModifyDBSubnetGroup.yaml b/fixture/ModifyDBSubnetGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBSubnetGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ModifyDBSubnetGroupResponse.proto b/fixture/ModifyDBSubnetGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyDBSubnetGroupResponse.proto
diff --git a/fixture/ModifyEventSubscription.yaml b/fixture/ModifyEventSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyEventSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ModifyEventSubscriptionResponse.proto b/fixture/ModifyEventSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyEventSubscriptionResponse.proto
diff --git a/fixture/ModifyGlobalCluster.yaml b/fixture/ModifyGlobalCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyGlobalCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ModifyGlobalClusterResponse.proto b/fixture/ModifyGlobalClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ModifyGlobalClusterResponse.proto
diff --git a/fixture/RebootDBInstance.yaml b/fixture/RebootDBInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RebootDBInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/RebootDBInstanceResponse.proto b/fixture/RebootDBInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RebootDBInstanceResponse.proto
diff --git a/fixture/RemoveFromGlobalCluster.yaml b/fixture/RemoveFromGlobalCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveFromGlobalCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/RemoveFromGlobalClusterResponse.proto b/fixture/RemoveFromGlobalClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveFromGlobalClusterResponse.proto
diff --git a/fixture/RemoveSourceIdentifierFromSubscription.yaml b/fixture/RemoveSourceIdentifierFromSubscription.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveSourceIdentifierFromSubscription.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/RemoveSourceIdentifierFromSubscriptionResponse.proto b/fixture/RemoveSourceIdentifierFromSubscriptionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveSourceIdentifierFromSubscriptionResponse.proto
diff --git a/fixture/RemoveTagsFromResource.yaml b/fixture/RemoveTagsFromResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveTagsFromResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/RemoveTagsFromResourceResponse.proto b/fixture/RemoveTagsFromResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveTagsFromResourceResponse.proto
diff --git a/fixture/ResetDBClusterParameterGroup.yaml b/fixture/ResetDBClusterParameterGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ResetDBClusterParameterGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/ResetDBClusterParameterGroupResponse.proto b/fixture/ResetDBClusterParameterGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ResetDBClusterParameterGroupResponse.proto
diff --git a/fixture/RestoreDBClusterFromSnapshot.yaml b/fixture/RestoreDBClusterFromSnapshot.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreDBClusterFromSnapshot.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/RestoreDBClusterFromSnapshotResponse.proto b/fixture/RestoreDBClusterFromSnapshotResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreDBClusterFromSnapshotResponse.proto
diff --git a/fixture/RestoreDBClusterToPointInTime.yaml b/fixture/RestoreDBClusterToPointInTime.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreDBClusterToPointInTime.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/RestoreDBClusterToPointInTimeResponse.proto b/fixture/RestoreDBClusterToPointInTimeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreDBClusterToPointInTimeResponse.proto
diff --git a/fixture/StartDBCluster.yaml b/fixture/StartDBCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartDBCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/StartDBClusterResponse.proto b/fixture/StartDBClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartDBClusterResponse.proto
diff --git a/fixture/StopDBCluster.yaml b/fixture/StopDBCluster.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopDBCluster.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rds/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  rds.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/StopDBClusterResponse.proto b/fixture/StopDBClusterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopDBClusterResponse.proto
diff --git a/gen/Amazonka/DocumentDB.hs b/gen/Amazonka/DocumentDB.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB.hs
@@ -0,0 +1,747 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.DocumentDB
+-- 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 @2014-10-31@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon DocumentDB API documentation
+module Amazonka.DocumentDB
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AuthorizationNotFoundFault
+    _AuthorizationNotFoundFault,
+
+    -- ** CertificateNotFoundFault
+    _CertificateNotFoundFault,
+
+    -- ** DBClusterAlreadyExistsFault
+    _DBClusterAlreadyExistsFault,
+
+    -- ** DBClusterNotFoundFault
+    _DBClusterNotFoundFault,
+
+    -- ** DBClusterParameterGroupNotFoundFault
+    _DBClusterParameterGroupNotFoundFault,
+
+    -- ** DBClusterQuotaExceededFault
+    _DBClusterQuotaExceededFault,
+
+    -- ** DBClusterSnapshotAlreadyExistsFault
+    _DBClusterSnapshotAlreadyExistsFault,
+
+    -- ** DBClusterSnapshotNotFoundFault
+    _DBClusterSnapshotNotFoundFault,
+
+    -- ** DBInstanceAlreadyExistsFault
+    _DBInstanceAlreadyExistsFault,
+
+    -- ** DBInstanceNotFoundFault
+    _DBInstanceNotFoundFault,
+
+    -- ** DBParameterGroupAlreadyExistsFault
+    _DBParameterGroupAlreadyExistsFault,
+
+    -- ** DBParameterGroupNotFoundFault
+    _DBParameterGroupNotFoundFault,
+
+    -- ** DBParameterGroupQuotaExceededFault
+    _DBParameterGroupQuotaExceededFault,
+
+    -- ** DBSecurityGroupNotFoundFault
+    _DBSecurityGroupNotFoundFault,
+
+    -- ** DBSnapshotAlreadyExistsFault
+    _DBSnapshotAlreadyExistsFault,
+
+    -- ** DBSnapshotNotFoundFault
+    _DBSnapshotNotFoundFault,
+
+    -- ** DBSubnetGroupAlreadyExistsFault
+    _DBSubnetGroupAlreadyExistsFault,
+
+    -- ** DBSubnetGroupDoesNotCoverEnoughAZs
+    _DBSubnetGroupDoesNotCoverEnoughAZs,
+
+    -- ** DBSubnetGroupNotFoundFault
+    _DBSubnetGroupNotFoundFault,
+
+    -- ** DBSubnetGroupQuotaExceededFault
+    _DBSubnetGroupQuotaExceededFault,
+
+    -- ** DBSubnetQuotaExceededFault
+    _DBSubnetQuotaExceededFault,
+
+    -- ** DBUpgradeDependencyFailureFault
+    _DBUpgradeDependencyFailureFault,
+
+    -- ** EventSubscriptionQuotaExceededFault
+    _EventSubscriptionQuotaExceededFault,
+
+    -- ** GlobalClusterAlreadyExistsFault
+    _GlobalClusterAlreadyExistsFault,
+
+    -- ** GlobalClusterNotFoundFault
+    _GlobalClusterNotFoundFault,
+
+    -- ** GlobalClusterQuotaExceededFault
+    _GlobalClusterQuotaExceededFault,
+
+    -- ** InstanceQuotaExceededFault
+    _InstanceQuotaExceededFault,
+
+    -- ** InsufficientDBClusterCapacityFault
+    _InsufficientDBClusterCapacityFault,
+
+    -- ** InsufficientDBInstanceCapacityFault
+    _InsufficientDBInstanceCapacityFault,
+
+    -- ** InsufficientStorageClusterCapacityFault
+    _InsufficientStorageClusterCapacityFault,
+
+    -- ** InvalidDBClusterSnapshotStateFault
+    _InvalidDBClusterSnapshotStateFault,
+
+    -- ** InvalidDBClusterStateFault
+    _InvalidDBClusterStateFault,
+
+    -- ** InvalidDBInstanceStateFault
+    _InvalidDBInstanceStateFault,
+
+    -- ** InvalidDBParameterGroupStateFault
+    _InvalidDBParameterGroupStateFault,
+
+    -- ** InvalidDBSecurityGroupStateFault
+    _InvalidDBSecurityGroupStateFault,
+
+    -- ** InvalidDBSnapshotStateFault
+    _InvalidDBSnapshotStateFault,
+
+    -- ** InvalidDBSubnetGroupStateFault
+    _InvalidDBSubnetGroupStateFault,
+
+    -- ** InvalidDBSubnetStateFault
+    _InvalidDBSubnetStateFault,
+
+    -- ** InvalidEventSubscriptionStateFault
+    _InvalidEventSubscriptionStateFault,
+
+    -- ** InvalidGlobalClusterStateFault
+    _InvalidGlobalClusterStateFault,
+
+    -- ** InvalidRestoreFault
+    _InvalidRestoreFault,
+
+    -- ** InvalidSubnet
+    _InvalidSubnet,
+
+    -- ** InvalidVPCNetworkStateFault
+    _InvalidVPCNetworkStateFault,
+
+    -- ** KMSKeyNotAccessibleFault
+    _KMSKeyNotAccessibleFault,
+
+    -- ** ResourceNotFoundFault
+    _ResourceNotFoundFault,
+
+    -- ** SNSInvalidTopicFault
+    _SNSInvalidTopicFault,
+
+    -- ** SNSNoAuthorizationFault
+    _SNSNoAuthorizationFault,
+
+    -- ** SNSTopicArnNotFoundFault
+    _SNSTopicArnNotFoundFault,
+
+    -- ** SharedSnapshotQuotaExceededFault
+    _SharedSnapshotQuotaExceededFault,
+
+    -- ** SnapshotQuotaExceededFault
+    _SnapshotQuotaExceededFault,
+
+    -- ** SourceNotFoundFault
+    _SourceNotFoundFault,
+
+    -- ** StorageQuotaExceededFault
+    _StorageQuotaExceededFault,
+
+    -- ** StorageTypeNotSupportedFault
+    _StorageTypeNotSupportedFault,
+
+    -- ** SubnetAlreadyInUse
+    _SubnetAlreadyInUse,
+
+    -- ** SubscriptionAlreadyExistFault
+    _SubscriptionAlreadyExistFault,
+
+    -- ** SubscriptionCategoryNotFoundFault
+    _SubscriptionCategoryNotFoundFault,
+
+    -- ** SubscriptionNotFoundFault
+    _SubscriptionNotFoundFault,
+
+    -- * Waiters
+    -- $waiters
+
+    -- ** DBInstanceAvailable
+    newDBInstanceAvailable,
+
+    -- ** DBInstanceDeleted
+    newDBInstanceDeleted,
+
+    -- * Operations
+    -- $operations
+
+    -- ** AddSourceIdentifierToSubscription
+    AddSourceIdentifierToSubscription (AddSourceIdentifierToSubscription'),
+    newAddSourceIdentifierToSubscription,
+    AddSourceIdentifierToSubscriptionResponse (AddSourceIdentifierToSubscriptionResponse'),
+    newAddSourceIdentifierToSubscriptionResponse,
+
+    -- ** AddTagsToResource
+    AddTagsToResource (AddTagsToResource'),
+    newAddTagsToResource,
+    AddTagsToResourceResponse (AddTagsToResourceResponse'),
+    newAddTagsToResourceResponse,
+
+    -- ** ApplyPendingMaintenanceAction
+    ApplyPendingMaintenanceAction (ApplyPendingMaintenanceAction'),
+    newApplyPendingMaintenanceAction,
+    ApplyPendingMaintenanceActionResponse (ApplyPendingMaintenanceActionResponse'),
+    newApplyPendingMaintenanceActionResponse,
+
+    -- ** CopyDBClusterParameterGroup
+    CopyDBClusterParameterGroup (CopyDBClusterParameterGroup'),
+    newCopyDBClusterParameterGroup,
+    CopyDBClusterParameterGroupResponse (CopyDBClusterParameterGroupResponse'),
+    newCopyDBClusterParameterGroupResponse,
+
+    -- ** CopyDBClusterSnapshot
+    CopyDBClusterSnapshot (CopyDBClusterSnapshot'),
+    newCopyDBClusterSnapshot,
+    CopyDBClusterSnapshotResponse (CopyDBClusterSnapshotResponse'),
+    newCopyDBClusterSnapshotResponse,
+
+    -- ** CreateDBCluster
+    CreateDBCluster (CreateDBCluster'),
+    newCreateDBCluster,
+    CreateDBClusterResponse (CreateDBClusterResponse'),
+    newCreateDBClusterResponse,
+
+    -- ** CreateDBClusterParameterGroup
+    CreateDBClusterParameterGroup (CreateDBClusterParameterGroup'),
+    newCreateDBClusterParameterGroup,
+    CreateDBClusterParameterGroupResponse (CreateDBClusterParameterGroupResponse'),
+    newCreateDBClusterParameterGroupResponse,
+
+    -- ** CreateDBClusterSnapshot
+    CreateDBClusterSnapshot (CreateDBClusterSnapshot'),
+    newCreateDBClusterSnapshot,
+    CreateDBClusterSnapshotResponse (CreateDBClusterSnapshotResponse'),
+    newCreateDBClusterSnapshotResponse,
+
+    -- ** CreateDBInstance
+    CreateDBInstance (CreateDBInstance'),
+    newCreateDBInstance,
+    CreateDBInstanceResponse (CreateDBInstanceResponse'),
+    newCreateDBInstanceResponse,
+
+    -- ** CreateDBSubnetGroup
+    CreateDBSubnetGroup (CreateDBSubnetGroup'),
+    newCreateDBSubnetGroup,
+    CreateDBSubnetGroupResponse (CreateDBSubnetGroupResponse'),
+    newCreateDBSubnetGroupResponse,
+
+    -- ** CreateEventSubscription
+    CreateEventSubscription (CreateEventSubscription'),
+    newCreateEventSubscription,
+    CreateEventSubscriptionResponse (CreateEventSubscriptionResponse'),
+    newCreateEventSubscriptionResponse,
+
+    -- ** CreateGlobalCluster
+    CreateGlobalCluster (CreateGlobalCluster'),
+    newCreateGlobalCluster,
+    CreateGlobalClusterResponse (CreateGlobalClusterResponse'),
+    newCreateGlobalClusterResponse,
+
+    -- ** DeleteDBCluster
+    DeleteDBCluster (DeleteDBCluster'),
+    newDeleteDBCluster,
+    DeleteDBClusterResponse (DeleteDBClusterResponse'),
+    newDeleteDBClusterResponse,
+
+    -- ** DeleteDBClusterParameterGroup
+    DeleteDBClusterParameterGroup (DeleteDBClusterParameterGroup'),
+    newDeleteDBClusterParameterGroup,
+    DeleteDBClusterParameterGroupResponse (DeleteDBClusterParameterGroupResponse'),
+    newDeleteDBClusterParameterGroupResponse,
+
+    -- ** DeleteDBClusterSnapshot
+    DeleteDBClusterSnapshot (DeleteDBClusterSnapshot'),
+    newDeleteDBClusterSnapshot,
+    DeleteDBClusterSnapshotResponse (DeleteDBClusterSnapshotResponse'),
+    newDeleteDBClusterSnapshotResponse,
+
+    -- ** DeleteDBInstance
+    DeleteDBInstance (DeleteDBInstance'),
+    newDeleteDBInstance,
+    DeleteDBInstanceResponse (DeleteDBInstanceResponse'),
+    newDeleteDBInstanceResponse,
+
+    -- ** DeleteDBSubnetGroup
+    DeleteDBSubnetGroup (DeleteDBSubnetGroup'),
+    newDeleteDBSubnetGroup,
+    DeleteDBSubnetGroupResponse (DeleteDBSubnetGroupResponse'),
+    newDeleteDBSubnetGroupResponse,
+
+    -- ** DeleteEventSubscription
+    DeleteEventSubscription (DeleteEventSubscription'),
+    newDeleteEventSubscription,
+    DeleteEventSubscriptionResponse (DeleteEventSubscriptionResponse'),
+    newDeleteEventSubscriptionResponse,
+
+    -- ** DeleteGlobalCluster
+    DeleteGlobalCluster (DeleteGlobalCluster'),
+    newDeleteGlobalCluster,
+    DeleteGlobalClusterResponse (DeleteGlobalClusterResponse'),
+    newDeleteGlobalClusterResponse,
+
+    -- ** DescribeCertificates (Paginated)
+    DescribeCertificates (DescribeCertificates'),
+    newDescribeCertificates,
+    DescribeCertificatesResponse (DescribeCertificatesResponse'),
+    newDescribeCertificatesResponse,
+
+    -- ** DescribeDBClusterParameterGroups (Paginated)
+    DescribeDBClusterParameterGroups (DescribeDBClusterParameterGroups'),
+    newDescribeDBClusterParameterGroups,
+    DescribeDBClusterParameterGroupsResponse (DescribeDBClusterParameterGroupsResponse'),
+    newDescribeDBClusterParameterGroupsResponse,
+
+    -- ** DescribeDBClusterParameters (Paginated)
+    DescribeDBClusterParameters (DescribeDBClusterParameters'),
+    newDescribeDBClusterParameters,
+    DescribeDBClusterParametersResponse (DescribeDBClusterParametersResponse'),
+    newDescribeDBClusterParametersResponse,
+
+    -- ** DescribeDBClusterSnapshotAttributes
+    DescribeDBClusterSnapshotAttributes (DescribeDBClusterSnapshotAttributes'),
+    newDescribeDBClusterSnapshotAttributes,
+    DescribeDBClusterSnapshotAttributesResponse (DescribeDBClusterSnapshotAttributesResponse'),
+    newDescribeDBClusterSnapshotAttributesResponse,
+
+    -- ** DescribeDBClusterSnapshots (Paginated)
+    DescribeDBClusterSnapshots (DescribeDBClusterSnapshots'),
+    newDescribeDBClusterSnapshots,
+    DescribeDBClusterSnapshotsResponse (DescribeDBClusterSnapshotsResponse'),
+    newDescribeDBClusterSnapshotsResponse,
+
+    -- ** DescribeDBClusters (Paginated)
+    DescribeDBClusters (DescribeDBClusters'),
+    newDescribeDBClusters,
+    DescribeDBClustersResponse (DescribeDBClustersResponse'),
+    newDescribeDBClustersResponse,
+
+    -- ** DescribeDBEngineVersions (Paginated)
+    DescribeDBEngineVersions (DescribeDBEngineVersions'),
+    newDescribeDBEngineVersions,
+    DescribeDBEngineVersionsResponse (DescribeDBEngineVersionsResponse'),
+    newDescribeDBEngineVersionsResponse,
+
+    -- ** DescribeDBInstances (Paginated)
+    DescribeDBInstances (DescribeDBInstances'),
+    newDescribeDBInstances,
+    DescribeDBInstancesResponse (DescribeDBInstancesResponse'),
+    newDescribeDBInstancesResponse,
+
+    -- ** DescribeDBSubnetGroups (Paginated)
+    DescribeDBSubnetGroups (DescribeDBSubnetGroups'),
+    newDescribeDBSubnetGroups,
+    DescribeDBSubnetGroupsResponse (DescribeDBSubnetGroupsResponse'),
+    newDescribeDBSubnetGroupsResponse,
+
+    -- ** DescribeEngineDefaultClusterParameters
+    DescribeEngineDefaultClusterParameters (DescribeEngineDefaultClusterParameters'),
+    newDescribeEngineDefaultClusterParameters,
+    DescribeEngineDefaultClusterParametersResponse (DescribeEngineDefaultClusterParametersResponse'),
+    newDescribeEngineDefaultClusterParametersResponse,
+
+    -- ** DescribeEventCategories
+    DescribeEventCategories (DescribeEventCategories'),
+    newDescribeEventCategories,
+    DescribeEventCategoriesResponse (DescribeEventCategoriesResponse'),
+    newDescribeEventCategoriesResponse,
+
+    -- ** DescribeEventSubscriptions (Paginated)
+    DescribeEventSubscriptions (DescribeEventSubscriptions'),
+    newDescribeEventSubscriptions,
+    DescribeEventSubscriptionsResponse (DescribeEventSubscriptionsResponse'),
+    newDescribeEventSubscriptionsResponse,
+
+    -- ** DescribeEvents (Paginated)
+    DescribeEvents (DescribeEvents'),
+    newDescribeEvents,
+    DescribeEventsResponse (DescribeEventsResponse'),
+    newDescribeEventsResponse,
+
+    -- ** DescribeGlobalClusters (Paginated)
+    DescribeGlobalClusters (DescribeGlobalClusters'),
+    newDescribeGlobalClusters,
+    DescribeGlobalClustersResponse (DescribeGlobalClustersResponse'),
+    newDescribeGlobalClustersResponse,
+
+    -- ** DescribeOrderableDBInstanceOptions (Paginated)
+    DescribeOrderableDBInstanceOptions (DescribeOrderableDBInstanceOptions'),
+    newDescribeOrderableDBInstanceOptions,
+    DescribeOrderableDBInstanceOptionsResponse (DescribeOrderableDBInstanceOptionsResponse'),
+    newDescribeOrderableDBInstanceOptionsResponse,
+
+    -- ** DescribePendingMaintenanceActions (Paginated)
+    DescribePendingMaintenanceActions (DescribePendingMaintenanceActions'),
+    newDescribePendingMaintenanceActions,
+    DescribePendingMaintenanceActionsResponse (DescribePendingMaintenanceActionsResponse'),
+    newDescribePendingMaintenanceActionsResponse,
+
+    -- ** FailoverDBCluster
+    FailoverDBCluster (FailoverDBCluster'),
+    newFailoverDBCluster,
+    FailoverDBClusterResponse (FailoverDBClusterResponse'),
+    newFailoverDBClusterResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** ModifyDBCluster
+    ModifyDBCluster (ModifyDBCluster'),
+    newModifyDBCluster,
+    ModifyDBClusterResponse (ModifyDBClusterResponse'),
+    newModifyDBClusterResponse,
+
+    -- ** ModifyDBClusterParameterGroup
+    ModifyDBClusterParameterGroup (ModifyDBClusterParameterGroup'),
+    newModifyDBClusterParameterGroup,
+    DBClusterParameterGroupNameMessage (DBClusterParameterGroupNameMessage'),
+    newDBClusterParameterGroupNameMessage,
+
+    -- ** ModifyDBClusterSnapshotAttribute
+    ModifyDBClusterSnapshotAttribute (ModifyDBClusterSnapshotAttribute'),
+    newModifyDBClusterSnapshotAttribute,
+    ModifyDBClusterSnapshotAttributeResponse (ModifyDBClusterSnapshotAttributeResponse'),
+    newModifyDBClusterSnapshotAttributeResponse,
+
+    -- ** ModifyDBInstance
+    ModifyDBInstance (ModifyDBInstance'),
+    newModifyDBInstance,
+    ModifyDBInstanceResponse (ModifyDBInstanceResponse'),
+    newModifyDBInstanceResponse,
+
+    -- ** ModifyDBSubnetGroup
+    ModifyDBSubnetGroup (ModifyDBSubnetGroup'),
+    newModifyDBSubnetGroup,
+    ModifyDBSubnetGroupResponse (ModifyDBSubnetGroupResponse'),
+    newModifyDBSubnetGroupResponse,
+
+    -- ** ModifyEventSubscription
+    ModifyEventSubscription (ModifyEventSubscription'),
+    newModifyEventSubscription,
+    ModifyEventSubscriptionResponse (ModifyEventSubscriptionResponse'),
+    newModifyEventSubscriptionResponse,
+
+    -- ** ModifyGlobalCluster
+    ModifyGlobalCluster (ModifyGlobalCluster'),
+    newModifyGlobalCluster,
+    ModifyGlobalClusterResponse (ModifyGlobalClusterResponse'),
+    newModifyGlobalClusterResponse,
+
+    -- ** RebootDBInstance
+    RebootDBInstance (RebootDBInstance'),
+    newRebootDBInstance,
+    RebootDBInstanceResponse (RebootDBInstanceResponse'),
+    newRebootDBInstanceResponse,
+
+    -- ** RemoveFromGlobalCluster
+    RemoveFromGlobalCluster (RemoveFromGlobalCluster'),
+    newRemoveFromGlobalCluster,
+    RemoveFromGlobalClusterResponse (RemoveFromGlobalClusterResponse'),
+    newRemoveFromGlobalClusterResponse,
+
+    -- ** RemoveSourceIdentifierFromSubscription
+    RemoveSourceIdentifierFromSubscription (RemoveSourceIdentifierFromSubscription'),
+    newRemoveSourceIdentifierFromSubscription,
+    RemoveSourceIdentifierFromSubscriptionResponse (RemoveSourceIdentifierFromSubscriptionResponse'),
+    newRemoveSourceIdentifierFromSubscriptionResponse,
+
+    -- ** RemoveTagsFromResource
+    RemoveTagsFromResource (RemoveTagsFromResource'),
+    newRemoveTagsFromResource,
+    RemoveTagsFromResourceResponse (RemoveTagsFromResourceResponse'),
+    newRemoveTagsFromResourceResponse,
+
+    -- ** ResetDBClusterParameterGroup
+    ResetDBClusterParameterGroup (ResetDBClusterParameterGroup'),
+    newResetDBClusterParameterGroup,
+    DBClusterParameterGroupNameMessage (DBClusterParameterGroupNameMessage'),
+    newDBClusterParameterGroupNameMessage,
+
+    -- ** RestoreDBClusterFromSnapshot
+    RestoreDBClusterFromSnapshot (RestoreDBClusterFromSnapshot'),
+    newRestoreDBClusterFromSnapshot,
+    RestoreDBClusterFromSnapshotResponse (RestoreDBClusterFromSnapshotResponse'),
+    newRestoreDBClusterFromSnapshotResponse,
+
+    -- ** RestoreDBClusterToPointInTime
+    RestoreDBClusterToPointInTime (RestoreDBClusterToPointInTime'),
+    newRestoreDBClusterToPointInTime,
+    RestoreDBClusterToPointInTimeResponse (RestoreDBClusterToPointInTimeResponse'),
+    newRestoreDBClusterToPointInTimeResponse,
+
+    -- ** StartDBCluster
+    StartDBCluster (StartDBCluster'),
+    newStartDBCluster,
+    StartDBClusterResponse (StartDBClusterResponse'),
+    newStartDBClusterResponse,
+
+    -- ** StopDBCluster
+    StopDBCluster (StopDBCluster'),
+    newStopDBCluster,
+    StopDBClusterResponse (StopDBClusterResponse'),
+    newStopDBClusterResponse,
+
+    -- * Types
+
+    -- ** ApplyMethod
+    ApplyMethod (..),
+
+    -- ** SourceType
+    SourceType (..),
+
+    -- ** AvailabilityZone
+    AvailabilityZone (AvailabilityZone'),
+    newAvailabilityZone,
+
+    -- ** Certificate
+    Certificate (Certificate'),
+    newCertificate,
+
+    -- ** CloudwatchLogsExportConfiguration
+    CloudwatchLogsExportConfiguration (CloudwatchLogsExportConfiguration'),
+    newCloudwatchLogsExportConfiguration,
+
+    -- ** DBCluster
+    DBCluster (DBCluster'),
+    newDBCluster,
+
+    -- ** DBClusterMember
+    DBClusterMember (DBClusterMember'),
+    newDBClusterMember,
+
+    -- ** DBClusterParameterGroup
+    DBClusterParameterGroup (DBClusterParameterGroup'),
+    newDBClusterParameterGroup,
+
+    -- ** DBClusterParameterGroupNameMessage
+    DBClusterParameterGroupNameMessage (DBClusterParameterGroupNameMessage'),
+    newDBClusterParameterGroupNameMessage,
+
+    -- ** DBClusterRole
+    DBClusterRole (DBClusterRole'),
+    newDBClusterRole,
+
+    -- ** DBClusterSnapshot
+    DBClusterSnapshot (DBClusterSnapshot'),
+    newDBClusterSnapshot,
+
+    -- ** DBClusterSnapshotAttribute
+    DBClusterSnapshotAttribute (DBClusterSnapshotAttribute'),
+    newDBClusterSnapshotAttribute,
+
+    -- ** DBClusterSnapshotAttributesResult
+    DBClusterSnapshotAttributesResult (DBClusterSnapshotAttributesResult'),
+    newDBClusterSnapshotAttributesResult,
+
+    -- ** DBEngineVersion
+    DBEngineVersion (DBEngineVersion'),
+    newDBEngineVersion,
+
+    -- ** DBInstance
+    DBInstance (DBInstance'),
+    newDBInstance,
+
+    -- ** DBInstanceStatusInfo
+    DBInstanceStatusInfo (DBInstanceStatusInfo'),
+    newDBInstanceStatusInfo,
+
+    -- ** DBSubnetGroup
+    DBSubnetGroup (DBSubnetGroup'),
+    newDBSubnetGroup,
+
+    -- ** Endpoint
+    Endpoint (Endpoint'),
+    newEndpoint,
+
+    -- ** EngineDefaults
+    EngineDefaults (EngineDefaults'),
+    newEngineDefaults,
+
+    -- ** Event
+    Event (Event'),
+    newEvent,
+
+    -- ** EventCategoriesMap
+    EventCategoriesMap (EventCategoriesMap'),
+    newEventCategoriesMap,
+
+    -- ** EventSubscription
+    EventSubscription (EventSubscription'),
+    newEventSubscription,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** GlobalCluster
+    GlobalCluster (GlobalCluster'),
+    newGlobalCluster,
+
+    -- ** GlobalClusterMember
+    GlobalClusterMember (GlobalClusterMember'),
+    newGlobalClusterMember,
+
+    -- ** OrderableDBInstanceOption
+    OrderableDBInstanceOption (OrderableDBInstanceOption'),
+    newOrderableDBInstanceOption,
+
+    -- ** Parameter
+    Parameter (Parameter'),
+    newParameter,
+
+    -- ** PendingCloudwatchLogsExports
+    PendingCloudwatchLogsExports (PendingCloudwatchLogsExports'),
+    newPendingCloudwatchLogsExports,
+
+    -- ** PendingMaintenanceAction
+    PendingMaintenanceAction (PendingMaintenanceAction'),
+    newPendingMaintenanceAction,
+
+    -- ** PendingModifiedValues
+    PendingModifiedValues (PendingModifiedValues'),
+    newPendingModifiedValues,
+
+    -- ** ResourcePendingMaintenanceActions
+    ResourcePendingMaintenanceActions (ResourcePendingMaintenanceActions'),
+    newResourcePendingMaintenanceActions,
+
+    -- ** Subnet
+    Subnet (Subnet'),
+    newSubnet,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** UpgradeTarget
+    UpgradeTarget (UpgradeTarget'),
+    newUpgradeTarget,
+
+    -- ** VpcSecurityGroupMembership
+    VpcSecurityGroupMembership (VpcSecurityGroupMembership'),
+    newVpcSecurityGroupMembership,
+  )
+where
+
+import Amazonka.DocumentDB.AddSourceIdentifierToSubscription
+import Amazonka.DocumentDB.AddTagsToResource
+import Amazonka.DocumentDB.ApplyPendingMaintenanceAction
+import Amazonka.DocumentDB.CopyDBClusterParameterGroup
+import Amazonka.DocumentDB.CopyDBClusterSnapshot
+import Amazonka.DocumentDB.CreateDBCluster
+import Amazonka.DocumentDB.CreateDBClusterParameterGroup
+import Amazonka.DocumentDB.CreateDBClusterSnapshot
+import Amazonka.DocumentDB.CreateDBInstance
+import Amazonka.DocumentDB.CreateDBSubnetGroup
+import Amazonka.DocumentDB.CreateEventSubscription
+import Amazonka.DocumentDB.CreateGlobalCluster
+import Amazonka.DocumentDB.DeleteDBCluster
+import Amazonka.DocumentDB.DeleteDBClusterParameterGroup
+import Amazonka.DocumentDB.DeleteDBClusterSnapshot
+import Amazonka.DocumentDB.DeleteDBInstance
+import Amazonka.DocumentDB.DeleteDBSubnetGroup
+import Amazonka.DocumentDB.DeleteEventSubscription
+import Amazonka.DocumentDB.DeleteGlobalCluster
+import Amazonka.DocumentDB.DescribeCertificates
+import Amazonka.DocumentDB.DescribeDBClusterParameterGroups
+import Amazonka.DocumentDB.DescribeDBClusterParameters
+import Amazonka.DocumentDB.DescribeDBClusterSnapshotAttributes
+import Amazonka.DocumentDB.DescribeDBClusterSnapshots
+import Amazonka.DocumentDB.DescribeDBClusters
+import Amazonka.DocumentDB.DescribeDBEngineVersions
+import Amazonka.DocumentDB.DescribeDBInstances
+import Amazonka.DocumentDB.DescribeDBSubnetGroups
+import Amazonka.DocumentDB.DescribeEngineDefaultClusterParameters
+import Amazonka.DocumentDB.DescribeEventCategories
+import Amazonka.DocumentDB.DescribeEventSubscriptions
+import Amazonka.DocumentDB.DescribeEvents
+import Amazonka.DocumentDB.DescribeGlobalClusters
+import Amazonka.DocumentDB.DescribeOrderableDBInstanceOptions
+import Amazonka.DocumentDB.DescribePendingMaintenanceActions
+import Amazonka.DocumentDB.FailoverDBCluster
+import Amazonka.DocumentDB.Lens
+import Amazonka.DocumentDB.ListTagsForResource
+import Amazonka.DocumentDB.ModifyDBCluster
+import Amazonka.DocumentDB.ModifyDBClusterParameterGroup
+import Amazonka.DocumentDB.ModifyDBClusterSnapshotAttribute
+import Amazonka.DocumentDB.ModifyDBInstance
+import Amazonka.DocumentDB.ModifyDBSubnetGroup
+import Amazonka.DocumentDB.ModifyEventSubscription
+import Amazonka.DocumentDB.ModifyGlobalCluster
+import Amazonka.DocumentDB.RebootDBInstance
+import Amazonka.DocumentDB.RemoveFromGlobalCluster
+import Amazonka.DocumentDB.RemoveSourceIdentifierFromSubscription
+import Amazonka.DocumentDB.RemoveTagsFromResource
+import Amazonka.DocumentDB.ResetDBClusterParameterGroup
+import Amazonka.DocumentDB.RestoreDBClusterFromSnapshot
+import Amazonka.DocumentDB.RestoreDBClusterToPointInTime
+import Amazonka.DocumentDB.StartDBCluster
+import Amazonka.DocumentDB.StopDBCluster
+import Amazonka.DocumentDB.Types
+import Amazonka.DocumentDB.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 'DocumentDB'.
+
+-- $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/DocumentDB/AddSourceIdentifierToSubscription.hs b/gen/Amazonka/DocumentDB/AddSourceIdentifierToSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/AddSourceIdentifierToSubscription.hs
@@ -0,0 +1,245 @@
+{-# 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.DocumentDB.AddSourceIdentifierToSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a source identifier to an existing event notification subscription.
+module Amazonka.DocumentDB.AddSourceIdentifierToSubscription
+  ( -- * Creating a Request
+    AddSourceIdentifierToSubscription (..),
+    newAddSourceIdentifierToSubscription,
+
+    -- * Request Lenses
+    addSourceIdentifierToSubscription_subscriptionName,
+    addSourceIdentifierToSubscription_sourceIdentifier,
+
+    -- * Destructuring the Response
+    AddSourceIdentifierToSubscriptionResponse (..),
+    newAddSourceIdentifierToSubscriptionResponse,
+
+    -- * Response Lenses
+    addSourceIdentifierToSubscriptionResponse_eventSubscription,
+    addSourceIdentifierToSubscriptionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to AddSourceIdentifierToSubscription.
+--
+-- /See:/ 'newAddSourceIdentifierToSubscription' smart constructor.
+data AddSourceIdentifierToSubscription = AddSourceIdentifierToSubscription'
+  { -- | The name of the Amazon DocumentDB event notification subscription that
+    -- you want to add a source identifier to.
+    subscriptionName :: Prelude.Text,
+    -- | The identifier of the event source to be added:
+    --
+    -- -   If the source type is an instance, a @DBInstanceIdentifier@ must be
+    --     provided.
+    --
+    -- -   If the source type is a security group, a @DBSecurityGroupName@ must
+    --     be provided.
+    --
+    -- -   If the source type is a parameter group, a @DBParameterGroupName@
+    --     must be provided.
+    --
+    -- -   If the source type is a snapshot, a @DBSnapshotIdentifier@ must be
+    --     provided.
+    sourceIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddSourceIdentifierToSubscription' 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:
+--
+-- 'subscriptionName', 'addSourceIdentifierToSubscription_subscriptionName' - The name of the Amazon DocumentDB event notification subscription that
+-- you want to add a source identifier to.
+--
+-- 'sourceIdentifier', 'addSourceIdentifierToSubscription_sourceIdentifier' - The identifier of the event source to be added:
+--
+-- -   If the source type is an instance, a @DBInstanceIdentifier@ must be
+--     provided.
+--
+-- -   If the source type is a security group, a @DBSecurityGroupName@ must
+--     be provided.
+--
+-- -   If the source type is a parameter group, a @DBParameterGroupName@
+--     must be provided.
+--
+-- -   If the source type is a snapshot, a @DBSnapshotIdentifier@ must be
+--     provided.
+newAddSourceIdentifierToSubscription ::
+  -- | 'subscriptionName'
+  Prelude.Text ->
+  -- | 'sourceIdentifier'
+  Prelude.Text ->
+  AddSourceIdentifierToSubscription
+newAddSourceIdentifierToSubscription
+  pSubscriptionName_
+  pSourceIdentifier_ =
+    AddSourceIdentifierToSubscription'
+      { subscriptionName =
+          pSubscriptionName_,
+        sourceIdentifier = pSourceIdentifier_
+      }
+
+-- | The name of the Amazon DocumentDB event notification subscription that
+-- you want to add a source identifier to.
+addSourceIdentifierToSubscription_subscriptionName :: Lens.Lens' AddSourceIdentifierToSubscription Prelude.Text
+addSourceIdentifierToSubscription_subscriptionName = Lens.lens (\AddSourceIdentifierToSubscription' {subscriptionName} -> subscriptionName) (\s@AddSourceIdentifierToSubscription' {} a -> s {subscriptionName = a} :: AddSourceIdentifierToSubscription)
+
+-- | The identifier of the event source to be added:
+--
+-- -   If the source type is an instance, a @DBInstanceIdentifier@ must be
+--     provided.
+--
+-- -   If the source type is a security group, a @DBSecurityGroupName@ must
+--     be provided.
+--
+-- -   If the source type is a parameter group, a @DBParameterGroupName@
+--     must be provided.
+--
+-- -   If the source type is a snapshot, a @DBSnapshotIdentifier@ must be
+--     provided.
+addSourceIdentifierToSubscription_sourceIdentifier :: Lens.Lens' AddSourceIdentifierToSubscription Prelude.Text
+addSourceIdentifierToSubscription_sourceIdentifier = Lens.lens (\AddSourceIdentifierToSubscription' {sourceIdentifier} -> sourceIdentifier) (\s@AddSourceIdentifierToSubscription' {} a -> s {sourceIdentifier = a} :: AddSourceIdentifierToSubscription)
+
+instance
+  Core.AWSRequest
+    AddSourceIdentifierToSubscription
+  where
+  type
+    AWSResponse AddSourceIdentifierToSubscription =
+      AddSourceIdentifierToSubscriptionResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "AddSourceIdentifierToSubscriptionResult"
+      ( \s h x ->
+          AddSourceIdentifierToSubscriptionResponse'
+            Prelude.<$> (x Data..@? "EventSubscription")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AddSourceIdentifierToSubscription
+  where
+  hashWithSalt
+    _salt
+    AddSourceIdentifierToSubscription' {..} =
+      _salt
+        `Prelude.hashWithSalt` subscriptionName
+        `Prelude.hashWithSalt` sourceIdentifier
+
+instance
+  Prelude.NFData
+    AddSourceIdentifierToSubscription
+  where
+  rnf AddSourceIdentifierToSubscription' {..} =
+    Prelude.rnf subscriptionName
+      `Prelude.seq` Prelude.rnf sourceIdentifier
+
+instance
+  Data.ToHeaders
+    AddSourceIdentifierToSubscription
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    AddSourceIdentifierToSubscription
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    AddSourceIdentifierToSubscription
+  where
+  toQuery AddSourceIdentifierToSubscription' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "AddSourceIdentifierToSubscription" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "SubscriptionName" Data.=: subscriptionName,
+        "SourceIdentifier" Data.=: sourceIdentifier
+      ]
+
+-- | /See:/ 'newAddSourceIdentifierToSubscriptionResponse' smart constructor.
+data AddSourceIdentifierToSubscriptionResponse = AddSourceIdentifierToSubscriptionResponse'
+  { eventSubscription :: Prelude.Maybe EventSubscription,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddSourceIdentifierToSubscriptionResponse' 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:
+--
+-- 'eventSubscription', 'addSourceIdentifierToSubscriptionResponse_eventSubscription' - Undocumented member.
+--
+-- 'httpStatus', 'addSourceIdentifierToSubscriptionResponse_httpStatus' - The response's http status code.
+newAddSourceIdentifierToSubscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddSourceIdentifierToSubscriptionResponse
+newAddSourceIdentifierToSubscriptionResponse
+  pHttpStatus_ =
+    AddSourceIdentifierToSubscriptionResponse'
+      { eventSubscription =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+addSourceIdentifierToSubscriptionResponse_eventSubscription :: Lens.Lens' AddSourceIdentifierToSubscriptionResponse (Prelude.Maybe EventSubscription)
+addSourceIdentifierToSubscriptionResponse_eventSubscription = Lens.lens (\AddSourceIdentifierToSubscriptionResponse' {eventSubscription} -> eventSubscription) (\s@AddSourceIdentifierToSubscriptionResponse' {} a -> s {eventSubscription = a} :: AddSourceIdentifierToSubscriptionResponse)
+
+-- | The response's http status code.
+addSourceIdentifierToSubscriptionResponse_httpStatus :: Lens.Lens' AddSourceIdentifierToSubscriptionResponse Prelude.Int
+addSourceIdentifierToSubscriptionResponse_httpStatus = Lens.lens (\AddSourceIdentifierToSubscriptionResponse' {httpStatus} -> httpStatus) (\s@AddSourceIdentifierToSubscriptionResponse' {} a -> s {httpStatus = a} :: AddSourceIdentifierToSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    AddSourceIdentifierToSubscriptionResponse
+  where
+  rnf AddSourceIdentifierToSubscriptionResponse' {..} =
+    Prelude.rnf eventSubscription
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/AddTagsToResource.hs b/gen/Amazonka/DocumentDB/AddTagsToResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/AddTagsToResource.hs
@@ -0,0 +1,146 @@
+{-# 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.DocumentDB.AddTagsToResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds metadata tags to an Amazon DocumentDB resource. You can use these
+-- tags with cost allocation reporting to track costs that are associated
+-- with Amazon DocumentDB resources or in a @Condition@ statement in an
+-- Identity and Access Management (IAM) policy for Amazon DocumentDB.
+module Amazonka.DocumentDB.AddTagsToResource
+  ( -- * Creating a Request
+    AddTagsToResource (..),
+    newAddTagsToResource,
+
+    -- * Request Lenses
+    addTagsToResource_resourceName,
+    addTagsToResource_tags,
+
+    -- * Destructuring the Response
+    AddTagsToResourceResponse (..),
+    newAddTagsToResourceResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to AddTagsToResource.
+--
+-- /See:/ 'newAddTagsToResource' smart constructor.
+data AddTagsToResource = AddTagsToResource'
+  { -- | The Amazon DocumentDB resource that the tags are added to. This value is
+    -- an Amazon Resource Name .
+    resourceName :: Prelude.Text,
+    -- | The tags to be assigned to the Amazon DocumentDB resource.
+    tags :: [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddTagsToResource' 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:
+--
+-- 'resourceName', 'addTagsToResource_resourceName' - The Amazon DocumentDB resource that the tags are added to. This value is
+-- an Amazon Resource Name .
+--
+-- 'tags', 'addTagsToResource_tags' - The tags to be assigned to the Amazon DocumentDB resource.
+newAddTagsToResource ::
+  -- | 'resourceName'
+  Prelude.Text ->
+  AddTagsToResource
+newAddTagsToResource pResourceName_ =
+  AddTagsToResource'
+    { resourceName = pResourceName_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon DocumentDB resource that the tags are added to. This value is
+-- an Amazon Resource Name .
+addTagsToResource_resourceName :: Lens.Lens' AddTagsToResource Prelude.Text
+addTagsToResource_resourceName = Lens.lens (\AddTagsToResource' {resourceName} -> resourceName) (\s@AddTagsToResource' {} a -> s {resourceName = a} :: AddTagsToResource)
+
+-- | The tags to be assigned to the Amazon DocumentDB resource.
+addTagsToResource_tags :: Lens.Lens' AddTagsToResource [Tag]
+addTagsToResource_tags = Lens.lens (\AddTagsToResource' {tags} -> tags) (\s@AddTagsToResource' {} a -> s {tags = a} :: AddTagsToResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest AddTagsToResource where
+  type
+    AWSResponse AddTagsToResource =
+      AddTagsToResourceResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull AddTagsToResourceResponse'
+
+instance Prelude.Hashable AddTagsToResource where
+  hashWithSalt _salt AddTagsToResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceName
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData AddTagsToResource where
+  rnf AddTagsToResource' {..} =
+    Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders AddTagsToResource where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath AddTagsToResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AddTagsToResource where
+  toQuery AddTagsToResource' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("AddTagsToResource" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "ResourceName" Data.=: resourceName,
+        "Tags" Data.=: Data.toQueryList "Tag" tags
+      ]
+
+-- | /See:/ 'newAddTagsToResourceResponse' smart constructor.
+data AddTagsToResourceResponse = AddTagsToResourceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddTagsToResourceResponse' 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.
+newAddTagsToResourceResponse ::
+  AddTagsToResourceResponse
+newAddTagsToResourceResponse =
+  AddTagsToResourceResponse'
+
+instance Prelude.NFData AddTagsToResourceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/DocumentDB/ApplyPendingMaintenanceAction.hs b/gen/Amazonka/DocumentDB/ApplyPendingMaintenanceAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ApplyPendingMaintenanceAction.hs
@@ -0,0 +1,250 @@
+{-# 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.DocumentDB.ApplyPendingMaintenanceAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Applies a pending maintenance action to a resource (for example, to an
+-- Amazon DocumentDB instance).
+module Amazonka.DocumentDB.ApplyPendingMaintenanceAction
+  ( -- * Creating a Request
+    ApplyPendingMaintenanceAction (..),
+    newApplyPendingMaintenanceAction,
+
+    -- * Request Lenses
+    applyPendingMaintenanceAction_resourceIdentifier,
+    applyPendingMaintenanceAction_applyAction,
+    applyPendingMaintenanceAction_optInType,
+
+    -- * Destructuring the Response
+    ApplyPendingMaintenanceActionResponse (..),
+    newApplyPendingMaintenanceActionResponse,
+
+    -- * Response Lenses
+    applyPendingMaintenanceActionResponse_resourcePendingMaintenanceActions,
+    applyPendingMaintenanceActionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ApplyPendingMaintenanceAction.
+--
+-- /See:/ 'newApplyPendingMaintenanceAction' smart constructor.
+data ApplyPendingMaintenanceAction = ApplyPendingMaintenanceAction'
+  { -- | The Amazon Resource Name (ARN) of the resource that the pending
+    -- maintenance action applies to.
+    resourceIdentifier :: Prelude.Text,
+    -- | The pending maintenance action to apply to this resource.
+    --
+    -- Valid values: @system-update@, @db-upgrade@
+    applyAction :: Prelude.Text,
+    -- | A value that specifies the type of opt-in request or undoes an opt-in
+    -- request. An opt-in request of type @immediate@ can\'t be undone.
+    --
+    -- Valid values:
+    --
+    -- -   @immediate@ - Apply the maintenance action immediately.
+    --
+    -- -   @next-maintenance@ - Apply the maintenance action during the next
+    --     maintenance window for the resource.
+    --
+    -- -   @undo-opt-in@ - Cancel any existing @next-maintenance@ opt-in
+    --     requests.
+    optInType :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplyPendingMaintenanceAction' 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:
+--
+-- 'resourceIdentifier', 'applyPendingMaintenanceAction_resourceIdentifier' - The Amazon Resource Name (ARN) of the resource that the pending
+-- maintenance action applies to.
+--
+-- 'applyAction', 'applyPendingMaintenanceAction_applyAction' - The pending maintenance action to apply to this resource.
+--
+-- Valid values: @system-update@, @db-upgrade@
+--
+-- 'optInType', 'applyPendingMaintenanceAction_optInType' - A value that specifies the type of opt-in request or undoes an opt-in
+-- request. An opt-in request of type @immediate@ can\'t be undone.
+--
+-- Valid values:
+--
+-- -   @immediate@ - Apply the maintenance action immediately.
+--
+-- -   @next-maintenance@ - Apply the maintenance action during the next
+--     maintenance window for the resource.
+--
+-- -   @undo-opt-in@ - Cancel any existing @next-maintenance@ opt-in
+--     requests.
+newApplyPendingMaintenanceAction ::
+  -- | 'resourceIdentifier'
+  Prelude.Text ->
+  -- | 'applyAction'
+  Prelude.Text ->
+  -- | 'optInType'
+  Prelude.Text ->
+  ApplyPendingMaintenanceAction
+newApplyPendingMaintenanceAction
+  pResourceIdentifier_
+  pApplyAction_
+  pOptInType_ =
+    ApplyPendingMaintenanceAction'
+      { resourceIdentifier =
+          pResourceIdentifier_,
+        applyAction = pApplyAction_,
+        optInType = pOptInType_
+      }
+
+-- | The Amazon Resource Name (ARN) of the resource that the pending
+-- maintenance action applies to.
+applyPendingMaintenanceAction_resourceIdentifier :: Lens.Lens' ApplyPendingMaintenanceAction Prelude.Text
+applyPendingMaintenanceAction_resourceIdentifier = Lens.lens (\ApplyPendingMaintenanceAction' {resourceIdentifier} -> resourceIdentifier) (\s@ApplyPendingMaintenanceAction' {} a -> s {resourceIdentifier = a} :: ApplyPendingMaintenanceAction)
+
+-- | The pending maintenance action to apply to this resource.
+--
+-- Valid values: @system-update@, @db-upgrade@
+applyPendingMaintenanceAction_applyAction :: Lens.Lens' ApplyPendingMaintenanceAction Prelude.Text
+applyPendingMaintenanceAction_applyAction = Lens.lens (\ApplyPendingMaintenanceAction' {applyAction} -> applyAction) (\s@ApplyPendingMaintenanceAction' {} a -> s {applyAction = a} :: ApplyPendingMaintenanceAction)
+
+-- | A value that specifies the type of opt-in request or undoes an opt-in
+-- request. An opt-in request of type @immediate@ can\'t be undone.
+--
+-- Valid values:
+--
+-- -   @immediate@ - Apply the maintenance action immediately.
+--
+-- -   @next-maintenance@ - Apply the maintenance action during the next
+--     maintenance window for the resource.
+--
+-- -   @undo-opt-in@ - Cancel any existing @next-maintenance@ opt-in
+--     requests.
+applyPendingMaintenanceAction_optInType :: Lens.Lens' ApplyPendingMaintenanceAction Prelude.Text
+applyPendingMaintenanceAction_optInType = Lens.lens (\ApplyPendingMaintenanceAction' {optInType} -> optInType) (\s@ApplyPendingMaintenanceAction' {} a -> s {optInType = a} :: ApplyPendingMaintenanceAction)
+
+instance
+  Core.AWSRequest
+    ApplyPendingMaintenanceAction
+  where
+  type
+    AWSResponse ApplyPendingMaintenanceAction =
+      ApplyPendingMaintenanceActionResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ApplyPendingMaintenanceActionResult"
+      ( \s h x ->
+          ApplyPendingMaintenanceActionResponse'
+            Prelude.<$> (x Data..@? "ResourcePendingMaintenanceActions")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ApplyPendingMaintenanceAction
+  where
+  hashWithSalt _salt ApplyPendingMaintenanceAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceIdentifier
+      `Prelude.hashWithSalt` applyAction
+      `Prelude.hashWithSalt` optInType
+
+instance Prelude.NFData ApplyPendingMaintenanceAction where
+  rnf ApplyPendingMaintenanceAction' {..} =
+    Prelude.rnf resourceIdentifier
+      `Prelude.seq` Prelude.rnf applyAction
+      `Prelude.seq` Prelude.rnf optInType
+
+instance Data.ToHeaders ApplyPendingMaintenanceAction where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ApplyPendingMaintenanceAction where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ApplyPendingMaintenanceAction where
+  toQuery ApplyPendingMaintenanceAction' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "ApplyPendingMaintenanceAction" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "ResourceIdentifier" Data.=: resourceIdentifier,
+        "ApplyAction" Data.=: applyAction,
+        "OptInType" Data.=: optInType
+      ]
+
+-- | /See:/ 'newApplyPendingMaintenanceActionResponse' smart constructor.
+data ApplyPendingMaintenanceActionResponse = ApplyPendingMaintenanceActionResponse'
+  { resourcePendingMaintenanceActions :: Prelude.Maybe ResourcePendingMaintenanceActions,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ApplyPendingMaintenanceActionResponse' 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:
+--
+-- 'resourcePendingMaintenanceActions', 'applyPendingMaintenanceActionResponse_resourcePendingMaintenanceActions' - Undocumented member.
+--
+-- 'httpStatus', 'applyPendingMaintenanceActionResponse_httpStatus' - The response's http status code.
+newApplyPendingMaintenanceActionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ApplyPendingMaintenanceActionResponse
+newApplyPendingMaintenanceActionResponse pHttpStatus_ =
+  ApplyPendingMaintenanceActionResponse'
+    { resourcePendingMaintenanceActions =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+applyPendingMaintenanceActionResponse_resourcePendingMaintenanceActions :: Lens.Lens' ApplyPendingMaintenanceActionResponse (Prelude.Maybe ResourcePendingMaintenanceActions)
+applyPendingMaintenanceActionResponse_resourcePendingMaintenanceActions = Lens.lens (\ApplyPendingMaintenanceActionResponse' {resourcePendingMaintenanceActions} -> resourcePendingMaintenanceActions) (\s@ApplyPendingMaintenanceActionResponse' {} a -> s {resourcePendingMaintenanceActions = a} :: ApplyPendingMaintenanceActionResponse)
+
+-- | The response's http status code.
+applyPendingMaintenanceActionResponse_httpStatus :: Lens.Lens' ApplyPendingMaintenanceActionResponse Prelude.Int
+applyPendingMaintenanceActionResponse_httpStatus = Lens.lens (\ApplyPendingMaintenanceActionResponse' {httpStatus} -> httpStatus) (\s@ApplyPendingMaintenanceActionResponse' {} a -> s {httpStatus = a} :: ApplyPendingMaintenanceActionResponse)
+
+instance
+  Prelude.NFData
+    ApplyPendingMaintenanceActionResponse
+  where
+  rnf ApplyPendingMaintenanceActionResponse' {..} =
+    Prelude.rnf resourcePendingMaintenanceActions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CopyDBClusterParameterGroup.hs b/gen/Amazonka/DocumentDB/CopyDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CopyDBClusterParameterGroup.hs
@@ -0,0 +1,303 @@
+{-# 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.DocumentDB.CopyDBClusterParameterGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Copies the specified cluster parameter group.
+module Amazonka.DocumentDB.CopyDBClusterParameterGroup
+  ( -- * Creating a Request
+    CopyDBClusterParameterGroup (..),
+    newCopyDBClusterParameterGroup,
+
+    -- * Request Lenses
+    copyDBClusterParameterGroup_tags,
+    copyDBClusterParameterGroup_sourceDBClusterParameterGroupIdentifier,
+    copyDBClusterParameterGroup_targetDBClusterParameterGroupIdentifier,
+    copyDBClusterParameterGroup_targetDBClusterParameterGroupDescription,
+
+    -- * Destructuring the Response
+    CopyDBClusterParameterGroupResponse (..),
+    newCopyDBClusterParameterGroupResponse,
+
+    -- * Response Lenses
+    copyDBClusterParameterGroupResponse_dbClusterParameterGroup,
+    copyDBClusterParameterGroupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to CopyDBClusterParameterGroup.
+--
+-- /See:/ 'newCopyDBClusterParameterGroup' smart constructor.
+data CopyDBClusterParameterGroup = CopyDBClusterParameterGroup'
+  { -- | The tags that are to be assigned to the parameter group.
+    tags :: Prelude.Maybe [Tag],
+    -- | The identifier or Amazon Resource Name (ARN) for the source cluster
+    -- parameter group.
+    --
+    -- Constraints:
+    --
+    -- -   Must specify a valid cluster parameter group.
+    --
+    -- -   If the source cluster parameter group is in the same Amazon Web
+    --     Services Region as the copy, specify a valid parameter group
+    --     identifier; for example, @my-db-cluster-param-group@, or a valid
+    --     ARN.
+    --
+    -- -   If the source parameter group is in a different Amazon Web Services
+    --     Region than the copy, specify a valid cluster parameter group ARN;
+    --     for example,
+    --     @arn:aws:rds:us-east-1:123456789012:sample-cluster:sample-parameter-group@.
+    sourceDBClusterParameterGroupIdentifier :: Prelude.Text,
+    -- | The identifier for the copied cluster parameter group.
+    --
+    -- Constraints:
+    --
+    -- -   Cannot be null, empty, or blank.
+    --
+    -- -   Must contain from 1 to 255 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- Example: @my-cluster-param-group1@
+    targetDBClusterParameterGroupIdentifier :: Prelude.Text,
+    -- | A description for the copied cluster parameter group.
+    targetDBClusterParameterGroupDescription :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CopyDBClusterParameterGroup' 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', 'copyDBClusterParameterGroup_tags' - The tags that are to be assigned to the parameter group.
+--
+-- 'sourceDBClusterParameterGroupIdentifier', 'copyDBClusterParameterGroup_sourceDBClusterParameterGroupIdentifier' - The identifier or Amazon Resource Name (ARN) for the source cluster
+-- parameter group.
+--
+-- Constraints:
+--
+-- -   Must specify a valid cluster parameter group.
+--
+-- -   If the source cluster parameter group is in the same Amazon Web
+--     Services Region as the copy, specify a valid parameter group
+--     identifier; for example, @my-db-cluster-param-group@, or a valid
+--     ARN.
+--
+-- -   If the source parameter group is in a different Amazon Web Services
+--     Region than the copy, specify a valid cluster parameter group ARN;
+--     for example,
+--     @arn:aws:rds:us-east-1:123456789012:sample-cluster:sample-parameter-group@.
+--
+-- 'targetDBClusterParameterGroupIdentifier', 'copyDBClusterParameterGroup_targetDBClusterParameterGroupIdentifier' - The identifier for the copied cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Cannot be null, empty, or blank.
+--
+-- -   Must contain from 1 to 255 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster-param-group1@
+--
+-- 'targetDBClusterParameterGroupDescription', 'copyDBClusterParameterGroup_targetDBClusterParameterGroupDescription' - A description for the copied cluster parameter group.
+newCopyDBClusterParameterGroup ::
+  -- | 'sourceDBClusterParameterGroupIdentifier'
+  Prelude.Text ->
+  -- | 'targetDBClusterParameterGroupIdentifier'
+  Prelude.Text ->
+  -- | 'targetDBClusterParameterGroupDescription'
+  Prelude.Text ->
+  CopyDBClusterParameterGroup
+newCopyDBClusterParameterGroup
+  pSourceDBClusterParameterGroupIdentifier_
+  pTargetDBClusterParameterGroupIdentifier_
+  pTargetDBClusterParameterGroupDescription_ =
+    CopyDBClusterParameterGroup'
+      { tags =
+          Prelude.Nothing,
+        sourceDBClusterParameterGroupIdentifier =
+          pSourceDBClusterParameterGroupIdentifier_,
+        targetDBClusterParameterGroupIdentifier =
+          pTargetDBClusterParameterGroupIdentifier_,
+        targetDBClusterParameterGroupDescription =
+          pTargetDBClusterParameterGroupDescription_
+      }
+
+-- | The tags that are to be assigned to the parameter group.
+copyDBClusterParameterGroup_tags :: Lens.Lens' CopyDBClusterParameterGroup (Prelude.Maybe [Tag])
+copyDBClusterParameterGroup_tags = Lens.lens (\CopyDBClusterParameterGroup' {tags} -> tags) (\s@CopyDBClusterParameterGroup' {} a -> s {tags = a} :: CopyDBClusterParameterGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The identifier or Amazon Resource Name (ARN) for the source cluster
+-- parameter group.
+--
+-- Constraints:
+--
+-- -   Must specify a valid cluster parameter group.
+--
+-- -   If the source cluster parameter group is in the same Amazon Web
+--     Services Region as the copy, specify a valid parameter group
+--     identifier; for example, @my-db-cluster-param-group@, or a valid
+--     ARN.
+--
+-- -   If the source parameter group is in a different Amazon Web Services
+--     Region than the copy, specify a valid cluster parameter group ARN;
+--     for example,
+--     @arn:aws:rds:us-east-1:123456789012:sample-cluster:sample-parameter-group@.
+copyDBClusterParameterGroup_sourceDBClusterParameterGroupIdentifier :: Lens.Lens' CopyDBClusterParameterGroup Prelude.Text
+copyDBClusterParameterGroup_sourceDBClusterParameterGroupIdentifier = Lens.lens (\CopyDBClusterParameterGroup' {sourceDBClusterParameterGroupIdentifier} -> sourceDBClusterParameterGroupIdentifier) (\s@CopyDBClusterParameterGroup' {} a -> s {sourceDBClusterParameterGroupIdentifier = a} :: CopyDBClusterParameterGroup)
+
+-- | The identifier for the copied cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Cannot be null, empty, or blank.
+--
+-- -   Must contain from 1 to 255 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster-param-group1@
+copyDBClusterParameterGroup_targetDBClusterParameterGroupIdentifier :: Lens.Lens' CopyDBClusterParameterGroup Prelude.Text
+copyDBClusterParameterGroup_targetDBClusterParameterGroupIdentifier = Lens.lens (\CopyDBClusterParameterGroup' {targetDBClusterParameterGroupIdentifier} -> targetDBClusterParameterGroupIdentifier) (\s@CopyDBClusterParameterGroup' {} a -> s {targetDBClusterParameterGroupIdentifier = a} :: CopyDBClusterParameterGroup)
+
+-- | A description for the copied cluster parameter group.
+copyDBClusterParameterGroup_targetDBClusterParameterGroupDescription :: Lens.Lens' CopyDBClusterParameterGroup Prelude.Text
+copyDBClusterParameterGroup_targetDBClusterParameterGroupDescription = Lens.lens (\CopyDBClusterParameterGroup' {targetDBClusterParameterGroupDescription} -> targetDBClusterParameterGroupDescription) (\s@CopyDBClusterParameterGroup' {} a -> s {targetDBClusterParameterGroupDescription = a} :: CopyDBClusterParameterGroup)
+
+instance Core.AWSRequest CopyDBClusterParameterGroup where
+  type
+    AWSResponse CopyDBClusterParameterGroup =
+      CopyDBClusterParameterGroupResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CopyDBClusterParameterGroupResult"
+      ( \s h x ->
+          CopyDBClusterParameterGroupResponse'
+            Prelude.<$> (x Data..@? "DBClusterParameterGroup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CopyDBClusterParameterGroup where
+  hashWithSalt _salt CopyDBClusterParameterGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` sourceDBClusterParameterGroupIdentifier
+      `Prelude.hashWithSalt` targetDBClusterParameterGroupIdentifier
+      `Prelude.hashWithSalt` targetDBClusterParameterGroupDescription
+
+instance Prelude.NFData CopyDBClusterParameterGroup where
+  rnf CopyDBClusterParameterGroup' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf sourceDBClusterParameterGroupIdentifier
+      `Prelude.seq` Prelude.rnf targetDBClusterParameterGroupIdentifier
+      `Prelude.seq` Prelude.rnf targetDBClusterParameterGroupDescription
+
+instance Data.ToHeaders CopyDBClusterParameterGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CopyDBClusterParameterGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CopyDBClusterParameterGroup where
+  toQuery CopyDBClusterParameterGroup' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "CopyDBClusterParameterGroup" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "SourceDBClusterParameterGroupIdentifier"
+          Data.=: sourceDBClusterParameterGroupIdentifier,
+        "TargetDBClusterParameterGroupIdentifier"
+          Data.=: targetDBClusterParameterGroupIdentifier,
+        "TargetDBClusterParameterGroupDescription"
+          Data.=: targetDBClusterParameterGroupDescription
+      ]
+
+-- | /See:/ 'newCopyDBClusterParameterGroupResponse' smart constructor.
+data CopyDBClusterParameterGroupResponse = CopyDBClusterParameterGroupResponse'
+  { dbClusterParameterGroup :: Prelude.Maybe DBClusterParameterGroup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CopyDBClusterParameterGroupResponse' 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:
+--
+-- 'dbClusterParameterGroup', 'copyDBClusterParameterGroupResponse_dbClusterParameterGroup' - Undocumented member.
+--
+-- 'httpStatus', 'copyDBClusterParameterGroupResponse_httpStatus' - The response's http status code.
+newCopyDBClusterParameterGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CopyDBClusterParameterGroupResponse
+newCopyDBClusterParameterGroupResponse pHttpStatus_ =
+  CopyDBClusterParameterGroupResponse'
+    { dbClusterParameterGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+copyDBClusterParameterGroupResponse_dbClusterParameterGroup :: Lens.Lens' CopyDBClusterParameterGroupResponse (Prelude.Maybe DBClusterParameterGroup)
+copyDBClusterParameterGroupResponse_dbClusterParameterGroup = Lens.lens (\CopyDBClusterParameterGroupResponse' {dbClusterParameterGroup} -> dbClusterParameterGroup) (\s@CopyDBClusterParameterGroupResponse' {} a -> s {dbClusterParameterGroup = a} :: CopyDBClusterParameterGroupResponse)
+
+-- | The response's http status code.
+copyDBClusterParameterGroupResponse_httpStatus :: Lens.Lens' CopyDBClusterParameterGroupResponse Prelude.Int
+copyDBClusterParameterGroupResponse_httpStatus = Lens.lens (\CopyDBClusterParameterGroupResponse' {httpStatus} -> httpStatus) (\s@CopyDBClusterParameterGroupResponse' {} a -> s {httpStatus = a} :: CopyDBClusterParameterGroupResponse)
+
+instance
+  Prelude.NFData
+    CopyDBClusterParameterGroupResponse
+  where
+  rnf CopyDBClusterParameterGroupResponse' {..} =
+    Prelude.rnf dbClusterParameterGroup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CopyDBClusterSnapshot.hs b/gen/Amazonka/DocumentDB/CopyDBClusterSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CopyDBClusterSnapshot.hs
@@ -0,0 +1,484 @@
+{-# 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.DocumentDB.CopyDBClusterSnapshot
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Copies a snapshot of a cluster.
+--
+-- To copy a cluster snapshot from a shared manual cluster snapshot,
+-- @SourceDBClusterSnapshotIdentifier@ must be the Amazon Resource Name
+-- (ARN) of the shared cluster snapshot. You can only copy a shared DB
+-- cluster snapshot, whether encrypted or not, in the same Amazon Web
+-- Services Region.
+--
+-- To cancel the copy operation after it is in progress, delete the target
+-- cluster snapshot identified by @TargetDBClusterSnapshotIdentifier@ while
+-- that cluster snapshot is in the /copying/ status.
+module Amazonka.DocumentDB.CopyDBClusterSnapshot
+  ( -- * Creating a Request
+    CopyDBClusterSnapshot (..),
+    newCopyDBClusterSnapshot,
+
+    -- * Request Lenses
+    copyDBClusterSnapshot_copyTags,
+    copyDBClusterSnapshot_kmsKeyId,
+    copyDBClusterSnapshot_preSignedUrl,
+    copyDBClusterSnapshot_tags,
+    copyDBClusterSnapshot_sourceDBClusterSnapshotIdentifier,
+    copyDBClusterSnapshot_targetDBClusterSnapshotIdentifier,
+
+    -- * Destructuring the Response
+    CopyDBClusterSnapshotResponse (..),
+    newCopyDBClusterSnapshotResponse,
+
+    -- * Response Lenses
+    copyDBClusterSnapshotResponse_dbClusterSnapshot,
+    copyDBClusterSnapshotResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to CopyDBClusterSnapshot.
+--
+-- /See:/ 'newCopyDBClusterSnapshot' smart constructor.
+data CopyDBClusterSnapshot = CopyDBClusterSnapshot'
+  { -- | Set to @true@ to copy all tags from the source cluster snapshot to the
+    -- target cluster snapshot, and otherwise @false@. The default is @false@.
+    copyTags :: Prelude.Maybe Prelude.Bool,
+    -- | The KMS key ID for an encrypted cluster snapshot. The KMS key ID is the
+    -- Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for
+    -- the KMS encryption key.
+    --
+    -- If you copy an encrypted cluster snapshot from your Amazon Web Services
+    -- account, you can specify a value for @KmsKeyId@ to encrypt the copy with
+    -- a new KMS encryption key. If you don\'t specify a value for @KmsKeyId@,
+    -- then the copy of the cluster snapshot is encrypted with the same KMS key
+    -- as the source cluster snapshot.
+    --
+    -- If you copy an encrypted cluster snapshot that is shared from another
+    -- Amazon Web Services account, then you must specify a value for
+    -- @KmsKeyId@.
+    --
+    -- To copy an encrypted cluster snapshot to another Amazon Web Services
+    -- Region, set @KmsKeyId@ to the KMS key ID that you want to use to encrypt
+    -- the copy of the cluster snapshot in the destination Region. KMS
+    -- encryption keys are specific to the Amazon Web Services Region that they
+    -- are created in, and you can\'t use encryption keys from one Amazon Web
+    -- Services Region in another Amazon Web Services Region.
+    --
+    -- If you copy an unencrypted cluster snapshot and specify a value for the
+    -- @KmsKeyId@ parameter, an error is returned.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The URL that contains a Signature Version 4 signed request for
+    -- the@CopyDBClusterSnapshot@ API action in the Amazon Web Services Region
+    -- that contains the source cluster snapshot to copy. You must use the
+    -- @PreSignedUrl@ parameter when copying a cluster snapshot from another
+    -- Amazon Web Services Region.
+    --
+    -- If you are using an Amazon Web Services SDK tool or the CLI, you can
+    -- specify @SourceRegion@ (or @--source-region@ for the CLI) instead of
+    -- specifying @PreSignedUrl@ manually. Specifying @SourceRegion@
+    -- autogenerates a pre-signed URL that is a valid request for the operation
+    -- that can be executed in the source Amazon Web Services Region.
+    --
+    -- The presigned URL must be a valid request for the
+    -- @CopyDBClusterSnapshot@ API action that can be executed in the source
+    -- Amazon Web Services Region that contains the cluster snapshot to be
+    -- copied. The presigned URL request must contain the following parameter
+    -- values:
+    --
+    -- -   @SourceRegion@ - The ID of the region that contains the snapshot to
+    --     be copied.
+    --
+    -- -   @SourceDBClusterSnapshotIdentifier@ - The identifier for the the
+    --     encrypted cluster snapshot to be copied. This identifier must be in
+    --     the Amazon Resource Name (ARN) format for the source Amazon Web
+    --     Services Region. For example, if you are copying an encrypted
+    --     cluster snapshot from the us-east-1 Amazon Web Services Region, then
+    --     your @SourceDBClusterSnapshotIdentifier@ looks something like the
+    --     following:
+    --     @arn:aws:rds:us-east-1:12345678012:sample-cluster:sample-cluster-snapshot@.
+    --
+    -- -   @TargetDBClusterSnapshotIdentifier@ - The identifier for the new
+    --     cluster snapshot to be created. This parameter isn\'t case
+    --     sensitive.
+    preSignedUrl :: Prelude.Maybe Prelude.Text,
+    -- | The tags to be assigned to the cluster snapshot.
+    tags :: Prelude.Maybe [Tag],
+    -- | The identifier of the cluster snapshot to copy. This parameter is not
+    -- case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must specify a valid system snapshot in the /available/ state.
+    --
+    -- -   If the source snapshot is in the same Amazon Web Services Region as
+    --     the copy, specify a valid snapshot identifier.
+    --
+    -- -   If the source snapshot is in a different Amazon Web Services Region
+    --     than the copy, specify a valid cluster snapshot ARN.
+    --
+    -- Example: @my-cluster-snapshot1@
+    sourceDBClusterSnapshotIdentifier :: Prelude.Text,
+    -- | The identifier of the new cluster snapshot to create from the source
+    -- cluster snapshot. This parameter is not case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- Example: @my-cluster-snapshot2@
+    targetDBClusterSnapshotIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CopyDBClusterSnapshot' 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:
+--
+-- 'copyTags', 'copyDBClusterSnapshot_copyTags' - Set to @true@ to copy all tags from the source cluster snapshot to the
+-- target cluster snapshot, and otherwise @false@. The default is @false@.
+--
+-- 'kmsKeyId', 'copyDBClusterSnapshot_kmsKeyId' - The KMS key ID for an encrypted cluster snapshot. The KMS key ID is the
+-- Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for
+-- the KMS encryption key.
+--
+-- If you copy an encrypted cluster snapshot from your Amazon Web Services
+-- account, you can specify a value for @KmsKeyId@ to encrypt the copy with
+-- a new KMS encryption key. If you don\'t specify a value for @KmsKeyId@,
+-- then the copy of the cluster snapshot is encrypted with the same KMS key
+-- as the source cluster snapshot.
+--
+-- If you copy an encrypted cluster snapshot that is shared from another
+-- Amazon Web Services account, then you must specify a value for
+-- @KmsKeyId@.
+--
+-- To copy an encrypted cluster snapshot to another Amazon Web Services
+-- Region, set @KmsKeyId@ to the KMS key ID that you want to use to encrypt
+-- the copy of the cluster snapshot in the destination Region. KMS
+-- encryption keys are specific to the Amazon Web Services Region that they
+-- are created in, and you can\'t use encryption keys from one Amazon Web
+-- Services Region in another Amazon Web Services Region.
+--
+-- If you copy an unencrypted cluster snapshot and specify a value for the
+-- @KmsKeyId@ parameter, an error is returned.
+--
+-- 'preSignedUrl', 'copyDBClusterSnapshot_preSignedUrl' - The URL that contains a Signature Version 4 signed request for
+-- the@CopyDBClusterSnapshot@ API action in the Amazon Web Services Region
+-- that contains the source cluster snapshot to copy. You must use the
+-- @PreSignedUrl@ parameter when copying a cluster snapshot from another
+-- Amazon Web Services Region.
+--
+-- If you are using an Amazon Web Services SDK tool or the CLI, you can
+-- specify @SourceRegion@ (or @--source-region@ for the CLI) instead of
+-- specifying @PreSignedUrl@ manually. Specifying @SourceRegion@
+-- autogenerates a pre-signed URL that is a valid request for the operation
+-- that can be executed in the source Amazon Web Services Region.
+--
+-- The presigned URL must be a valid request for the
+-- @CopyDBClusterSnapshot@ API action that can be executed in the source
+-- Amazon Web Services Region that contains the cluster snapshot to be
+-- copied. The presigned URL request must contain the following parameter
+-- values:
+--
+-- -   @SourceRegion@ - The ID of the region that contains the snapshot to
+--     be copied.
+--
+-- -   @SourceDBClusterSnapshotIdentifier@ - The identifier for the the
+--     encrypted cluster snapshot to be copied. This identifier must be in
+--     the Amazon Resource Name (ARN) format for the source Amazon Web
+--     Services Region. For example, if you are copying an encrypted
+--     cluster snapshot from the us-east-1 Amazon Web Services Region, then
+--     your @SourceDBClusterSnapshotIdentifier@ looks something like the
+--     following:
+--     @arn:aws:rds:us-east-1:12345678012:sample-cluster:sample-cluster-snapshot@.
+--
+-- -   @TargetDBClusterSnapshotIdentifier@ - The identifier for the new
+--     cluster snapshot to be created. This parameter isn\'t case
+--     sensitive.
+--
+-- 'tags', 'copyDBClusterSnapshot_tags' - The tags to be assigned to the cluster snapshot.
+--
+-- 'sourceDBClusterSnapshotIdentifier', 'copyDBClusterSnapshot_sourceDBClusterSnapshotIdentifier' - The identifier of the cluster snapshot to copy. This parameter is not
+-- case sensitive.
+--
+-- Constraints:
+--
+-- -   Must specify a valid system snapshot in the /available/ state.
+--
+-- -   If the source snapshot is in the same Amazon Web Services Region as
+--     the copy, specify a valid snapshot identifier.
+--
+-- -   If the source snapshot is in a different Amazon Web Services Region
+--     than the copy, specify a valid cluster snapshot ARN.
+--
+-- Example: @my-cluster-snapshot1@
+--
+-- 'targetDBClusterSnapshotIdentifier', 'copyDBClusterSnapshot_targetDBClusterSnapshotIdentifier' - The identifier of the new cluster snapshot to create from the source
+-- cluster snapshot. This parameter is not case sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster-snapshot2@
+newCopyDBClusterSnapshot ::
+  -- | 'sourceDBClusterSnapshotIdentifier'
+  Prelude.Text ->
+  -- | 'targetDBClusterSnapshotIdentifier'
+  Prelude.Text ->
+  CopyDBClusterSnapshot
+newCopyDBClusterSnapshot
+  pSourceDBClusterSnapshotIdentifier_
+  pTargetDBClusterSnapshotIdentifier_ =
+    CopyDBClusterSnapshot'
+      { copyTags = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        preSignedUrl = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        sourceDBClusterSnapshotIdentifier =
+          pSourceDBClusterSnapshotIdentifier_,
+        targetDBClusterSnapshotIdentifier =
+          pTargetDBClusterSnapshotIdentifier_
+      }
+
+-- | Set to @true@ to copy all tags from the source cluster snapshot to the
+-- target cluster snapshot, and otherwise @false@. The default is @false@.
+copyDBClusterSnapshot_copyTags :: Lens.Lens' CopyDBClusterSnapshot (Prelude.Maybe Prelude.Bool)
+copyDBClusterSnapshot_copyTags = Lens.lens (\CopyDBClusterSnapshot' {copyTags} -> copyTags) (\s@CopyDBClusterSnapshot' {} a -> s {copyTags = a} :: CopyDBClusterSnapshot)
+
+-- | The KMS key ID for an encrypted cluster snapshot. The KMS key ID is the
+-- Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for
+-- the KMS encryption key.
+--
+-- If you copy an encrypted cluster snapshot from your Amazon Web Services
+-- account, you can specify a value for @KmsKeyId@ to encrypt the copy with
+-- a new KMS encryption key. If you don\'t specify a value for @KmsKeyId@,
+-- then the copy of the cluster snapshot is encrypted with the same KMS key
+-- as the source cluster snapshot.
+--
+-- If you copy an encrypted cluster snapshot that is shared from another
+-- Amazon Web Services account, then you must specify a value for
+-- @KmsKeyId@.
+--
+-- To copy an encrypted cluster snapshot to another Amazon Web Services
+-- Region, set @KmsKeyId@ to the KMS key ID that you want to use to encrypt
+-- the copy of the cluster snapshot in the destination Region. KMS
+-- encryption keys are specific to the Amazon Web Services Region that they
+-- are created in, and you can\'t use encryption keys from one Amazon Web
+-- Services Region in another Amazon Web Services Region.
+--
+-- If you copy an unencrypted cluster snapshot and specify a value for the
+-- @KmsKeyId@ parameter, an error is returned.
+copyDBClusterSnapshot_kmsKeyId :: Lens.Lens' CopyDBClusterSnapshot (Prelude.Maybe Prelude.Text)
+copyDBClusterSnapshot_kmsKeyId = Lens.lens (\CopyDBClusterSnapshot' {kmsKeyId} -> kmsKeyId) (\s@CopyDBClusterSnapshot' {} a -> s {kmsKeyId = a} :: CopyDBClusterSnapshot)
+
+-- | The URL that contains a Signature Version 4 signed request for
+-- the@CopyDBClusterSnapshot@ API action in the Amazon Web Services Region
+-- that contains the source cluster snapshot to copy. You must use the
+-- @PreSignedUrl@ parameter when copying a cluster snapshot from another
+-- Amazon Web Services Region.
+--
+-- If you are using an Amazon Web Services SDK tool or the CLI, you can
+-- specify @SourceRegion@ (or @--source-region@ for the CLI) instead of
+-- specifying @PreSignedUrl@ manually. Specifying @SourceRegion@
+-- autogenerates a pre-signed URL that is a valid request for the operation
+-- that can be executed in the source Amazon Web Services Region.
+--
+-- The presigned URL must be a valid request for the
+-- @CopyDBClusterSnapshot@ API action that can be executed in the source
+-- Amazon Web Services Region that contains the cluster snapshot to be
+-- copied. The presigned URL request must contain the following parameter
+-- values:
+--
+-- -   @SourceRegion@ - The ID of the region that contains the snapshot to
+--     be copied.
+--
+-- -   @SourceDBClusterSnapshotIdentifier@ - The identifier for the the
+--     encrypted cluster snapshot to be copied. This identifier must be in
+--     the Amazon Resource Name (ARN) format for the source Amazon Web
+--     Services Region. For example, if you are copying an encrypted
+--     cluster snapshot from the us-east-1 Amazon Web Services Region, then
+--     your @SourceDBClusterSnapshotIdentifier@ looks something like the
+--     following:
+--     @arn:aws:rds:us-east-1:12345678012:sample-cluster:sample-cluster-snapshot@.
+--
+-- -   @TargetDBClusterSnapshotIdentifier@ - The identifier for the new
+--     cluster snapshot to be created. This parameter isn\'t case
+--     sensitive.
+copyDBClusterSnapshot_preSignedUrl :: Lens.Lens' CopyDBClusterSnapshot (Prelude.Maybe Prelude.Text)
+copyDBClusterSnapshot_preSignedUrl = Lens.lens (\CopyDBClusterSnapshot' {preSignedUrl} -> preSignedUrl) (\s@CopyDBClusterSnapshot' {} a -> s {preSignedUrl = a} :: CopyDBClusterSnapshot)
+
+-- | The tags to be assigned to the cluster snapshot.
+copyDBClusterSnapshot_tags :: Lens.Lens' CopyDBClusterSnapshot (Prelude.Maybe [Tag])
+copyDBClusterSnapshot_tags = Lens.lens (\CopyDBClusterSnapshot' {tags} -> tags) (\s@CopyDBClusterSnapshot' {} a -> s {tags = a} :: CopyDBClusterSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | The identifier of the cluster snapshot to copy. This parameter is not
+-- case sensitive.
+--
+-- Constraints:
+--
+-- -   Must specify a valid system snapshot in the /available/ state.
+--
+-- -   If the source snapshot is in the same Amazon Web Services Region as
+--     the copy, specify a valid snapshot identifier.
+--
+-- -   If the source snapshot is in a different Amazon Web Services Region
+--     than the copy, specify a valid cluster snapshot ARN.
+--
+-- Example: @my-cluster-snapshot1@
+copyDBClusterSnapshot_sourceDBClusterSnapshotIdentifier :: Lens.Lens' CopyDBClusterSnapshot Prelude.Text
+copyDBClusterSnapshot_sourceDBClusterSnapshotIdentifier = Lens.lens (\CopyDBClusterSnapshot' {sourceDBClusterSnapshotIdentifier} -> sourceDBClusterSnapshotIdentifier) (\s@CopyDBClusterSnapshot' {} a -> s {sourceDBClusterSnapshotIdentifier = a} :: CopyDBClusterSnapshot)
+
+-- | The identifier of the new cluster snapshot to create from the source
+-- cluster snapshot. This parameter is not case sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster-snapshot2@
+copyDBClusterSnapshot_targetDBClusterSnapshotIdentifier :: Lens.Lens' CopyDBClusterSnapshot Prelude.Text
+copyDBClusterSnapshot_targetDBClusterSnapshotIdentifier = Lens.lens (\CopyDBClusterSnapshot' {targetDBClusterSnapshotIdentifier} -> targetDBClusterSnapshotIdentifier) (\s@CopyDBClusterSnapshot' {} a -> s {targetDBClusterSnapshotIdentifier = a} :: CopyDBClusterSnapshot)
+
+instance Core.AWSRequest CopyDBClusterSnapshot where
+  type
+    AWSResponse CopyDBClusterSnapshot =
+      CopyDBClusterSnapshotResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CopyDBClusterSnapshotResult"
+      ( \s h x ->
+          CopyDBClusterSnapshotResponse'
+            Prelude.<$> (x Data..@? "DBClusterSnapshot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CopyDBClusterSnapshot where
+  hashWithSalt _salt CopyDBClusterSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` copyTags
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` preSignedUrl
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` sourceDBClusterSnapshotIdentifier
+      `Prelude.hashWithSalt` targetDBClusterSnapshotIdentifier
+
+instance Prelude.NFData CopyDBClusterSnapshot where
+  rnf CopyDBClusterSnapshot' {..} =
+    Prelude.rnf copyTags
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf preSignedUrl
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf sourceDBClusterSnapshotIdentifier
+      `Prelude.seq` Prelude.rnf targetDBClusterSnapshotIdentifier
+
+instance Data.ToHeaders CopyDBClusterSnapshot where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CopyDBClusterSnapshot where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CopyDBClusterSnapshot where
+  toQuery CopyDBClusterSnapshot' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CopyDBClusterSnapshot" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "CopyTags" Data.=: copyTags,
+        "KmsKeyId" Data.=: kmsKeyId,
+        "PreSignedUrl" Data.=: preSignedUrl,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "SourceDBClusterSnapshotIdentifier"
+          Data.=: sourceDBClusterSnapshotIdentifier,
+        "TargetDBClusterSnapshotIdentifier"
+          Data.=: targetDBClusterSnapshotIdentifier
+      ]
+
+-- | /See:/ 'newCopyDBClusterSnapshotResponse' smart constructor.
+data CopyDBClusterSnapshotResponse = CopyDBClusterSnapshotResponse'
+  { dbClusterSnapshot :: Prelude.Maybe DBClusterSnapshot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CopyDBClusterSnapshotResponse' 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:
+--
+-- 'dbClusterSnapshot', 'copyDBClusterSnapshotResponse_dbClusterSnapshot' - Undocumented member.
+--
+-- 'httpStatus', 'copyDBClusterSnapshotResponse_httpStatus' - The response's http status code.
+newCopyDBClusterSnapshotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CopyDBClusterSnapshotResponse
+newCopyDBClusterSnapshotResponse pHttpStatus_ =
+  CopyDBClusterSnapshotResponse'
+    { dbClusterSnapshot =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+copyDBClusterSnapshotResponse_dbClusterSnapshot :: Lens.Lens' CopyDBClusterSnapshotResponse (Prelude.Maybe DBClusterSnapshot)
+copyDBClusterSnapshotResponse_dbClusterSnapshot = Lens.lens (\CopyDBClusterSnapshotResponse' {dbClusterSnapshot} -> dbClusterSnapshot) (\s@CopyDBClusterSnapshotResponse' {} a -> s {dbClusterSnapshot = a} :: CopyDBClusterSnapshotResponse)
+
+-- | The response's http status code.
+copyDBClusterSnapshotResponse_httpStatus :: Lens.Lens' CopyDBClusterSnapshotResponse Prelude.Int
+copyDBClusterSnapshotResponse_httpStatus = Lens.lens (\CopyDBClusterSnapshotResponse' {httpStatus} -> httpStatus) (\s@CopyDBClusterSnapshotResponse' {} a -> s {httpStatus = a} :: CopyDBClusterSnapshotResponse)
+
+instance Prelude.NFData CopyDBClusterSnapshotResponse where
+  rnf CopyDBClusterSnapshotResponse' {..} =
+    Prelude.rnf dbClusterSnapshot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CreateDBCluster.hs b/gen/Amazonka/DocumentDB/CreateDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CreateDBCluster.hs
@@ -0,0 +1,701 @@
+{-# 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.DocumentDB.CreateDBCluster
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new Amazon DocumentDB cluster.
+module Amazonka.DocumentDB.CreateDBCluster
+  ( -- * Creating a Request
+    CreateDBCluster (..),
+    newCreateDBCluster,
+
+    -- * Request Lenses
+    createDBCluster_availabilityZones,
+    createDBCluster_backupRetentionPeriod,
+    createDBCluster_dbClusterParameterGroupName,
+    createDBCluster_dbSubnetGroupName,
+    createDBCluster_deletionProtection,
+    createDBCluster_enableCloudwatchLogsExports,
+    createDBCluster_engineVersion,
+    createDBCluster_globalClusterIdentifier,
+    createDBCluster_kmsKeyId,
+    createDBCluster_masterUserPassword,
+    createDBCluster_masterUsername,
+    createDBCluster_port,
+    createDBCluster_preSignedUrl,
+    createDBCluster_preferredBackupWindow,
+    createDBCluster_preferredMaintenanceWindow,
+    createDBCluster_storageEncrypted,
+    createDBCluster_tags,
+    createDBCluster_vpcSecurityGroupIds,
+    createDBCluster_dbClusterIdentifier,
+    createDBCluster_engine,
+
+    -- * Destructuring the Response
+    CreateDBClusterResponse (..),
+    newCreateDBClusterResponse,
+
+    -- * Response Lenses
+    createDBClusterResponse_dbCluster,
+    createDBClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to CreateDBCluster.
+--
+-- /See:/ 'newCreateDBCluster' smart constructor.
+data CreateDBCluster = CreateDBCluster'
+  { -- | A list of Amazon EC2 Availability Zones that instances in the cluster
+    -- can be created in.
+    availabilityZones :: Prelude.Maybe [Prelude.Text],
+    -- | The number of days for which automated backups are retained. You must
+    -- specify a minimum value of 1.
+    --
+    -- Default: 1
+    --
+    -- Constraints:
+    --
+    -- -   Must be a value from 1 to 35.
+    backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
+    -- | The name of the cluster parameter group to associate with this cluster.
+    dbClusterParameterGroupName :: Prelude.Maybe Prelude.Text,
+    -- | A subnet group to associate with this cluster.
+    --
+    -- Constraints: Must match the name of an existing @DBSubnetGroup@. Must
+    -- not be default.
+    --
+    -- Example: @mySubnetgroup@
+    dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+    -- is enabled, the cluster cannot be deleted unless it is modified and
+    -- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+    -- from being accidentally deleted.
+    deletionProtection :: Prelude.Maybe Prelude.Bool,
+    -- | A list of log types that need to be enabled for exporting to Amazon
+    -- CloudWatch Logs. You can enable audit logs or profiler logs. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/documentdb/latest/developerguide/event-auditing.html Auditing Amazon DocumentDB Events>
+    -- and
+    -- <https://docs.aws.amazon.com/documentdb/latest/developerguide/profiling.html Profiling Amazon DocumentDB Operations>.
+    enableCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
+    -- | The version number of the database engine to use. The @--engine-version@
+    -- will default to the latest major engine version. For production
+    -- workloads, we recommend explicitly declaring this parameter with the
+    -- intended major engine version.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | The cluster identifier of the new global cluster.
+    globalClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The KMS key identifier for an encrypted cluster.
+    --
+    -- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+    -- encryption key. If you are creating a cluster using the same Amazon Web
+    -- Services account that owns the KMS encryption key that is used to
+    -- encrypt the new cluster, you can use the KMS key alias instead of the
+    -- ARN for the KMS encryption key.
+    --
+    -- If an encryption key is not specified in @KmsKeyId@:
+    --
+    -- -   If the @StorageEncrypted@ parameter is @true@, Amazon DocumentDB
+    --     uses your default encryption key.
+    --
+    -- KMS creates the default encryption key for your Amazon Web Services
+    -- account. Your Amazon Web Services account has a different default
+    -- encryption key for each Amazon Web Services Regions.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The password for the master database user. This password can contain any
+    -- printable ASCII character except forward slash (\/), double quote (\"),
+    -- or the \"at\" symbol (\@).
+    --
+    -- Constraints: Must contain from 8 to 100 characters.
+    masterUserPassword :: Prelude.Maybe Prelude.Text,
+    -- | The name of the master user for the cluster.
+    --
+    -- Constraints:
+    --
+    -- -   Must be from 1 to 63 letters or numbers.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot be a reserved word for the chosen database engine.
+    masterUsername :: Prelude.Maybe Prelude.Text,
+    -- | The port number on which the instances in the cluster accept
+    -- connections.
+    port :: Prelude.Maybe Prelude.Int,
+    -- | Not currently supported.
+    preSignedUrl :: Prelude.Maybe Prelude.Text,
+    -- | The daily time range during which automated backups are created if
+    -- automated backups are enabled using the @BackupRetentionPeriod@
+    -- parameter.
+    --
+    -- The default is a 30-minute window selected at random from an 8-hour
+    -- block of time for each Amazon Web Services Region.
+    --
+    -- Constraints:
+    --
+    -- -   Must be in the format @hh24:mi-hh24:mi@.
+    --
+    -- -   Must be in Universal Coordinated Time (UTC).
+    --
+    -- -   Must not conflict with the preferred maintenance window.
+    --
+    -- -   Must be at least 30 minutes.
+    preferredBackupWindow :: Prelude.Maybe Prelude.Text,
+    -- | The weekly time range during which system maintenance can occur, in
+    -- Universal Coordinated Time (UTC).
+    --
+    -- Format: @ddd:hh24:mi-ddd:hh24:mi@
+    --
+    -- The default is a 30-minute window selected at random from an 8-hour
+    -- block of time for each Amazon Web Services Region, occurring on a random
+    -- day of the week.
+    --
+    -- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+    --
+    -- Constraints: Minimum 30-minute window.
+    preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether the cluster is encrypted.
+    storageEncrypted :: Prelude.Maybe Prelude.Bool,
+    -- | The tags to be assigned to the cluster.
+    tags :: Prelude.Maybe [Tag],
+    -- | A list of EC2 VPC security groups to associate with this cluster.
+    vpcSecurityGroupIds :: Prelude.Maybe [Prelude.Text],
+    -- | The cluster identifier. This parameter is stored as a lowercase string.
+    --
+    -- Constraints:
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- Example: @my-cluster@
+    dbClusterIdentifier :: Prelude.Text,
+    -- | The name of the database engine to be used for this cluster.
+    --
+    -- Valid values: @docdb@
+    engine :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBCluster' 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:
+--
+-- 'availabilityZones', 'createDBCluster_availabilityZones' - A list of Amazon EC2 Availability Zones that instances in the cluster
+-- can be created in.
+--
+-- 'backupRetentionPeriod', 'createDBCluster_backupRetentionPeriod' - The number of days for which automated backups are retained. You must
+-- specify a minimum value of 1.
+--
+-- Default: 1
+--
+-- Constraints:
+--
+-- -   Must be a value from 1 to 35.
+--
+-- 'dbClusterParameterGroupName', 'createDBCluster_dbClusterParameterGroupName' - The name of the cluster parameter group to associate with this cluster.
+--
+-- 'dbSubnetGroupName', 'createDBCluster_dbSubnetGroupName' - A subnet group to associate with this cluster.
+--
+-- Constraints: Must match the name of an existing @DBSubnetGroup@. Must
+-- not be default.
+--
+-- Example: @mySubnetgroup@
+--
+-- 'deletionProtection', 'createDBCluster_deletionProtection' - Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+--
+-- 'enableCloudwatchLogsExports', 'createDBCluster_enableCloudwatchLogsExports' - A list of log types that need to be enabled for exporting to Amazon
+-- CloudWatch Logs. You can enable audit logs or profiler logs. For more
+-- information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/event-auditing.html Auditing Amazon DocumentDB Events>
+-- and
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/profiling.html Profiling Amazon DocumentDB Operations>.
+--
+-- 'engineVersion', 'createDBCluster_engineVersion' - The version number of the database engine to use. The @--engine-version@
+-- will default to the latest major engine version. For production
+-- workloads, we recommend explicitly declaring this parameter with the
+-- intended major engine version.
+--
+-- 'globalClusterIdentifier', 'createDBCluster_globalClusterIdentifier' - The cluster identifier of the new global cluster.
+--
+-- 'kmsKeyId', 'createDBCluster_kmsKeyId' - The KMS key identifier for an encrypted cluster.
+--
+-- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+-- encryption key. If you are creating a cluster using the same Amazon Web
+-- Services account that owns the KMS encryption key that is used to
+-- encrypt the new cluster, you can use the KMS key alias instead of the
+-- ARN for the KMS encryption key.
+--
+-- If an encryption key is not specified in @KmsKeyId@:
+--
+-- -   If the @StorageEncrypted@ parameter is @true@, Amazon DocumentDB
+--     uses your default encryption key.
+--
+-- KMS creates the default encryption key for your Amazon Web Services
+-- account. Your Amazon Web Services account has a different default
+-- encryption key for each Amazon Web Services Regions.
+--
+-- 'masterUserPassword', 'createDBCluster_masterUserPassword' - The password for the master database user. This password can contain any
+-- printable ASCII character except forward slash (\/), double quote (\"),
+-- or the \"at\" symbol (\@).
+--
+-- Constraints: Must contain from 8 to 100 characters.
+--
+-- 'masterUsername', 'createDBCluster_masterUsername' - The name of the master user for the cluster.
+--
+-- Constraints:
+--
+-- -   Must be from 1 to 63 letters or numbers.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot be a reserved word for the chosen database engine.
+--
+-- 'port', 'createDBCluster_port' - The port number on which the instances in the cluster accept
+-- connections.
+--
+-- 'preSignedUrl', 'createDBCluster_preSignedUrl' - Not currently supported.
+--
+-- 'preferredBackupWindow', 'createDBCluster_preferredBackupWindow' - The daily time range during which automated backups are created if
+-- automated backups are enabled using the @BackupRetentionPeriod@
+-- parameter.
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region.
+--
+-- Constraints:
+--
+-- -   Must be in the format @hh24:mi-hh24:mi@.
+--
+-- -   Must be in Universal Coordinated Time (UTC).
+--
+-- -   Must not conflict with the preferred maintenance window.
+--
+-- -   Must be at least 30 minutes.
+--
+-- 'preferredMaintenanceWindow', 'createDBCluster_preferredMaintenanceWindow' - The weekly time range during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC).
+--
+-- Format: @ddd:hh24:mi-ddd:hh24:mi@
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region, occurring on a random
+-- day of the week.
+--
+-- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+--
+-- 'storageEncrypted', 'createDBCluster_storageEncrypted' - Specifies whether the cluster is encrypted.
+--
+-- 'tags', 'createDBCluster_tags' - The tags to be assigned to the cluster.
+--
+-- 'vpcSecurityGroupIds', 'createDBCluster_vpcSecurityGroupIds' - A list of EC2 VPC security groups to associate with this cluster.
+--
+-- 'dbClusterIdentifier', 'createDBCluster_dbClusterIdentifier' - The cluster identifier. This parameter is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster@
+--
+-- 'engine', 'createDBCluster_engine' - The name of the database engine to be used for this cluster.
+--
+-- Valid values: @docdb@
+newCreateDBCluster ::
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  -- | 'engine'
+  Prelude.Text ->
+  CreateDBCluster
+newCreateDBCluster pDBClusterIdentifier_ pEngine_ =
+  CreateDBCluster'
+    { availabilityZones =
+        Prelude.Nothing,
+      backupRetentionPeriod = Prelude.Nothing,
+      dbClusterParameterGroupName = Prelude.Nothing,
+      dbSubnetGroupName = Prelude.Nothing,
+      deletionProtection = Prelude.Nothing,
+      enableCloudwatchLogsExports = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      globalClusterIdentifier = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      masterUserPassword = Prelude.Nothing,
+      masterUsername = Prelude.Nothing,
+      port = Prelude.Nothing,
+      preSignedUrl = Prelude.Nothing,
+      preferredBackupWindow = Prelude.Nothing,
+      preferredMaintenanceWindow = Prelude.Nothing,
+      storageEncrypted = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      vpcSecurityGroupIds = Prelude.Nothing,
+      dbClusterIdentifier = pDBClusterIdentifier_,
+      engine = pEngine_
+    }
+
+-- | A list of Amazon EC2 Availability Zones that instances in the cluster
+-- can be created in.
+createDBCluster_availabilityZones :: Lens.Lens' CreateDBCluster (Prelude.Maybe [Prelude.Text])
+createDBCluster_availabilityZones = Lens.lens (\CreateDBCluster' {availabilityZones} -> availabilityZones) (\s@CreateDBCluster' {} a -> s {availabilityZones = a} :: CreateDBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of days for which automated backups are retained. You must
+-- specify a minimum value of 1.
+--
+-- Default: 1
+--
+-- Constraints:
+--
+-- -   Must be a value from 1 to 35.
+createDBCluster_backupRetentionPeriod :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Int)
+createDBCluster_backupRetentionPeriod = Lens.lens (\CreateDBCluster' {backupRetentionPeriod} -> backupRetentionPeriod) (\s@CreateDBCluster' {} a -> s {backupRetentionPeriod = a} :: CreateDBCluster)
+
+-- | The name of the cluster parameter group to associate with this cluster.
+createDBCluster_dbClusterParameterGroupName :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_dbClusterParameterGroupName = Lens.lens (\CreateDBCluster' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@CreateDBCluster' {} a -> s {dbClusterParameterGroupName = a} :: CreateDBCluster)
+
+-- | A subnet group to associate with this cluster.
+--
+-- Constraints: Must match the name of an existing @DBSubnetGroup@. Must
+-- not be default.
+--
+-- Example: @mySubnetgroup@
+createDBCluster_dbSubnetGroupName :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_dbSubnetGroupName = Lens.lens (\CreateDBCluster' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@CreateDBCluster' {} a -> s {dbSubnetGroupName = a} :: CreateDBCluster)
+
+-- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+createDBCluster_deletionProtection :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Bool)
+createDBCluster_deletionProtection = Lens.lens (\CreateDBCluster' {deletionProtection} -> deletionProtection) (\s@CreateDBCluster' {} a -> s {deletionProtection = a} :: CreateDBCluster)
+
+-- | A list of log types that need to be enabled for exporting to Amazon
+-- CloudWatch Logs. You can enable audit logs or profiler logs. For more
+-- information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/event-auditing.html Auditing Amazon DocumentDB Events>
+-- and
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/profiling.html Profiling Amazon DocumentDB Operations>.
+createDBCluster_enableCloudwatchLogsExports :: Lens.Lens' CreateDBCluster (Prelude.Maybe [Prelude.Text])
+createDBCluster_enableCloudwatchLogsExports = Lens.lens (\CreateDBCluster' {enableCloudwatchLogsExports} -> enableCloudwatchLogsExports) (\s@CreateDBCluster' {} a -> s {enableCloudwatchLogsExports = a} :: CreateDBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | The version number of the database engine to use. The @--engine-version@
+-- will default to the latest major engine version. For production
+-- workloads, we recommend explicitly declaring this parameter with the
+-- intended major engine version.
+createDBCluster_engineVersion :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_engineVersion = Lens.lens (\CreateDBCluster' {engineVersion} -> engineVersion) (\s@CreateDBCluster' {} a -> s {engineVersion = a} :: CreateDBCluster)
+
+-- | The cluster identifier of the new global cluster.
+createDBCluster_globalClusterIdentifier :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_globalClusterIdentifier = Lens.lens (\CreateDBCluster' {globalClusterIdentifier} -> globalClusterIdentifier) (\s@CreateDBCluster' {} a -> s {globalClusterIdentifier = a} :: CreateDBCluster)
+
+-- | The KMS key identifier for an encrypted cluster.
+--
+-- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+-- encryption key. If you are creating a cluster using the same Amazon Web
+-- Services account that owns the KMS encryption key that is used to
+-- encrypt the new cluster, you can use the KMS key alias instead of the
+-- ARN for the KMS encryption key.
+--
+-- If an encryption key is not specified in @KmsKeyId@:
+--
+-- -   If the @StorageEncrypted@ parameter is @true@, Amazon DocumentDB
+--     uses your default encryption key.
+--
+-- KMS creates the default encryption key for your Amazon Web Services
+-- account. Your Amazon Web Services account has a different default
+-- encryption key for each Amazon Web Services Regions.
+createDBCluster_kmsKeyId :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_kmsKeyId = Lens.lens (\CreateDBCluster' {kmsKeyId} -> kmsKeyId) (\s@CreateDBCluster' {} a -> s {kmsKeyId = a} :: CreateDBCluster)
+
+-- | The password for the master database user. This password can contain any
+-- printable ASCII character except forward slash (\/), double quote (\"),
+-- or the \"at\" symbol (\@).
+--
+-- Constraints: Must contain from 8 to 100 characters.
+createDBCluster_masterUserPassword :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_masterUserPassword = Lens.lens (\CreateDBCluster' {masterUserPassword} -> masterUserPassword) (\s@CreateDBCluster' {} a -> s {masterUserPassword = a} :: CreateDBCluster)
+
+-- | The name of the master user for the cluster.
+--
+-- Constraints:
+--
+-- -   Must be from 1 to 63 letters or numbers.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot be a reserved word for the chosen database engine.
+createDBCluster_masterUsername :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_masterUsername = Lens.lens (\CreateDBCluster' {masterUsername} -> masterUsername) (\s@CreateDBCluster' {} a -> s {masterUsername = a} :: CreateDBCluster)
+
+-- | The port number on which the instances in the cluster accept
+-- connections.
+createDBCluster_port :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Int)
+createDBCluster_port = Lens.lens (\CreateDBCluster' {port} -> port) (\s@CreateDBCluster' {} a -> s {port = a} :: CreateDBCluster)
+
+-- | Not currently supported.
+createDBCluster_preSignedUrl :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_preSignedUrl = Lens.lens (\CreateDBCluster' {preSignedUrl} -> preSignedUrl) (\s@CreateDBCluster' {} a -> s {preSignedUrl = a} :: CreateDBCluster)
+
+-- | The daily time range during which automated backups are created if
+-- automated backups are enabled using the @BackupRetentionPeriod@
+-- parameter.
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region.
+--
+-- Constraints:
+--
+-- -   Must be in the format @hh24:mi-hh24:mi@.
+--
+-- -   Must be in Universal Coordinated Time (UTC).
+--
+-- -   Must not conflict with the preferred maintenance window.
+--
+-- -   Must be at least 30 minutes.
+createDBCluster_preferredBackupWindow :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_preferredBackupWindow = Lens.lens (\CreateDBCluster' {preferredBackupWindow} -> preferredBackupWindow) (\s@CreateDBCluster' {} a -> s {preferredBackupWindow = a} :: CreateDBCluster)
+
+-- | The weekly time range during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC).
+--
+-- Format: @ddd:hh24:mi-ddd:hh24:mi@
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region, occurring on a random
+-- day of the week.
+--
+-- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+createDBCluster_preferredMaintenanceWindow :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
+createDBCluster_preferredMaintenanceWindow = Lens.lens (\CreateDBCluster' {preferredMaintenanceWindow} -> preferredMaintenanceWindow) (\s@CreateDBCluster' {} a -> s {preferredMaintenanceWindow = a} :: CreateDBCluster)
+
+-- | Specifies whether the cluster is encrypted.
+createDBCluster_storageEncrypted :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Bool)
+createDBCluster_storageEncrypted = Lens.lens (\CreateDBCluster' {storageEncrypted} -> storageEncrypted) (\s@CreateDBCluster' {} a -> s {storageEncrypted = a} :: CreateDBCluster)
+
+-- | The tags to be assigned to the cluster.
+createDBCluster_tags :: Lens.Lens' CreateDBCluster (Prelude.Maybe [Tag])
+createDBCluster_tags = Lens.lens (\CreateDBCluster' {tags} -> tags) (\s@CreateDBCluster' {} a -> s {tags = a} :: CreateDBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of EC2 VPC security groups to associate with this cluster.
+createDBCluster_vpcSecurityGroupIds :: Lens.Lens' CreateDBCluster (Prelude.Maybe [Prelude.Text])
+createDBCluster_vpcSecurityGroupIds = Lens.lens (\CreateDBCluster' {vpcSecurityGroupIds} -> vpcSecurityGroupIds) (\s@CreateDBCluster' {} a -> s {vpcSecurityGroupIds = a} :: CreateDBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | The cluster identifier. This parameter is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster@
+createDBCluster_dbClusterIdentifier :: Lens.Lens' CreateDBCluster Prelude.Text
+createDBCluster_dbClusterIdentifier = Lens.lens (\CreateDBCluster' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@CreateDBCluster' {} a -> s {dbClusterIdentifier = a} :: CreateDBCluster)
+
+-- | The name of the database engine to be used for this cluster.
+--
+-- Valid values: @docdb@
+createDBCluster_engine :: Lens.Lens' CreateDBCluster Prelude.Text
+createDBCluster_engine = Lens.lens (\CreateDBCluster' {engine} -> engine) (\s@CreateDBCluster' {} a -> s {engine = a} :: CreateDBCluster)
+
+instance Core.AWSRequest CreateDBCluster where
+  type
+    AWSResponse CreateDBCluster =
+      CreateDBClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateDBClusterResult"
+      ( \s h x ->
+          CreateDBClusterResponse'
+            Prelude.<$> (x Data..@? "DBCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDBCluster where
+  hashWithSalt _salt CreateDBCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZones
+      `Prelude.hashWithSalt` backupRetentionPeriod
+      `Prelude.hashWithSalt` dbClusterParameterGroupName
+      `Prelude.hashWithSalt` dbSubnetGroupName
+      `Prelude.hashWithSalt` deletionProtection
+      `Prelude.hashWithSalt` enableCloudwatchLogsExports
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` globalClusterIdentifier
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` masterUserPassword
+      `Prelude.hashWithSalt` masterUsername
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` preSignedUrl
+      `Prelude.hashWithSalt` preferredBackupWindow
+      `Prelude.hashWithSalt` preferredMaintenanceWindow
+      `Prelude.hashWithSalt` storageEncrypted
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcSecurityGroupIds
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` engine
+
+instance Prelude.NFData CreateDBCluster where
+  rnf CreateDBCluster' {..} =
+    Prelude.rnf availabilityZones
+      `Prelude.seq` Prelude.rnf backupRetentionPeriod
+      `Prelude.seq` Prelude.rnf dbClusterParameterGroupName
+      `Prelude.seq` Prelude.rnf dbSubnetGroupName
+      `Prelude.seq` Prelude.rnf deletionProtection
+      `Prelude.seq` Prelude.rnf enableCloudwatchLogsExports
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf globalClusterIdentifier
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf masterUserPassword
+      `Prelude.seq` Prelude.rnf masterUsername
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf preSignedUrl
+      `Prelude.seq` Prelude.rnf preferredBackupWindow
+      `Prelude.seq` Prelude.rnf preferredMaintenanceWindow
+      `Prelude.seq` Prelude.rnf storageEncrypted
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcSecurityGroupIds
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf engine
+
+instance Data.ToHeaders CreateDBCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateDBCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDBCluster where
+  toQuery CreateDBCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateDBCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "AvailabilityZones"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "AvailabilityZone"
+                Prelude.<$> availabilityZones
+            ),
+        "BackupRetentionPeriod"
+          Data.=: backupRetentionPeriod,
+        "DBClusterParameterGroupName"
+          Data.=: dbClusterParameterGroupName,
+        "DBSubnetGroupName" Data.=: dbSubnetGroupName,
+        "DeletionProtection" Data.=: deletionProtection,
+        "EnableCloudwatchLogsExports"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> enableCloudwatchLogsExports
+            ),
+        "EngineVersion" Data.=: engineVersion,
+        "GlobalClusterIdentifier"
+          Data.=: globalClusterIdentifier,
+        "KmsKeyId" Data.=: kmsKeyId,
+        "MasterUserPassword" Data.=: masterUserPassword,
+        "MasterUsername" Data.=: masterUsername,
+        "Port" Data.=: port,
+        "PreSignedUrl" Data.=: preSignedUrl,
+        "PreferredBackupWindow"
+          Data.=: preferredBackupWindow,
+        "PreferredMaintenanceWindow"
+          Data.=: preferredMaintenanceWindow,
+        "StorageEncrypted" Data.=: storageEncrypted,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "VpcSecurityGroupIds"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "VpcSecurityGroupId"
+                Prelude.<$> vpcSecurityGroupIds
+            ),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier,
+        "Engine" Data.=: engine
+      ]
+
+-- | /See:/ 'newCreateDBClusterResponse' smart constructor.
+data CreateDBClusterResponse = CreateDBClusterResponse'
+  { dbCluster :: Prelude.Maybe DBCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBClusterResponse' 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:
+--
+-- 'dbCluster', 'createDBClusterResponse_dbCluster' - Undocumented member.
+--
+-- 'httpStatus', 'createDBClusterResponse_httpStatus' - The response's http status code.
+newCreateDBClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDBClusterResponse
+newCreateDBClusterResponse pHttpStatus_ =
+  CreateDBClusterResponse'
+    { dbCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createDBClusterResponse_dbCluster :: Lens.Lens' CreateDBClusterResponse (Prelude.Maybe DBCluster)
+createDBClusterResponse_dbCluster = Lens.lens (\CreateDBClusterResponse' {dbCluster} -> dbCluster) (\s@CreateDBClusterResponse' {} a -> s {dbCluster = a} :: CreateDBClusterResponse)
+
+-- | The response's http status code.
+createDBClusterResponse_httpStatus :: Lens.Lens' CreateDBClusterResponse Prelude.Int
+createDBClusterResponse_httpStatus = Lens.lens (\CreateDBClusterResponse' {httpStatus} -> httpStatus) (\s@CreateDBClusterResponse' {} a -> s {httpStatus = a} :: CreateDBClusterResponse)
+
+instance Prelude.NFData CreateDBClusterResponse where
+  rnf CreateDBClusterResponse' {..} =
+    Prelude.rnf dbCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CreateDBClusterParameterGroup.hs b/gen/Amazonka/DocumentDB/CreateDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CreateDBClusterParameterGroup.hs
@@ -0,0 +1,262 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.CreateDBClusterParameterGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new cluster parameter group.
+--
+-- Parameters in a cluster parameter group apply to all of the instances in
+-- a cluster.
+--
+-- A cluster parameter group is initially created with the default
+-- parameters for the database engine used by instances in the cluster. In
+-- Amazon DocumentDB, you cannot make modifications directly to the
+-- @default.docdb3.6@ cluster parameter group. If your Amazon DocumentDB
+-- cluster is using the default cluster parameter group and you want to
+-- modify a value in it, you must first
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/cluster_parameter_group-create.html create a new parameter group>
+-- or
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/cluster_parameter_group-copy.html copy an existing parameter group>,
+-- modify it, and then apply the modified parameter group to your cluster.
+-- For the new cluster parameter group and associated settings to take
+-- effect, you must then reboot the instances in the cluster without
+-- failover. For more information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/cluster_parameter_group-modify.html Modifying Amazon DocumentDB Cluster Parameter Groups>.
+module Amazonka.DocumentDB.CreateDBClusterParameterGroup
+  ( -- * Creating a Request
+    CreateDBClusterParameterGroup (..),
+    newCreateDBClusterParameterGroup,
+
+    -- * Request Lenses
+    createDBClusterParameterGroup_tags,
+    createDBClusterParameterGroup_dbClusterParameterGroupName,
+    createDBClusterParameterGroup_dbParameterGroupFamily,
+    createDBClusterParameterGroup_description,
+
+    -- * Destructuring the Response
+    CreateDBClusterParameterGroupResponse (..),
+    newCreateDBClusterParameterGroupResponse,
+
+    -- * Response Lenses
+    createDBClusterParameterGroupResponse_dbClusterParameterGroup,
+    createDBClusterParameterGroupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input of CreateDBClusterParameterGroup.
+--
+-- /See:/ 'newCreateDBClusterParameterGroup' smart constructor.
+data CreateDBClusterParameterGroup = CreateDBClusterParameterGroup'
+  { -- | The tags to be assigned to the cluster parameter group.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the cluster parameter group.
+    --
+    -- Constraints:
+    --
+    -- -   Must not match the name of an existing @DBClusterParameterGroup@.
+    --
+    -- This value is stored as a lowercase string.
+    dbClusterParameterGroupName :: Prelude.Text,
+    -- | The cluster parameter group family name.
+    dbParameterGroupFamily :: Prelude.Text,
+    -- | The description for the cluster parameter group.
+    description :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBClusterParameterGroup' 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', 'createDBClusterParameterGroup_tags' - The tags to be assigned to the cluster parameter group.
+--
+-- 'dbClusterParameterGroupName', 'createDBClusterParameterGroup_dbClusterParameterGroupName' - The name of the cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must not match the name of an existing @DBClusterParameterGroup@.
+--
+-- This value is stored as a lowercase string.
+--
+-- 'dbParameterGroupFamily', 'createDBClusterParameterGroup_dbParameterGroupFamily' - The cluster parameter group family name.
+--
+-- 'description', 'createDBClusterParameterGroup_description' - The description for the cluster parameter group.
+newCreateDBClusterParameterGroup ::
+  -- | 'dbClusterParameterGroupName'
+  Prelude.Text ->
+  -- | 'dbParameterGroupFamily'
+  Prelude.Text ->
+  -- | 'description'
+  Prelude.Text ->
+  CreateDBClusterParameterGroup
+newCreateDBClusterParameterGroup
+  pDBClusterParameterGroupName_
+  pDBParameterGroupFamily_
+  pDescription_ =
+    CreateDBClusterParameterGroup'
+      { tags =
+          Prelude.Nothing,
+        dbClusterParameterGroupName =
+          pDBClusterParameterGroupName_,
+        dbParameterGroupFamily =
+          pDBParameterGroupFamily_,
+        description = pDescription_
+      }
+
+-- | The tags to be assigned to the cluster parameter group.
+createDBClusterParameterGroup_tags :: Lens.Lens' CreateDBClusterParameterGroup (Prelude.Maybe [Tag])
+createDBClusterParameterGroup_tags = Lens.lens (\CreateDBClusterParameterGroup' {tags} -> tags) (\s@CreateDBClusterParameterGroup' {} a -> s {tags = a} :: CreateDBClusterParameterGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must not match the name of an existing @DBClusterParameterGroup@.
+--
+-- This value is stored as a lowercase string.
+createDBClusterParameterGroup_dbClusterParameterGroupName :: Lens.Lens' CreateDBClusterParameterGroup Prelude.Text
+createDBClusterParameterGroup_dbClusterParameterGroupName = Lens.lens (\CreateDBClusterParameterGroup' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@CreateDBClusterParameterGroup' {} a -> s {dbClusterParameterGroupName = a} :: CreateDBClusterParameterGroup)
+
+-- | The cluster parameter group family name.
+createDBClusterParameterGroup_dbParameterGroupFamily :: Lens.Lens' CreateDBClusterParameterGroup Prelude.Text
+createDBClusterParameterGroup_dbParameterGroupFamily = Lens.lens (\CreateDBClusterParameterGroup' {dbParameterGroupFamily} -> dbParameterGroupFamily) (\s@CreateDBClusterParameterGroup' {} a -> s {dbParameterGroupFamily = a} :: CreateDBClusterParameterGroup)
+
+-- | The description for the cluster parameter group.
+createDBClusterParameterGroup_description :: Lens.Lens' CreateDBClusterParameterGroup Prelude.Text
+createDBClusterParameterGroup_description = Lens.lens (\CreateDBClusterParameterGroup' {description} -> description) (\s@CreateDBClusterParameterGroup' {} a -> s {description = a} :: CreateDBClusterParameterGroup)
+
+instance
+  Core.AWSRequest
+    CreateDBClusterParameterGroup
+  where
+  type
+    AWSResponse CreateDBClusterParameterGroup =
+      CreateDBClusterParameterGroupResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateDBClusterParameterGroupResult"
+      ( \s h x ->
+          CreateDBClusterParameterGroupResponse'
+            Prelude.<$> (x Data..@? "DBClusterParameterGroup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateDBClusterParameterGroup
+  where
+  hashWithSalt _salt CreateDBClusterParameterGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` dbClusterParameterGroupName
+      `Prelude.hashWithSalt` dbParameterGroupFamily
+      `Prelude.hashWithSalt` description
+
+instance Prelude.NFData CreateDBClusterParameterGroup where
+  rnf CreateDBClusterParameterGroup' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf dbClusterParameterGroupName
+      `Prelude.seq` Prelude.rnf dbParameterGroupFamily
+      `Prelude.seq` Prelude.rnf description
+
+instance Data.ToHeaders CreateDBClusterParameterGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateDBClusterParameterGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDBClusterParameterGroup where
+  toQuery CreateDBClusterParameterGroup' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "CreateDBClusterParameterGroup" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "DBClusterParameterGroupName"
+          Data.=: dbClusterParameterGroupName,
+        "DBParameterGroupFamily"
+          Data.=: dbParameterGroupFamily,
+        "Description" Data.=: description
+      ]
+
+-- | /See:/ 'newCreateDBClusterParameterGroupResponse' smart constructor.
+data CreateDBClusterParameterGroupResponse = CreateDBClusterParameterGroupResponse'
+  { dbClusterParameterGroup :: Prelude.Maybe DBClusterParameterGroup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBClusterParameterGroupResponse' 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:
+--
+-- 'dbClusterParameterGroup', 'createDBClusterParameterGroupResponse_dbClusterParameterGroup' - Undocumented member.
+--
+-- 'httpStatus', 'createDBClusterParameterGroupResponse_httpStatus' - The response's http status code.
+newCreateDBClusterParameterGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDBClusterParameterGroupResponse
+newCreateDBClusterParameterGroupResponse pHttpStatus_ =
+  CreateDBClusterParameterGroupResponse'
+    { dbClusterParameterGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createDBClusterParameterGroupResponse_dbClusterParameterGroup :: Lens.Lens' CreateDBClusterParameterGroupResponse (Prelude.Maybe DBClusterParameterGroup)
+createDBClusterParameterGroupResponse_dbClusterParameterGroup = Lens.lens (\CreateDBClusterParameterGroupResponse' {dbClusterParameterGroup} -> dbClusterParameterGroup) (\s@CreateDBClusterParameterGroupResponse' {} a -> s {dbClusterParameterGroup = a} :: CreateDBClusterParameterGroupResponse)
+
+-- | The response's http status code.
+createDBClusterParameterGroupResponse_httpStatus :: Lens.Lens' CreateDBClusterParameterGroupResponse Prelude.Int
+createDBClusterParameterGroupResponse_httpStatus = Lens.lens (\CreateDBClusterParameterGroupResponse' {httpStatus} -> httpStatus) (\s@CreateDBClusterParameterGroupResponse' {} a -> s {httpStatus = a} :: CreateDBClusterParameterGroupResponse)
+
+instance
+  Prelude.NFData
+    CreateDBClusterParameterGroupResponse
+  where
+  rnf CreateDBClusterParameterGroupResponse' {..} =
+    Prelude.rnf dbClusterParameterGroup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CreateDBClusterSnapshot.hs b/gen/Amazonka/DocumentDB/CreateDBClusterSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CreateDBClusterSnapshot.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.DocumentDB.CreateDBClusterSnapshot
+-- 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 snapshot of a cluster.
+module Amazonka.DocumentDB.CreateDBClusterSnapshot
+  ( -- * Creating a Request
+    CreateDBClusterSnapshot (..),
+    newCreateDBClusterSnapshot,
+
+    -- * Request Lenses
+    createDBClusterSnapshot_tags,
+    createDBClusterSnapshot_dbClusterSnapshotIdentifier,
+    createDBClusterSnapshot_dbClusterIdentifier,
+
+    -- * Destructuring the Response
+    CreateDBClusterSnapshotResponse (..),
+    newCreateDBClusterSnapshotResponse,
+
+    -- * Response Lenses
+    createDBClusterSnapshotResponse_dbClusterSnapshot,
+    createDBClusterSnapshotResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input of CreateDBClusterSnapshot.
+--
+-- /See:/ 'newCreateDBClusterSnapshot' smart constructor.
+data CreateDBClusterSnapshot = CreateDBClusterSnapshot'
+  { -- | The tags to be assigned to the cluster snapshot.
+    tags :: Prelude.Maybe [Tag],
+    -- | The identifier of the cluster snapshot. This parameter is stored as a
+    -- lowercase string.
+    --
+    -- Constraints:
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- Example: @my-cluster-snapshot1@
+    dbClusterSnapshotIdentifier :: Prelude.Text,
+    -- | The identifier of the cluster to create a snapshot for. This parameter
+    -- is not case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the identifier of an existing @DBCluster@.
+    --
+    -- Example: @my-cluster@
+    dbClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBClusterSnapshot' 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', 'createDBClusterSnapshot_tags' - The tags to be assigned to the cluster snapshot.
+--
+-- 'dbClusterSnapshotIdentifier', 'createDBClusterSnapshot_dbClusterSnapshotIdentifier' - The identifier of the cluster snapshot. This parameter is stored as a
+-- lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster-snapshot1@
+--
+-- 'dbClusterIdentifier', 'createDBClusterSnapshot_dbClusterIdentifier' - The identifier of the cluster to create a snapshot for. This parameter
+-- is not case sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBCluster@.
+--
+-- Example: @my-cluster@
+newCreateDBClusterSnapshot ::
+  -- | 'dbClusterSnapshotIdentifier'
+  Prelude.Text ->
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  CreateDBClusterSnapshot
+newCreateDBClusterSnapshot
+  pDBClusterSnapshotIdentifier_
+  pDBClusterIdentifier_ =
+    CreateDBClusterSnapshot'
+      { tags = Prelude.Nothing,
+        dbClusterSnapshotIdentifier =
+          pDBClusterSnapshotIdentifier_,
+        dbClusterIdentifier = pDBClusterIdentifier_
+      }
+
+-- | The tags to be assigned to the cluster snapshot.
+createDBClusterSnapshot_tags :: Lens.Lens' CreateDBClusterSnapshot (Prelude.Maybe [Tag])
+createDBClusterSnapshot_tags = Lens.lens (\CreateDBClusterSnapshot' {tags} -> tags) (\s@CreateDBClusterSnapshot' {} a -> s {tags = a} :: CreateDBClusterSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | The identifier of the cluster snapshot. This parameter is stored as a
+-- lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster-snapshot1@
+createDBClusterSnapshot_dbClusterSnapshotIdentifier :: Lens.Lens' CreateDBClusterSnapshot Prelude.Text
+createDBClusterSnapshot_dbClusterSnapshotIdentifier = Lens.lens (\CreateDBClusterSnapshot' {dbClusterSnapshotIdentifier} -> dbClusterSnapshotIdentifier) (\s@CreateDBClusterSnapshot' {} a -> s {dbClusterSnapshotIdentifier = a} :: CreateDBClusterSnapshot)
+
+-- | The identifier of the cluster to create a snapshot for. This parameter
+-- is not case sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBCluster@.
+--
+-- Example: @my-cluster@
+createDBClusterSnapshot_dbClusterIdentifier :: Lens.Lens' CreateDBClusterSnapshot Prelude.Text
+createDBClusterSnapshot_dbClusterIdentifier = Lens.lens (\CreateDBClusterSnapshot' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@CreateDBClusterSnapshot' {} a -> s {dbClusterIdentifier = a} :: CreateDBClusterSnapshot)
+
+instance Core.AWSRequest CreateDBClusterSnapshot where
+  type
+    AWSResponse CreateDBClusterSnapshot =
+      CreateDBClusterSnapshotResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateDBClusterSnapshotResult"
+      ( \s h x ->
+          CreateDBClusterSnapshotResponse'
+            Prelude.<$> (x Data..@? "DBClusterSnapshot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDBClusterSnapshot where
+  hashWithSalt _salt CreateDBClusterSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` dbClusterSnapshotIdentifier
+      `Prelude.hashWithSalt` dbClusterIdentifier
+
+instance Prelude.NFData CreateDBClusterSnapshot where
+  rnf CreateDBClusterSnapshot' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf dbClusterSnapshotIdentifier
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+
+instance Data.ToHeaders CreateDBClusterSnapshot where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateDBClusterSnapshot where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDBClusterSnapshot where
+  toQuery CreateDBClusterSnapshot' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateDBClusterSnapshot" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "DBClusterSnapshotIdentifier"
+          Data.=: dbClusterSnapshotIdentifier,
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier
+      ]
+
+-- | /See:/ 'newCreateDBClusterSnapshotResponse' smart constructor.
+data CreateDBClusterSnapshotResponse = CreateDBClusterSnapshotResponse'
+  { dbClusterSnapshot :: Prelude.Maybe DBClusterSnapshot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBClusterSnapshotResponse' 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:
+--
+-- 'dbClusterSnapshot', 'createDBClusterSnapshotResponse_dbClusterSnapshot' - Undocumented member.
+--
+-- 'httpStatus', 'createDBClusterSnapshotResponse_httpStatus' - The response's http status code.
+newCreateDBClusterSnapshotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDBClusterSnapshotResponse
+newCreateDBClusterSnapshotResponse pHttpStatus_ =
+  CreateDBClusterSnapshotResponse'
+    { dbClusterSnapshot =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createDBClusterSnapshotResponse_dbClusterSnapshot :: Lens.Lens' CreateDBClusterSnapshotResponse (Prelude.Maybe DBClusterSnapshot)
+createDBClusterSnapshotResponse_dbClusterSnapshot = Lens.lens (\CreateDBClusterSnapshotResponse' {dbClusterSnapshot} -> dbClusterSnapshot) (\s@CreateDBClusterSnapshotResponse' {} a -> s {dbClusterSnapshot = a} :: CreateDBClusterSnapshotResponse)
+
+-- | The response's http status code.
+createDBClusterSnapshotResponse_httpStatus :: Lens.Lens' CreateDBClusterSnapshotResponse Prelude.Int
+createDBClusterSnapshotResponse_httpStatus = Lens.lens (\CreateDBClusterSnapshotResponse' {httpStatus} -> httpStatus) (\s@CreateDBClusterSnapshotResponse' {} a -> s {httpStatus = a} :: CreateDBClusterSnapshotResponse)
+
+instance
+  Prelude.NFData
+    CreateDBClusterSnapshotResponse
+  where
+  rnf CreateDBClusterSnapshotResponse' {..} =
+    Prelude.rnf dbClusterSnapshot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CreateDBInstance.hs b/gen/Amazonka/DocumentDB/CreateDBInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CreateDBInstance.hs
@@ -0,0 +1,472 @@
+{-# 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.DocumentDB.CreateDBInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new instance.
+module Amazonka.DocumentDB.CreateDBInstance
+  ( -- * Creating a Request
+    CreateDBInstance (..),
+    newCreateDBInstance,
+
+    -- * Request Lenses
+    createDBInstance_autoMinorVersionUpgrade,
+    createDBInstance_availabilityZone,
+    createDBInstance_copyTagsToSnapshot,
+    createDBInstance_enablePerformanceInsights,
+    createDBInstance_performanceInsightsKMSKeyId,
+    createDBInstance_preferredMaintenanceWindow,
+    createDBInstance_promotionTier,
+    createDBInstance_tags,
+    createDBInstance_dbInstanceIdentifier,
+    createDBInstance_dbInstanceClass,
+    createDBInstance_engine,
+    createDBInstance_dbClusterIdentifier,
+
+    -- * Destructuring the Response
+    CreateDBInstanceResponse (..),
+    newCreateDBInstanceResponse,
+
+    -- * Response Lenses
+    createDBInstanceResponse_dbInstance,
+    createDBInstanceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to CreateDBInstance.
+--
+-- /See:/ 'newCreateDBInstance' smart constructor.
+data CreateDBInstance = CreateDBInstance'
+  { -- | This parameter does not apply to Amazon DocumentDB. Amazon DocumentDB
+    -- does not perform minor version upgrades regardless of the value set.
+    --
+    -- Default: @false@
+    autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon EC2 Availability Zone that the instance is created in.
+    --
+    -- Default: A random, system-chosen Availability Zone in the endpoint\'s
+    -- Amazon Web Services Region.
+    --
+    -- Example: @us-east-1d@
+    availabilityZone :: Prelude.Maybe Prelude.Text,
+    -- | A value that indicates whether to copy tags from the DB instance to
+    -- snapshots of the DB instance. By default, tags are not copied.
+    copyTagsToSnapshot :: Prelude.Maybe Prelude.Bool,
+    -- | A value that indicates whether to enable Performance Insights for the DB
+    -- Instance. For more information, see
+    -- <https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights.html Using Amazon Performance Insights>.
+    enablePerformanceInsights :: Prelude.Maybe Prelude.Bool,
+    -- | The KMS key identifier for encryption of Performance Insights data.
+    --
+    -- The KMS key identifier is the key ARN, key ID, alias ARN, or alias name
+    -- for the KMS key.
+    --
+    -- If you do not specify a value for PerformanceInsightsKMSKeyId, then
+    -- Amazon DocumentDB uses your default KMS key. There is a default KMS key
+    -- for your Amazon Web Services account. Your Amazon Web Services account
+    -- has a different default KMS key for each Amazon Web Services region.
+    performanceInsightsKMSKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The time range each week during which system maintenance can occur, in
+    -- Universal Coordinated Time (UTC).
+    --
+    -- Format: @ddd:hh24:mi-ddd:hh24:mi@
+    --
+    -- The default is a 30-minute window selected at random from an 8-hour
+    -- block of time for each Amazon Web Services Region, occurring on a random
+    -- day of the week.
+    --
+    -- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+    --
+    -- Constraints: Minimum 30-minute window.
+    preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
+    -- | A value that specifies the order in which an Amazon DocumentDB replica
+    -- is promoted to the primary instance after a failure of the existing
+    -- primary instance.
+    --
+    -- Default: 1
+    --
+    -- Valid values: 0-15
+    promotionTier :: Prelude.Maybe Prelude.Int,
+    -- | The tags to be assigned to the instance. You can assign up to 10 tags to
+    -- an instance.
+    tags :: Prelude.Maybe [Tag],
+    -- | The instance identifier. This parameter is stored as a lowercase string.
+    --
+    -- Constraints:
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- Example: @mydbinstance@
+    dbInstanceIdentifier :: Prelude.Text,
+    -- | The compute and memory capacity of the instance; for example,
+    -- @db.r5.large@.
+    dbInstanceClass :: Prelude.Text,
+    -- | The name of the database engine to be used for this instance.
+    --
+    -- Valid value: @docdb@
+    engine :: Prelude.Text,
+    -- | The identifier of the cluster that the instance will belong to.
+    dbClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBInstance' 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:
+--
+-- 'autoMinorVersionUpgrade', 'createDBInstance_autoMinorVersionUpgrade' - This parameter does not apply to Amazon DocumentDB. Amazon DocumentDB
+-- does not perform minor version upgrades regardless of the value set.
+--
+-- Default: @false@
+--
+-- 'availabilityZone', 'createDBInstance_availabilityZone' - The Amazon EC2 Availability Zone that the instance is created in.
+--
+-- Default: A random, system-chosen Availability Zone in the endpoint\'s
+-- Amazon Web Services Region.
+--
+-- Example: @us-east-1d@
+--
+-- 'copyTagsToSnapshot', 'createDBInstance_copyTagsToSnapshot' - A value that indicates whether to copy tags from the DB instance to
+-- snapshots of the DB instance. By default, tags are not copied.
+--
+-- 'enablePerformanceInsights', 'createDBInstance_enablePerformanceInsights' - A value that indicates whether to enable Performance Insights for the DB
+-- Instance. For more information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights.html Using Amazon Performance Insights>.
+--
+-- 'performanceInsightsKMSKeyId', 'createDBInstance_performanceInsightsKMSKeyId' - The KMS key identifier for encryption of Performance Insights data.
+--
+-- The KMS key identifier is the key ARN, key ID, alias ARN, or alias name
+-- for the KMS key.
+--
+-- If you do not specify a value for PerformanceInsightsKMSKeyId, then
+-- Amazon DocumentDB uses your default KMS key. There is a default KMS key
+-- for your Amazon Web Services account. Your Amazon Web Services account
+-- has a different default KMS key for each Amazon Web Services region.
+--
+-- 'preferredMaintenanceWindow', 'createDBInstance_preferredMaintenanceWindow' - The time range each week during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC).
+--
+-- Format: @ddd:hh24:mi-ddd:hh24:mi@
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region, occurring on a random
+-- day of the week.
+--
+-- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+--
+-- 'promotionTier', 'createDBInstance_promotionTier' - A value that specifies the order in which an Amazon DocumentDB replica
+-- is promoted to the primary instance after a failure of the existing
+-- primary instance.
+--
+-- Default: 1
+--
+-- Valid values: 0-15
+--
+-- 'tags', 'createDBInstance_tags' - The tags to be assigned to the instance. You can assign up to 10 tags to
+-- an instance.
+--
+-- 'dbInstanceIdentifier', 'createDBInstance_dbInstanceIdentifier' - The instance identifier. This parameter is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @mydbinstance@
+--
+-- 'dbInstanceClass', 'createDBInstance_dbInstanceClass' - The compute and memory capacity of the instance; for example,
+-- @db.r5.large@.
+--
+-- 'engine', 'createDBInstance_engine' - The name of the database engine to be used for this instance.
+--
+-- Valid value: @docdb@
+--
+-- 'dbClusterIdentifier', 'createDBInstance_dbClusterIdentifier' - The identifier of the cluster that the instance will belong to.
+newCreateDBInstance ::
+  -- | 'dbInstanceIdentifier'
+  Prelude.Text ->
+  -- | 'dbInstanceClass'
+  Prelude.Text ->
+  -- | 'engine'
+  Prelude.Text ->
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  CreateDBInstance
+newCreateDBInstance
+  pDBInstanceIdentifier_
+  pDBInstanceClass_
+  pEngine_
+  pDBClusterIdentifier_ =
+    CreateDBInstance'
+      { autoMinorVersionUpgrade =
+          Prelude.Nothing,
+        availabilityZone = Prelude.Nothing,
+        copyTagsToSnapshot = Prelude.Nothing,
+        enablePerformanceInsights = Prelude.Nothing,
+        performanceInsightsKMSKeyId = Prelude.Nothing,
+        preferredMaintenanceWindow = Prelude.Nothing,
+        promotionTier = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        dbInstanceIdentifier = pDBInstanceIdentifier_,
+        dbInstanceClass = pDBInstanceClass_,
+        engine = pEngine_,
+        dbClusterIdentifier = pDBClusterIdentifier_
+      }
+
+-- | This parameter does not apply to Amazon DocumentDB. Amazon DocumentDB
+-- does not perform minor version upgrades regardless of the value set.
+--
+-- Default: @false@
+createDBInstance_autoMinorVersionUpgrade :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
+createDBInstance_autoMinorVersionUpgrade = Lens.lens (\CreateDBInstance' {autoMinorVersionUpgrade} -> autoMinorVersionUpgrade) (\s@CreateDBInstance' {} a -> s {autoMinorVersionUpgrade = a} :: CreateDBInstance)
+
+-- | The Amazon EC2 Availability Zone that the instance is created in.
+--
+-- Default: A random, system-chosen Availability Zone in the endpoint\'s
+-- Amazon Web Services Region.
+--
+-- Example: @us-east-1d@
+createDBInstance_availabilityZone :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
+createDBInstance_availabilityZone = Lens.lens (\CreateDBInstance' {availabilityZone} -> availabilityZone) (\s@CreateDBInstance' {} a -> s {availabilityZone = a} :: CreateDBInstance)
+
+-- | A value that indicates whether to copy tags from the DB instance to
+-- snapshots of the DB instance. By default, tags are not copied.
+createDBInstance_copyTagsToSnapshot :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
+createDBInstance_copyTagsToSnapshot = Lens.lens (\CreateDBInstance' {copyTagsToSnapshot} -> copyTagsToSnapshot) (\s@CreateDBInstance' {} a -> s {copyTagsToSnapshot = a} :: CreateDBInstance)
+
+-- | A value that indicates whether to enable Performance Insights for the DB
+-- Instance. For more information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights.html Using Amazon Performance Insights>.
+createDBInstance_enablePerformanceInsights :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
+createDBInstance_enablePerformanceInsights = Lens.lens (\CreateDBInstance' {enablePerformanceInsights} -> enablePerformanceInsights) (\s@CreateDBInstance' {} a -> s {enablePerformanceInsights = a} :: CreateDBInstance)
+
+-- | The KMS key identifier for encryption of Performance Insights data.
+--
+-- The KMS key identifier is the key ARN, key ID, alias ARN, or alias name
+-- for the KMS key.
+--
+-- If you do not specify a value for PerformanceInsightsKMSKeyId, then
+-- Amazon DocumentDB uses your default KMS key. There is a default KMS key
+-- for your Amazon Web Services account. Your Amazon Web Services account
+-- has a different default KMS key for each Amazon Web Services region.
+createDBInstance_performanceInsightsKMSKeyId :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
+createDBInstance_performanceInsightsKMSKeyId = Lens.lens (\CreateDBInstance' {performanceInsightsKMSKeyId} -> performanceInsightsKMSKeyId) (\s@CreateDBInstance' {} a -> s {performanceInsightsKMSKeyId = a} :: CreateDBInstance)
+
+-- | The time range each week during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC).
+--
+-- Format: @ddd:hh24:mi-ddd:hh24:mi@
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region, occurring on a random
+-- day of the week.
+--
+-- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+createDBInstance_preferredMaintenanceWindow :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
+createDBInstance_preferredMaintenanceWindow = Lens.lens (\CreateDBInstance' {preferredMaintenanceWindow} -> preferredMaintenanceWindow) (\s@CreateDBInstance' {} a -> s {preferredMaintenanceWindow = a} :: CreateDBInstance)
+
+-- | A value that specifies the order in which an Amazon DocumentDB replica
+-- is promoted to the primary instance after a failure of the existing
+-- primary instance.
+--
+-- Default: 1
+--
+-- Valid values: 0-15
+createDBInstance_promotionTier :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
+createDBInstance_promotionTier = Lens.lens (\CreateDBInstance' {promotionTier} -> promotionTier) (\s@CreateDBInstance' {} a -> s {promotionTier = a} :: CreateDBInstance)
+
+-- | The tags to be assigned to the instance. You can assign up to 10 tags to
+-- an instance.
+createDBInstance_tags :: Lens.Lens' CreateDBInstance (Prelude.Maybe [Tag])
+createDBInstance_tags = Lens.lens (\CreateDBInstance' {tags} -> tags) (\s@CreateDBInstance' {} a -> s {tags = a} :: CreateDBInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | The instance identifier. This parameter is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @mydbinstance@
+createDBInstance_dbInstanceIdentifier :: Lens.Lens' CreateDBInstance Prelude.Text
+createDBInstance_dbInstanceIdentifier = Lens.lens (\CreateDBInstance' {dbInstanceIdentifier} -> dbInstanceIdentifier) (\s@CreateDBInstance' {} a -> s {dbInstanceIdentifier = a} :: CreateDBInstance)
+
+-- | The compute and memory capacity of the instance; for example,
+-- @db.r5.large@.
+createDBInstance_dbInstanceClass :: Lens.Lens' CreateDBInstance Prelude.Text
+createDBInstance_dbInstanceClass = Lens.lens (\CreateDBInstance' {dbInstanceClass} -> dbInstanceClass) (\s@CreateDBInstance' {} a -> s {dbInstanceClass = a} :: CreateDBInstance)
+
+-- | The name of the database engine to be used for this instance.
+--
+-- Valid value: @docdb@
+createDBInstance_engine :: Lens.Lens' CreateDBInstance Prelude.Text
+createDBInstance_engine = Lens.lens (\CreateDBInstance' {engine} -> engine) (\s@CreateDBInstance' {} a -> s {engine = a} :: CreateDBInstance)
+
+-- | The identifier of the cluster that the instance will belong to.
+createDBInstance_dbClusterIdentifier :: Lens.Lens' CreateDBInstance Prelude.Text
+createDBInstance_dbClusterIdentifier = Lens.lens (\CreateDBInstance' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@CreateDBInstance' {} a -> s {dbClusterIdentifier = a} :: CreateDBInstance)
+
+instance Core.AWSRequest CreateDBInstance where
+  type
+    AWSResponse CreateDBInstance =
+      CreateDBInstanceResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateDBInstanceResult"
+      ( \s h x ->
+          CreateDBInstanceResponse'
+            Prelude.<$> (x Data..@? "DBInstance")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDBInstance where
+  hashWithSalt _salt CreateDBInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoMinorVersionUpgrade
+      `Prelude.hashWithSalt` availabilityZone
+      `Prelude.hashWithSalt` copyTagsToSnapshot
+      `Prelude.hashWithSalt` enablePerformanceInsights
+      `Prelude.hashWithSalt` performanceInsightsKMSKeyId
+      `Prelude.hashWithSalt` preferredMaintenanceWindow
+      `Prelude.hashWithSalt` promotionTier
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` dbInstanceIdentifier
+      `Prelude.hashWithSalt` dbInstanceClass
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` dbClusterIdentifier
+
+instance Prelude.NFData CreateDBInstance where
+  rnf CreateDBInstance' {..} =
+    Prelude.rnf autoMinorVersionUpgrade
+      `Prelude.seq` Prelude.rnf availabilityZone
+      `Prelude.seq` Prelude.rnf copyTagsToSnapshot
+      `Prelude.seq` Prelude.rnf enablePerformanceInsights
+      `Prelude.seq` Prelude.rnf performanceInsightsKMSKeyId
+      `Prelude.seq` Prelude.rnf preferredMaintenanceWindow
+      `Prelude.seq` Prelude.rnf promotionTier
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf dbInstanceIdentifier
+      `Prelude.seq` Prelude.rnf dbInstanceClass
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+
+instance Data.ToHeaders CreateDBInstance where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateDBInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDBInstance where
+  toQuery CreateDBInstance' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateDBInstance" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "AutoMinorVersionUpgrade"
+          Data.=: autoMinorVersionUpgrade,
+        "AvailabilityZone" Data.=: availabilityZone,
+        "CopyTagsToSnapshot" Data.=: copyTagsToSnapshot,
+        "EnablePerformanceInsights"
+          Data.=: enablePerformanceInsights,
+        "PerformanceInsightsKMSKeyId"
+          Data.=: performanceInsightsKMSKeyId,
+        "PreferredMaintenanceWindow"
+          Data.=: preferredMaintenanceWindow,
+        "PromotionTier" Data.=: promotionTier,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "DBInstanceIdentifier" Data.=: dbInstanceIdentifier,
+        "DBInstanceClass" Data.=: dbInstanceClass,
+        "Engine" Data.=: engine,
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier
+      ]
+
+-- | /See:/ 'newCreateDBInstanceResponse' smart constructor.
+data CreateDBInstanceResponse = CreateDBInstanceResponse'
+  { dbInstance :: Prelude.Maybe DBInstance,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBInstanceResponse' 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:
+--
+-- 'dbInstance', 'createDBInstanceResponse_dbInstance' - Undocumented member.
+--
+-- 'httpStatus', 'createDBInstanceResponse_httpStatus' - The response's http status code.
+newCreateDBInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDBInstanceResponse
+newCreateDBInstanceResponse pHttpStatus_ =
+  CreateDBInstanceResponse'
+    { dbInstance =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createDBInstanceResponse_dbInstance :: Lens.Lens' CreateDBInstanceResponse (Prelude.Maybe DBInstance)
+createDBInstanceResponse_dbInstance = Lens.lens (\CreateDBInstanceResponse' {dbInstance} -> dbInstance) (\s@CreateDBInstanceResponse' {} a -> s {dbInstance = a} :: CreateDBInstanceResponse)
+
+-- | The response's http status code.
+createDBInstanceResponse_httpStatus :: Lens.Lens' CreateDBInstanceResponse Prelude.Int
+createDBInstanceResponse_httpStatus = Lens.lens (\CreateDBInstanceResponse' {httpStatus} -> httpStatus) (\s@CreateDBInstanceResponse' {} a -> s {httpStatus = a} :: CreateDBInstanceResponse)
+
+instance Prelude.NFData CreateDBInstanceResponse where
+  rnf CreateDBInstanceResponse' {..} =
+    Prelude.rnf dbInstance
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CreateDBSubnetGroup.hs b/gen/Amazonka/DocumentDB/CreateDBSubnetGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CreateDBSubnetGroup.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.DocumentDB.CreateDBSubnetGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new subnet group. subnet groups must contain at least one
+-- subnet in at least two Availability Zones in the Amazon Web Services
+-- Region.
+module Amazonka.DocumentDB.CreateDBSubnetGroup
+  ( -- * Creating a Request
+    CreateDBSubnetGroup (..),
+    newCreateDBSubnetGroup,
+
+    -- * Request Lenses
+    createDBSubnetGroup_tags,
+    createDBSubnetGroup_dbSubnetGroupName,
+    createDBSubnetGroup_dbSubnetGroupDescription,
+    createDBSubnetGroup_subnetIds,
+
+    -- * Destructuring the Response
+    CreateDBSubnetGroupResponse (..),
+    newCreateDBSubnetGroupResponse,
+
+    -- * Response Lenses
+    createDBSubnetGroupResponse_dbSubnetGroup,
+    createDBSubnetGroupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to CreateDBSubnetGroup.
+--
+-- /See:/ 'newCreateDBSubnetGroup' smart constructor.
+data CreateDBSubnetGroup = CreateDBSubnetGroup'
+  { -- | The tags to be assigned to the subnet group.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name for the subnet group. This value is stored as a lowercase
+    -- string.
+    --
+    -- Constraints: Must contain no more than 255 letters, numbers, periods,
+    -- underscores, spaces, or hyphens. Must not be default.
+    --
+    -- Example: @mySubnetgroup@
+    dbSubnetGroupName :: Prelude.Text,
+    -- | The description for the subnet group.
+    dbSubnetGroupDescription :: Prelude.Text,
+    -- | The Amazon EC2 subnet IDs for the subnet group.
+    subnetIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBSubnetGroup' 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', 'createDBSubnetGroup_tags' - The tags to be assigned to the subnet group.
+--
+-- 'dbSubnetGroupName', 'createDBSubnetGroup_dbSubnetGroupName' - The name for the subnet group. This value is stored as a lowercase
+-- string.
+--
+-- Constraints: Must contain no more than 255 letters, numbers, periods,
+-- underscores, spaces, or hyphens. Must not be default.
+--
+-- Example: @mySubnetgroup@
+--
+-- 'dbSubnetGroupDescription', 'createDBSubnetGroup_dbSubnetGroupDescription' - The description for the subnet group.
+--
+-- 'subnetIds', 'createDBSubnetGroup_subnetIds' - The Amazon EC2 subnet IDs for the subnet group.
+newCreateDBSubnetGroup ::
+  -- | 'dbSubnetGroupName'
+  Prelude.Text ->
+  -- | 'dbSubnetGroupDescription'
+  Prelude.Text ->
+  CreateDBSubnetGroup
+newCreateDBSubnetGroup
+  pDBSubnetGroupName_
+  pDBSubnetGroupDescription_ =
+    CreateDBSubnetGroup'
+      { tags = Prelude.Nothing,
+        dbSubnetGroupName = pDBSubnetGroupName_,
+        dbSubnetGroupDescription =
+          pDBSubnetGroupDescription_,
+        subnetIds = Prelude.mempty
+      }
+
+-- | The tags to be assigned to the subnet group.
+createDBSubnetGroup_tags :: Lens.Lens' CreateDBSubnetGroup (Prelude.Maybe [Tag])
+createDBSubnetGroup_tags = Lens.lens (\CreateDBSubnetGroup' {tags} -> tags) (\s@CreateDBSubnetGroup' {} a -> s {tags = a} :: CreateDBSubnetGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name for the subnet group. This value is stored as a lowercase
+-- string.
+--
+-- Constraints: Must contain no more than 255 letters, numbers, periods,
+-- underscores, spaces, or hyphens. Must not be default.
+--
+-- Example: @mySubnetgroup@
+createDBSubnetGroup_dbSubnetGroupName :: Lens.Lens' CreateDBSubnetGroup Prelude.Text
+createDBSubnetGroup_dbSubnetGroupName = Lens.lens (\CreateDBSubnetGroup' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@CreateDBSubnetGroup' {} a -> s {dbSubnetGroupName = a} :: CreateDBSubnetGroup)
+
+-- | The description for the subnet group.
+createDBSubnetGroup_dbSubnetGroupDescription :: Lens.Lens' CreateDBSubnetGroup Prelude.Text
+createDBSubnetGroup_dbSubnetGroupDescription = Lens.lens (\CreateDBSubnetGroup' {dbSubnetGroupDescription} -> dbSubnetGroupDescription) (\s@CreateDBSubnetGroup' {} a -> s {dbSubnetGroupDescription = a} :: CreateDBSubnetGroup)
+
+-- | The Amazon EC2 subnet IDs for the subnet group.
+createDBSubnetGroup_subnetIds :: Lens.Lens' CreateDBSubnetGroup [Prelude.Text]
+createDBSubnetGroup_subnetIds = Lens.lens (\CreateDBSubnetGroup' {subnetIds} -> subnetIds) (\s@CreateDBSubnetGroup' {} a -> s {subnetIds = a} :: CreateDBSubnetGroup) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateDBSubnetGroup where
+  type
+    AWSResponse CreateDBSubnetGroup =
+      CreateDBSubnetGroupResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateDBSubnetGroupResult"
+      ( \s h x ->
+          CreateDBSubnetGroupResponse'
+            Prelude.<$> (x Data..@? "DBSubnetGroup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDBSubnetGroup where
+  hashWithSalt _salt CreateDBSubnetGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` dbSubnetGroupName
+      `Prelude.hashWithSalt` dbSubnetGroupDescription
+      `Prelude.hashWithSalt` subnetIds
+
+instance Prelude.NFData CreateDBSubnetGroup where
+  rnf CreateDBSubnetGroup' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf dbSubnetGroupName
+      `Prelude.seq` Prelude.rnf dbSubnetGroupDescription
+      `Prelude.seq` Prelude.rnf subnetIds
+
+instance Data.ToHeaders CreateDBSubnetGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateDBSubnetGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateDBSubnetGroup where
+  toQuery CreateDBSubnetGroup' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateDBSubnetGroup" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "DBSubnetGroupName" Data.=: dbSubnetGroupName,
+        "DBSubnetGroupDescription"
+          Data.=: dbSubnetGroupDescription,
+        "SubnetIds"
+          Data.=: Data.toQueryList "SubnetIdentifier" subnetIds
+      ]
+
+-- | /See:/ 'newCreateDBSubnetGroupResponse' smart constructor.
+data CreateDBSubnetGroupResponse = CreateDBSubnetGroupResponse'
+  { dbSubnetGroup :: Prelude.Maybe DBSubnetGroup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDBSubnetGroupResponse' 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:
+--
+-- 'dbSubnetGroup', 'createDBSubnetGroupResponse_dbSubnetGroup' - Undocumented member.
+--
+-- 'httpStatus', 'createDBSubnetGroupResponse_httpStatus' - The response's http status code.
+newCreateDBSubnetGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDBSubnetGroupResponse
+newCreateDBSubnetGroupResponse pHttpStatus_ =
+  CreateDBSubnetGroupResponse'
+    { dbSubnetGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createDBSubnetGroupResponse_dbSubnetGroup :: Lens.Lens' CreateDBSubnetGroupResponse (Prelude.Maybe DBSubnetGroup)
+createDBSubnetGroupResponse_dbSubnetGroup = Lens.lens (\CreateDBSubnetGroupResponse' {dbSubnetGroup} -> dbSubnetGroup) (\s@CreateDBSubnetGroupResponse' {} a -> s {dbSubnetGroup = a} :: CreateDBSubnetGroupResponse)
+
+-- | The response's http status code.
+createDBSubnetGroupResponse_httpStatus :: Lens.Lens' CreateDBSubnetGroupResponse Prelude.Int
+createDBSubnetGroupResponse_httpStatus = Lens.lens (\CreateDBSubnetGroupResponse' {httpStatus} -> httpStatus) (\s@CreateDBSubnetGroupResponse' {} a -> s {httpStatus = a} :: CreateDBSubnetGroupResponse)
+
+instance Prelude.NFData CreateDBSubnetGroupResponse where
+  rnf CreateDBSubnetGroupResponse' {..} =
+    Prelude.rnf dbSubnetGroup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CreateEventSubscription.hs b/gen/Amazonka/DocumentDB/CreateEventSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CreateEventSubscription.hs
@@ -0,0 +1,373 @@
+{-# 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.DocumentDB.CreateEventSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon DocumentDB event notification subscription. This
+-- action requires a topic Amazon Resource Name (ARN) created by using the
+-- Amazon DocumentDB console, the Amazon SNS console, or the Amazon SNS
+-- API. To obtain an ARN with Amazon SNS, you must create a topic in Amazon
+-- SNS and subscribe to the topic. The ARN is displayed in the Amazon SNS
+-- console.
+--
+-- You can specify the type of source (@SourceType@) that you want to be
+-- notified of. You can also provide a list of Amazon DocumentDB sources
+-- (@SourceIds@) that trigger the events, and you can provide a list of
+-- event categories (@EventCategories@) for events that you want to be
+-- notified of. For example, you can specify @SourceType = db-instance@,
+-- @SourceIds = mydbinstance1, mydbinstance2@ and
+-- @EventCategories = Availability, Backup@.
+--
+-- If you specify both the @SourceType@ and @SourceIds@ (such as
+-- @SourceType = db-instance@ and @SourceIdentifier = myDBInstance1@), you
+-- are notified of all the @db-instance@ events for the specified source.
+-- If you specify a @SourceType@ but do not specify a @SourceIdentifier@,
+-- you receive notice of the events for that source type for all your
+-- Amazon DocumentDB sources. If you do not specify either the @SourceType@
+-- or the @SourceIdentifier@, you are notified of events generated from all
+-- Amazon DocumentDB sources belonging to your customer account.
+module Amazonka.DocumentDB.CreateEventSubscription
+  ( -- * Creating a Request
+    CreateEventSubscription (..),
+    newCreateEventSubscription,
+
+    -- * Request Lenses
+    createEventSubscription_enabled,
+    createEventSubscription_eventCategories,
+    createEventSubscription_sourceIds,
+    createEventSubscription_sourceType,
+    createEventSubscription_tags,
+    createEventSubscription_subscriptionName,
+    createEventSubscription_snsTopicArn,
+
+    -- * Destructuring the Response
+    CreateEventSubscriptionResponse (..),
+    newCreateEventSubscriptionResponse,
+
+    -- * Response Lenses
+    createEventSubscriptionResponse_eventSubscription,
+    createEventSubscriptionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to CreateEventSubscription.
+--
+-- /See:/ 'newCreateEventSubscription' smart constructor.
+data CreateEventSubscription = CreateEventSubscription'
+  { -- | A Boolean value; set to @true@ to activate the subscription, set to
+    -- @false@ to create the subscription but not active it.
+    enabled :: Prelude.Maybe Prelude.Bool,
+    -- | A list of event categories for a @SourceType@ that you want to subscribe
+    -- to.
+    eventCategories :: Prelude.Maybe [Prelude.Text],
+    -- | The list of identifiers of the event sources for which events are
+    -- returned. If not specified, then all sources are included in the
+    -- response. An identifier must begin with a letter and must contain only
+    -- ASCII letters, digits, and hyphens; it can\'t end with a hyphen or
+    -- contain two consecutive hyphens.
+    --
+    -- Constraints:
+    --
+    -- -   If @SourceIds@ are provided, @SourceType@ must also be provided.
+    --
+    -- -   If the source type is an instance, a @DBInstanceIdentifier@ must be
+    --     provided.
+    --
+    -- -   If the source type is a security group, a @DBSecurityGroupName@ must
+    --     be provided.
+    --
+    -- -   If the source type is a parameter group, a @DBParameterGroupName@
+    --     must be provided.
+    --
+    -- -   If the source type is a snapshot, a @DBSnapshotIdentifier@ must be
+    --     provided.
+    sourceIds :: Prelude.Maybe [Prelude.Text],
+    -- | The type of source that is generating the events. For example, if you
+    -- want to be notified of events generated by an instance, you would set
+    -- this parameter to @db-instance@. If this value is not specified, all
+    -- events are returned.
+    --
+    -- Valid values: @db-instance@, @db-cluster@, @db-parameter-group@,
+    -- @db-security-group@, @db-cluster-snapshot@
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The tags to be assigned to the event subscription.
+    tags :: Prelude.Maybe [Tag],
+    -- | The name of the subscription.
+    --
+    -- Constraints: The name must be fewer than 255 characters.
+    subscriptionName :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the SNS topic created for event
+    -- notification. Amazon SNS creates the ARN when you create a topic and
+    -- subscribe to it.
+    snsTopicArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEventSubscription' 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:
+--
+-- 'enabled', 'createEventSubscription_enabled' - A Boolean value; set to @true@ to activate the subscription, set to
+-- @false@ to create the subscription but not active it.
+--
+-- 'eventCategories', 'createEventSubscription_eventCategories' - A list of event categories for a @SourceType@ that you want to subscribe
+-- to.
+--
+-- 'sourceIds', 'createEventSubscription_sourceIds' - The list of identifiers of the event sources for which events are
+-- returned. If not specified, then all sources are included in the
+-- response. An identifier must begin with a letter and must contain only
+-- ASCII letters, digits, and hyphens; it can\'t end with a hyphen or
+-- contain two consecutive hyphens.
+--
+-- Constraints:
+--
+-- -   If @SourceIds@ are provided, @SourceType@ must also be provided.
+--
+-- -   If the source type is an instance, a @DBInstanceIdentifier@ must be
+--     provided.
+--
+-- -   If the source type is a security group, a @DBSecurityGroupName@ must
+--     be provided.
+--
+-- -   If the source type is a parameter group, a @DBParameterGroupName@
+--     must be provided.
+--
+-- -   If the source type is a snapshot, a @DBSnapshotIdentifier@ must be
+--     provided.
+--
+-- 'sourceType', 'createEventSubscription_sourceType' - The type of source that is generating the events. For example, if you
+-- want to be notified of events generated by an instance, you would set
+-- this parameter to @db-instance@. If this value is not specified, all
+-- events are returned.
+--
+-- Valid values: @db-instance@, @db-cluster@, @db-parameter-group@,
+-- @db-security-group@, @db-cluster-snapshot@
+--
+-- 'tags', 'createEventSubscription_tags' - The tags to be assigned to the event subscription.
+--
+-- 'subscriptionName', 'createEventSubscription_subscriptionName' - The name of the subscription.
+--
+-- Constraints: The name must be fewer than 255 characters.
+--
+-- 'snsTopicArn', 'createEventSubscription_snsTopicArn' - The Amazon Resource Name (ARN) of the SNS topic created for event
+-- notification. Amazon SNS creates the ARN when you create a topic and
+-- subscribe to it.
+newCreateEventSubscription ::
+  -- | 'subscriptionName'
+  Prelude.Text ->
+  -- | 'snsTopicArn'
+  Prelude.Text ->
+  CreateEventSubscription
+newCreateEventSubscription
+  pSubscriptionName_
+  pSnsTopicArn_ =
+    CreateEventSubscription'
+      { enabled = Prelude.Nothing,
+        eventCategories = Prelude.Nothing,
+        sourceIds = Prelude.Nothing,
+        sourceType = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        subscriptionName = pSubscriptionName_,
+        snsTopicArn = pSnsTopicArn_
+      }
+
+-- | A Boolean value; set to @true@ to activate the subscription, set to
+-- @false@ to create the subscription but not active it.
+createEventSubscription_enabled :: Lens.Lens' CreateEventSubscription (Prelude.Maybe Prelude.Bool)
+createEventSubscription_enabled = Lens.lens (\CreateEventSubscription' {enabled} -> enabled) (\s@CreateEventSubscription' {} a -> s {enabled = a} :: CreateEventSubscription)
+
+-- | A list of event categories for a @SourceType@ that you want to subscribe
+-- to.
+createEventSubscription_eventCategories :: Lens.Lens' CreateEventSubscription (Prelude.Maybe [Prelude.Text])
+createEventSubscription_eventCategories = Lens.lens (\CreateEventSubscription' {eventCategories} -> eventCategories) (\s@CreateEventSubscription' {} a -> s {eventCategories = a} :: CreateEventSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The list of identifiers of the event sources for which events are
+-- returned. If not specified, then all sources are included in the
+-- response. An identifier must begin with a letter and must contain only
+-- ASCII letters, digits, and hyphens; it can\'t end with a hyphen or
+-- contain two consecutive hyphens.
+--
+-- Constraints:
+--
+-- -   If @SourceIds@ are provided, @SourceType@ must also be provided.
+--
+-- -   If the source type is an instance, a @DBInstanceIdentifier@ must be
+--     provided.
+--
+-- -   If the source type is a security group, a @DBSecurityGroupName@ must
+--     be provided.
+--
+-- -   If the source type is a parameter group, a @DBParameterGroupName@
+--     must be provided.
+--
+-- -   If the source type is a snapshot, a @DBSnapshotIdentifier@ must be
+--     provided.
+createEventSubscription_sourceIds :: Lens.Lens' CreateEventSubscription (Prelude.Maybe [Prelude.Text])
+createEventSubscription_sourceIds = Lens.lens (\CreateEventSubscription' {sourceIds} -> sourceIds) (\s@CreateEventSubscription' {} a -> s {sourceIds = a} :: CreateEventSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of source that is generating the events. For example, if you
+-- want to be notified of events generated by an instance, you would set
+-- this parameter to @db-instance@. If this value is not specified, all
+-- events are returned.
+--
+-- Valid values: @db-instance@, @db-cluster@, @db-parameter-group@,
+-- @db-security-group@, @db-cluster-snapshot@
+createEventSubscription_sourceType :: Lens.Lens' CreateEventSubscription (Prelude.Maybe Prelude.Text)
+createEventSubscription_sourceType = Lens.lens (\CreateEventSubscription' {sourceType} -> sourceType) (\s@CreateEventSubscription' {} a -> s {sourceType = a} :: CreateEventSubscription)
+
+-- | The tags to be assigned to the event subscription.
+createEventSubscription_tags :: Lens.Lens' CreateEventSubscription (Prelude.Maybe [Tag])
+createEventSubscription_tags = Lens.lens (\CreateEventSubscription' {tags} -> tags) (\s@CreateEventSubscription' {} a -> s {tags = a} :: CreateEventSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the subscription.
+--
+-- Constraints: The name must be fewer than 255 characters.
+createEventSubscription_subscriptionName :: Lens.Lens' CreateEventSubscription Prelude.Text
+createEventSubscription_subscriptionName = Lens.lens (\CreateEventSubscription' {subscriptionName} -> subscriptionName) (\s@CreateEventSubscription' {} a -> s {subscriptionName = a} :: CreateEventSubscription)
+
+-- | The Amazon Resource Name (ARN) of the SNS topic created for event
+-- notification. Amazon SNS creates the ARN when you create a topic and
+-- subscribe to it.
+createEventSubscription_snsTopicArn :: Lens.Lens' CreateEventSubscription Prelude.Text
+createEventSubscription_snsTopicArn = Lens.lens (\CreateEventSubscription' {snsTopicArn} -> snsTopicArn) (\s@CreateEventSubscription' {} a -> s {snsTopicArn = a} :: CreateEventSubscription)
+
+instance Core.AWSRequest CreateEventSubscription where
+  type
+    AWSResponse CreateEventSubscription =
+      CreateEventSubscriptionResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateEventSubscriptionResult"
+      ( \s h x ->
+          CreateEventSubscriptionResponse'
+            Prelude.<$> (x Data..@? "EventSubscription")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateEventSubscription where
+  hashWithSalt _salt CreateEventSubscription' {..} =
+    _salt
+      `Prelude.hashWithSalt` enabled
+      `Prelude.hashWithSalt` eventCategories
+      `Prelude.hashWithSalt` sourceIds
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` subscriptionName
+      `Prelude.hashWithSalt` snsTopicArn
+
+instance Prelude.NFData CreateEventSubscription where
+  rnf CreateEventSubscription' {..} =
+    Prelude.rnf enabled
+      `Prelude.seq` Prelude.rnf eventCategories
+      `Prelude.seq` Prelude.rnf sourceIds
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf subscriptionName
+      `Prelude.seq` Prelude.rnf snsTopicArn
+
+instance Data.ToHeaders CreateEventSubscription where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateEventSubscription where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateEventSubscription where
+  toQuery CreateEventSubscription' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateEventSubscription" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Enabled" Data.=: enabled,
+        "EventCategories"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "EventCategory"
+                Prelude.<$> eventCategories
+            ),
+        "SourceIds"
+          Data.=: Data.toQuery
+            (Data.toQueryList "SourceId" Prelude.<$> sourceIds),
+        "SourceType" Data.=: sourceType,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "SubscriptionName" Data.=: subscriptionName,
+        "SnsTopicArn" Data.=: snsTopicArn
+      ]
+
+-- | /See:/ 'newCreateEventSubscriptionResponse' smart constructor.
+data CreateEventSubscriptionResponse = CreateEventSubscriptionResponse'
+  { eventSubscription :: Prelude.Maybe EventSubscription,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateEventSubscriptionResponse' 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:
+--
+-- 'eventSubscription', 'createEventSubscriptionResponse_eventSubscription' - Undocumented member.
+--
+-- 'httpStatus', 'createEventSubscriptionResponse_httpStatus' - The response's http status code.
+newCreateEventSubscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateEventSubscriptionResponse
+newCreateEventSubscriptionResponse pHttpStatus_ =
+  CreateEventSubscriptionResponse'
+    { eventSubscription =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createEventSubscriptionResponse_eventSubscription :: Lens.Lens' CreateEventSubscriptionResponse (Prelude.Maybe EventSubscription)
+createEventSubscriptionResponse_eventSubscription = Lens.lens (\CreateEventSubscriptionResponse' {eventSubscription} -> eventSubscription) (\s@CreateEventSubscriptionResponse' {} a -> s {eventSubscription = a} :: CreateEventSubscriptionResponse)
+
+-- | The response's http status code.
+createEventSubscriptionResponse_httpStatus :: Lens.Lens' CreateEventSubscriptionResponse Prelude.Int
+createEventSubscriptionResponse_httpStatus = Lens.lens (\CreateEventSubscriptionResponse' {httpStatus} -> httpStatus) (\s@CreateEventSubscriptionResponse' {} a -> s {httpStatus = a} :: CreateEventSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    CreateEventSubscriptionResponse
+  where
+  rnf CreateEventSubscriptionResponse' {..} =
+    Prelude.rnf eventSubscription
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/CreateGlobalCluster.hs b/gen/Amazonka/DocumentDB/CreateGlobalCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/CreateGlobalCluster.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.DocumentDB.CreateGlobalCluster
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an Amazon DocumentDB global cluster that can span multiple
+-- multiple Amazon Web Services Regions. The global cluster contains one
+-- primary cluster with read-write capability, and up-to give read-only
+-- secondary clusters. Global clusters uses storage-based fast replication
+-- across regions with latencies less than one second, using dedicated
+-- infrastructure with no impact to your workload’s performance.
+--
+-- You can create a global cluster that is initially empty, and then add a
+-- primary and a secondary to it. Or you can specify an existing cluster
+-- during the create operation, and this cluster becomes the primary of the
+-- global cluster.
+--
+-- This action only applies to Amazon DocumentDB clusters.
+module Amazonka.DocumentDB.CreateGlobalCluster
+  ( -- * Creating a Request
+    CreateGlobalCluster (..),
+    newCreateGlobalCluster,
+
+    -- * Request Lenses
+    createGlobalCluster_databaseName,
+    createGlobalCluster_deletionProtection,
+    createGlobalCluster_engine,
+    createGlobalCluster_engineVersion,
+    createGlobalCluster_sourceDBClusterIdentifier,
+    createGlobalCluster_storageEncrypted,
+    createGlobalCluster_globalClusterIdentifier,
+
+    -- * Destructuring the Response
+    CreateGlobalClusterResponse (..),
+    newCreateGlobalClusterResponse,
+
+    -- * Response Lenses
+    createGlobalClusterResponse_globalCluster,
+    createGlobalClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to CreateGlobalCluster.
+--
+-- /See:/ 'newCreateGlobalCluster' smart constructor.
+data CreateGlobalCluster = CreateGlobalCluster'
+  { -- | The name for your database of up to 64 alpha-numeric characters. If you
+    -- do not provide a name, Amazon DocumentDB will not create a database in
+    -- the global cluster you are creating.
+    databaseName :: Prelude.Maybe Prelude.Text,
+    -- | The deletion protection setting for the new global cluster. The global
+    -- cluster can\'t be deleted when deletion protection is enabled.
+    deletionProtection :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the database engine to be used for this cluster.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | The engine version of the global cluster.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) to use as the primary cluster of the
+    -- global cluster. This parameter is optional.
+    sourceDBClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The storage encryption setting for the new global cluster.
+    storageEncrypted :: Prelude.Maybe Prelude.Bool,
+    -- | The cluster identifier of the new global cluster.
+    globalClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateGlobalCluster' 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:
+--
+-- 'databaseName', 'createGlobalCluster_databaseName' - The name for your database of up to 64 alpha-numeric characters. If you
+-- do not provide a name, Amazon DocumentDB will not create a database in
+-- the global cluster you are creating.
+--
+-- 'deletionProtection', 'createGlobalCluster_deletionProtection' - The deletion protection setting for the new global cluster. The global
+-- cluster can\'t be deleted when deletion protection is enabled.
+--
+-- 'engine', 'createGlobalCluster_engine' - The name of the database engine to be used for this cluster.
+--
+-- 'engineVersion', 'createGlobalCluster_engineVersion' - The engine version of the global cluster.
+--
+-- 'sourceDBClusterIdentifier', 'createGlobalCluster_sourceDBClusterIdentifier' - The Amazon Resource Name (ARN) to use as the primary cluster of the
+-- global cluster. This parameter is optional.
+--
+-- 'storageEncrypted', 'createGlobalCluster_storageEncrypted' - The storage encryption setting for the new global cluster.
+--
+-- 'globalClusterIdentifier', 'createGlobalCluster_globalClusterIdentifier' - The cluster identifier of the new global cluster.
+newCreateGlobalCluster ::
+  -- | 'globalClusterIdentifier'
+  Prelude.Text ->
+  CreateGlobalCluster
+newCreateGlobalCluster pGlobalClusterIdentifier_ =
+  CreateGlobalCluster'
+    { databaseName =
+        Prelude.Nothing,
+      deletionProtection = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      sourceDBClusterIdentifier = Prelude.Nothing,
+      storageEncrypted = Prelude.Nothing,
+      globalClusterIdentifier = pGlobalClusterIdentifier_
+    }
+
+-- | The name for your database of up to 64 alpha-numeric characters. If you
+-- do not provide a name, Amazon DocumentDB will not create a database in
+-- the global cluster you are creating.
+createGlobalCluster_databaseName :: Lens.Lens' CreateGlobalCluster (Prelude.Maybe Prelude.Text)
+createGlobalCluster_databaseName = Lens.lens (\CreateGlobalCluster' {databaseName} -> databaseName) (\s@CreateGlobalCluster' {} a -> s {databaseName = a} :: CreateGlobalCluster)
+
+-- | The deletion protection setting for the new global cluster. The global
+-- cluster can\'t be deleted when deletion protection is enabled.
+createGlobalCluster_deletionProtection :: Lens.Lens' CreateGlobalCluster (Prelude.Maybe Prelude.Bool)
+createGlobalCluster_deletionProtection = Lens.lens (\CreateGlobalCluster' {deletionProtection} -> deletionProtection) (\s@CreateGlobalCluster' {} a -> s {deletionProtection = a} :: CreateGlobalCluster)
+
+-- | The name of the database engine to be used for this cluster.
+createGlobalCluster_engine :: Lens.Lens' CreateGlobalCluster (Prelude.Maybe Prelude.Text)
+createGlobalCluster_engine = Lens.lens (\CreateGlobalCluster' {engine} -> engine) (\s@CreateGlobalCluster' {} a -> s {engine = a} :: CreateGlobalCluster)
+
+-- | The engine version of the global cluster.
+createGlobalCluster_engineVersion :: Lens.Lens' CreateGlobalCluster (Prelude.Maybe Prelude.Text)
+createGlobalCluster_engineVersion = Lens.lens (\CreateGlobalCluster' {engineVersion} -> engineVersion) (\s@CreateGlobalCluster' {} a -> s {engineVersion = a} :: CreateGlobalCluster)
+
+-- | The Amazon Resource Name (ARN) to use as the primary cluster of the
+-- global cluster. This parameter is optional.
+createGlobalCluster_sourceDBClusterIdentifier :: Lens.Lens' CreateGlobalCluster (Prelude.Maybe Prelude.Text)
+createGlobalCluster_sourceDBClusterIdentifier = Lens.lens (\CreateGlobalCluster' {sourceDBClusterIdentifier} -> sourceDBClusterIdentifier) (\s@CreateGlobalCluster' {} a -> s {sourceDBClusterIdentifier = a} :: CreateGlobalCluster)
+
+-- | The storage encryption setting for the new global cluster.
+createGlobalCluster_storageEncrypted :: Lens.Lens' CreateGlobalCluster (Prelude.Maybe Prelude.Bool)
+createGlobalCluster_storageEncrypted = Lens.lens (\CreateGlobalCluster' {storageEncrypted} -> storageEncrypted) (\s@CreateGlobalCluster' {} a -> s {storageEncrypted = a} :: CreateGlobalCluster)
+
+-- | The cluster identifier of the new global cluster.
+createGlobalCluster_globalClusterIdentifier :: Lens.Lens' CreateGlobalCluster Prelude.Text
+createGlobalCluster_globalClusterIdentifier = Lens.lens (\CreateGlobalCluster' {globalClusterIdentifier} -> globalClusterIdentifier) (\s@CreateGlobalCluster' {} a -> s {globalClusterIdentifier = a} :: CreateGlobalCluster)
+
+instance Core.AWSRequest CreateGlobalCluster where
+  type
+    AWSResponse CreateGlobalCluster =
+      CreateGlobalClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateGlobalClusterResult"
+      ( \s h x ->
+          CreateGlobalClusterResponse'
+            Prelude.<$> (x Data..@? "GlobalCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateGlobalCluster where
+  hashWithSalt _salt CreateGlobalCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` databaseName
+      `Prelude.hashWithSalt` deletionProtection
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` sourceDBClusterIdentifier
+      `Prelude.hashWithSalt` storageEncrypted
+      `Prelude.hashWithSalt` globalClusterIdentifier
+
+instance Prelude.NFData CreateGlobalCluster where
+  rnf CreateGlobalCluster' {..} =
+    Prelude.rnf databaseName
+      `Prelude.seq` Prelude.rnf deletionProtection
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf sourceDBClusterIdentifier
+      `Prelude.seq` Prelude.rnf storageEncrypted
+      `Prelude.seq` Prelude.rnf globalClusterIdentifier
+
+instance Data.ToHeaders CreateGlobalCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateGlobalCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateGlobalCluster where
+  toQuery CreateGlobalCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateGlobalCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DatabaseName" Data.=: databaseName,
+        "DeletionProtection" Data.=: deletionProtection,
+        "Engine" Data.=: engine,
+        "EngineVersion" Data.=: engineVersion,
+        "SourceDBClusterIdentifier"
+          Data.=: sourceDBClusterIdentifier,
+        "StorageEncrypted" Data.=: storageEncrypted,
+        "GlobalClusterIdentifier"
+          Data.=: globalClusterIdentifier
+      ]
+
+-- | /See:/ 'newCreateGlobalClusterResponse' smart constructor.
+data CreateGlobalClusterResponse = CreateGlobalClusterResponse'
+  { globalCluster :: Prelude.Maybe GlobalCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateGlobalClusterResponse' 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:
+--
+-- 'globalCluster', 'createGlobalClusterResponse_globalCluster' - Undocumented member.
+--
+-- 'httpStatus', 'createGlobalClusterResponse_httpStatus' - The response's http status code.
+newCreateGlobalClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateGlobalClusterResponse
+newCreateGlobalClusterResponse pHttpStatus_ =
+  CreateGlobalClusterResponse'
+    { globalCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createGlobalClusterResponse_globalCluster :: Lens.Lens' CreateGlobalClusterResponse (Prelude.Maybe GlobalCluster)
+createGlobalClusterResponse_globalCluster = Lens.lens (\CreateGlobalClusterResponse' {globalCluster} -> globalCluster) (\s@CreateGlobalClusterResponse' {} a -> s {globalCluster = a} :: CreateGlobalClusterResponse)
+
+-- | The response's http status code.
+createGlobalClusterResponse_httpStatus :: Lens.Lens' CreateGlobalClusterResponse Prelude.Int
+createGlobalClusterResponse_httpStatus = Lens.lens (\CreateGlobalClusterResponse' {httpStatus} -> httpStatus) (\s@CreateGlobalClusterResponse' {} a -> s {httpStatus = a} :: CreateGlobalClusterResponse)
+
+instance Prelude.NFData CreateGlobalClusterResponse where
+  rnf CreateGlobalClusterResponse' {..} =
+    Prelude.rnf globalCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DeleteDBCluster.hs b/gen/Amazonka/DocumentDB/DeleteDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DeleteDBCluster.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.DocumentDB.DeleteDBCluster
+-- 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 previously provisioned cluster. When you delete a cluster, all
+-- automated backups for that cluster are deleted and can\'t be recovered.
+-- Manual DB cluster snapshots of the specified cluster are not deleted.
+module Amazonka.DocumentDB.DeleteDBCluster
+  ( -- * Creating a Request
+    DeleteDBCluster (..),
+    newDeleteDBCluster,
+
+    -- * Request Lenses
+    deleteDBCluster_finalDBSnapshotIdentifier,
+    deleteDBCluster_skipFinalSnapshot,
+    deleteDBCluster_dbClusterIdentifier,
+
+    -- * Destructuring the Response
+    DeleteDBClusterResponse (..),
+    newDeleteDBClusterResponse,
+
+    -- * Response Lenses
+    deleteDBClusterResponse_dbCluster,
+    deleteDBClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DeleteDBCluster.
+--
+-- /See:/ 'newDeleteDBCluster' smart constructor.
+data DeleteDBCluster = DeleteDBCluster'
+  { -- | The cluster snapshot identifier of the new cluster snapshot created when
+    -- @SkipFinalSnapshot@ is set to @false@.
+    --
+    -- Specifying this parameter and also setting the @SkipFinalShapshot@
+    -- parameter to @true@ results in an error.
+    --
+    -- Constraints:
+    --
+    -- -   Must be from 1 to 255 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    finalDBSnapshotIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Determines whether a final cluster snapshot is created before the
+    -- cluster is deleted. If @true@ is specified, no cluster snapshot is
+    -- created. If @false@ is specified, a cluster snapshot is created before
+    -- the DB cluster is deleted.
+    --
+    -- If @SkipFinalSnapshot@ is @false@, you must specify a
+    -- @FinalDBSnapshotIdentifier@ parameter.
+    --
+    -- Default: @false@
+    skipFinalSnapshot :: Prelude.Maybe Prelude.Bool,
+    -- | The cluster identifier for the cluster to be deleted. This parameter
+    -- isn\'t case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must match an existing @DBClusterIdentifier@.
+    dbClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBCluster' 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:
+--
+-- 'finalDBSnapshotIdentifier', 'deleteDBCluster_finalDBSnapshotIdentifier' - The cluster snapshot identifier of the new cluster snapshot created when
+-- @SkipFinalSnapshot@ is set to @false@.
+--
+-- Specifying this parameter and also setting the @SkipFinalShapshot@
+-- parameter to @true@ results in an error.
+--
+-- Constraints:
+--
+-- -   Must be from 1 to 255 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- 'skipFinalSnapshot', 'deleteDBCluster_skipFinalSnapshot' - Determines whether a final cluster snapshot is created before the
+-- cluster is deleted. If @true@ is specified, no cluster snapshot is
+-- created. If @false@ is specified, a cluster snapshot is created before
+-- the DB cluster is deleted.
+--
+-- If @SkipFinalSnapshot@ is @false@, you must specify a
+-- @FinalDBSnapshotIdentifier@ parameter.
+--
+-- Default: @false@
+--
+-- 'dbClusterIdentifier', 'deleteDBCluster_dbClusterIdentifier' - The cluster identifier for the cluster to be deleted. This parameter
+-- isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   Must match an existing @DBClusterIdentifier@.
+newDeleteDBCluster ::
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  DeleteDBCluster
+newDeleteDBCluster pDBClusterIdentifier_ =
+  DeleteDBCluster'
+    { finalDBSnapshotIdentifier =
+        Prelude.Nothing,
+      skipFinalSnapshot = Prelude.Nothing,
+      dbClusterIdentifier = pDBClusterIdentifier_
+    }
+
+-- | The cluster snapshot identifier of the new cluster snapshot created when
+-- @SkipFinalSnapshot@ is set to @false@.
+--
+-- Specifying this parameter and also setting the @SkipFinalShapshot@
+-- parameter to @true@ results in an error.
+--
+-- Constraints:
+--
+-- -   Must be from 1 to 255 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+deleteDBCluster_finalDBSnapshotIdentifier :: Lens.Lens' DeleteDBCluster (Prelude.Maybe Prelude.Text)
+deleteDBCluster_finalDBSnapshotIdentifier = Lens.lens (\DeleteDBCluster' {finalDBSnapshotIdentifier} -> finalDBSnapshotIdentifier) (\s@DeleteDBCluster' {} a -> s {finalDBSnapshotIdentifier = a} :: DeleteDBCluster)
+
+-- | Determines whether a final cluster snapshot is created before the
+-- cluster is deleted. If @true@ is specified, no cluster snapshot is
+-- created. If @false@ is specified, a cluster snapshot is created before
+-- the DB cluster is deleted.
+--
+-- If @SkipFinalSnapshot@ is @false@, you must specify a
+-- @FinalDBSnapshotIdentifier@ parameter.
+--
+-- Default: @false@
+deleteDBCluster_skipFinalSnapshot :: Lens.Lens' DeleteDBCluster (Prelude.Maybe Prelude.Bool)
+deleteDBCluster_skipFinalSnapshot = Lens.lens (\DeleteDBCluster' {skipFinalSnapshot} -> skipFinalSnapshot) (\s@DeleteDBCluster' {} a -> s {skipFinalSnapshot = a} :: DeleteDBCluster)
+
+-- | The cluster identifier for the cluster to be deleted. This parameter
+-- isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   Must match an existing @DBClusterIdentifier@.
+deleteDBCluster_dbClusterIdentifier :: Lens.Lens' DeleteDBCluster Prelude.Text
+deleteDBCluster_dbClusterIdentifier = Lens.lens (\DeleteDBCluster' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@DeleteDBCluster' {} a -> s {dbClusterIdentifier = a} :: DeleteDBCluster)
+
+instance Core.AWSRequest DeleteDBCluster where
+  type
+    AWSResponse DeleteDBCluster =
+      DeleteDBClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteDBClusterResult"
+      ( \s h x ->
+          DeleteDBClusterResponse'
+            Prelude.<$> (x Data..@? "DBCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteDBCluster where
+  hashWithSalt _salt DeleteDBCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` finalDBSnapshotIdentifier
+      `Prelude.hashWithSalt` skipFinalSnapshot
+      `Prelude.hashWithSalt` dbClusterIdentifier
+
+instance Prelude.NFData DeleteDBCluster where
+  rnf DeleteDBCluster' {..} =
+    Prelude.rnf finalDBSnapshotIdentifier
+      `Prelude.seq` Prelude.rnf skipFinalSnapshot
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+
+instance Data.ToHeaders DeleteDBCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteDBCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDBCluster where
+  toQuery DeleteDBCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteDBCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "FinalDBSnapshotIdentifier"
+          Data.=: finalDBSnapshotIdentifier,
+        "SkipFinalSnapshot" Data.=: skipFinalSnapshot,
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier
+      ]
+
+-- | /See:/ 'newDeleteDBClusterResponse' smart constructor.
+data DeleteDBClusterResponse = DeleteDBClusterResponse'
+  { dbCluster :: Prelude.Maybe DBCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBClusterResponse' 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:
+--
+-- 'dbCluster', 'deleteDBClusterResponse_dbCluster' - Undocumented member.
+--
+-- 'httpStatus', 'deleteDBClusterResponse_httpStatus' - The response's http status code.
+newDeleteDBClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteDBClusterResponse
+newDeleteDBClusterResponse pHttpStatus_ =
+  DeleteDBClusterResponse'
+    { dbCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+deleteDBClusterResponse_dbCluster :: Lens.Lens' DeleteDBClusterResponse (Prelude.Maybe DBCluster)
+deleteDBClusterResponse_dbCluster = Lens.lens (\DeleteDBClusterResponse' {dbCluster} -> dbCluster) (\s@DeleteDBClusterResponse' {} a -> s {dbCluster = a} :: DeleteDBClusterResponse)
+
+-- | The response's http status code.
+deleteDBClusterResponse_httpStatus :: Lens.Lens' DeleteDBClusterResponse Prelude.Int
+deleteDBClusterResponse_httpStatus = Lens.lens (\DeleteDBClusterResponse' {httpStatus} -> httpStatus) (\s@DeleteDBClusterResponse' {} a -> s {httpStatus = a} :: DeleteDBClusterResponse)
+
+instance Prelude.NFData DeleteDBClusterResponse where
+  rnf DeleteDBClusterResponse' {..} =
+    Prelude.rnf dbCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DeleteDBClusterParameterGroup.hs b/gen/Amazonka/DocumentDB/DeleteDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DeleteDBClusterParameterGroup.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.DocumentDB.DeleteDBClusterParameterGroup
+-- 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 specified cluster parameter group. The cluster parameter group
+-- to be deleted can\'t be associated with any clusters.
+module Amazonka.DocumentDB.DeleteDBClusterParameterGroup
+  ( -- * Creating a Request
+    DeleteDBClusterParameterGroup (..),
+    newDeleteDBClusterParameterGroup,
+
+    -- * Request Lenses
+    deleteDBClusterParameterGroup_dbClusterParameterGroupName,
+
+    -- * Destructuring the Response
+    DeleteDBClusterParameterGroupResponse (..),
+    newDeleteDBClusterParameterGroupResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DeleteDBClusterParameterGroup.
+--
+-- /See:/ 'newDeleteDBClusterParameterGroup' smart constructor.
+data DeleteDBClusterParameterGroup = DeleteDBClusterParameterGroup'
+  { -- | The name of the cluster parameter group.
+    --
+    -- Constraints:
+    --
+    -- -   Must be the name of an existing cluster parameter group.
+    --
+    -- -   You can\'t delete a default cluster parameter group.
+    --
+    -- -   Cannot be associated with any clusters.
+    dbClusterParameterGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBClusterParameterGroup' 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:
+--
+-- 'dbClusterParameterGroupName', 'deleteDBClusterParameterGroup_dbClusterParameterGroupName' - The name of the cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must be the name of an existing cluster parameter group.
+--
+-- -   You can\'t delete a default cluster parameter group.
+--
+-- -   Cannot be associated with any clusters.
+newDeleteDBClusterParameterGroup ::
+  -- | 'dbClusterParameterGroupName'
+  Prelude.Text ->
+  DeleteDBClusterParameterGroup
+newDeleteDBClusterParameterGroup
+  pDBClusterParameterGroupName_ =
+    DeleteDBClusterParameterGroup'
+      { dbClusterParameterGroupName =
+          pDBClusterParameterGroupName_
+      }
+
+-- | The name of the cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must be the name of an existing cluster parameter group.
+--
+-- -   You can\'t delete a default cluster parameter group.
+--
+-- -   Cannot be associated with any clusters.
+deleteDBClusterParameterGroup_dbClusterParameterGroupName :: Lens.Lens' DeleteDBClusterParameterGroup Prelude.Text
+deleteDBClusterParameterGroup_dbClusterParameterGroupName = Lens.lens (\DeleteDBClusterParameterGroup' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@DeleteDBClusterParameterGroup' {} a -> s {dbClusterParameterGroupName = a} :: DeleteDBClusterParameterGroup)
+
+instance
+  Core.AWSRequest
+    DeleteDBClusterParameterGroup
+  where
+  type
+    AWSResponse DeleteDBClusterParameterGroup =
+      DeleteDBClusterParameterGroupResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteDBClusterParameterGroupResponse'
+
+instance
+  Prelude.Hashable
+    DeleteDBClusterParameterGroup
+  where
+  hashWithSalt _salt DeleteDBClusterParameterGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterParameterGroupName
+
+instance Prelude.NFData DeleteDBClusterParameterGroup where
+  rnf DeleteDBClusterParameterGroup' {..} =
+    Prelude.rnf dbClusterParameterGroupName
+
+instance Data.ToHeaders DeleteDBClusterParameterGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteDBClusterParameterGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDBClusterParameterGroup where
+  toQuery DeleteDBClusterParameterGroup' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DeleteDBClusterParameterGroup" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterParameterGroupName"
+          Data.=: dbClusterParameterGroupName
+      ]
+
+-- | /See:/ 'newDeleteDBClusterParameterGroupResponse' smart constructor.
+data DeleteDBClusterParameterGroupResponse = DeleteDBClusterParameterGroupResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBClusterParameterGroupResponse' 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.
+newDeleteDBClusterParameterGroupResponse ::
+  DeleteDBClusterParameterGroupResponse
+newDeleteDBClusterParameterGroupResponse =
+  DeleteDBClusterParameterGroupResponse'
+
+instance
+  Prelude.NFData
+    DeleteDBClusterParameterGroupResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/DocumentDB/DeleteDBClusterSnapshot.hs b/gen/Amazonka/DocumentDB/DeleteDBClusterSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DeleteDBClusterSnapshot.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.DeleteDBClusterSnapshot
+-- 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 cluster snapshot. If the snapshot is being copied, the copy
+-- operation is terminated.
+--
+-- The cluster snapshot must be in the @available@ state to be deleted.
+module Amazonka.DocumentDB.DeleteDBClusterSnapshot
+  ( -- * Creating a Request
+    DeleteDBClusterSnapshot (..),
+    newDeleteDBClusterSnapshot,
+
+    -- * Request Lenses
+    deleteDBClusterSnapshot_dbClusterSnapshotIdentifier,
+
+    -- * Destructuring the Response
+    DeleteDBClusterSnapshotResponse (..),
+    newDeleteDBClusterSnapshotResponse,
+
+    -- * Response Lenses
+    deleteDBClusterSnapshotResponse_dbClusterSnapshot,
+    deleteDBClusterSnapshotResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DeleteDBClusterSnapshot.
+--
+-- /See:/ 'newDeleteDBClusterSnapshot' smart constructor.
+data DeleteDBClusterSnapshot = DeleteDBClusterSnapshot'
+  { -- | The identifier of the cluster snapshot to delete.
+    --
+    -- Constraints: Must be the name of an existing cluster snapshot in the
+    -- @available@ state.
+    dbClusterSnapshotIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBClusterSnapshot' 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:
+--
+-- 'dbClusterSnapshotIdentifier', 'deleteDBClusterSnapshot_dbClusterSnapshotIdentifier' - The identifier of the cluster snapshot to delete.
+--
+-- Constraints: Must be the name of an existing cluster snapshot in the
+-- @available@ state.
+newDeleteDBClusterSnapshot ::
+  -- | 'dbClusterSnapshotIdentifier'
+  Prelude.Text ->
+  DeleteDBClusterSnapshot
+newDeleteDBClusterSnapshot
+  pDBClusterSnapshotIdentifier_ =
+    DeleteDBClusterSnapshot'
+      { dbClusterSnapshotIdentifier =
+          pDBClusterSnapshotIdentifier_
+      }
+
+-- | The identifier of the cluster snapshot to delete.
+--
+-- Constraints: Must be the name of an existing cluster snapshot in the
+-- @available@ state.
+deleteDBClusterSnapshot_dbClusterSnapshotIdentifier :: Lens.Lens' DeleteDBClusterSnapshot Prelude.Text
+deleteDBClusterSnapshot_dbClusterSnapshotIdentifier = Lens.lens (\DeleteDBClusterSnapshot' {dbClusterSnapshotIdentifier} -> dbClusterSnapshotIdentifier) (\s@DeleteDBClusterSnapshot' {} a -> s {dbClusterSnapshotIdentifier = a} :: DeleteDBClusterSnapshot)
+
+instance Core.AWSRequest DeleteDBClusterSnapshot where
+  type
+    AWSResponse DeleteDBClusterSnapshot =
+      DeleteDBClusterSnapshotResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteDBClusterSnapshotResult"
+      ( \s h x ->
+          DeleteDBClusterSnapshotResponse'
+            Prelude.<$> (x Data..@? "DBClusterSnapshot")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteDBClusterSnapshot where
+  hashWithSalt _salt DeleteDBClusterSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterSnapshotIdentifier
+
+instance Prelude.NFData DeleteDBClusterSnapshot where
+  rnf DeleteDBClusterSnapshot' {..} =
+    Prelude.rnf dbClusterSnapshotIdentifier
+
+instance Data.ToHeaders DeleteDBClusterSnapshot where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteDBClusterSnapshot where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDBClusterSnapshot where
+  toQuery DeleteDBClusterSnapshot' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteDBClusterSnapshot" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterSnapshotIdentifier"
+          Data.=: dbClusterSnapshotIdentifier
+      ]
+
+-- | /See:/ 'newDeleteDBClusterSnapshotResponse' smart constructor.
+data DeleteDBClusterSnapshotResponse = DeleteDBClusterSnapshotResponse'
+  { dbClusterSnapshot :: Prelude.Maybe DBClusterSnapshot,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBClusterSnapshotResponse' 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:
+--
+-- 'dbClusterSnapshot', 'deleteDBClusterSnapshotResponse_dbClusterSnapshot' - Undocumented member.
+--
+-- 'httpStatus', 'deleteDBClusterSnapshotResponse_httpStatus' - The response's http status code.
+newDeleteDBClusterSnapshotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteDBClusterSnapshotResponse
+newDeleteDBClusterSnapshotResponse pHttpStatus_ =
+  DeleteDBClusterSnapshotResponse'
+    { dbClusterSnapshot =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+deleteDBClusterSnapshotResponse_dbClusterSnapshot :: Lens.Lens' DeleteDBClusterSnapshotResponse (Prelude.Maybe DBClusterSnapshot)
+deleteDBClusterSnapshotResponse_dbClusterSnapshot = Lens.lens (\DeleteDBClusterSnapshotResponse' {dbClusterSnapshot} -> dbClusterSnapshot) (\s@DeleteDBClusterSnapshotResponse' {} a -> s {dbClusterSnapshot = a} :: DeleteDBClusterSnapshotResponse)
+
+-- | The response's http status code.
+deleteDBClusterSnapshotResponse_httpStatus :: Lens.Lens' DeleteDBClusterSnapshotResponse Prelude.Int
+deleteDBClusterSnapshotResponse_httpStatus = Lens.lens (\DeleteDBClusterSnapshotResponse' {httpStatus} -> httpStatus) (\s@DeleteDBClusterSnapshotResponse' {} a -> s {httpStatus = a} :: DeleteDBClusterSnapshotResponse)
+
+instance
+  Prelude.NFData
+    DeleteDBClusterSnapshotResponse
+  where
+  rnf DeleteDBClusterSnapshotResponse' {..} =
+    Prelude.rnf dbClusterSnapshot
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DeleteDBInstance.hs b/gen/Amazonka/DocumentDB/DeleteDBInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DeleteDBInstance.hs
@@ -0,0 +1,177 @@
+{-# 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.DocumentDB.DeleteDBInstance
+-- 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 previously provisioned instance.
+module Amazonka.DocumentDB.DeleteDBInstance
+  ( -- * Creating a Request
+    DeleteDBInstance (..),
+    newDeleteDBInstance,
+
+    -- * Request Lenses
+    deleteDBInstance_dbInstanceIdentifier,
+
+    -- * Destructuring the Response
+    DeleteDBInstanceResponse (..),
+    newDeleteDBInstanceResponse,
+
+    -- * Response Lenses
+    deleteDBInstanceResponse_dbInstance,
+    deleteDBInstanceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DeleteDBInstance.
+--
+-- /See:/ 'newDeleteDBInstance' smart constructor.
+data DeleteDBInstance = DeleteDBInstance'
+  { -- | The instance identifier for the instance to be deleted. This parameter
+    -- isn\'t case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the name of an existing instance.
+    dbInstanceIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBInstance' 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:
+--
+-- 'dbInstanceIdentifier', 'deleteDBInstance_dbInstanceIdentifier' - The instance identifier for the instance to be deleted. This parameter
+-- isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the name of an existing instance.
+newDeleteDBInstance ::
+  -- | 'dbInstanceIdentifier'
+  Prelude.Text ->
+  DeleteDBInstance
+newDeleteDBInstance pDBInstanceIdentifier_ =
+  DeleteDBInstance'
+    { dbInstanceIdentifier =
+        pDBInstanceIdentifier_
+    }
+
+-- | The instance identifier for the instance to be deleted. This parameter
+-- isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the name of an existing instance.
+deleteDBInstance_dbInstanceIdentifier :: Lens.Lens' DeleteDBInstance Prelude.Text
+deleteDBInstance_dbInstanceIdentifier = Lens.lens (\DeleteDBInstance' {dbInstanceIdentifier} -> dbInstanceIdentifier) (\s@DeleteDBInstance' {} a -> s {dbInstanceIdentifier = a} :: DeleteDBInstance)
+
+instance Core.AWSRequest DeleteDBInstance where
+  type
+    AWSResponse DeleteDBInstance =
+      DeleteDBInstanceResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteDBInstanceResult"
+      ( \s h x ->
+          DeleteDBInstanceResponse'
+            Prelude.<$> (x Data..@? "DBInstance")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteDBInstance where
+  hashWithSalt _salt DeleteDBInstance' {..} =
+    _salt `Prelude.hashWithSalt` dbInstanceIdentifier
+
+instance Prelude.NFData DeleteDBInstance where
+  rnf DeleteDBInstance' {..} =
+    Prelude.rnf dbInstanceIdentifier
+
+instance Data.ToHeaders DeleteDBInstance where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteDBInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDBInstance where
+  toQuery DeleteDBInstance' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteDBInstance" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBInstanceIdentifier" Data.=: dbInstanceIdentifier
+      ]
+
+-- | /See:/ 'newDeleteDBInstanceResponse' smart constructor.
+data DeleteDBInstanceResponse = DeleteDBInstanceResponse'
+  { dbInstance :: Prelude.Maybe DBInstance,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBInstanceResponse' 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:
+--
+-- 'dbInstance', 'deleteDBInstanceResponse_dbInstance' - Undocumented member.
+--
+-- 'httpStatus', 'deleteDBInstanceResponse_httpStatus' - The response's http status code.
+newDeleteDBInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteDBInstanceResponse
+newDeleteDBInstanceResponse pHttpStatus_ =
+  DeleteDBInstanceResponse'
+    { dbInstance =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+deleteDBInstanceResponse_dbInstance :: Lens.Lens' DeleteDBInstanceResponse (Prelude.Maybe DBInstance)
+deleteDBInstanceResponse_dbInstance = Lens.lens (\DeleteDBInstanceResponse' {dbInstance} -> dbInstance) (\s@DeleteDBInstanceResponse' {} a -> s {dbInstance = a} :: DeleteDBInstanceResponse)
+
+-- | The response's http status code.
+deleteDBInstanceResponse_httpStatus :: Lens.Lens' DeleteDBInstanceResponse Prelude.Int
+deleteDBInstanceResponse_httpStatus = Lens.lens (\DeleteDBInstanceResponse' {httpStatus} -> httpStatus) (\s@DeleteDBInstanceResponse' {} a -> s {httpStatus = a} :: DeleteDBInstanceResponse)
+
+instance Prelude.NFData DeleteDBInstanceResponse where
+  rnf DeleteDBInstanceResponse' {..} =
+    Prelude.rnf dbInstance
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DeleteDBSubnetGroup.hs b/gen/Amazonka/DocumentDB/DeleteDBSubnetGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DeleteDBSubnetGroup.hs
@@ -0,0 +1,154 @@
+{-# 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.DocumentDB.DeleteDBSubnetGroup
+-- 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 subnet group.
+--
+-- The specified database subnet group must not be associated with any DB
+-- instances.
+module Amazonka.DocumentDB.DeleteDBSubnetGroup
+  ( -- * Creating a Request
+    DeleteDBSubnetGroup (..),
+    newDeleteDBSubnetGroup,
+
+    -- * Request Lenses
+    deleteDBSubnetGroup_dbSubnetGroupName,
+
+    -- * Destructuring the Response
+    DeleteDBSubnetGroupResponse (..),
+    newDeleteDBSubnetGroupResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DeleteDBSubnetGroup.
+--
+-- /See:/ 'newDeleteDBSubnetGroup' smart constructor.
+data DeleteDBSubnetGroup = DeleteDBSubnetGroup'
+  { -- | The name of the database subnet group to delete.
+    --
+    -- You can\'t delete the default subnet group.
+    --
+    -- Constraints:
+    --
+    -- Must match the name of an existing @DBSubnetGroup@. Must not be default.
+    --
+    -- Example: @mySubnetgroup@
+    dbSubnetGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBSubnetGroup' 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:
+--
+-- 'dbSubnetGroupName', 'deleteDBSubnetGroup_dbSubnetGroupName' - The name of the database subnet group to delete.
+--
+-- You can\'t delete the default subnet group.
+--
+-- Constraints:
+--
+-- Must match the name of an existing @DBSubnetGroup@. Must not be default.
+--
+-- Example: @mySubnetgroup@
+newDeleteDBSubnetGroup ::
+  -- | 'dbSubnetGroupName'
+  Prelude.Text ->
+  DeleteDBSubnetGroup
+newDeleteDBSubnetGroup pDBSubnetGroupName_ =
+  DeleteDBSubnetGroup'
+    { dbSubnetGroupName =
+        pDBSubnetGroupName_
+    }
+
+-- | The name of the database subnet group to delete.
+--
+-- You can\'t delete the default subnet group.
+--
+-- Constraints:
+--
+-- Must match the name of an existing @DBSubnetGroup@. Must not be default.
+--
+-- Example: @mySubnetgroup@
+deleteDBSubnetGroup_dbSubnetGroupName :: Lens.Lens' DeleteDBSubnetGroup Prelude.Text
+deleteDBSubnetGroup_dbSubnetGroupName = Lens.lens (\DeleteDBSubnetGroup' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@DeleteDBSubnetGroup' {} a -> s {dbSubnetGroupName = a} :: DeleteDBSubnetGroup)
+
+instance Core.AWSRequest DeleteDBSubnetGroup where
+  type
+    AWSResponse DeleteDBSubnetGroup =
+      DeleteDBSubnetGroupResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull DeleteDBSubnetGroupResponse'
+
+instance Prelude.Hashable DeleteDBSubnetGroup where
+  hashWithSalt _salt DeleteDBSubnetGroup' {..} =
+    _salt `Prelude.hashWithSalt` dbSubnetGroupName
+
+instance Prelude.NFData DeleteDBSubnetGroup where
+  rnf DeleteDBSubnetGroup' {..} =
+    Prelude.rnf dbSubnetGroupName
+
+instance Data.ToHeaders DeleteDBSubnetGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteDBSubnetGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteDBSubnetGroup where
+  toQuery DeleteDBSubnetGroup' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteDBSubnetGroup" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBSubnetGroupName" Data.=: dbSubnetGroupName
+      ]
+
+-- | /See:/ 'newDeleteDBSubnetGroupResponse' smart constructor.
+data DeleteDBSubnetGroupResponse = DeleteDBSubnetGroupResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDBSubnetGroupResponse' 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.
+newDeleteDBSubnetGroupResponse ::
+  DeleteDBSubnetGroupResponse
+newDeleteDBSubnetGroupResponse =
+  DeleteDBSubnetGroupResponse'
+
+instance Prelude.NFData DeleteDBSubnetGroupResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/DocumentDB/DeleteEventSubscription.hs b/gen/Amazonka/DocumentDB/DeleteEventSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DeleteEventSubscription.hs
@@ -0,0 +1,168 @@
+{-# 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.DocumentDB.DeleteEventSubscription
+-- 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 an Amazon DocumentDB event notification subscription.
+module Amazonka.DocumentDB.DeleteEventSubscription
+  ( -- * Creating a Request
+    DeleteEventSubscription (..),
+    newDeleteEventSubscription,
+
+    -- * Request Lenses
+    deleteEventSubscription_subscriptionName,
+
+    -- * Destructuring the Response
+    DeleteEventSubscriptionResponse (..),
+    newDeleteEventSubscriptionResponse,
+
+    -- * Response Lenses
+    deleteEventSubscriptionResponse_eventSubscription,
+    deleteEventSubscriptionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DeleteEventSubscription.
+--
+-- /See:/ 'newDeleteEventSubscription' smart constructor.
+data DeleteEventSubscription = DeleteEventSubscription'
+  { -- | The name of the Amazon DocumentDB event notification subscription that
+    -- you want to delete.
+    subscriptionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEventSubscription' 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:
+--
+-- 'subscriptionName', 'deleteEventSubscription_subscriptionName' - The name of the Amazon DocumentDB event notification subscription that
+-- you want to delete.
+newDeleteEventSubscription ::
+  -- | 'subscriptionName'
+  Prelude.Text ->
+  DeleteEventSubscription
+newDeleteEventSubscription pSubscriptionName_ =
+  DeleteEventSubscription'
+    { subscriptionName =
+        pSubscriptionName_
+    }
+
+-- | The name of the Amazon DocumentDB event notification subscription that
+-- you want to delete.
+deleteEventSubscription_subscriptionName :: Lens.Lens' DeleteEventSubscription Prelude.Text
+deleteEventSubscription_subscriptionName = Lens.lens (\DeleteEventSubscription' {subscriptionName} -> subscriptionName) (\s@DeleteEventSubscription' {} a -> s {subscriptionName = a} :: DeleteEventSubscription)
+
+instance Core.AWSRequest DeleteEventSubscription where
+  type
+    AWSResponse DeleteEventSubscription =
+      DeleteEventSubscriptionResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteEventSubscriptionResult"
+      ( \s h x ->
+          DeleteEventSubscriptionResponse'
+            Prelude.<$> (x Data..@? "EventSubscription")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteEventSubscription where
+  hashWithSalt _salt DeleteEventSubscription' {..} =
+    _salt `Prelude.hashWithSalt` subscriptionName
+
+instance Prelude.NFData DeleteEventSubscription where
+  rnf DeleteEventSubscription' {..} =
+    Prelude.rnf subscriptionName
+
+instance Data.ToHeaders DeleteEventSubscription where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteEventSubscription where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteEventSubscription where
+  toQuery DeleteEventSubscription' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteEventSubscription" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "SubscriptionName" Data.=: subscriptionName
+      ]
+
+-- | /See:/ 'newDeleteEventSubscriptionResponse' smart constructor.
+data DeleteEventSubscriptionResponse = DeleteEventSubscriptionResponse'
+  { eventSubscription :: Prelude.Maybe EventSubscription,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteEventSubscriptionResponse' 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:
+--
+-- 'eventSubscription', 'deleteEventSubscriptionResponse_eventSubscription' - Undocumented member.
+--
+-- 'httpStatus', 'deleteEventSubscriptionResponse_httpStatus' - The response's http status code.
+newDeleteEventSubscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteEventSubscriptionResponse
+newDeleteEventSubscriptionResponse pHttpStatus_ =
+  DeleteEventSubscriptionResponse'
+    { eventSubscription =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+deleteEventSubscriptionResponse_eventSubscription :: Lens.Lens' DeleteEventSubscriptionResponse (Prelude.Maybe EventSubscription)
+deleteEventSubscriptionResponse_eventSubscription = Lens.lens (\DeleteEventSubscriptionResponse' {eventSubscription} -> eventSubscription) (\s@DeleteEventSubscriptionResponse' {} a -> s {eventSubscription = a} :: DeleteEventSubscriptionResponse)
+
+-- | The response's http status code.
+deleteEventSubscriptionResponse_httpStatus :: Lens.Lens' DeleteEventSubscriptionResponse Prelude.Int
+deleteEventSubscriptionResponse_httpStatus = Lens.lens (\DeleteEventSubscriptionResponse' {httpStatus} -> httpStatus) (\s@DeleteEventSubscriptionResponse' {} a -> s {httpStatus = a} :: DeleteEventSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    DeleteEventSubscriptionResponse
+  where
+  rnf DeleteEventSubscriptionResponse' {..} =
+    Prelude.rnf eventSubscription
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DeleteGlobalCluster.hs b/gen/Amazonka/DocumentDB/DeleteGlobalCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DeleteGlobalCluster.hs
@@ -0,0 +1,168 @@
+{-# 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.DocumentDB.DeleteGlobalCluster
+-- 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 global cluster. The primary and secondary clusters must
+-- already be detached or deleted before attempting to delete a global
+-- cluster.
+--
+-- This action only applies to Amazon DocumentDB clusters.
+module Amazonka.DocumentDB.DeleteGlobalCluster
+  ( -- * Creating a Request
+    DeleteGlobalCluster (..),
+    newDeleteGlobalCluster,
+
+    -- * Request Lenses
+    deleteGlobalCluster_globalClusterIdentifier,
+
+    -- * Destructuring the Response
+    DeleteGlobalClusterResponse (..),
+    newDeleteGlobalClusterResponse,
+
+    -- * Response Lenses
+    deleteGlobalClusterResponse_globalCluster,
+    deleteGlobalClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DeleteGlobalCluster.
+--
+-- /See:/ 'newDeleteGlobalCluster' smart constructor.
+data DeleteGlobalCluster = DeleteGlobalCluster'
+  { -- | The cluster identifier of the global cluster being deleted.
+    globalClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteGlobalCluster' 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:
+--
+-- 'globalClusterIdentifier', 'deleteGlobalCluster_globalClusterIdentifier' - The cluster identifier of the global cluster being deleted.
+newDeleteGlobalCluster ::
+  -- | 'globalClusterIdentifier'
+  Prelude.Text ->
+  DeleteGlobalCluster
+newDeleteGlobalCluster pGlobalClusterIdentifier_ =
+  DeleteGlobalCluster'
+    { globalClusterIdentifier =
+        pGlobalClusterIdentifier_
+    }
+
+-- | The cluster identifier of the global cluster being deleted.
+deleteGlobalCluster_globalClusterIdentifier :: Lens.Lens' DeleteGlobalCluster Prelude.Text
+deleteGlobalCluster_globalClusterIdentifier = Lens.lens (\DeleteGlobalCluster' {globalClusterIdentifier} -> globalClusterIdentifier) (\s@DeleteGlobalCluster' {} a -> s {globalClusterIdentifier = a} :: DeleteGlobalCluster)
+
+instance Core.AWSRequest DeleteGlobalCluster where
+  type
+    AWSResponse DeleteGlobalCluster =
+      DeleteGlobalClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteGlobalClusterResult"
+      ( \s h x ->
+          DeleteGlobalClusterResponse'
+            Prelude.<$> (x Data..@? "GlobalCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteGlobalCluster where
+  hashWithSalt _salt DeleteGlobalCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalClusterIdentifier
+
+instance Prelude.NFData DeleteGlobalCluster where
+  rnf DeleteGlobalCluster' {..} =
+    Prelude.rnf globalClusterIdentifier
+
+instance Data.ToHeaders DeleteGlobalCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteGlobalCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteGlobalCluster where
+  toQuery DeleteGlobalCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteGlobalCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "GlobalClusterIdentifier"
+          Data.=: globalClusterIdentifier
+      ]
+
+-- | /See:/ 'newDeleteGlobalClusterResponse' smart constructor.
+data DeleteGlobalClusterResponse = DeleteGlobalClusterResponse'
+  { globalCluster :: Prelude.Maybe GlobalCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteGlobalClusterResponse' 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:
+--
+-- 'globalCluster', 'deleteGlobalClusterResponse_globalCluster' - Undocumented member.
+--
+-- 'httpStatus', 'deleteGlobalClusterResponse_httpStatus' - The response's http status code.
+newDeleteGlobalClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteGlobalClusterResponse
+newDeleteGlobalClusterResponse pHttpStatus_ =
+  DeleteGlobalClusterResponse'
+    { globalCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+deleteGlobalClusterResponse_globalCluster :: Lens.Lens' DeleteGlobalClusterResponse (Prelude.Maybe GlobalCluster)
+deleteGlobalClusterResponse_globalCluster = Lens.lens (\DeleteGlobalClusterResponse' {globalCluster} -> globalCluster) (\s@DeleteGlobalClusterResponse' {} a -> s {globalCluster = a} :: DeleteGlobalClusterResponse)
+
+-- | The response's http status code.
+deleteGlobalClusterResponse_httpStatus :: Lens.Lens' DeleteGlobalClusterResponse Prelude.Int
+deleteGlobalClusterResponse_httpStatus = Lens.lens (\DeleteGlobalClusterResponse' {httpStatus} -> httpStatus) (\s@DeleteGlobalClusterResponse' {} a -> s {httpStatus = a} :: DeleteGlobalClusterResponse)
+
+instance Prelude.NFData DeleteGlobalClusterResponse where
+  rnf DeleteGlobalClusterResponse' {..} =
+    Prelude.rnf globalCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeCertificates.hs b/gen/Amazonka/DocumentDB/DescribeCertificates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeCertificates.hs
@@ -0,0 +1,318 @@
+{-# 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.DocumentDB.DescribeCertificates
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of certificate authority (CA) certificates provided by
+-- Amazon DocumentDB for this Amazon Web Services account.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeCertificates
+  ( -- * Creating a Request
+    DescribeCertificates (..),
+    newDescribeCertificates,
+
+    -- * Request Lenses
+    describeCertificates_certificateIdentifier,
+    describeCertificates_filters,
+    describeCertificates_marker,
+    describeCertificates_maxRecords,
+
+    -- * Destructuring the Response
+    DescribeCertificatesResponse (..),
+    newDescribeCertificatesResponse,
+
+    -- * Response Lenses
+    describeCertificatesResponse_certificates,
+    describeCertificatesResponse_marker,
+    describeCertificatesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeCertificates' smart constructor.
+data DescribeCertificates = DescribeCertificates'
+  { -- | The user-supplied certificate identifier. If this parameter is
+    -- specified, information for only the specified certificate is returned.
+    -- If this parameter is omitted, a list of up to @MaxRecords@ certificates
+    -- is returned. This parameter is not case sensitive.
+    --
+    -- Constraints
+    --
+    -- -   Must match an existing @CertificateIdentifier@.
+    certificateIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous
+    -- @DescribeCertificates@ request. If this parameter is specified, the
+    -- response includes only records beyond the marker, up to the value
+    -- specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- called a marker is included in the response so that the remaining
+    -- results can be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints:
+    --
+    -- -   Minimum: 20
+    --
+    -- -   Maximum: 100
+    maxRecords :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCertificates' 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:
+--
+-- 'certificateIdentifier', 'describeCertificates_certificateIdentifier' - The user-supplied certificate identifier. If this parameter is
+-- specified, information for only the specified certificate is returned.
+-- If this parameter is omitted, a list of up to @MaxRecords@ certificates
+-- is returned. This parameter is not case sensitive.
+--
+-- Constraints
+--
+-- -   Must match an existing @CertificateIdentifier@.
+--
+-- 'filters', 'describeCertificates_filters' - This parameter is not currently supported.
+--
+-- 'marker', 'describeCertificates_marker' - An optional pagination token provided by a previous
+-- @DescribeCertificates@ request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeCertificates_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
+--
+-- Default: 100
+--
+-- Constraints:
+--
+-- -   Minimum: 20
+--
+-- -   Maximum: 100
+newDescribeCertificates ::
+  DescribeCertificates
+newDescribeCertificates =
+  DescribeCertificates'
+    { certificateIdentifier =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing
+    }
+
+-- | The user-supplied certificate identifier. If this parameter is
+-- specified, information for only the specified certificate is returned.
+-- If this parameter is omitted, a list of up to @MaxRecords@ certificates
+-- is returned. This parameter is not case sensitive.
+--
+-- Constraints
+--
+-- -   Must match an existing @CertificateIdentifier@.
+describeCertificates_certificateIdentifier :: Lens.Lens' DescribeCertificates (Prelude.Maybe Prelude.Text)
+describeCertificates_certificateIdentifier = Lens.lens (\DescribeCertificates' {certificateIdentifier} -> certificateIdentifier) (\s@DescribeCertificates' {} a -> s {certificateIdentifier = a} :: DescribeCertificates)
+
+-- | This parameter is not currently supported.
+describeCertificates_filters :: Lens.Lens' DescribeCertificates (Prelude.Maybe [Filter])
+describeCertificates_filters = Lens.lens (\DescribeCertificates' {filters} -> filters) (\s@DescribeCertificates' {} a -> s {filters = a} :: DescribeCertificates) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous
+-- @DescribeCertificates@ request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by @MaxRecords@.
+describeCertificates_marker :: Lens.Lens' DescribeCertificates (Prelude.Maybe Prelude.Text)
+describeCertificates_marker = Lens.lens (\DescribeCertificates' {marker} -> marker) (\s@DescribeCertificates' {} a -> s {marker = a} :: DescribeCertificates)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- called a marker is included in the response so that the remaining
+-- results can be retrieved.
+--
+-- Default: 100
+--
+-- Constraints:
+--
+-- -   Minimum: 20
+--
+-- -   Maximum: 100
+describeCertificates_maxRecords :: Lens.Lens' DescribeCertificates (Prelude.Maybe Prelude.Int)
+describeCertificates_maxRecords = Lens.lens (\DescribeCertificates' {maxRecords} -> maxRecords) (\s@DescribeCertificates' {} a -> s {maxRecords = a} :: DescribeCertificates)
+
+instance Core.AWSPager DescribeCertificates where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeCertificatesResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeCertificatesResponse_certificates
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeCertificates_marker
+          Lens..~ rs
+          Lens.^? describeCertificatesResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeCertificates where
+  type
+    AWSResponse DescribeCertificates =
+      DescribeCertificatesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeCertificatesResult"
+      ( \s h x ->
+          DescribeCertificatesResponse'
+            Prelude.<$> ( x
+                            Data..@? "Certificates"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "Certificate")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeCertificates where
+  hashWithSalt _salt DescribeCertificates' {..} =
+    _salt
+      `Prelude.hashWithSalt` certificateIdentifier
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+
+instance Prelude.NFData DescribeCertificates where
+  rnf DescribeCertificates' {..} =
+    Prelude.rnf certificateIdentifier
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+
+instance Data.ToHeaders DescribeCertificates where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeCertificates where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeCertificates where
+  toQuery DescribeCertificates' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeCertificates" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "CertificateIdentifier"
+          Data.=: certificateIdentifier,
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords
+      ]
+
+-- | /See:/ 'newDescribeCertificatesResponse' smart constructor.
+data DescribeCertificatesResponse = DescribeCertificatesResponse'
+  { -- | A list of certificates for this Amazon Web Services account.
+    certificates :: Prelude.Maybe [Certificate],
+    -- | An optional pagination token provided if the number of records retrieved
+    -- is greater than @MaxRecords@. If this parameter is specified, the marker
+    -- specifies the next record in the list. Including the value of @Marker@
+    -- in the next call to @DescribeCertificates@ results in the next page of
+    -- certificates.
+    marker :: 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 'DescribeCertificatesResponse' 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:
+--
+-- 'certificates', 'describeCertificatesResponse_certificates' - A list of certificates for this Amazon Web Services account.
+--
+-- 'marker', 'describeCertificatesResponse_marker' - An optional pagination token provided if the number of records retrieved
+-- is greater than @MaxRecords@. If this parameter is specified, the marker
+-- specifies the next record in the list. Including the value of @Marker@
+-- in the next call to @DescribeCertificates@ results in the next page of
+-- certificates.
+--
+-- 'httpStatus', 'describeCertificatesResponse_httpStatus' - The response's http status code.
+newDescribeCertificatesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeCertificatesResponse
+newDescribeCertificatesResponse pHttpStatus_ =
+  DescribeCertificatesResponse'
+    { certificates =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of certificates for this Amazon Web Services account.
+describeCertificatesResponse_certificates :: Lens.Lens' DescribeCertificatesResponse (Prelude.Maybe [Certificate])
+describeCertificatesResponse_certificates = Lens.lens (\DescribeCertificatesResponse' {certificates} -> certificates) (\s@DescribeCertificatesResponse' {} a -> s {certificates = a} :: DescribeCertificatesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided if the number of records retrieved
+-- is greater than @MaxRecords@. If this parameter is specified, the marker
+-- specifies the next record in the list. Including the value of @Marker@
+-- in the next call to @DescribeCertificates@ results in the next page of
+-- certificates.
+describeCertificatesResponse_marker :: Lens.Lens' DescribeCertificatesResponse (Prelude.Maybe Prelude.Text)
+describeCertificatesResponse_marker = Lens.lens (\DescribeCertificatesResponse' {marker} -> marker) (\s@DescribeCertificatesResponse' {} a -> s {marker = a} :: DescribeCertificatesResponse)
+
+-- | The response's http status code.
+describeCertificatesResponse_httpStatus :: Lens.Lens' DescribeCertificatesResponse Prelude.Int
+describeCertificatesResponse_httpStatus = Lens.lens (\DescribeCertificatesResponse' {httpStatus} -> httpStatus) (\s@DescribeCertificatesResponse' {} a -> s {httpStatus = a} :: DescribeCertificatesResponse)
+
+instance Prelude.NFData DescribeCertificatesResponse where
+  rnf DescribeCertificatesResponse' {..} =
+    Prelude.rnf certificates
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeDBClusterParameterGroups.hs b/gen/Amazonka/DocumentDB/DescribeDBClusterParameterGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeDBClusterParameterGroups.hs
@@ -0,0 +1,323 @@
+{-# 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.DocumentDB.DescribeDBClusterParameterGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of @DBClusterParameterGroup@ descriptions. If a
+-- @DBClusterParameterGroupName@ parameter is specified, the list contains
+-- only the description of the specified cluster parameter group.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeDBClusterParameterGroups
+  ( -- * Creating a Request
+    DescribeDBClusterParameterGroups (..),
+    newDescribeDBClusterParameterGroups,
+
+    -- * Request Lenses
+    describeDBClusterParameterGroups_dbClusterParameterGroupName,
+    describeDBClusterParameterGroups_filters,
+    describeDBClusterParameterGroups_marker,
+    describeDBClusterParameterGroups_maxRecords,
+
+    -- * Destructuring the Response
+    DescribeDBClusterParameterGroupsResponse (..),
+    newDescribeDBClusterParameterGroupsResponse,
+
+    -- * Response Lenses
+    describeDBClusterParameterGroupsResponse_dbClusterParameterGroups,
+    describeDBClusterParameterGroupsResponse_marker,
+    describeDBClusterParameterGroupsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeDBClusterParameterGroups.
+--
+-- /See:/ 'newDescribeDBClusterParameterGroups' smart constructor.
+data DescribeDBClusterParameterGroups = DescribeDBClusterParameterGroups'
+  { -- | The name of a specific cluster parameter group to return details for.
+    --
+    -- Constraints:
+    --
+    -- -   If provided, must match the name of an existing
+    --     @DBClusterParameterGroup@.
+    dbClusterParameterGroupName :: Prelude.Maybe Prelude.Text,
+    -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBClusterParameterGroups' 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:
+--
+-- 'dbClusterParameterGroupName', 'describeDBClusterParameterGroups_dbClusterParameterGroupName' - The name of a specific cluster parameter group to return details for.
+--
+-- Constraints:
+--
+-- -   If provided, must match the name of an existing
+--     @DBClusterParameterGroup@.
+--
+-- 'filters', 'describeDBClusterParameterGroups_filters' - This parameter is not currently supported.
+--
+-- 'marker', 'describeDBClusterParameterGroups_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeDBClusterParameterGroups_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+newDescribeDBClusterParameterGroups ::
+  DescribeDBClusterParameterGroups
+newDescribeDBClusterParameterGroups =
+  DescribeDBClusterParameterGroups'
+    { dbClusterParameterGroupName =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing
+    }
+
+-- | The name of a specific cluster parameter group to return details for.
+--
+-- Constraints:
+--
+-- -   If provided, must match the name of an existing
+--     @DBClusterParameterGroup@.
+describeDBClusterParameterGroups_dbClusterParameterGroupName :: Lens.Lens' DescribeDBClusterParameterGroups (Prelude.Maybe Prelude.Text)
+describeDBClusterParameterGroups_dbClusterParameterGroupName = Lens.lens (\DescribeDBClusterParameterGroups' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@DescribeDBClusterParameterGroups' {} a -> s {dbClusterParameterGroupName = a} :: DescribeDBClusterParameterGroups)
+
+-- | This parameter is not currently supported.
+describeDBClusterParameterGroups_filters :: Lens.Lens' DescribeDBClusterParameterGroups (Prelude.Maybe [Filter])
+describeDBClusterParameterGroups_filters = Lens.lens (\DescribeDBClusterParameterGroups' {filters} -> filters) (\s@DescribeDBClusterParameterGroups' {} a -> s {filters = a} :: DescribeDBClusterParameterGroups) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBClusterParameterGroups_marker :: Lens.Lens' DescribeDBClusterParameterGroups (Prelude.Maybe Prelude.Text)
+describeDBClusterParameterGroups_marker = Lens.lens (\DescribeDBClusterParameterGroups' {marker} -> marker) (\s@DescribeDBClusterParameterGroups' {} a -> s {marker = a} :: DescribeDBClusterParameterGroups)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeDBClusterParameterGroups_maxRecords :: Lens.Lens' DescribeDBClusterParameterGroups (Prelude.Maybe Prelude.Int)
+describeDBClusterParameterGroups_maxRecords = Lens.lens (\DescribeDBClusterParameterGroups' {maxRecords} -> maxRecords) (\s@DescribeDBClusterParameterGroups' {} a -> s {maxRecords = a} :: DescribeDBClusterParameterGroups)
+
+instance
+  Core.AWSPager
+    DescribeDBClusterParameterGroups
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeDBClusterParameterGroupsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeDBClusterParameterGroupsResponse_dbClusterParameterGroups
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeDBClusterParameterGroups_marker
+          Lens..~ rs
+          Lens.^? describeDBClusterParameterGroupsResponse_marker
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    DescribeDBClusterParameterGroups
+  where
+  type
+    AWSResponse DescribeDBClusterParameterGroups =
+      DescribeDBClusterParameterGroupsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeDBClusterParameterGroupsResult"
+      ( \s h x ->
+          DescribeDBClusterParameterGroupsResponse'
+            Prelude.<$> ( x
+                            Data..@? "DBClusterParameterGroups"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may
+                              (Data.parseXMLList "DBClusterParameterGroup")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeDBClusterParameterGroups
+  where
+  hashWithSalt
+    _salt
+    DescribeDBClusterParameterGroups' {..} =
+      _salt
+        `Prelude.hashWithSalt` dbClusterParameterGroupName
+        `Prelude.hashWithSalt` filters
+        `Prelude.hashWithSalt` marker
+        `Prelude.hashWithSalt` maxRecords
+
+instance
+  Prelude.NFData
+    DescribeDBClusterParameterGroups
+  where
+  rnf DescribeDBClusterParameterGroups' {..} =
+    Prelude.rnf dbClusterParameterGroupName
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+
+instance
+  Data.ToHeaders
+    DescribeDBClusterParameterGroups
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeDBClusterParameterGroups where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeDBClusterParameterGroups
+  where
+  toQuery DescribeDBClusterParameterGroups' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DescribeDBClusterParameterGroups" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterParameterGroupName"
+          Data.=: dbClusterParameterGroupName,
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords
+      ]
+
+-- | Represents the output of DBClusterParameterGroups.
+--
+-- /See:/ 'newDescribeDBClusterParameterGroupsResponse' smart constructor.
+data DescribeDBClusterParameterGroupsResponse = DescribeDBClusterParameterGroupsResponse'
+  { -- | A list of cluster parameter groups.
+    dbClusterParameterGroups :: Prelude.Maybe [DBClusterParameterGroup],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: 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 'DescribeDBClusterParameterGroupsResponse' 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:
+--
+-- 'dbClusterParameterGroups', 'describeDBClusterParameterGroupsResponse_dbClusterParameterGroups' - A list of cluster parameter groups.
+--
+-- 'marker', 'describeDBClusterParameterGroupsResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'httpStatus', 'describeDBClusterParameterGroupsResponse_httpStatus' - The response's http status code.
+newDescribeDBClusterParameterGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDBClusterParameterGroupsResponse
+newDescribeDBClusterParameterGroupsResponse
+  pHttpStatus_ =
+    DescribeDBClusterParameterGroupsResponse'
+      { dbClusterParameterGroups =
+          Prelude.Nothing,
+        marker = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | A list of cluster parameter groups.
+describeDBClusterParameterGroupsResponse_dbClusterParameterGroups :: Lens.Lens' DescribeDBClusterParameterGroupsResponse (Prelude.Maybe [DBClusterParameterGroup])
+describeDBClusterParameterGroupsResponse_dbClusterParameterGroups = Lens.lens (\DescribeDBClusterParameterGroupsResponse' {dbClusterParameterGroups} -> dbClusterParameterGroups) (\s@DescribeDBClusterParameterGroupsResponse' {} a -> s {dbClusterParameterGroups = a} :: DescribeDBClusterParameterGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBClusterParameterGroupsResponse_marker :: Lens.Lens' DescribeDBClusterParameterGroupsResponse (Prelude.Maybe Prelude.Text)
+describeDBClusterParameterGroupsResponse_marker = Lens.lens (\DescribeDBClusterParameterGroupsResponse' {marker} -> marker) (\s@DescribeDBClusterParameterGroupsResponse' {} a -> s {marker = a} :: DescribeDBClusterParameterGroupsResponse)
+
+-- | The response's http status code.
+describeDBClusterParameterGroupsResponse_httpStatus :: Lens.Lens' DescribeDBClusterParameterGroupsResponse Prelude.Int
+describeDBClusterParameterGroupsResponse_httpStatus = Lens.lens (\DescribeDBClusterParameterGroupsResponse' {httpStatus} -> httpStatus) (\s@DescribeDBClusterParameterGroupsResponse' {} a -> s {httpStatus = a} :: DescribeDBClusterParameterGroupsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDBClusterParameterGroupsResponse
+  where
+  rnf DescribeDBClusterParameterGroupsResponse' {..} =
+    Prelude.rnf dbClusterParameterGroups
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeDBClusterParameters.hs b/gen/Amazonka/DocumentDB/DescribeDBClusterParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeDBClusterParameters.hs
@@ -0,0 +1,323 @@
+{-# 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.DocumentDB.DescribeDBClusterParameters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the detailed parameter list for a particular cluster parameter
+-- group.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeDBClusterParameters
+  ( -- * Creating a Request
+    DescribeDBClusterParameters (..),
+    newDescribeDBClusterParameters,
+
+    -- * Request Lenses
+    describeDBClusterParameters_filters,
+    describeDBClusterParameters_marker,
+    describeDBClusterParameters_maxRecords,
+    describeDBClusterParameters_source,
+    describeDBClusterParameters_dbClusterParameterGroupName,
+
+    -- * Destructuring the Response
+    DescribeDBClusterParametersResponse (..),
+    newDescribeDBClusterParametersResponse,
+
+    -- * Response Lenses
+    describeDBClusterParametersResponse_marker,
+    describeDBClusterParametersResponse_parameters,
+    describeDBClusterParametersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeDBClusterParameters.
+--
+-- /See:/ 'newDescribeDBClusterParameters' smart constructor.
+data DescribeDBClusterParameters = DescribeDBClusterParameters'
+  { -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int,
+    -- | A value that indicates to return only parameters for a specific source.
+    -- Parameter sources can be @engine@, @service@, or @customer@.
+    source :: Prelude.Maybe Prelude.Text,
+    -- | The name of a specific cluster parameter group to return parameter
+    -- details for.
+    --
+    -- Constraints:
+    --
+    -- -   If provided, must match the name of an existing
+    --     @DBClusterParameterGroup@.
+    dbClusterParameterGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBClusterParameters' 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', 'describeDBClusterParameters_filters' - This parameter is not currently supported.
+--
+-- 'marker', 'describeDBClusterParameters_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeDBClusterParameters_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+--
+-- 'source', 'describeDBClusterParameters_source' - A value that indicates to return only parameters for a specific source.
+-- Parameter sources can be @engine@, @service@, or @customer@.
+--
+-- 'dbClusterParameterGroupName', 'describeDBClusterParameters_dbClusterParameterGroupName' - The name of a specific cluster parameter group to return parameter
+-- details for.
+--
+-- Constraints:
+--
+-- -   If provided, must match the name of an existing
+--     @DBClusterParameterGroup@.
+newDescribeDBClusterParameters ::
+  -- | 'dbClusterParameterGroupName'
+  Prelude.Text ->
+  DescribeDBClusterParameters
+newDescribeDBClusterParameters
+  pDBClusterParameterGroupName_ =
+    DescribeDBClusterParameters'
+      { filters =
+          Prelude.Nothing,
+        marker = Prelude.Nothing,
+        maxRecords = Prelude.Nothing,
+        source = Prelude.Nothing,
+        dbClusterParameterGroupName =
+          pDBClusterParameterGroupName_
+      }
+
+-- | This parameter is not currently supported.
+describeDBClusterParameters_filters :: Lens.Lens' DescribeDBClusterParameters (Prelude.Maybe [Filter])
+describeDBClusterParameters_filters = Lens.lens (\DescribeDBClusterParameters' {filters} -> filters) (\s@DescribeDBClusterParameters' {} a -> s {filters = a} :: DescribeDBClusterParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBClusterParameters_marker :: Lens.Lens' DescribeDBClusterParameters (Prelude.Maybe Prelude.Text)
+describeDBClusterParameters_marker = Lens.lens (\DescribeDBClusterParameters' {marker} -> marker) (\s@DescribeDBClusterParameters' {} a -> s {marker = a} :: DescribeDBClusterParameters)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeDBClusterParameters_maxRecords :: Lens.Lens' DescribeDBClusterParameters (Prelude.Maybe Prelude.Int)
+describeDBClusterParameters_maxRecords = Lens.lens (\DescribeDBClusterParameters' {maxRecords} -> maxRecords) (\s@DescribeDBClusterParameters' {} a -> s {maxRecords = a} :: DescribeDBClusterParameters)
+
+-- | A value that indicates to return only parameters for a specific source.
+-- Parameter sources can be @engine@, @service@, or @customer@.
+describeDBClusterParameters_source :: Lens.Lens' DescribeDBClusterParameters (Prelude.Maybe Prelude.Text)
+describeDBClusterParameters_source = Lens.lens (\DescribeDBClusterParameters' {source} -> source) (\s@DescribeDBClusterParameters' {} a -> s {source = a} :: DescribeDBClusterParameters)
+
+-- | The name of a specific cluster parameter group to return parameter
+-- details for.
+--
+-- Constraints:
+--
+-- -   If provided, must match the name of an existing
+--     @DBClusterParameterGroup@.
+describeDBClusterParameters_dbClusterParameterGroupName :: Lens.Lens' DescribeDBClusterParameters Prelude.Text
+describeDBClusterParameters_dbClusterParameterGroupName = Lens.lens (\DescribeDBClusterParameters' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@DescribeDBClusterParameters' {} a -> s {dbClusterParameterGroupName = a} :: DescribeDBClusterParameters)
+
+instance Core.AWSPager DescribeDBClusterParameters where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeDBClusterParametersResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeDBClusterParametersResponse_parameters
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeDBClusterParameters_marker
+          Lens..~ rs
+          Lens.^? describeDBClusterParametersResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeDBClusterParameters where
+  type
+    AWSResponse DescribeDBClusterParameters =
+      DescribeDBClusterParametersResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeDBClusterParametersResult"
+      ( \s h x ->
+          DescribeDBClusterParametersResponse'
+            Prelude.<$> (x Data..@? "Marker")
+            Prelude.<*> ( x
+                            Data..@? "Parameters"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "Parameter")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDBClusterParameters where
+  hashWithSalt _salt DescribeDBClusterParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` dbClusterParameterGroupName
+
+instance Prelude.NFData DescribeDBClusterParameters where
+  rnf DescribeDBClusterParameters' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf dbClusterParameterGroupName
+
+instance Data.ToHeaders DescribeDBClusterParameters where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeDBClusterParameters where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDBClusterParameters where
+  toQuery DescribeDBClusterParameters' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DescribeDBClusterParameters" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords,
+        "Source" Data.=: source,
+        "DBClusterParameterGroupName"
+          Data.=: dbClusterParameterGroupName
+      ]
+
+-- | Represents the output of DBClusterParameterGroup.
+--
+-- /See:/ 'newDescribeDBClusterParametersResponse' smart constructor.
+data DescribeDBClusterParametersResponse = DescribeDBClusterParametersResponse'
+  { -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | Provides a list of parameters for the cluster parameter group.
+    parameters :: Prelude.Maybe [Parameter],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBClusterParametersResponse' 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:
+--
+-- 'marker', 'describeDBClusterParametersResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'parameters', 'describeDBClusterParametersResponse_parameters' - Provides a list of parameters for the cluster parameter group.
+--
+-- 'httpStatus', 'describeDBClusterParametersResponse_httpStatus' - The response's http status code.
+newDescribeDBClusterParametersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDBClusterParametersResponse
+newDescribeDBClusterParametersResponse pHttpStatus_ =
+  DescribeDBClusterParametersResponse'
+    { marker =
+        Prelude.Nothing,
+      parameters = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBClusterParametersResponse_marker :: Lens.Lens' DescribeDBClusterParametersResponse (Prelude.Maybe Prelude.Text)
+describeDBClusterParametersResponse_marker = Lens.lens (\DescribeDBClusterParametersResponse' {marker} -> marker) (\s@DescribeDBClusterParametersResponse' {} a -> s {marker = a} :: DescribeDBClusterParametersResponse)
+
+-- | Provides a list of parameters for the cluster parameter group.
+describeDBClusterParametersResponse_parameters :: Lens.Lens' DescribeDBClusterParametersResponse (Prelude.Maybe [Parameter])
+describeDBClusterParametersResponse_parameters = Lens.lens (\DescribeDBClusterParametersResponse' {parameters} -> parameters) (\s@DescribeDBClusterParametersResponse' {} a -> s {parameters = a} :: DescribeDBClusterParametersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeDBClusterParametersResponse_httpStatus :: Lens.Lens' DescribeDBClusterParametersResponse Prelude.Int
+describeDBClusterParametersResponse_httpStatus = Lens.lens (\DescribeDBClusterParametersResponse' {httpStatus} -> httpStatus) (\s@DescribeDBClusterParametersResponse' {} a -> s {httpStatus = a} :: DescribeDBClusterParametersResponse)
+
+instance
+  Prelude.NFData
+    DescribeDBClusterParametersResponse
+  where
+  rnf DescribeDBClusterParametersResponse' {..} =
+    Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeDBClusterSnapshotAttributes.hs b/gen/Amazonka/DocumentDB/DescribeDBClusterSnapshotAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeDBClusterSnapshotAttributes.hs
@@ -0,0 +1,200 @@
+{-# 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.DocumentDB.DescribeDBClusterSnapshotAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of cluster snapshot attribute names and values for a
+-- manual DB cluster snapshot.
+--
+-- When you share snapshots with other Amazon Web Services accounts,
+-- @DescribeDBClusterSnapshotAttributes@ returns the @restore@ attribute
+-- and a list of IDs for the Amazon Web Services accounts that are
+-- authorized to copy or restore the manual cluster snapshot. If @all@ is
+-- included in the list of values for the @restore@ attribute, then the
+-- manual cluster snapshot is public and can be copied or restored by all
+-- Amazon Web Services accounts.
+module Amazonka.DocumentDB.DescribeDBClusterSnapshotAttributes
+  ( -- * Creating a Request
+    DescribeDBClusterSnapshotAttributes (..),
+    newDescribeDBClusterSnapshotAttributes,
+
+    -- * Request Lenses
+    describeDBClusterSnapshotAttributes_dbClusterSnapshotIdentifier,
+
+    -- * Destructuring the Response
+    DescribeDBClusterSnapshotAttributesResponse (..),
+    newDescribeDBClusterSnapshotAttributesResponse,
+
+    -- * Response Lenses
+    describeDBClusterSnapshotAttributesResponse_dbClusterSnapshotAttributesResult,
+    describeDBClusterSnapshotAttributesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeDBClusterSnapshotAttributes.
+--
+-- /See:/ 'newDescribeDBClusterSnapshotAttributes' smart constructor.
+data DescribeDBClusterSnapshotAttributes = DescribeDBClusterSnapshotAttributes'
+  { -- | The identifier for the cluster snapshot to describe the attributes for.
+    dbClusterSnapshotIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBClusterSnapshotAttributes' 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:
+--
+-- 'dbClusterSnapshotIdentifier', 'describeDBClusterSnapshotAttributes_dbClusterSnapshotIdentifier' - The identifier for the cluster snapshot to describe the attributes for.
+newDescribeDBClusterSnapshotAttributes ::
+  -- | 'dbClusterSnapshotIdentifier'
+  Prelude.Text ->
+  DescribeDBClusterSnapshotAttributes
+newDescribeDBClusterSnapshotAttributes
+  pDBClusterSnapshotIdentifier_ =
+    DescribeDBClusterSnapshotAttributes'
+      { dbClusterSnapshotIdentifier =
+          pDBClusterSnapshotIdentifier_
+      }
+
+-- | The identifier for the cluster snapshot to describe the attributes for.
+describeDBClusterSnapshotAttributes_dbClusterSnapshotIdentifier :: Lens.Lens' DescribeDBClusterSnapshotAttributes Prelude.Text
+describeDBClusterSnapshotAttributes_dbClusterSnapshotIdentifier = Lens.lens (\DescribeDBClusterSnapshotAttributes' {dbClusterSnapshotIdentifier} -> dbClusterSnapshotIdentifier) (\s@DescribeDBClusterSnapshotAttributes' {} a -> s {dbClusterSnapshotIdentifier = a} :: DescribeDBClusterSnapshotAttributes)
+
+instance
+  Core.AWSRequest
+    DescribeDBClusterSnapshotAttributes
+  where
+  type
+    AWSResponse DescribeDBClusterSnapshotAttributes =
+      DescribeDBClusterSnapshotAttributesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeDBClusterSnapshotAttributesResult"
+      ( \s h x ->
+          DescribeDBClusterSnapshotAttributesResponse'
+            Prelude.<$> (x Data..@? "DBClusterSnapshotAttributesResult")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeDBClusterSnapshotAttributes
+  where
+  hashWithSalt
+    _salt
+    DescribeDBClusterSnapshotAttributes' {..} =
+      _salt
+        `Prelude.hashWithSalt` dbClusterSnapshotIdentifier
+
+instance
+  Prelude.NFData
+    DescribeDBClusterSnapshotAttributes
+  where
+  rnf DescribeDBClusterSnapshotAttributes' {..} =
+    Prelude.rnf dbClusterSnapshotIdentifier
+
+instance
+  Data.ToHeaders
+    DescribeDBClusterSnapshotAttributes
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DescribeDBClusterSnapshotAttributes
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeDBClusterSnapshotAttributes
+  where
+  toQuery DescribeDBClusterSnapshotAttributes' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DescribeDBClusterSnapshotAttributes" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterSnapshotIdentifier"
+          Data.=: dbClusterSnapshotIdentifier
+      ]
+
+-- | /See:/ 'newDescribeDBClusterSnapshotAttributesResponse' smart constructor.
+data DescribeDBClusterSnapshotAttributesResponse = DescribeDBClusterSnapshotAttributesResponse'
+  { dbClusterSnapshotAttributesResult :: Prelude.Maybe DBClusterSnapshotAttributesResult,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBClusterSnapshotAttributesResponse' 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:
+--
+-- 'dbClusterSnapshotAttributesResult', 'describeDBClusterSnapshotAttributesResponse_dbClusterSnapshotAttributesResult' - Undocumented member.
+--
+-- 'httpStatus', 'describeDBClusterSnapshotAttributesResponse_httpStatus' - The response's http status code.
+newDescribeDBClusterSnapshotAttributesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDBClusterSnapshotAttributesResponse
+newDescribeDBClusterSnapshotAttributesResponse
+  pHttpStatus_ =
+    DescribeDBClusterSnapshotAttributesResponse'
+      { dbClusterSnapshotAttributesResult =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+describeDBClusterSnapshotAttributesResponse_dbClusterSnapshotAttributesResult :: Lens.Lens' DescribeDBClusterSnapshotAttributesResponse (Prelude.Maybe DBClusterSnapshotAttributesResult)
+describeDBClusterSnapshotAttributesResponse_dbClusterSnapshotAttributesResult = Lens.lens (\DescribeDBClusterSnapshotAttributesResponse' {dbClusterSnapshotAttributesResult} -> dbClusterSnapshotAttributesResult) (\s@DescribeDBClusterSnapshotAttributesResponse' {} a -> s {dbClusterSnapshotAttributesResult = a} :: DescribeDBClusterSnapshotAttributesResponse)
+
+-- | The response's http status code.
+describeDBClusterSnapshotAttributesResponse_httpStatus :: Lens.Lens' DescribeDBClusterSnapshotAttributesResponse Prelude.Int
+describeDBClusterSnapshotAttributesResponse_httpStatus = Lens.lens (\DescribeDBClusterSnapshotAttributesResponse' {httpStatus} -> httpStatus) (\s@DescribeDBClusterSnapshotAttributesResponse' {} a -> s {httpStatus = a} :: DescribeDBClusterSnapshotAttributesResponse)
+
+instance
+  Prelude.NFData
+    DescribeDBClusterSnapshotAttributesResponse
+  where
+  rnf DescribeDBClusterSnapshotAttributesResponse' {..} =
+    Prelude.rnf dbClusterSnapshotAttributesResult
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeDBClusterSnapshots.hs b/gen/Amazonka/DocumentDB/DescribeDBClusterSnapshots.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeDBClusterSnapshots.hs
@@ -0,0 +1,473 @@
+{-# 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.DocumentDB.DescribeDBClusterSnapshots
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about cluster snapshots. This API operation supports
+-- pagination.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeDBClusterSnapshots
+  ( -- * Creating a Request
+    DescribeDBClusterSnapshots (..),
+    newDescribeDBClusterSnapshots,
+
+    -- * Request Lenses
+    describeDBClusterSnapshots_dbClusterIdentifier,
+    describeDBClusterSnapshots_dbClusterSnapshotIdentifier,
+    describeDBClusterSnapshots_filters,
+    describeDBClusterSnapshots_includePublic,
+    describeDBClusterSnapshots_includeShared,
+    describeDBClusterSnapshots_marker,
+    describeDBClusterSnapshots_maxRecords,
+    describeDBClusterSnapshots_snapshotType,
+
+    -- * Destructuring the Response
+    DescribeDBClusterSnapshotsResponse (..),
+    newDescribeDBClusterSnapshotsResponse,
+
+    -- * Response Lenses
+    describeDBClusterSnapshotsResponse_dbClusterSnapshots,
+    describeDBClusterSnapshotsResponse_marker,
+    describeDBClusterSnapshotsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeDBClusterSnapshots.
+--
+-- /See:/ 'newDescribeDBClusterSnapshots' smart constructor.
+data DescribeDBClusterSnapshots = DescribeDBClusterSnapshots'
+  { -- | The ID of the cluster to retrieve the list of cluster snapshots for.
+    -- This parameter can\'t be used with the @DBClusterSnapshotIdentifier@
+    -- parameter. This parameter is not case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   If provided, must match the identifier of an existing @DBCluster@.
+    dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | A specific cluster snapshot identifier to describe. This parameter
+    -- can\'t be used with the @DBClusterIdentifier@ parameter. This value is
+    -- stored as a lowercase string.
+    --
+    -- Constraints:
+    --
+    -- -   If provided, must match the identifier of an existing
+    --     @DBClusterSnapshot@.
+    --
+    -- -   If this identifier is for an automated snapshot, the @SnapshotType@
+    --     parameter must also be specified.
+    dbClusterSnapshotIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | Set to @true@ to include manual cluster snapshots that are public and
+    -- can be copied or restored by any Amazon Web Services account, and
+    -- otherwise @false@. The default is @false@.
+    includePublic :: Prelude.Maybe Prelude.Bool,
+    -- | Set to @true@ to include shared manual cluster snapshots from other
+    -- Amazon Web Services accounts that this Amazon Web Services account has
+    -- been given permission to copy or restore, and otherwise @false@. The
+    -- default is @false@.
+    includeShared :: Prelude.Maybe Prelude.Bool,
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int,
+    -- | The type of cluster snapshots to be returned. You can specify one of the
+    -- following values:
+    --
+    -- -   @automated@ - Return all cluster snapshots that Amazon DocumentDB
+    --     has automatically created for your Amazon Web Services account.
+    --
+    -- -   @manual@ - Return all cluster snapshots that you have manually
+    --     created for your Amazon Web Services account.
+    --
+    -- -   @shared@ - Return all manual cluster snapshots that have been shared
+    --     to your Amazon Web Services account.
+    --
+    -- -   @public@ - Return all cluster snapshots that have been marked as
+    --     public.
+    --
+    -- If you don\'t specify a @SnapshotType@ value, then both automated and
+    -- manual cluster snapshots are returned. You can include shared cluster
+    -- snapshots with these results by setting the @IncludeShared@ parameter to
+    -- @true@. You can include public cluster snapshots with these results by
+    -- setting the@IncludePublic@ parameter to @true@.
+    --
+    -- The @IncludeShared@ and @IncludePublic@ parameters don\'t apply for
+    -- @SnapshotType@ values of @manual@ or @automated@. The @IncludePublic@
+    -- parameter doesn\'t apply when @SnapshotType@ is set to @shared@. The
+    -- @IncludeShared@ parameter doesn\'t apply when @SnapshotType@ is set to
+    -- @public@.
+    snapshotType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBClusterSnapshots' 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:
+--
+-- 'dbClusterIdentifier', 'describeDBClusterSnapshots_dbClusterIdentifier' - The ID of the cluster to retrieve the list of cluster snapshots for.
+-- This parameter can\'t be used with the @DBClusterSnapshotIdentifier@
+-- parameter. This parameter is not case sensitive.
+--
+-- Constraints:
+--
+-- -   If provided, must match the identifier of an existing @DBCluster@.
+--
+-- 'dbClusterSnapshotIdentifier', 'describeDBClusterSnapshots_dbClusterSnapshotIdentifier' - A specific cluster snapshot identifier to describe. This parameter
+-- can\'t be used with the @DBClusterIdentifier@ parameter. This value is
+-- stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   If provided, must match the identifier of an existing
+--     @DBClusterSnapshot@.
+--
+-- -   If this identifier is for an automated snapshot, the @SnapshotType@
+--     parameter must also be specified.
+--
+-- 'filters', 'describeDBClusterSnapshots_filters' - This parameter is not currently supported.
+--
+-- 'includePublic', 'describeDBClusterSnapshots_includePublic' - Set to @true@ to include manual cluster snapshots that are public and
+-- can be copied or restored by any Amazon Web Services account, and
+-- otherwise @false@. The default is @false@.
+--
+-- 'includeShared', 'describeDBClusterSnapshots_includeShared' - Set to @true@ to include shared manual cluster snapshots from other
+-- Amazon Web Services accounts that this Amazon Web Services account has
+-- been given permission to copy or restore, and otherwise @false@. The
+-- default is @false@.
+--
+-- 'marker', 'describeDBClusterSnapshots_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeDBClusterSnapshots_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+--
+-- 'snapshotType', 'describeDBClusterSnapshots_snapshotType' - The type of cluster snapshots to be returned. You can specify one of the
+-- following values:
+--
+-- -   @automated@ - Return all cluster snapshots that Amazon DocumentDB
+--     has automatically created for your Amazon Web Services account.
+--
+-- -   @manual@ - Return all cluster snapshots that you have manually
+--     created for your Amazon Web Services account.
+--
+-- -   @shared@ - Return all manual cluster snapshots that have been shared
+--     to your Amazon Web Services account.
+--
+-- -   @public@ - Return all cluster snapshots that have been marked as
+--     public.
+--
+-- If you don\'t specify a @SnapshotType@ value, then both automated and
+-- manual cluster snapshots are returned. You can include shared cluster
+-- snapshots with these results by setting the @IncludeShared@ parameter to
+-- @true@. You can include public cluster snapshots with these results by
+-- setting the@IncludePublic@ parameter to @true@.
+--
+-- The @IncludeShared@ and @IncludePublic@ parameters don\'t apply for
+-- @SnapshotType@ values of @manual@ or @automated@. The @IncludePublic@
+-- parameter doesn\'t apply when @SnapshotType@ is set to @shared@. The
+-- @IncludeShared@ parameter doesn\'t apply when @SnapshotType@ is set to
+-- @public@.
+newDescribeDBClusterSnapshots ::
+  DescribeDBClusterSnapshots
+newDescribeDBClusterSnapshots =
+  DescribeDBClusterSnapshots'
+    { dbClusterIdentifier =
+        Prelude.Nothing,
+      dbClusterSnapshotIdentifier = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      includePublic = Prelude.Nothing,
+      includeShared = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing,
+      snapshotType = Prelude.Nothing
+    }
+
+-- | The ID of the cluster to retrieve the list of cluster snapshots for.
+-- This parameter can\'t be used with the @DBClusterSnapshotIdentifier@
+-- parameter. This parameter is not case sensitive.
+--
+-- Constraints:
+--
+-- -   If provided, must match the identifier of an existing @DBCluster@.
+describeDBClusterSnapshots_dbClusterIdentifier :: Lens.Lens' DescribeDBClusterSnapshots (Prelude.Maybe Prelude.Text)
+describeDBClusterSnapshots_dbClusterIdentifier = Lens.lens (\DescribeDBClusterSnapshots' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@DescribeDBClusterSnapshots' {} a -> s {dbClusterIdentifier = a} :: DescribeDBClusterSnapshots)
+
+-- | A specific cluster snapshot identifier to describe. This parameter
+-- can\'t be used with the @DBClusterIdentifier@ parameter. This value is
+-- stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   If provided, must match the identifier of an existing
+--     @DBClusterSnapshot@.
+--
+-- -   If this identifier is for an automated snapshot, the @SnapshotType@
+--     parameter must also be specified.
+describeDBClusterSnapshots_dbClusterSnapshotIdentifier :: Lens.Lens' DescribeDBClusterSnapshots (Prelude.Maybe Prelude.Text)
+describeDBClusterSnapshots_dbClusterSnapshotIdentifier = Lens.lens (\DescribeDBClusterSnapshots' {dbClusterSnapshotIdentifier} -> dbClusterSnapshotIdentifier) (\s@DescribeDBClusterSnapshots' {} a -> s {dbClusterSnapshotIdentifier = a} :: DescribeDBClusterSnapshots)
+
+-- | This parameter is not currently supported.
+describeDBClusterSnapshots_filters :: Lens.Lens' DescribeDBClusterSnapshots (Prelude.Maybe [Filter])
+describeDBClusterSnapshots_filters = Lens.lens (\DescribeDBClusterSnapshots' {filters} -> filters) (\s@DescribeDBClusterSnapshots' {} a -> s {filters = a} :: DescribeDBClusterSnapshots) Prelude.. Lens.mapping Lens.coerced
+
+-- | Set to @true@ to include manual cluster snapshots that are public and
+-- can be copied or restored by any Amazon Web Services account, and
+-- otherwise @false@. The default is @false@.
+describeDBClusterSnapshots_includePublic :: Lens.Lens' DescribeDBClusterSnapshots (Prelude.Maybe Prelude.Bool)
+describeDBClusterSnapshots_includePublic = Lens.lens (\DescribeDBClusterSnapshots' {includePublic} -> includePublic) (\s@DescribeDBClusterSnapshots' {} a -> s {includePublic = a} :: DescribeDBClusterSnapshots)
+
+-- | Set to @true@ to include shared manual cluster snapshots from other
+-- Amazon Web Services accounts that this Amazon Web Services account has
+-- been given permission to copy or restore, and otherwise @false@. The
+-- default is @false@.
+describeDBClusterSnapshots_includeShared :: Lens.Lens' DescribeDBClusterSnapshots (Prelude.Maybe Prelude.Bool)
+describeDBClusterSnapshots_includeShared = Lens.lens (\DescribeDBClusterSnapshots' {includeShared} -> includeShared) (\s@DescribeDBClusterSnapshots' {} a -> s {includeShared = a} :: DescribeDBClusterSnapshots)
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBClusterSnapshots_marker :: Lens.Lens' DescribeDBClusterSnapshots (Prelude.Maybe Prelude.Text)
+describeDBClusterSnapshots_marker = Lens.lens (\DescribeDBClusterSnapshots' {marker} -> marker) (\s@DescribeDBClusterSnapshots' {} a -> s {marker = a} :: DescribeDBClusterSnapshots)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeDBClusterSnapshots_maxRecords :: Lens.Lens' DescribeDBClusterSnapshots (Prelude.Maybe Prelude.Int)
+describeDBClusterSnapshots_maxRecords = Lens.lens (\DescribeDBClusterSnapshots' {maxRecords} -> maxRecords) (\s@DescribeDBClusterSnapshots' {} a -> s {maxRecords = a} :: DescribeDBClusterSnapshots)
+
+-- | The type of cluster snapshots to be returned. You can specify one of the
+-- following values:
+--
+-- -   @automated@ - Return all cluster snapshots that Amazon DocumentDB
+--     has automatically created for your Amazon Web Services account.
+--
+-- -   @manual@ - Return all cluster snapshots that you have manually
+--     created for your Amazon Web Services account.
+--
+-- -   @shared@ - Return all manual cluster snapshots that have been shared
+--     to your Amazon Web Services account.
+--
+-- -   @public@ - Return all cluster snapshots that have been marked as
+--     public.
+--
+-- If you don\'t specify a @SnapshotType@ value, then both automated and
+-- manual cluster snapshots are returned. You can include shared cluster
+-- snapshots with these results by setting the @IncludeShared@ parameter to
+-- @true@. You can include public cluster snapshots with these results by
+-- setting the@IncludePublic@ parameter to @true@.
+--
+-- The @IncludeShared@ and @IncludePublic@ parameters don\'t apply for
+-- @SnapshotType@ values of @manual@ or @automated@. The @IncludePublic@
+-- parameter doesn\'t apply when @SnapshotType@ is set to @shared@. The
+-- @IncludeShared@ parameter doesn\'t apply when @SnapshotType@ is set to
+-- @public@.
+describeDBClusterSnapshots_snapshotType :: Lens.Lens' DescribeDBClusterSnapshots (Prelude.Maybe Prelude.Text)
+describeDBClusterSnapshots_snapshotType = Lens.lens (\DescribeDBClusterSnapshots' {snapshotType} -> snapshotType) (\s@DescribeDBClusterSnapshots' {} a -> s {snapshotType = a} :: DescribeDBClusterSnapshots)
+
+instance Core.AWSPager DescribeDBClusterSnapshots where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeDBClusterSnapshotsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeDBClusterSnapshotsResponse_dbClusterSnapshots
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeDBClusterSnapshots_marker
+          Lens..~ rs
+          Lens.^? describeDBClusterSnapshotsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeDBClusterSnapshots where
+  type
+    AWSResponse DescribeDBClusterSnapshots =
+      DescribeDBClusterSnapshotsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeDBClusterSnapshotsResult"
+      ( \s h x ->
+          DescribeDBClusterSnapshotsResponse'
+            Prelude.<$> ( x
+                            Data..@? "DBClusterSnapshots"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "DBClusterSnapshot")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDBClusterSnapshots where
+  hashWithSalt _salt DescribeDBClusterSnapshots' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` dbClusterSnapshotIdentifier
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` includePublic
+      `Prelude.hashWithSalt` includeShared
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+      `Prelude.hashWithSalt` snapshotType
+
+instance Prelude.NFData DescribeDBClusterSnapshots where
+  rnf DescribeDBClusterSnapshots' {..} =
+    Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf dbClusterSnapshotIdentifier
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf includePublic
+      `Prelude.seq` Prelude.rnf includeShared
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+      `Prelude.seq` Prelude.rnf snapshotType
+
+instance Data.ToHeaders DescribeDBClusterSnapshots where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeDBClusterSnapshots where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDBClusterSnapshots where
+  toQuery DescribeDBClusterSnapshots' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeDBClusterSnapshots" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier,
+        "DBClusterSnapshotIdentifier"
+          Data.=: dbClusterSnapshotIdentifier,
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "IncludePublic" Data.=: includePublic,
+        "IncludeShared" Data.=: includeShared,
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords,
+        "SnapshotType" Data.=: snapshotType
+      ]
+
+-- | Represents the output of DescribeDBClusterSnapshots.
+--
+-- /See:/ 'newDescribeDBClusterSnapshotsResponse' smart constructor.
+data DescribeDBClusterSnapshotsResponse = DescribeDBClusterSnapshotsResponse'
+  { -- | Provides a list of cluster snapshots.
+    dbClusterSnapshots :: Prelude.Maybe [DBClusterSnapshot],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: 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 'DescribeDBClusterSnapshotsResponse' 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:
+--
+-- 'dbClusterSnapshots', 'describeDBClusterSnapshotsResponse_dbClusterSnapshots' - Provides a list of cluster snapshots.
+--
+-- 'marker', 'describeDBClusterSnapshotsResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'httpStatus', 'describeDBClusterSnapshotsResponse_httpStatus' - The response's http status code.
+newDescribeDBClusterSnapshotsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDBClusterSnapshotsResponse
+newDescribeDBClusterSnapshotsResponse pHttpStatus_ =
+  DescribeDBClusterSnapshotsResponse'
+    { dbClusterSnapshots =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Provides a list of cluster snapshots.
+describeDBClusterSnapshotsResponse_dbClusterSnapshots :: Lens.Lens' DescribeDBClusterSnapshotsResponse (Prelude.Maybe [DBClusterSnapshot])
+describeDBClusterSnapshotsResponse_dbClusterSnapshots = Lens.lens (\DescribeDBClusterSnapshotsResponse' {dbClusterSnapshots} -> dbClusterSnapshots) (\s@DescribeDBClusterSnapshotsResponse' {} a -> s {dbClusterSnapshots = a} :: DescribeDBClusterSnapshotsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBClusterSnapshotsResponse_marker :: Lens.Lens' DescribeDBClusterSnapshotsResponse (Prelude.Maybe Prelude.Text)
+describeDBClusterSnapshotsResponse_marker = Lens.lens (\DescribeDBClusterSnapshotsResponse' {marker} -> marker) (\s@DescribeDBClusterSnapshotsResponse' {} a -> s {marker = a} :: DescribeDBClusterSnapshotsResponse)
+
+-- | The response's http status code.
+describeDBClusterSnapshotsResponse_httpStatus :: Lens.Lens' DescribeDBClusterSnapshotsResponse Prelude.Int
+describeDBClusterSnapshotsResponse_httpStatus = Lens.lens (\DescribeDBClusterSnapshotsResponse' {httpStatus} -> httpStatus) (\s@DescribeDBClusterSnapshotsResponse' {} a -> s {httpStatus = a} :: DescribeDBClusterSnapshotsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDBClusterSnapshotsResponse
+  where
+  rnf DescribeDBClusterSnapshotsResponse' {..} =
+    Prelude.rnf dbClusterSnapshots
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeDBClusters.hs b/gen/Amazonka/DocumentDB/DescribeDBClusters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeDBClusters.hs
@@ -0,0 +1,319 @@
+{-# 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.DocumentDB.DescribeDBClusters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about provisioned Amazon DocumentDB clusters. This
+-- API operation supports pagination. For certain management features such
+-- as cluster and instance lifecycle management, Amazon DocumentDB
+-- leverages operational technology that is shared with Amazon RDS and
+-- Amazon Neptune. Use the @filterName=engine,Values=docdb@ filter
+-- parameter to return only Amazon DocumentDB clusters.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeDBClusters
+  ( -- * Creating a Request
+    DescribeDBClusters (..),
+    newDescribeDBClusters,
+
+    -- * Request Lenses
+    describeDBClusters_dbClusterIdentifier,
+    describeDBClusters_filters,
+    describeDBClusters_marker,
+    describeDBClusters_maxRecords,
+
+    -- * Destructuring the Response
+    DescribeDBClustersResponse (..),
+    newDescribeDBClustersResponse,
+
+    -- * Response Lenses
+    describeDBClustersResponse_dbClusters,
+    describeDBClustersResponse_marker,
+    describeDBClustersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeDBClusters.
+--
+-- /See:/ 'newDescribeDBClusters' smart constructor.
+data DescribeDBClusters = DescribeDBClusters'
+  { -- | The user-provided cluster identifier. If this parameter is specified,
+    -- information from only the specific cluster is returned. This parameter
+    -- isn\'t case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   If provided, must match an existing @DBClusterIdentifier@.
+    dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | A filter that specifies one or more clusters to describe.
+    --
+    -- Supported filters:
+    --
+    -- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+    --     Resource Names (ARNs). The results list only includes information
+    --     about the clusters identified by these ARNs.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBClusters' 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:
+--
+-- 'dbClusterIdentifier', 'describeDBClusters_dbClusterIdentifier' - The user-provided cluster identifier. If this parameter is specified,
+-- information from only the specific cluster is returned. This parameter
+-- isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   If provided, must match an existing @DBClusterIdentifier@.
+--
+-- 'filters', 'describeDBClusters_filters' - A filter that specifies one or more clusters to describe.
+--
+-- Supported filters:
+--
+-- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+--     Resource Names (ARNs). The results list only includes information
+--     about the clusters identified by these ARNs.
+--
+-- 'marker', 'describeDBClusters_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeDBClusters_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+newDescribeDBClusters ::
+  DescribeDBClusters
+newDescribeDBClusters =
+  DescribeDBClusters'
+    { dbClusterIdentifier =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing
+    }
+
+-- | The user-provided cluster identifier. If this parameter is specified,
+-- information from only the specific cluster is returned. This parameter
+-- isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   If provided, must match an existing @DBClusterIdentifier@.
+describeDBClusters_dbClusterIdentifier :: Lens.Lens' DescribeDBClusters (Prelude.Maybe Prelude.Text)
+describeDBClusters_dbClusterIdentifier = Lens.lens (\DescribeDBClusters' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@DescribeDBClusters' {} a -> s {dbClusterIdentifier = a} :: DescribeDBClusters)
+
+-- | A filter that specifies one or more clusters to describe.
+--
+-- Supported filters:
+--
+-- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+--     Resource Names (ARNs). The results list only includes information
+--     about the clusters identified by these ARNs.
+describeDBClusters_filters :: Lens.Lens' DescribeDBClusters (Prelude.Maybe [Filter])
+describeDBClusters_filters = Lens.lens (\DescribeDBClusters' {filters} -> filters) (\s@DescribeDBClusters' {} a -> s {filters = a} :: DescribeDBClusters) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBClusters_marker :: Lens.Lens' DescribeDBClusters (Prelude.Maybe Prelude.Text)
+describeDBClusters_marker = Lens.lens (\DescribeDBClusters' {marker} -> marker) (\s@DescribeDBClusters' {} a -> s {marker = a} :: DescribeDBClusters)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeDBClusters_maxRecords :: Lens.Lens' DescribeDBClusters (Prelude.Maybe Prelude.Int)
+describeDBClusters_maxRecords = Lens.lens (\DescribeDBClusters' {maxRecords} -> maxRecords) (\s@DescribeDBClusters' {} a -> s {maxRecords = a} :: DescribeDBClusters)
+
+instance Core.AWSPager DescribeDBClusters where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeDBClustersResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeDBClustersResponse_dbClusters
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeDBClusters_marker
+          Lens..~ rs
+          Lens.^? describeDBClustersResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeDBClusters where
+  type
+    AWSResponse DescribeDBClusters =
+      DescribeDBClustersResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeDBClustersResult"
+      ( \s h x ->
+          DescribeDBClustersResponse'
+            Prelude.<$> ( x
+                            Data..@? "DBClusters"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "DBCluster")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDBClusters where
+  hashWithSalt _salt DescribeDBClusters' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+
+instance Prelude.NFData DescribeDBClusters where
+  rnf DescribeDBClusters' {..} =
+    Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+
+instance Data.ToHeaders DescribeDBClusters where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeDBClusters where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDBClusters where
+  toQuery DescribeDBClusters' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeDBClusters" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier,
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords
+      ]
+
+-- | Represents the output of DescribeDBClusters.
+--
+-- /See:/ 'newDescribeDBClustersResponse' smart constructor.
+data DescribeDBClustersResponse = DescribeDBClustersResponse'
+  { -- | A list of clusters.
+    dbClusters :: Prelude.Maybe [DBCluster],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: 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 'DescribeDBClustersResponse' 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:
+--
+-- 'dbClusters', 'describeDBClustersResponse_dbClusters' - A list of clusters.
+--
+-- 'marker', 'describeDBClustersResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'httpStatus', 'describeDBClustersResponse_httpStatus' - The response's http status code.
+newDescribeDBClustersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDBClustersResponse
+newDescribeDBClustersResponse pHttpStatus_ =
+  DescribeDBClustersResponse'
+    { dbClusters =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of clusters.
+describeDBClustersResponse_dbClusters :: Lens.Lens' DescribeDBClustersResponse (Prelude.Maybe [DBCluster])
+describeDBClustersResponse_dbClusters = Lens.lens (\DescribeDBClustersResponse' {dbClusters} -> dbClusters) (\s@DescribeDBClustersResponse' {} a -> s {dbClusters = a} :: DescribeDBClustersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBClustersResponse_marker :: Lens.Lens' DescribeDBClustersResponse (Prelude.Maybe Prelude.Text)
+describeDBClustersResponse_marker = Lens.lens (\DescribeDBClustersResponse' {marker} -> marker) (\s@DescribeDBClustersResponse' {} a -> s {marker = a} :: DescribeDBClustersResponse)
+
+-- | The response's http status code.
+describeDBClustersResponse_httpStatus :: Lens.Lens' DescribeDBClustersResponse Prelude.Int
+describeDBClustersResponse_httpStatus = Lens.lens (\DescribeDBClustersResponse' {httpStatus} -> httpStatus) (\s@DescribeDBClustersResponse' {} a -> s {httpStatus = a} :: DescribeDBClustersResponse)
+
+instance Prelude.NFData DescribeDBClustersResponse where
+  rnf DescribeDBClustersResponse' {..} =
+    Prelude.rnf dbClusters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeDBEngineVersions.hs b/gen/Amazonka/DocumentDB/DescribeDBEngineVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeDBEngineVersions.hs
@@ -0,0 +1,382 @@
+{-# 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.DocumentDB.DescribeDBEngineVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of the available engines.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeDBEngineVersions
+  ( -- * Creating a Request
+    DescribeDBEngineVersions (..),
+    newDescribeDBEngineVersions,
+
+    -- * Request Lenses
+    describeDBEngineVersions_dbParameterGroupFamily,
+    describeDBEngineVersions_defaultOnly,
+    describeDBEngineVersions_engine,
+    describeDBEngineVersions_engineVersion,
+    describeDBEngineVersions_filters,
+    describeDBEngineVersions_listSupportedCharacterSets,
+    describeDBEngineVersions_listSupportedTimezones,
+    describeDBEngineVersions_marker,
+    describeDBEngineVersions_maxRecords,
+
+    -- * Destructuring the Response
+    DescribeDBEngineVersionsResponse (..),
+    newDescribeDBEngineVersionsResponse,
+
+    -- * Response Lenses
+    describeDBEngineVersionsResponse_dbEngineVersions,
+    describeDBEngineVersionsResponse_marker,
+    describeDBEngineVersionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeDBEngineVersions.
+--
+-- /See:/ 'newDescribeDBEngineVersions' smart constructor.
+data DescribeDBEngineVersions = DescribeDBEngineVersions'
+  { -- | The name of a specific parameter group family to return details for.
+    --
+    -- Constraints:
+    --
+    -- -   If provided, must match an existing @DBParameterGroupFamily@.
+    dbParameterGroupFamily :: Prelude.Maybe Prelude.Text,
+    -- | Indicates that only the default version of the specified engine or
+    -- engine and major version combination is returned.
+    defaultOnly :: Prelude.Maybe Prelude.Bool,
+    -- | The database engine to return.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | The database engine version to return.
+    --
+    -- Example: @3.6.0@
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | If this parameter is specified and the requested engine supports the
+    -- @CharacterSetName@ parameter for @CreateDBInstance@, the response
+    -- includes a list of supported character sets for each engine version.
+    listSupportedCharacterSets :: Prelude.Maybe Prelude.Bool,
+    -- | If this parameter is specified and the requested engine supports the
+    -- @TimeZone@ parameter for @CreateDBInstance@, the response includes a
+    -- list of supported time zones for each engine version.
+    listSupportedTimezones :: Prelude.Maybe Prelude.Bool,
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBEngineVersions' 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:
+--
+-- 'dbParameterGroupFamily', 'describeDBEngineVersions_dbParameterGroupFamily' - The name of a specific parameter group family to return details for.
+--
+-- Constraints:
+--
+-- -   If provided, must match an existing @DBParameterGroupFamily@.
+--
+-- 'defaultOnly', 'describeDBEngineVersions_defaultOnly' - Indicates that only the default version of the specified engine or
+-- engine and major version combination is returned.
+--
+-- 'engine', 'describeDBEngineVersions_engine' - The database engine to return.
+--
+-- 'engineVersion', 'describeDBEngineVersions_engineVersion' - The database engine version to return.
+--
+-- Example: @3.6.0@
+--
+-- 'filters', 'describeDBEngineVersions_filters' - This parameter is not currently supported.
+--
+-- 'listSupportedCharacterSets', 'describeDBEngineVersions_listSupportedCharacterSets' - If this parameter is specified and the requested engine supports the
+-- @CharacterSetName@ parameter for @CreateDBInstance@, the response
+-- includes a list of supported character sets for each engine version.
+--
+-- 'listSupportedTimezones', 'describeDBEngineVersions_listSupportedTimezones' - If this parameter is specified and the requested engine supports the
+-- @TimeZone@ parameter for @CreateDBInstance@, the response includes a
+-- list of supported time zones for each engine version.
+--
+-- 'marker', 'describeDBEngineVersions_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeDBEngineVersions_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+newDescribeDBEngineVersions ::
+  DescribeDBEngineVersions
+newDescribeDBEngineVersions =
+  DescribeDBEngineVersions'
+    { dbParameterGroupFamily =
+        Prelude.Nothing,
+      defaultOnly = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      listSupportedCharacterSets = Prelude.Nothing,
+      listSupportedTimezones = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing
+    }
+
+-- | The name of a specific parameter group family to return details for.
+--
+-- Constraints:
+--
+-- -   If provided, must match an existing @DBParameterGroupFamily@.
+describeDBEngineVersions_dbParameterGroupFamily :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Text)
+describeDBEngineVersions_dbParameterGroupFamily = Lens.lens (\DescribeDBEngineVersions' {dbParameterGroupFamily} -> dbParameterGroupFamily) (\s@DescribeDBEngineVersions' {} a -> s {dbParameterGroupFamily = a} :: DescribeDBEngineVersions)
+
+-- | Indicates that only the default version of the specified engine or
+-- engine and major version combination is returned.
+describeDBEngineVersions_defaultOnly :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Bool)
+describeDBEngineVersions_defaultOnly = Lens.lens (\DescribeDBEngineVersions' {defaultOnly} -> defaultOnly) (\s@DescribeDBEngineVersions' {} a -> s {defaultOnly = a} :: DescribeDBEngineVersions)
+
+-- | The database engine to return.
+describeDBEngineVersions_engine :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Text)
+describeDBEngineVersions_engine = Lens.lens (\DescribeDBEngineVersions' {engine} -> engine) (\s@DescribeDBEngineVersions' {} a -> s {engine = a} :: DescribeDBEngineVersions)
+
+-- | The database engine version to return.
+--
+-- Example: @3.6.0@
+describeDBEngineVersions_engineVersion :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Text)
+describeDBEngineVersions_engineVersion = Lens.lens (\DescribeDBEngineVersions' {engineVersion} -> engineVersion) (\s@DescribeDBEngineVersions' {} a -> s {engineVersion = a} :: DescribeDBEngineVersions)
+
+-- | This parameter is not currently supported.
+describeDBEngineVersions_filters :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe [Filter])
+describeDBEngineVersions_filters = Lens.lens (\DescribeDBEngineVersions' {filters} -> filters) (\s@DescribeDBEngineVersions' {} a -> s {filters = a} :: DescribeDBEngineVersions) Prelude.. Lens.mapping Lens.coerced
+
+-- | If this parameter is specified and the requested engine supports the
+-- @CharacterSetName@ parameter for @CreateDBInstance@, the response
+-- includes a list of supported character sets for each engine version.
+describeDBEngineVersions_listSupportedCharacterSets :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Bool)
+describeDBEngineVersions_listSupportedCharacterSets = Lens.lens (\DescribeDBEngineVersions' {listSupportedCharacterSets} -> listSupportedCharacterSets) (\s@DescribeDBEngineVersions' {} a -> s {listSupportedCharacterSets = a} :: DescribeDBEngineVersions)
+
+-- | If this parameter is specified and the requested engine supports the
+-- @TimeZone@ parameter for @CreateDBInstance@, the response includes a
+-- list of supported time zones for each engine version.
+describeDBEngineVersions_listSupportedTimezones :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Bool)
+describeDBEngineVersions_listSupportedTimezones = Lens.lens (\DescribeDBEngineVersions' {listSupportedTimezones} -> listSupportedTimezones) (\s@DescribeDBEngineVersions' {} a -> s {listSupportedTimezones = a} :: DescribeDBEngineVersions)
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBEngineVersions_marker :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Text)
+describeDBEngineVersions_marker = Lens.lens (\DescribeDBEngineVersions' {marker} -> marker) (\s@DescribeDBEngineVersions' {} a -> s {marker = a} :: DescribeDBEngineVersions)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeDBEngineVersions_maxRecords :: Lens.Lens' DescribeDBEngineVersions (Prelude.Maybe Prelude.Int)
+describeDBEngineVersions_maxRecords = Lens.lens (\DescribeDBEngineVersions' {maxRecords} -> maxRecords) (\s@DescribeDBEngineVersions' {} a -> s {maxRecords = a} :: DescribeDBEngineVersions)
+
+instance Core.AWSPager DescribeDBEngineVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeDBEngineVersionsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeDBEngineVersionsResponse_dbEngineVersions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeDBEngineVersions_marker
+          Lens..~ rs
+          Lens.^? describeDBEngineVersionsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeDBEngineVersions where
+  type
+    AWSResponse DescribeDBEngineVersions =
+      DescribeDBEngineVersionsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeDBEngineVersionsResult"
+      ( \s h x ->
+          DescribeDBEngineVersionsResponse'
+            Prelude.<$> ( x
+                            Data..@? "DBEngineVersions"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "DBEngineVersion")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDBEngineVersions where
+  hashWithSalt _salt DescribeDBEngineVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbParameterGroupFamily
+      `Prelude.hashWithSalt` defaultOnly
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` listSupportedCharacterSets
+      `Prelude.hashWithSalt` listSupportedTimezones
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+
+instance Prelude.NFData DescribeDBEngineVersions where
+  rnf DescribeDBEngineVersions' {..} =
+    Prelude.rnf dbParameterGroupFamily
+      `Prelude.seq` Prelude.rnf defaultOnly
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf listSupportedCharacterSets
+      `Prelude.seq` Prelude.rnf listSupportedTimezones
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+
+instance Data.ToHeaders DescribeDBEngineVersions where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeDBEngineVersions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDBEngineVersions where
+  toQuery DescribeDBEngineVersions' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeDBEngineVersions" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBParameterGroupFamily"
+          Data.=: dbParameterGroupFamily,
+        "DefaultOnly" Data.=: defaultOnly,
+        "Engine" Data.=: engine,
+        "EngineVersion" Data.=: engineVersion,
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "ListSupportedCharacterSets"
+          Data.=: listSupportedCharacterSets,
+        "ListSupportedTimezones"
+          Data.=: listSupportedTimezones,
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords
+      ]
+
+-- | Represents the output of DescribeDBEngineVersions.
+--
+-- /See:/ 'newDescribeDBEngineVersionsResponse' smart constructor.
+data DescribeDBEngineVersionsResponse = DescribeDBEngineVersionsResponse'
+  { -- | Detailed information about one or more engine versions.
+    dbEngineVersions :: Prelude.Maybe [DBEngineVersion],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: 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 'DescribeDBEngineVersionsResponse' 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:
+--
+-- 'dbEngineVersions', 'describeDBEngineVersionsResponse_dbEngineVersions' - Detailed information about one or more engine versions.
+--
+-- 'marker', 'describeDBEngineVersionsResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'httpStatus', 'describeDBEngineVersionsResponse_httpStatus' - The response's http status code.
+newDescribeDBEngineVersionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDBEngineVersionsResponse
+newDescribeDBEngineVersionsResponse pHttpStatus_ =
+  DescribeDBEngineVersionsResponse'
+    { dbEngineVersions =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Detailed information about one or more engine versions.
+describeDBEngineVersionsResponse_dbEngineVersions :: Lens.Lens' DescribeDBEngineVersionsResponse (Prelude.Maybe [DBEngineVersion])
+describeDBEngineVersionsResponse_dbEngineVersions = Lens.lens (\DescribeDBEngineVersionsResponse' {dbEngineVersions} -> dbEngineVersions) (\s@DescribeDBEngineVersionsResponse' {} a -> s {dbEngineVersions = a} :: DescribeDBEngineVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBEngineVersionsResponse_marker :: Lens.Lens' DescribeDBEngineVersionsResponse (Prelude.Maybe Prelude.Text)
+describeDBEngineVersionsResponse_marker = Lens.lens (\DescribeDBEngineVersionsResponse' {marker} -> marker) (\s@DescribeDBEngineVersionsResponse' {} a -> s {marker = a} :: DescribeDBEngineVersionsResponse)
+
+-- | The response's http status code.
+describeDBEngineVersionsResponse_httpStatus :: Lens.Lens' DescribeDBEngineVersionsResponse Prelude.Int
+describeDBEngineVersionsResponse_httpStatus = Lens.lens (\DescribeDBEngineVersionsResponse' {httpStatus} -> httpStatus) (\s@DescribeDBEngineVersionsResponse' {} a -> s {httpStatus = a} :: DescribeDBEngineVersionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDBEngineVersionsResponse
+  where
+  rnf DescribeDBEngineVersionsResponse' {..} =
+    Prelude.rnf dbEngineVersions
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeDBInstances.hs b/gen/Amazonka/DocumentDB/DescribeDBInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeDBInstances.hs
@@ -0,0 +1,330 @@
+{-# 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.DocumentDB.DescribeDBInstances
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about provisioned Amazon DocumentDB instances. This
+-- API supports pagination.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeDBInstances
+  ( -- * Creating a Request
+    DescribeDBInstances (..),
+    newDescribeDBInstances,
+
+    -- * Request Lenses
+    describeDBInstances_dbInstanceIdentifier,
+    describeDBInstances_filters,
+    describeDBInstances_marker,
+    describeDBInstances_maxRecords,
+
+    -- * Destructuring the Response
+    DescribeDBInstancesResponse (..),
+    newDescribeDBInstancesResponse,
+
+    -- * Response Lenses
+    describeDBInstancesResponse_dbInstances,
+    describeDBInstancesResponse_marker,
+    describeDBInstancesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeDBInstances.
+--
+-- /See:/ 'newDescribeDBInstances' smart constructor.
+data DescribeDBInstances = DescribeDBInstances'
+  { -- | The user-provided instance identifier. If this parameter is specified,
+    -- information from only the specific instance is returned. This parameter
+    -- isn\'t case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   If provided, must match the identifier of an existing @DBInstance@.
+    dbInstanceIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | A filter that specifies one or more instances to describe.
+    --
+    -- Supported filters:
+    --
+    -- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+    --     Resource Names (ARNs). The results list includes only the
+    --     information about the instances that are associated with the
+    --     clusters that are identified by these ARNs.
+    --
+    -- -   @db-instance-id@ - Accepts instance identifiers and instance ARNs.
+    --     The results list includes only the information about the instances
+    --     that are identified by these ARNs.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBInstances' 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:
+--
+-- 'dbInstanceIdentifier', 'describeDBInstances_dbInstanceIdentifier' - The user-provided instance identifier. If this parameter is specified,
+-- information from only the specific instance is returned. This parameter
+-- isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   If provided, must match the identifier of an existing @DBInstance@.
+--
+-- 'filters', 'describeDBInstances_filters' - A filter that specifies one or more instances to describe.
+--
+-- Supported filters:
+--
+-- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+--     Resource Names (ARNs). The results list includes only the
+--     information about the instances that are associated with the
+--     clusters that are identified by these ARNs.
+--
+-- -   @db-instance-id@ - Accepts instance identifiers and instance ARNs.
+--     The results list includes only the information about the instances
+--     that are identified by these ARNs.
+--
+-- 'marker', 'describeDBInstances_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeDBInstances_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+newDescribeDBInstances ::
+  DescribeDBInstances
+newDescribeDBInstances =
+  DescribeDBInstances'
+    { dbInstanceIdentifier =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing
+    }
+
+-- | The user-provided instance identifier. If this parameter is specified,
+-- information from only the specific instance is returned. This parameter
+-- isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   If provided, must match the identifier of an existing @DBInstance@.
+describeDBInstances_dbInstanceIdentifier :: Lens.Lens' DescribeDBInstances (Prelude.Maybe Prelude.Text)
+describeDBInstances_dbInstanceIdentifier = Lens.lens (\DescribeDBInstances' {dbInstanceIdentifier} -> dbInstanceIdentifier) (\s@DescribeDBInstances' {} a -> s {dbInstanceIdentifier = a} :: DescribeDBInstances)
+
+-- | A filter that specifies one or more instances to describe.
+--
+-- Supported filters:
+--
+-- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+--     Resource Names (ARNs). The results list includes only the
+--     information about the instances that are associated with the
+--     clusters that are identified by these ARNs.
+--
+-- -   @db-instance-id@ - Accepts instance identifiers and instance ARNs.
+--     The results list includes only the information about the instances
+--     that are identified by these ARNs.
+describeDBInstances_filters :: Lens.Lens' DescribeDBInstances (Prelude.Maybe [Filter])
+describeDBInstances_filters = Lens.lens (\DescribeDBInstances' {filters} -> filters) (\s@DescribeDBInstances' {} a -> s {filters = a} :: DescribeDBInstances) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBInstances_marker :: Lens.Lens' DescribeDBInstances (Prelude.Maybe Prelude.Text)
+describeDBInstances_marker = Lens.lens (\DescribeDBInstances' {marker} -> marker) (\s@DescribeDBInstances' {} a -> s {marker = a} :: DescribeDBInstances)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeDBInstances_maxRecords :: Lens.Lens' DescribeDBInstances (Prelude.Maybe Prelude.Int)
+describeDBInstances_maxRecords = Lens.lens (\DescribeDBInstances' {maxRecords} -> maxRecords) (\s@DescribeDBInstances' {} a -> s {maxRecords = a} :: DescribeDBInstances)
+
+instance Core.AWSPager DescribeDBInstances where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeDBInstancesResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeDBInstancesResponse_dbInstances
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeDBInstances_marker
+          Lens..~ rs
+          Lens.^? describeDBInstancesResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeDBInstances where
+  type
+    AWSResponse DescribeDBInstances =
+      DescribeDBInstancesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeDBInstancesResult"
+      ( \s h x ->
+          DescribeDBInstancesResponse'
+            Prelude.<$> ( x
+                            Data..@? "DBInstances"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "DBInstance")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDBInstances where
+  hashWithSalt _salt DescribeDBInstances' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbInstanceIdentifier
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+
+instance Prelude.NFData DescribeDBInstances where
+  rnf DescribeDBInstances' {..} =
+    Prelude.rnf dbInstanceIdentifier
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+
+instance Data.ToHeaders DescribeDBInstances where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeDBInstances where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDBInstances where
+  toQuery DescribeDBInstances' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeDBInstances" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBInstanceIdentifier" Data.=: dbInstanceIdentifier,
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords
+      ]
+
+-- | Represents the output of DescribeDBInstances.
+--
+-- /See:/ 'newDescribeDBInstancesResponse' smart constructor.
+data DescribeDBInstancesResponse = DescribeDBInstancesResponse'
+  { -- | Detailed information about one or more instances.
+    dbInstances :: Prelude.Maybe [DBInstance],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: 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 'DescribeDBInstancesResponse' 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:
+--
+-- 'dbInstances', 'describeDBInstancesResponse_dbInstances' - Detailed information about one or more instances.
+--
+-- 'marker', 'describeDBInstancesResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'httpStatus', 'describeDBInstancesResponse_httpStatus' - The response's http status code.
+newDescribeDBInstancesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDBInstancesResponse
+newDescribeDBInstancesResponse pHttpStatus_ =
+  DescribeDBInstancesResponse'
+    { dbInstances =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Detailed information about one or more instances.
+describeDBInstancesResponse_dbInstances :: Lens.Lens' DescribeDBInstancesResponse (Prelude.Maybe [DBInstance])
+describeDBInstancesResponse_dbInstances = Lens.lens (\DescribeDBInstancesResponse' {dbInstances} -> dbInstances) (\s@DescribeDBInstancesResponse' {} a -> s {dbInstances = a} :: DescribeDBInstancesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBInstancesResponse_marker :: Lens.Lens' DescribeDBInstancesResponse (Prelude.Maybe Prelude.Text)
+describeDBInstancesResponse_marker = Lens.lens (\DescribeDBInstancesResponse' {marker} -> marker) (\s@DescribeDBInstancesResponse' {} a -> s {marker = a} :: DescribeDBInstancesResponse)
+
+-- | The response's http status code.
+describeDBInstancesResponse_httpStatus :: Lens.Lens' DescribeDBInstancesResponse Prelude.Int
+describeDBInstancesResponse_httpStatus = Lens.lens (\DescribeDBInstancesResponse' {httpStatus} -> httpStatus) (\s@DescribeDBInstancesResponse' {} a -> s {httpStatus = a} :: DescribeDBInstancesResponse)
+
+instance Prelude.NFData DescribeDBInstancesResponse where
+  rnf DescribeDBInstancesResponse' {..} =
+    Prelude.rnf dbInstances
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeDBSubnetGroups.hs b/gen/Amazonka/DocumentDB/DescribeDBSubnetGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeDBSubnetGroups.hs
@@ -0,0 +1,283 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.DescribeDBSubnetGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of @DBSubnetGroup@ descriptions. If a @DBSubnetGroupName@
+-- is specified, the list will contain only the descriptions of the
+-- specified @DBSubnetGroup@.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeDBSubnetGroups
+  ( -- * Creating a Request
+    DescribeDBSubnetGroups (..),
+    newDescribeDBSubnetGroups,
+
+    -- * Request Lenses
+    describeDBSubnetGroups_dbSubnetGroupName,
+    describeDBSubnetGroups_filters,
+    describeDBSubnetGroups_marker,
+    describeDBSubnetGroups_maxRecords,
+
+    -- * Destructuring the Response
+    DescribeDBSubnetGroupsResponse (..),
+    newDescribeDBSubnetGroupsResponse,
+
+    -- * Response Lenses
+    describeDBSubnetGroupsResponse_dbSubnetGroups,
+    describeDBSubnetGroupsResponse_marker,
+    describeDBSubnetGroupsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeDBSubnetGroups.
+--
+-- /See:/ 'newDescribeDBSubnetGroups' smart constructor.
+data DescribeDBSubnetGroups = DescribeDBSubnetGroups'
+  { -- | The name of the subnet group to return details for.
+    dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
+    -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDBSubnetGroups' 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:
+--
+-- 'dbSubnetGroupName', 'describeDBSubnetGroups_dbSubnetGroupName' - The name of the subnet group to return details for.
+--
+-- 'filters', 'describeDBSubnetGroups_filters' - This parameter is not currently supported.
+--
+-- 'marker', 'describeDBSubnetGroups_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeDBSubnetGroups_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+newDescribeDBSubnetGroups ::
+  DescribeDBSubnetGroups
+newDescribeDBSubnetGroups =
+  DescribeDBSubnetGroups'
+    { dbSubnetGroupName =
+        Prelude.Nothing,
+      filters = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing
+    }
+
+-- | The name of the subnet group to return details for.
+describeDBSubnetGroups_dbSubnetGroupName :: Lens.Lens' DescribeDBSubnetGroups (Prelude.Maybe Prelude.Text)
+describeDBSubnetGroups_dbSubnetGroupName = Lens.lens (\DescribeDBSubnetGroups' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@DescribeDBSubnetGroups' {} a -> s {dbSubnetGroupName = a} :: DescribeDBSubnetGroups)
+
+-- | This parameter is not currently supported.
+describeDBSubnetGroups_filters :: Lens.Lens' DescribeDBSubnetGroups (Prelude.Maybe [Filter])
+describeDBSubnetGroups_filters = Lens.lens (\DescribeDBSubnetGroups' {filters} -> filters) (\s@DescribeDBSubnetGroups' {} a -> s {filters = a} :: DescribeDBSubnetGroups) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBSubnetGroups_marker :: Lens.Lens' DescribeDBSubnetGroups (Prelude.Maybe Prelude.Text)
+describeDBSubnetGroups_marker = Lens.lens (\DescribeDBSubnetGroups' {marker} -> marker) (\s@DescribeDBSubnetGroups' {} a -> s {marker = a} :: DescribeDBSubnetGroups)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeDBSubnetGroups_maxRecords :: Lens.Lens' DescribeDBSubnetGroups (Prelude.Maybe Prelude.Int)
+describeDBSubnetGroups_maxRecords = Lens.lens (\DescribeDBSubnetGroups' {maxRecords} -> maxRecords) (\s@DescribeDBSubnetGroups' {} a -> s {maxRecords = a} :: DescribeDBSubnetGroups)
+
+instance Core.AWSPager DescribeDBSubnetGroups where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeDBSubnetGroupsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeDBSubnetGroupsResponse_dbSubnetGroups
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeDBSubnetGroups_marker
+          Lens..~ rs
+          Lens.^? describeDBSubnetGroupsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeDBSubnetGroups where
+  type
+    AWSResponse DescribeDBSubnetGroups =
+      DescribeDBSubnetGroupsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeDBSubnetGroupsResult"
+      ( \s h x ->
+          DescribeDBSubnetGroupsResponse'
+            Prelude.<$> ( x
+                            Data..@? "DBSubnetGroups"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "DBSubnetGroup")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDBSubnetGroups where
+  hashWithSalt _salt DescribeDBSubnetGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbSubnetGroupName
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+
+instance Prelude.NFData DescribeDBSubnetGroups where
+  rnf DescribeDBSubnetGroups' {..} =
+    Prelude.rnf dbSubnetGroupName
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+
+instance Data.ToHeaders DescribeDBSubnetGroups where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeDBSubnetGroups where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeDBSubnetGroups where
+  toQuery DescribeDBSubnetGroups' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeDBSubnetGroups" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBSubnetGroupName" Data.=: dbSubnetGroupName,
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords
+      ]
+
+-- | Represents the output of DescribeDBSubnetGroups.
+--
+-- /See:/ 'newDescribeDBSubnetGroupsResponse' smart constructor.
+data DescribeDBSubnetGroupsResponse = DescribeDBSubnetGroupsResponse'
+  { -- | Detailed information about one or more subnet groups.
+    dbSubnetGroups :: Prelude.Maybe [DBSubnetGroup],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: 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 'DescribeDBSubnetGroupsResponse' 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:
+--
+-- 'dbSubnetGroups', 'describeDBSubnetGroupsResponse_dbSubnetGroups' - Detailed information about one or more subnet groups.
+--
+-- 'marker', 'describeDBSubnetGroupsResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'httpStatus', 'describeDBSubnetGroupsResponse_httpStatus' - The response's http status code.
+newDescribeDBSubnetGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDBSubnetGroupsResponse
+newDescribeDBSubnetGroupsResponse pHttpStatus_ =
+  DescribeDBSubnetGroupsResponse'
+    { dbSubnetGroups =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Detailed information about one or more subnet groups.
+describeDBSubnetGroupsResponse_dbSubnetGroups :: Lens.Lens' DescribeDBSubnetGroupsResponse (Prelude.Maybe [DBSubnetGroup])
+describeDBSubnetGroupsResponse_dbSubnetGroups = Lens.lens (\DescribeDBSubnetGroupsResponse' {dbSubnetGroups} -> dbSubnetGroups) (\s@DescribeDBSubnetGroupsResponse' {} a -> s {dbSubnetGroups = a} :: DescribeDBSubnetGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeDBSubnetGroupsResponse_marker :: Lens.Lens' DescribeDBSubnetGroupsResponse (Prelude.Maybe Prelude.Text)
+describeDBSubnetGroupsResponse_marker = Lens.lens (\DescribeDBSubnetGroupsResponse' {marker} -> marker) (\s@DescribeDBSubnetGroupsResponse' {} a -> s {marker = a} :: DescribeDBSubnetGroupsResponse)
+
+-- | The response's http status code.
+describeDBSubnetGroupsResponse_httpStatus :: Lens.Lens' DescribeDBSubnetGroupsResponse Prelude.Int
+describeDBSubnetGroupsResponse_httpStatus = Lens.lens (\DescribeDBSubnetGroupsResponse' {httpStatus} -> httpStatus) (\s@DescribeDBSubnetGroupsResponse' {} a -> s {httpStatus = a} :: DescribeDBSubnetGroupsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDBSubnetGroupsResponse
+  where
+  rnf DescribeDBSubnetGroupsResponse' {..} =
+    Prelude.rnf dbSubnetGroups
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeEngineDefaultClusterParameters.hs b/gen/Amazonka/DocumentDB/DescribeEngineDefaultClusterParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeEngineDefaultClusterParameters.hs
@@ -0,0 +1,266 @@
+{-# 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.DocumentDB.DescribeEngineDefaultClusterParameters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the default engine and system parameter information for the
+-- cluster database engine.
+module Amazonka.DocumentDB.DescribeEngineDefaultClusterParameters
+  ( -- * Creating a Request
+    DescribeEngineDefaultClusterParameters (..),
+    newDescribeEngineDefaultClusterParameters,
+
+    -- * Request Lenses
+    describeEngineDefaultClusterParameters_filters,
+    describeEngineDefaultClusterParameters_marker,
+    describeEngineDefaultClusterParameters_maxRecords,
+    describeEngineDefaultClusterParameters_dbParameterGroupFamily,
+
+    -- * Destructuring the Response
+    DescribeEngineDefaultClusterParametersResponse (..),
+    newDescribeEngineDefaultClusterParametersResponse,
+
+    -- * Response Lenses
+    describeEngineDefaultClusterParametersResponse_engineDefaults,
+    describeEngineDefaultClusterParametersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeEngineDefaultClusterParameters.
+--
+-- /See:/ 'newDescribeEngineDefaultClusterParameters' smart constructor.
+data DescribeEngineDefaultClusterParameters = DescribeEngineDefaultClusterParameters'
+  { -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int,
+    -- | The name of the cluster parameter group family to return the engine
+    -- parameter information for.
+    dbParameterGroupFamily :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEngineDefaultClusterParameters' 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', 'describeEngineDefaultClusterParameters_filters' - This parameter is not currently supported.
+--
+-- 'marker', 'describeEngineDefaultClusterParameters_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeEngineDefaultClusterParameters_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+--
+-- 'dbParameterGroupFamily', 'describeEngineDefaultClusterParameters_dbParameterGroupFamily' - The name of the cluster parameter group family to return the engine
+-- parameter information for.
+newDescribeEngineDefaultClusterParameters ::
+  -- | 'dbParameterGroupFamily'
+  Prelude.Text ->
+  DescribeEngineDefaultClusterParameters
+newDescribeEngineDefaultClusterParameters
+  pDBParameterGroupFamily_ =
+    DescribeEngineDefaultClusterParameters'
+      { filters =
+          Prelude.Nothing,
+        marker = Prelude.Nothing,
+        maxRecords = Prelude.Nothing,
+        dbParameterGroupFamily =
+          pDBParameterGroupFamily_
+      }
+
+-- | This parameter is not currently supported.
+describeEngineDefaultClusterParameters_filters :: Lens.Lens' DescribeEngineDefaultClusterParameters (Prelude.Maybe [Filter])
+describeEngineDefaultClusterParameters_filters = Lens.lens (\DescribeEngineDefaultClusterParameters' {filters} -> filters) (\s@DescribeEngineDefaultClusterParameters' {} a -> s {filters = a} :: DescribeEngineDefaultClusterParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeEngineDefaultClusterParameters_marker :: Lens.Lens' DescribeEngineDefaultClusterParameters (Prelude.Maybe Prelude.Text)
+describeEngineDefaultClusterParameters_marker = Lens.lens (\DescribeEngineDefaultClusterParameters' {marker} -> marker) (\s@DescribeEngineDefaultClusterParameters' {} a -> s {marker = a} :: DescribeEngineDefaultClusterParameters)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeEngineDefaultClusterParameters_maxRecords :: Lens.Lens' DescribeEngineDefaultClusterParameters (Prelude.Maybe Prelude.Int)
+describeEngineDefaultClusterParameters_maxRecords = Lens.lens (\DescribeEngineDefaultClusterParameters' {maxRecords} -> maxRecords) (\s@DescribeEngineDefaultClusterParameters' {} a -> s {maxRecords = a} :: DescribeEngineDefaultClusterParameters)
+
+-- | The name of the cluster parameter group family to return the engine
+-- parameter information for.
+describeEngineDefaultClusterParameters_dbParameterGroupFamily :: Lens.Lens' DescribeEngineDefaultClusterParameters Prelude.Text
+describeEngineDefaultClusterParameters_dbParameterGroupFamily = Lens.lens (\DescribeEngineDefaultClusterParameters' {dbParameterGroupFamily} -> dbParameterGroupFamily) (\s@DescribeEngineDefaultClusterParameters' {} a -> s {dbParameterGroupFamily = a} :: DescribeEngineDefaultClusterParameters)
+
+instance
+  Core.AWSRequest
+    DescribeEngineDefaultClusterParameters
+  where
+  type
+    AWSResponse
+      DescribeEngineDefaultClusterParameters =
+      DescribeEngineDefaultClusterParametersResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeEngineDefaultClusterParametersResult"
+      ( \s h x ->
+          DescribeEngineDefaultClusterParametersResponse'
+            Prelude.<$> (x Data..@? "EngineDefaults")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeEngineDefaultClusterParameters
+  where
+  hashWithSalt
+    _salt
+    DescribeEngineDefaultClusterParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` filters
+        `Prelude.hashWithSalt` marker
+        `Prelude.hashWithSalt` maxRecords
+        `Prelude.hashWithSalt` dbParameterGroupFamily
+
+instance
+  Prelude.NFData
+    DescribeEngineDefaultClusterParameters
+  where
+  rnf DescribeEngineDefaultClusterParameters' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+      `Prelude.seq` Prelude.rnf dbParameterGroupFamily
+
+instance
+  Data.ToHeaders
+    DescribeEngineDefaultClusterParameters
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DescribeEngineDefaultClusterParameters
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeEngineDefaultClusterParameters
+  where
+  toQuery DescribeEngineDefaultClusterParameters' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DescribeEngineDefaultClusterParameters" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords,
+        "DBParameterGroupFamily"
+          Data.=: dbParameterGroupFamily
+      ]
+
+-- | /See:/ 'newDescribeEngineDefaultClusterParametersResponse' smart constructor.
+data DescribeEngineDefaultClusterParametersResponse = DescribeEngineDefaultClusterParametersResponse'
+  { engineDefaults :: Prelude.Maybe EngineDefaults,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEngineDefaultClusterParametersResponse' 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:
+--
+-- 'engineDefaults', 'describeEngineDefaultClusterParametersResponse_engineDefaults' - Undocumented member.
+--
+-- 'httpStatus', 'describeEngineDefaultClusterParametersResponse_httpStatus' - The response's http status code.
+newDescribeEngineDefaultClusterParametersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeEngineDefaultClusterParametersResponse
+newDescribeEngineDefaultClusterParametersResponse
+  pHttpStatus_ =
+    DescribeEngineDefaultClusterParametersResponse'
+      { engineDefaults =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+describeEngineDefaultClusterParametersResponse_engineDefaults :: Lens.Lens' DescribeEngineDefaultClusterParametersResponse (Prelude.Maybe EngineDefaults)
+describeEngineDefaultClusterParametersResponse_engineDefaults = Lens.lens (\DescribeEngineDefaultClusterParametersResponse' {engineDefaults} -> engineDefaults) (\s@DescribeEngineDefaultClusterParametersResponse' {} a -> s {engineDefaults = a} :: DescribeEngineDefaultClusterParametersResponse)
+
+-- | The response's http status code.
+describeEngineDefaultClusterParametersResponse_httpStatus :: Lens.Lens' DescribeEngineDefaultClusterParametersResponse Prelude.Int
+describeEngineDefaultClusterParametersResponse_httpStatus = Lens.lens (\DescribeEngineDefaultClusterParametersResponse' {httpStatus} -> httpStatus) (\s@DescribeEngineDefaultClusterParametersResponse' {} a -> s {httpStatus = a} :: DescribeEngineDefaultClusterParametersResponse)
+
+instance
+  Prelude.NFData
+    DescribeEngineDefaultClusterParametersResponse
+  where
+  rnf
+    DescribeEngineDefaultClusterParametersResponse' {..} =
+      Prelude.rnf engineDefaults
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeEventCategories.hs b/gen/Amazonka/DocumentDB/DescribeEventCategories.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeEventCategories.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.DescribeEventCategories
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Displays a list of categories for all event source types, or, if
+-- specified, for a specified source type.
+module Amazonka.DocumentDB.DescribeEventCategories
+  ( -- * Creating a Request
+    DescribeEventCategories (..),
+    newDescribeEventCategories,
+
+    -- * Request Lenses
+    describeEventCategories_filters,
+    describeEventCategories_sourceType,
+
+    -- * Destructuring the Response
+    DescribeEventCategoriesResponse (..),
+    newDescribeEventCategoriesResponse,
+
+    -- * Response Lenses
+    describeEventCategoriesResponse_eventCategoriesMapList,
+    describeEventCategoriesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeEventCategories.
+--
+-- /See:/ 'newDescribeEventCategories' smart constructor.
+data DescribeEventCategories = DescribeEventCategories'
+  { -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | The type of source that is generating the events.
+    --
+    -- Valid values: @db-instance@, @db-parameter-group@, @db-security-group@
+    sourceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEventCategories' 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', 'describeEventCategories_filters' - This parameter is not currently supported.
+--
+-- 'sourceType', 'describeEventCategories_sourceType' - The type of source that is generating the events.
+--
+-- Valid values: @db-instance@, @db-parameter-group@, @db-security-group@
+newDescribeEventCategories ::
+  DescribeEventCategories
+newDescribeEventCategories =
+  DescribeEventCategories'
+    { filters = Prelude.Nothing,
+      sourceType = Prelude.Nothing
+    }
+
+-- | This parameter is not currently supported.
+describeEventCategories_filters :: Lens.Lens' DescribeEventCategories (Prelude.Maybe [Filter])
+describeEventCategories_filters = Lens.lens (\DescribeEventCategories' {filters} -> filters) (\s@DescribeEventCategories' {} a -> s {filters = a} :: DescribeEventCategories) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of source that is generating the events.
+--
+-- Valid values: @db-instance@, @db-parameter-group@, @db-security-group@
+describeEventCategories_sourceType :: Lens.Lens' DescribeEventCategories (Prelude.Maybe Prelude.Text)
+describeEventCategories_sourceType = Lens.lens (\DescribeEventCategories' {sourceType} -> sourceType) (\s@DescribeEventCategories' {} a -> s {sourceType = a} :: DescribeEventCategories)
+
+instance Core.AWSRequest DescribeEventCategories where
+  type
+    AWSResponse DescribeEventCategories =
+      DescribeEventCategoriesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeEventCategoriesResult"
+      ( \s h x ->
+          DescribeEventCategoriesResponse'
+            Prelude.<$> ( x
+                            Data..@? "EventCategoriesMapList"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "EventCategoriesMap")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeEventCategories where
+  hashWithSalt _salt DescribeEventCategories' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` sourceType
+
+instance Prelude.NFData DescribeEventCategories where
+  rnf DescribeEventCategories' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf sourceType
+
+instance Data.ToHeaders DescribeEventCategories where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeEventCategories where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeEventCategories where
+  toQuery DescribeEventCategories' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeEventCategories" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "SourceType" Data.=: sourceType
+      ]
+
+-- | Represents the output of DescribeEventCategories.
+--
+-- /See:/ 'newDescribeEventCategoriesResponse' smart constructor.
+data DescribeEventCategoriesResponse = DescribeEventCategoriesResponse'
+  { -- | A list of event category maps.
+    eventCategoriesMapList :: Prelude.Maybe [EventCategoriesMap],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEventCategoriesResponse' 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:
+--
+-- 'eventCategoriesMapList', 'describeEventCategoriesResponse_eventCategoriesMapList' - A list of event category maps.
+--
+-- 'httpStatus', 'describeEventCategoriesResponse_httpStatus' - The response's http status code.
+newDescribeEventCategoriesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeEventCategoriesResponse
+newDescribeEventCategoriesResponse pHttpStatus_ =
+  DescribeEventCategoriesResponse'
+    { eventCategoriesMapList =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of event category maps.
+describeEventCategoriesResponse_eventCategoriesMapList :: Lens.Lens' DescribeEventCategoriesResponse (Prelude.Maybe [EventCategoriesMap])
+describeEventCategoriesResponse_eventCategoriesMapList = Lens.lens (\DescribeEventCategoriesResponse' {eventCategoriesMapList} -> eventCategoriesMapList) (\s@DescribeEventCategoriesResponse' {} a -> s {eventCategoriesMapList = a} :: DescribeEventCategoriesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeEventCategoriesResponse_httpStatus :: Lens.Lens' DescribeEventCategoriesResponse Prelude.Int
+describeEventCategoriesResponse_httpStatus = Lens.lens (\DescribeEventCategoriesResponse' {httpStatus} -> httpStatus) (\s@DescribeEventCategoriesResponse' {} a -> s {httpStatus = a} :: DescribeEventCategoriesResponse)
+
+instance
+  Prelude.NFData
+    DescribeEventCategoriesResponse
+  where
+  rnf DescribeEventCategoriesResponse' {..} =
+    Prelude.rnf eventCategoriesMapList
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeEventSubscriptions.hs b/gen/Amazonka/DocumentDB/DescribeEventSubscriptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeEventSubscriptions.hs
@@ -0,0 +1,290 @@
+{-# 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.DocumentDB.DescribeEventSubscriptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the subscription descriptions for a customer account. The
+-- description for a subscription includes @SubscriptionName@,
+-- @SNSTopicARN@, @CustomerID@, @SourceType@, @SourceID@, @CreationTime@,
+-- and @Status@.
+--
+-- If you specify a @SubscriptionName@, lists the description for that
+-- subscription.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeEventSubscriptions
+  ( -- * Creating a Request
+    DescribeEventSubscriptions (..),
+    newDescribeEventSubscriptions,
+
+    -- * Request Lenses
+    describeEventSubscriptions_filters,
+    describeEventSubscriptions_marker,
+    describeEventSubscriptions_maxRecords,
+    describeEventSubscriptions_subscriptionName,
+
+    -- * Destructuring the Response
+    DescribeEventSubscriptionsResponse (..),
+    newDescribeEventSubscriptionsResponse,
+
+    -- * Response Lenses
+    describeEventSubscriptionsResponse_eventSubscriptionsList,
+    describeEventSubscriptionsResponse_marker,
+    describeEventSubscriptionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeEventSubscriptions.
+--
+-- /See:/ 'newDescribeEventSubscriptions' smart constructor.
+data DescribeEventSubscriptions = DescribeEventSubscriptions'
+  { -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int,
+    -- | The name of the Amazon DocumentDB event notification subscription that
+    -- you want to describe.
+    subscriptionName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEventSubscriptions' 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', 'describeEventSubscriptions_filters' - This parameter is not currently supported.
+--
+-- 'marker', 'describeEventSubscriptions_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeEventSubscriptions_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+--
+-- 'subscriptionName', 'describeEventSubscriptions_subscriptionName' - The name of the Amazon DocumentDB event notification subscription that
+-- you want to describe.
+newDescribeEventSubscriptions ::
+  DescribeEventSubscriptions
+newDescribeEventSubscriptions =
+  DescribeEventSubscriptions'
+    { filters =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing,
+      subscriptionName = Prelude.Nothing
+    }
+
+-- | This parameter is not currently supported.
+describeEventSubscriptions_filters :: Lens.Lens' DescribeEventSubscriptions (Prelude.Maybe [Filter])
+describeEventSubscriptions_filters = Lens.lens (\DescribeEventSubscriptions' {filters} -> filters) (\s@DescribeEventSubscriptions' {} a -> s {filters = a} :: DescribeEventSubscriptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeEventSubscriptions_marker :: Lens.Lens' DescribeEventSubscriptions (Prelude.Maybe Prelude.Text)
+describeEventSubscriptions_marker = Lens.lens (\DescribeEventSubscriptions' {marker} -> marker) (\s@DescribeEventSubscriptions' {} a -> s {marker = a} :: DescribeEventSubscriptions)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeEventSubscriptions_maxRecords :: Lens.Lens' DescribeEventSubscriptions (Prelude.Maybe Prelude.Int)
+describeEventSubscriptions_maxRecords = Lens.lens (\DescribeEventSubscriptions' {maxRecords} -> maxRecords) (\s@DescribeEventSubscriptions' {} a -> s {maxRecords = a} :: DescribeEventSubscriptions)
+
+-- | The name of the Amazon DocumentDB event notification subscription that
+-- you want to describe.
+describeEventSubscriptions_subscriptionName :: Lens.Lens' DescribeEventSubscriptions (Prelude.Maybe Prelude.Text)
+describeEventSubscriptions_subscriptionName = Lens.lens (\DescribeEventSubscriptions' {subscriptionName} -> subscriptionName) (\s@DescribeEventSubscriptions' {} a -> s {subscriptionName = a} :: DescribeEventSubscriptions)
+
+instance Core.AWSPager DescribeEventSubscriptions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeEventSubscriptionsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeEventSubscriptionsResponse_eventSubscriptionsList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeEventSubscriptions_marker
+          Lens..~ rs
+          Lens.^? describeEventSubscriptionsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeEventSubscriptions where
+  type
+    AWSResponse DescribeEventSubscriptions =
+      DescribeEventSubscriptionsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeEventSubscriptionsResult"
+      ( \s h x ->
+          DescribeEventSubscriptionsResponse'
+            Prelude.<$> ( x
+                            Data..@? "EventSubscriptionsList"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "EventSubscription")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeEventSubscriptions where
+  hashWithSalt _salt DescribeEventSubscriptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+      `Prelude.hashWithSalt` subscriptionName
+
+instance Prelude.NFData DescribeEventSubscriptions where
+  rnf DescribeEventSubscriptions' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+      `Prelude.seq` Prelude.rnf subscriptionName
+
+instance Data.ToHeaders DescribeEventSubscriptions where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeEventSubscriptions where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeEventSubscriptions where
+  toQuery DescribeEventSubscriptions' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeEventSubscriptions" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords,
+        "SubscriptionName" Data.=: subscriptionName
+      ]
+
+-- | Represents the output of DescribeEventSubscriptions.
+--
+-- /See:/ 'newDescribeEventSubscriptionsResponse' smart constructor.
+data DescribeEventSubscriptionsResponse = DescribeEventSubscriptionsResponse'
+  { -- | A list of event subscriptions.
+    eventSubscriptionsList :: Prelude.Maybe [EventSubscription],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: 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 'DescribeEventSubscriptionsResponse' 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:
+--
+-- 'eventSubscriptionsList', 'describeEventSubscriptionsResponse_eventSubscriptionsList' - A list of event subscriptions.
+--
+-- 'marker', 'describeEventSubscriptionsResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'httpStatus', 'describeEventSubscriptionsResponse_httpStatus' - The response's http status code.
+newDescribeEventSubscriptionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeEventSubscriptionsResponse
+newDescribeEventSubscriptionsResponse pHttpStatus_ =
+  DescribeEventSubscriptionsResponse'
+    { eventSubscriptionsList =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of event subscriptions.
+describeEventSubscriptionsResponse_eventSubscriptionsList :: Lens.Lens' DescribeEventSubscriptionsResponse (Prelude.Maybe [EventSubscription])
+describeEventSubscriptionsResponse_eventSubscriptionsList = Lens.lens (\DescribeEventSubscriptionsResponse' {eventSubscriptionsList} -> eventSubscriptionsList) (\s@DescribeEventSubscriptionsResponse' {} a -> s {eventSubscriptionsList = a} :: DescribeEventSubscriptionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeEventSubscriptionsResponse_marker :: Lens.Lens' DescribeEventSubscriptionsResponse (Prelude.Maybe Prelude.Text)
+describeEventSubscriptionsResponse_marker = Lens.lens (\DescribeEventSubscriptionsResponse' {marker} -> marker) (\s@DescribeEventSubscriptionsResponse' {} a -> s {marker = a} :: DescribeEventSubscriptionsResponse)
+
+-- | The response's http status code.
+describeEventSubscriptionsResponse_httpStatus :: Lens.Lens' DescribeEventSubscriptionsResponse Prelude.Int
+describeEventSubscriptionsResponse_httpStatus = Lens.lens (\DescribeEventSubscriptionsResponse' {httpStatus} -> httpStatus) (\s@DescribeEventSubscriptionsResponse' {} a -> s {httpStatus = a} :: DescribeEventSubscriptionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeEventSubscriptionsResponse
+  where
+  rnf DescribeEventSubscriptionsResponse' {..} =
+    Prelude.rnf eventSubscriptionsList
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeEvents.hs b/gen/Amazonka/DocumentDB/DescribeEvents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeEvents.hs
@@ -0,0 +1,439 @@
+{-# 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.DocumentDB.DescribeEvents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns events related to instances, security groups, snapshots, and DB
+-- parameter groups for the past 14 days. You can obtain events specific to
+-- a particular DB instance, security group, snapshot, or parameter group
+-- by providing the name as a parameter. By default, the events of the past
+-- hour are returned.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeEvents
+  ( -- * Creating a Request
+    DescribeEvents (..),
+    newDescribeEvents,
+
+    -- * Request Lenses
+    describeEvents_duration,
+    describeEvents_endTime,
+    describeEvents_eventCategories,
+    describeEvents_filters,
+    describeEvents_marker,
+    describeEvents_maxRecords,
+    describeEvents_sourceIdentifier,
+    describeEvents_sourceType,
+    describeEvents_startTime,
+
+    -- * Destructuring the Response
+    DescribeEventsResponse (..),
+    newDescribeEventsResponse,
+
+    -- * Response Lenses
+    describeEventsResponse_events,
+    describeEventsResponse_marker,
+    describeEventsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeEvents.
+--
+-- /See:/ 'newDescribeEvents' smart constructor.
+data DescribeEvents = DescribeEvents'
+  { -- | The number of minutes to retrieve events for.
+    --
+    -- Default: 60
+    duration :: Prelude.Maybe Prelude.Int,
+    -- | The end of the time interval for which to retrieve events, specified in
+    -- ISO 8601 format.
+    --
+    -- Example: 2009-07-08T18:00Z
+    endTime :: Prelude.Maybe Data.ISO8601,
+    -- | A list of event categories that trigger notifications for an event
+    -- notification subscription.
+    eventCategories :: Prelude.Maybe [Prelude.Text],
+    -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int,
+    -- | The identifier of the event source for which events are returned. If not
+    -- specified, then all sources are included in the response.
+    --
+    -- Constraints:
+    --
+    -- -   If @SourceIdentifier@ is provided, @SourceType@ must also be
+    --     provided.
+    --
+    -- -   If the source type is @DBInstance@, a @DBInstanceIdentifier@ must be
+    --     provided.
+    --
+    -- -   If the source type is @DBSecurityGroup@, a @DBSecurityGroupName@
+    --     must be provided.
+    --
+    -- -   If the source type is @DBParameterGroup@, a @DBParameterGroupName@
+    --     must be provided.
+    --
+    -- -   If the source type is @DBSnapshot@, a @DBSnapshotIdentifier@ must be
+    --     provided.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    sourceIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The event source to retrieve events for. If no value is specified, all
+    -- events are returned.
+    sourceType :: Prelude.Maybe SourceType,
+    -- | The beginning of the time interval to retrieve events for, specified in
+    -- ISO 8601 format.
+    --
+    -- Example: 2009-07-08T18:00Z
+    startTime :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeEvents' 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:
+--
+-- 'duration', 'describeEvents_duration' - The number of minutes to retrieve events for.
+--
+-- Default: 60
+--
+-- 'endTime', 'describeEvents_endTime' - The end of the time interval for which to retrieve events, specified in
+-- ISO 8601 format.
+--
+-- Example: 2009-07-08T18:00Z
+--
+-- 'eventCategories', 'describeEvents_eventCategories' - A list of event categories that trigger notifications for an event
+-- notification subscription.
+--
+-- 'filters', 'describeEvents_filters' - This parameter is not currently supported.
+--
+-- 'marker', 'describeEvents_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeEvents_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+--
+-- 'sourceIdentifier', 'describeEvents_sourceIdentifier' - The identifier of the event source for which events are returned. If not
+-- specified, then all sources are included in the response.
+--
+-- Constraints:
+--
+-- -   If @SourceIdentifier@ is provided, @SourceType@ must also be
+--     provided.
+--
+-- -   If the source type is @DBInstance@, a @DBInstanceIdentifier@ must be
+--     provided.
+--
+-- -   If the source type is @DBSecurityGroup@, a @DBSecurityGroupName@
+--     must be provided.
+--
+-- -   If the source type is @DBParameterGroup@, a @DBParameterGroupName@
+--     must be provided.
+--
+-- -   If the source type is @DBSnapshot@, a @DBSnapshotIdentifier@ must be
+--     provided.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- 'sourceType', 'describeEvents_sourceType' - The event source to retrieve events for. If no value is specified, all
+-- events are returned.
+--
+-- 'startTime', 'describeEvents_startTime' - The beginning of the time interval to retrieve events for, specified in
+-- ISO 8601 format.
+--
+-- Example: 2009-07-08T18:00Z
+newDescribeEvents ::
+  DescribeEvents
+newDescribeEvents =
+  DescribeEvents'
+    { duration = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      eventCategories = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing,
+      sourceIdentifier = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      startTime = Prelude.Nothing
+    }
+
+-- | The number of minutes to retrieve events for.
+--
+-- Default: 60
+describeEvents_duration :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Int)
+describeEvents_duration = Lens.lens (\DescribeEvents' {duration} -> duration) (\s@DescribeEvents' {} a -> s {duration = a} :: DescribeEvents)
+
+-- | The end of the time interval for which to retrieve events, specified in
+-- ISO 8601 format.
+--
+-- Example: 2009-07-08T18:00Z
+describeEvents_endTime :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.UTCTime)
+describeEvents_endTime = Lens.lens (\DescribeEvents' {endTime} -> endTime) (\s@DescribeEvents' {} a -> s {endTime = a} :: DescribeEvents) Prelude.. Lens.mapping Data._Time
+
+-- | A list of event categories that trigger notifications for an event
+-- notification subscription.
+describeEvents_eventCategories :: Lens.Lens' DescribeEvents (Prelude.Maybe [Prelude.Text])
+describeEvents_eventCategories = Lens.lens (\DescribeEvents' {eventCategories} -> eventCategories) (\s@DescribeEvents' {} a -> s {eventCategories = a} :: DescribeEvents) Prelude.. Lens.mapping Lens.coerced
+
+-- | This parameter is not currently supported.
+describeEvents_filters :: Lens.Lens' DescribeEvents (Prelude.Maybe [Filter])
+describeEvents_filters = Lens.lens (\DescribeEvents' {filters} -> filters) (\s@DescribeEvents' {} a -> s {filters = a} :: DescribeEvents) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeEvents_marker :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
+describeEvents_marker = Lens.lens (\DescribeEvents' {marker} -> marker) (\s@DescribeEvents' {} a -> s {marker = a} :: DescribeEvents)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeEvents_maxRecords :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Int)
+describeEvents_maxRecords = Lens.lens (\DescribeEvents' {maxRecords} -> maxRecords) (\s@DescribeEvents' {} a -> s {maxRecords = a} :: DescribeEvents)
+
+-- | The identifier of the event source for which events are returned. If not
+-- specified, then all sources are included in the response.
+--
+-- Constraints:
+--
+-- -   If @SourceIdentifier@ is provided, @SourceType@ must also be
+--     provided.
+--
+-- -   If the source type is @DBInstance@, a @DBInstanceIdentifier@ must be
+--     provided.
+--
+-- -   If the source type is @DBSecurityGroup@, a @DBSecurityGroupName@
+--     must be provided.
+--
+-- -   If the source type is @DBParameterGroup@, a @DBParameterGroupName@
+--     must be provided.
+--
+-- -   If the source type is @DBSnapshot@, a @DBSnapshotIdentifier@ must be
+--     provided.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+describeEvents_sourceIdentifier :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
+describeEvents_sourceIdentifier = Lens.lens (\DescribeEvents' {sourceIdentifier} -> sourceIdentifier) (\s@DescribeEvents' {} a -> s {sourceIdentifier = a} :: DescribeEvents)
+
+-- | The event source to retrieve events for. If no value is specified, all
+-- events are returned.
+describeEvents_sourceType :: Lens.Lens' DescribeEvents (Prelude.Maybe SourceType)
+describeEvents_sourceType = Lens.lens (\DescribeEvents' {sourceType} -> sourceType) (\s@DescribeEvents' {} a -> s {sourceType = a} :: DescribeEvents)
+
+-- | The beginning of the time interval to retrieve events for, specified in
+-- ISO 8601 format.
+--
+-- Example: 2009-07-08T18:00Z
+describeEvents_startTime :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.UTCTime)
+describeEvents_startTime = Lens.lens (\DescribeEvents' {startTime} -> startTime) (\s@DescribeEvents' {} a -> s {startTime = a} :: DescribeEvents) Prelude.. Lens.mapping Data._Time
+
+instance Core.AWSPager DescribeEvents where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeEventsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeEventsResponse_events
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeEvents_marker
+          Lens..~ rs
+          Lens.^? describeEventsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeEvents where
+  type
+    AWSResponse DescribeEvents =
+      DescribeEventsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeEventsResult"
+      ( \s h x ->
+          DescribeEventsResponse'
+            Prelude.<$> ( x
+                            Data..@? "Events"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "Event")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeEvents where
+  hashWithSalt _salt DescribeEvents' {..} =
+    _salt
+      `Prelude.hashWithSalt` duration
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` eventCategories
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+      `Prelude.hashWithSalt` sourceIdentifier
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData DescribeEvents where
+  rnf DescribeEvents' {..} =
+    Prelude.rnf duration
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf eventCategories
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+      `Prelude.seq` Prelude.rnf sourceIdentifier
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf startTime
+
+instance Data.ToHeaders DescribeEvents where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeEvents where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeEvents where
+  toQuery DescribeEvents' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeEvents" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Duration" Data.=: duration,
+        "EndTime" Data.=: endTime,
+        "EventCategories"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "EventCategory"
+                Prelude.<$> eventCategories
+            ),
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords,
+        "SourceIdentifier" Data.=: sourceIdentifier,
+        "SourceType" Data.=: sourceType,
+        "StartTime" Data.=: startTime
+      ]
+
+-- | Represents the output of DescribeEvents.
+--
+-- /See:/ 'newDescribeEventsResponse' smart constructor.
+data DescribeEventsResponse = DescribeEventsResponse'
+  { -- | Detailed information about one or more events.
+    events :: Prelude.Maybe [Event],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: 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 'DescribeEventsResponse' 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:
+--
+-- 'events', 'describeEventsResponse_events' - Detailed information about one or more events.
+--
+-- 'marker', 'describeEventsResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'httpStatus', 'describeEventsResponse_httpStatus' - The response's http status code.
+newDescribeEventsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeEventsResponse
+newDescribeEventsResponse pHttpStatus_ =
+  DescribeEventsResponse'
+    { events = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Detailed information about one or more events.
+describeEventsResponse_events :: Lens.Lens' DescribeEventsResponse (Prelude.Maybe [Event])
+describeEventsResponse_events = Lens.lens (\DescribeEventsResponse' {events} -> events) (\s@DescribeEventsResponse' {} a -> s {events = a} :: DescribeEventsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeEventsResponse_marker :: Lens.Lens' DescribeEventsResponse (Prelude.Maybe Prelude.Text)
+describeEventsResponse_marker = Lens.lens (\DescribeEventsResponse' {marker} -> marker) (\s@DescribeEventsResponse' {} a -> s {marker = a} :: DescribeEventsResponse)
+
+-- | The response's http status code.
+describeEventsResponse_httpStatus :: Lens.Lens' DescribeEventsResponse Prelude.Int
+describeEventsResponse_httpStatus = Lens.lens (\DescribeEventsResponse' {httpStatus} -> httpStatus) (\s@DescribeEventsResponse' {} a -> s {httpStatus = a} :: DescribeEventsResponse)
+
+instance Prelude.NFData DescribeEventsResponse where
+  rnf DescribeEventsResponse' {..} =
+    Prelude.rnf events
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeGlobalClusters.hs b/gen/Amazonka/DocumentDB/DescribeGlobalClusters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeGlobalClusters.hs
@@ -0,0 +1,279 @@
+{-# 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.DocumentDB.DescribeGlobalClusters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about Amazon DocumentDB global clusters. This API
+-- supports pagination.
+--
+-- This action only applies to Amazon DocumentDB clusters.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeGlobalClusters
+  ( -- * Creating a Request
+    DescribeGlobalClusters (..),
+    newDescribeGlobalClusters,
+
+    -- * Request Lenses
+    describeGlobalClusters_filters,
+    describeGlobalClusters_globalClusterIdentifier,
+    describeGlobalClusters_marker,
+    describeGlobalClusters_maxRecords,
+
+    -- * Destructuring the Response
+    DescribeGlobalClustersResponse (..),
+    newDescribeGlobalClustersResponse,
+
+    -- * Response Lenses
+    describeGlobalClustersResponse_globalClusters,
+    describeGlobalClustersResponse_marker,
+    describeGlobalClustersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeGlobalClusters' smart constructor.
+data DescribeGlobalClusters = DescribeGlobalClusters'
+  { -- | A filter that specifies one or more global DB clusters to describe.
+    --
+    -- Supported filters: @db-cluster-id@ accepts cluster identifiers and
+    -- cluster Amazon Resource Names (ARNs). The results list will only include
+    -- information about the clusters identified by these ARNs.
+    filters :: Prelude.Maybe [Filter],
+    -- | The user-supplied cluster identifier. If this parameter is specified,
+    -- information from only the specific cluster is returned. This parameter
+    -- isn\'t case-sensitive.
+    globalClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | An optional pagination token provided by a previous
+    -- @DescribeGlobalClusters@ request. If this parameter is specified, the
+    -- response includes only records beyond the marker, up to the value
+    -- specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- called a marker is included in the response so that you can retrieve the
+    -- remaining results.
+    maxRecords :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeGlobalClusters' 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', 'describeGlobalClusters_filters' - A filter that specifies one or more global DB clusters to describe.
+--
+-- Supported filters: @db-cluster-id@ accepts cluster identifiers and
+-- cluster Amazon Resource Names (ARNs). The results list will only include
+-- information about the clusters identified by these ARNs.
+--
+-- 'globalClusterIdentifier', 'describeGlobalClusters_globalClusterIdentifier' - The user-supplied cluster identifier. If this parameter is specified,
+-- information from only the specific cluster is returned. This parameter
+-- isn\'t case-sensitive.
+--
+-- 'marker', 'describeGlobalClusters_marker' - An optional pagination token provided by a previous
+-- @DescribeGlobalClusters@ request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeGlobalClusters_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- called a marker is included in the response so that you can retrieve the
+-- remaining results.
+newDescribeGlobalClusters ::
+  DescribeGlobalClusters
+newDescribeGlobalClusters =
+  DescribeGlobalClusters'
+    { filters = Prelude.Nothing,
+      globalClusterIdentifier = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing
+    }
+
+-- | A filter that specifies one or more global DB clusters to describe.
+--
+-- Supported filters: @db-cluster-id@ accepts cluster identifiers and
+-- cluster Amazon Resource Names (ARNs). The results list will only include
+-- information about the clusters identified by these ARNs.
+describeGlobalClusters_filters :: Lens.Lens' DescribeGlobalClusters (Prelude.Maybe [Filter])
+describeGlobalClusters_filters = Lens.lens (\DescribeGlobalClusters' {filters} -> filters) (\s@DescribeGlobalClusters' {} a -> s {filters = a} :: DescribeGlobalClusters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The user-supplied cluster identifier. If this parameter is specified,
+-- information from only the specific cluster is returned. This parameter
+-- isn\'t case-sensitive.
+describeGlobalClusters_globalClusterIdentifier :: Lens.Lens' DescribeGlobalClusters (Prelude.Maybe Prelude.Text)
+describeGlobalClusters_globalClusterIdentifier = Lens.lens (\DescribeGlobalClusters' {globalClusterIdentifier} -> globalClusterIdentifier) (\s@DescribeGlobalClusters' {} a -> s {globalClusterIdentifier = a} :: DescribeGlobalClusters)
+
+-- | An optional pagination token provided by a previous
+-- @DescribeGlobalClusters@ request. If this parameter is specified, the
+-- response includes only records beyond the marker, up to the value
+-- specified by @MaxRecords@.
+describeGlobalClusters_marker :: Lens.Lens' DescribeGlobalClusters (Prelude.Maybe Prelude.Text)
+describeGlobalClusters_marker = Lens.lens (\DescribeGlobalClusters' {marker} -> marker) (\s@DescribeGlobalClusters' {} a -> s {marker = a} :: DescribeGlobalClusters)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- called a marker is included in the response so that you can retrieve the
+-- remaining results.
+describeGlobalClusters_maxRecords :: Lens.Lens' DescribeGlobalClusters (Prelude.Maybe Prelude.Int)
+describeGlobalClusters_maxRecords = Lens.lens (\DescribeGlobalClusters' {maxRecords} -> maxRecords) (\s@DescribeGlobalClusters' {} a -> s {maxRecords = a} :: DescribeGlobalClusters)
+
+instance Core.AWSPager DescribeGlobalClusters where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeGlobalClustersResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeGlobalClustersResponse_globalClusters
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeGlobalClusters_marker
+          Lens..~ rs
+          Lens.^? describeGlobalClustersResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeGlobalClusters where
+  type
+    AWSResponse DescribeGlobalClusters =
+      DescribeGlobalClustersResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeGlobalClustersResult"
+      ( \s h x ->
+          DescribeGlobalClustersResponse'
+            Prelude.<$> ( x
+                            Data..@? "GlobalClusters"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "GlobalClusterMember")
+                        )
+            Prelude.<*> (x Data..@? "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeGlobalClusters where
+  hashWithSalt _salt DescribeGlobalClusters' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` globalClusterIdentifier
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` maxRecords
+
+instance Prelude.NFData DescribeGlobalClusters where
+  rnf DescribeGlobalClusters' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf globalClusterIdentifier
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+
+instance Data.ToHeaders DescribeGlobalClusters where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeGlobalClusters where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeGlobalClusters where
+  toQuery DescribeGlobalClusters' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeGlobalClusters" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "GlobalClusterIdentifier"
+          Data.=: globalClusterIdentifier,
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords
+      ]
+
+-- | /See:/ 'newDescribeGlobalClustersResponse' smart constructor.
+data DescribeGlobalClustersResponse = DescribeGlobalClustersResponse'
+  { globalClusters :: Prelude.Maybe [GlobalCluster],
+    marker :: 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 'DescribeGlobalClustersResponse' 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:
+--
+-- 'globalClusters', 'describeGlobalClustersResponse_globalClusters' -
+--
+-- 'marker', 'describeGlobalClustersResponse_marker' -
+--
+-- 'httpStatus', 'describeGlobalClustersResponse_httpStatus' - The response's http status code.
+newDescribeGlobalClustersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeGlobalClustersResponse
+newDescribeGlobalClustersResponse pHttpStatus_ =
+  DescribeGlobalClustersResponse'
+    { globalClusters =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+describeGlobalClustersResponse_globalClusters :: Lens.Lens' DescribeGlobalClustersResponse (Prelude.Maybe [GlobalCluster])
+describeGlobalClustersResponse_globalClusters = Lens.lens (\DescribeGlobalClustersResponse' {globalClusters} -> globalClusters) (\s@DescribeGlobalClustersResponse' {} a -> s {globalClusters = a} :: DescribeGlobalClustersResponse) Prelude.. Lens.mapping Lens.coerced
+
+describeGlobalClustersResponse_marker :: Lens.Lens' DescribeGlobalClustersResponse (Prelude.Maybe Prelude.Text)
+describeGlobalClustersResponse_marker = Lens.lens (\DescribeGlobalClustersResponse' {marker} -> marker) (\s@DescribeGlobalClustersResponse' {} a -> s {marker = a} :: DescribeGlobalClustersResponse)
+
+-- | The response's http status code.
+describeGlobalClustersResponse_httpStatus :: Lens.Lens' DescribeGlobalClustersResponse Prelude.Int
+describeGlobalClustersResponse_httpStatus = Lens.lens (\DescribeGlobalClustersResponse' {httpStatus} -> httpStatus) (\s@DescribeGlobalClustersResponse' {} a -> s {httpStatus = a} :: DescribeGlobalClustersResponse)
+
+instance
+  Prelude.NFData
+    DescribeGlobalClustersResponse
+  where
+  rnf DescribeGlobalClustersResponse' {..} =
+    Prelude.rnf globalClusters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribeOrderableDBInstanceOptions.hs b/gen/Amazonka/DocumentDB/DescribeOrderableDBInstanceOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribeOrderableDBInstanceOptions.hs
@@ -0,0 +1,375 @@
+{-# 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.DocumentDB.DescribeOrderableDBInstanceOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of orderable instance options for the specified engine.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribeOrderableDBInstanceOptions
+  ( -- * Creating a Request
+    DescribeOrderableDBInstanceOptions (..),
+    newDescribeOrderableDBInstanceOptions,
+
+    -- * Request Lenses
+    describeOrderableDBInstanceOptions_dbInstanceClass,
+    describeOrderableDBInstanceOptions_engineVersion,
+    describeOrderableDBInstanceOptions_filters,
+    describeOrderableDBInstanceOptions_licenseModel,
+    describeOrderableDBInstanceOptions_marker,
+    describeOrderableDBInstanceOptions_maxRecords,
+    describeOrderableDBInstanceOptions_vpc,
+    describeOrderableDBInstanceOptions_engine,
+
+    -- * Destructuring the Response
+    DescribeOrderableDBInstanceOptionsResponse (..),
+    newDescribeOrderableDBInstanceOptionsResponse,
+
+    -- * Response Lenses
+    describeOrderableDBInstanceOptionsResponse_marker,
+    describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions,
+    describeOrderableDBInstanceOptionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribeOrderableDBInstanceOptions.
+--
+-- /See:/ 'newDescribeOrderableDBInstanceOptions' smart constructor.
+data DescribeOrderableDBInstanceOptions = DescribeOrderableDBInstanceOptions'
+  { -- | The instance class filter value. Specify this parameter to show only the
+    -- available offerings that match the specified instance class.
+    dbInstanceClass :: Prelude.Maybe Prelude.Text,
+    -- | The engine version filter value. Specify this parameter to show only the
+    -- available offerings that match the specified engine version.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | The license model filter value. Specify this parameter to show only the
+    -- available offerings that match the specified license model.
+    licenseModel :: Prelude.Maybe Prelude.Text,
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int,
+    -- | The virtual private cloud (VPC) filter value. Specify this parameter to
+    -- show only the available VPC or non-VPC offerings.
+    vpc :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the engine to retrieve instance options for.
+    engine :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeOrderableDBInstanceOptions' 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:
+--
+-- 'dbInstanceClass', 'describeOrderableDBInstanceOptions_dbInstanceClass' - The instance class filter value. Specify this parameter to show only the
+-- available offerings that match the specified instance class.
+--
+-- 'engineVersion', 'describeOrderableDBInstanceOptions_engineVersion' - The engine version filter value. Specify this parameter to show only the
+-- available offerings that match the specified engine version.
+--
+-- 'filters', 'describeOrderableDBInstanceOptions_filters' - This parameter is not currently supported.
+--
+-- 'licenseModel', 'describeOrderableDBInstanceOptions_licenseModel' - The license model filter value. Specify this parameter to show only the
+-- available offerings that match the specified license model.
+--
+-- 'marker', 'describeOrderableDBInstanceOptions_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describeOrderableDBInstanceOptions_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+--
+-- 'vpc', 'describeOrderableDBInstanceOptions_vpc' - The virtual private cloud (VPC) filter value. Specify this parameter to
+-- show only the available VPC or non-VPC offerings.
+--
+-- 'engine', 'describeOrderableDBInstanceOptions_engine' - The name of the engine to retrieve instance options for.
+newDescribeOrderableDBInstanceOptions ::
+  -- | 'engine'
+  Prelude.Text ->
+  DescribeOrderableDBInstanceOptions
+newDescribeOrderableDBInstanceOptions pEngine_ =
+  DescribeOrderableDBInstanceOptions'
+    { dbInstanceClass =
+        Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      licenseModel = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing,
+      vpc = Prelude.Nothing,
+      engine = pEngine_
+    }
+
+-- | The instance class filter value. Specify this parameter to show only the
+-- available offerings that match the specified instance class.
+describeOrderableDBInstanceOptions_dbInstanceClass :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Text)
+describeOrderableDBInstanceOptions_dbInstanceClass = Lens.lens (\DescribeOrderableDBInstanceOptions' {dbInstanceClass} -> dbInstanceClass) (\s@DescribeOrderableDBInstanceOptions' {} a -> s {dbInstanceClass = a} :: DescribeOrderableDBInstanceOptions)
+
+-- | The engine version filter value. Specify this parameter to show only the
+-- available offerings that match the specified engine version.
+describeOrderableDBInstanceOptions_engineVersion :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Text)
+describeOrderableDBInstanceOptions_engineVersion = Lens.lens (\DescribeOrderableDBInstanceOptions' {engineVersion} -> engineVersion) (\s@DescribeOrderableDBInstanceOptions' {} a -> s {engineVersion = a} :: DescribeOrderableDBInstanceOptions)
+
+-- | This parameter is not currently supported.
+describeOrderableDBInstanceOptions_filters :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe [Filter])
+describeOrderableDBInstanceOptions_filters = Lens.lens (\DescribeOrderableDBInstanceOptions' {filters} -> filters) (\s@DescribeOrderableDBInstanceOptions' {} a -> s {filters = a} :: DescribeOrderableDBInstanceOptions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The license model filter value. Specify this parameter to show only the
+-- available offerings that match the specified license model.
+describeOrderableDBInstanceOptions_licenseModel :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Text)
+describeOrderableDBInstanceOptions_licenseModel = Lens.lens (\DescribeOrderableDBInstanceOptions' {licenseModel} -> licenseModel) (\s@DescribeOrderableDBInstanceOptions' {} a -> s {licenseModel = a} :: DescribeOrderableDBInstanceOptions)
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeOrderableDBInstanceOptions_marker :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Text)
+describeOrderableDBInstanceOptions_marker = Lens.lens (\DescribeOrderableDBInstanceOptions' {marker} -> marker) (\s@DescribeOrderableDBInstanceOptions' {} a -> s {marker = a} :: DescribeOrderableDBInstanceOptions)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describeOrderableDBInstanceOptions_maxRecords :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Int)
+describeOrderableDBInstanceOptions_maxRecords = Lens.lens (\DescribeOrderableDBInstanceOptions' {maxRecords} -> maxRecords) (\s@DescribeOrderableDBInstanceOptions' {} a -> s {maxRecords = a} :: DescribeOrderableDBInstanceOptions)
+
+-- | The virtual private cloud (VPC) filter value. Specify this parameter to
+-- show only the available VPC or non-VPC offerings.
+describeOrderableDBInstanceOptions_vpc :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Bool)
+describeOrderableDBInstanceOptions_vpc = Lens.lens (\DescribeOrderableDBInstanceOptions' {vpc} -> vpc) (\s@DescribeOrderableDBInstanceOptions' {} a -> s {vpc = a} :: DescribeOrderableDBInstanceOptions)
+
+-- | The name of the engine to retrieve instance options for.
+describeOrderableDBInstanceOptions_engine :: Lens.Lens' DescribeOrderableDBInstanceOptions Prelude.Text
+describeOrderableDBInstanceOptions_engine = Lens.lens (\DescribeOrderableDBInstanceOptions' {engine} -> engine) (\s@DescribeOrderableDBInstanceOptions' {} a -> s {engine = a} :: DescribeOrderableDBInstanceOptions)
+
+instance
+  Core.AWSPager
+    DescribeOrderableDBInstanceOptions
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeOrderableDBInstanceOptionsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeOrderableDBInstanceOptions_marker
+          Lens..~ rs
+          Lens.^? describeOrderableDBInstanceOptionsResponse_marker
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    DescribeOrderableDBInstanceOptions
+  where
+  type
+    AWSResponse DescribeOrderableDBInstanceOptions =
+      DescribeOrderableDBInstanceOptionsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeOrderableDBInstanceOptionsResult"
+      ( \s h x ->
+          DescribeOrderableDBInstanceOptionsResponse'
+            Prelude.<$> (x Data..@? "Marker")
+            Prelude.<*> ( x
+                            Data..@? "OrderableDBInstanceOptions"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may
+                              (Data.parseXMLList "OrderableDBInstanceOption")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeOrderableDBInstanceOptions
+  where
+  hashWithSalt
+    _salt
+    DescribeOrderableDBInstanceOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` dbInstanceClass
+        `Prelude.hashWithSalt` engineVersion
+        `Prelude.hashWithSalt` filters
+        `Prelude.hashWithSalt` licenseModel
+        `Prelude.hashWithSalt` marker
+        `Prelude.hashWithSalt` maxRecords
+        `Prelude.hashWithSalt` vpc
+        `Prelude.hashWithSalt` engine
+
+instance
+  Prelude.NFData
+    DescribeOrderableDBInstanceOptions
+  where
+  rnf DescribeOrderableDBInstanceOptions' {..} =
+    Prelude.rnf dbInstanceClass
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf licenseModel
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+      `Prelude.seq` Prelude.rnf vpc
+      `Prelude.seq` Prelude.rnf engine
+
+instance
+  Data.ToHeaders
+    DescribeOrderableDBInstanceOptions
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DescribeOrderableDBInstanceOptions
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribeOrderableDBInstanceOptions
+  where
+  toQuery DescribeOrderableDBInstanceOptions' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DescribeOrderableDBInstanceOptions" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBInstanceClass" Data.=: dbInstanceClass,
+        "EngineVersion" Data.=: engineVersion,
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "LicenseModel" Data.=: licenseModel,
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords,
+        "Vpc" Data.=: vpc,
+        "Engine" Data.=: engine
+      ]
+
+-- | Represents the output of DescribeOrderableDBInstanceOptions.
+--
+-- /See:/ 'newDescribeOrderableDBInstanceOptionsResponse' smart constructor.
+data DescribeOrderableDBInstanceOptionsResponse = DescribeOrderableDBInstanceOptionsResponse'
+  { -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The options that are available for a particular orderable instance.
+    orderableDBInstanceOptions :: Prelude.Maybe [OrderableDBInstanceOption],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeOrderableDBInstanceOptionsResponse' 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:
+--
+-- 'marker', 'describeOrderableDBInstanceOptionsResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'orderableDBInstanceOptions', 'describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions' - The options that are available for a particular orderable instance.
+--
+-- 'httpStatus', 'describeOrderableDBInstanceOptionsResponse_httpStatus' - The response's http status code.
+newDescribeOrderableDBInstanceOptionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeOrderableDBInstanceOptionsResponse
+newDescribeOrderableDBInstanceOptionsResponse
+  pHttpStatus_ =
+    DescribeOrderableDBInstanceOptionsResponse'
+      { marker =
+          Prelude.Nothing,
+        orderableDBInstanceOptions =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describeOrderableDBInstanceOptionsResponse_marker :: Lens.Lens' DescribeOrderableDBInstanceOptionsResponse (Prelude.Maybe Prelude.Text)
+describeOrderableDBInstanceOptionsResponse_marker = Lens.lens (\DescribeOrderableDBInstanceOptionsResponse' {marker} -> marker) (\s@DescribeOrderableDBInstanceOptionsResponse' {} a -> s {marker = a} :: DescribeOrderableDBInstanceOptionsResponse)
+
+-- | The options that are available for a particular orderable instance.
+describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions :: Lens.Lens' DescribeOrderableDBInstanceOptionsResponse (Prelude.Maybe [OrderableDBInstanceOption])
+describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions = Lens.lens (\DescribeOrderableDBInstanceOptionsResponse' {orderableDBInstanceOptions} -> orderableDBInstanceOptions) (\s@DescribeOrderableDBInstanceOptionsResponse' {} a -> s {orderableDBInstanceOptions = a} :: DescribeOrderableDBInstanceOptionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeOrderableDBInstanceOptionsResponse_httpStatus :: Lens.Lens' DescribeOrderableDBInstanceOptionsResponse Prelude.Int
+describeOrderableDBInstanceOptionsResponse_httpStatus = Lens.lens (\DescribeOrderableDBInstanceOptionsResponse' {httpStatus} -> httpStatus) (\s@DescribeOrderableDBInstanceOptionsResponse' {} a -> s {httpStatus = a} :: DescribeOrderableDBInstanceOptionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeOrderableDBInstanceOptionsResponse
+  where
+  rnf DescribeOrderableDBInstanceOptionsResponse' {..} =
+    Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf orderableDBInstanceOptions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/DescribePendingMaintenanceActions.hs b/gen/Amazonka/DocumentDB/DescribePendingMaintenanceActions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/DescribePendingMaintenanceActions.hs
@@ -0,0 +1,345 @@
+{-# 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.DocumentDB.DescribePendingMaintenanceActions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of resources (for example, instances) that have at least
+-- one pending maintenance action.
+--
+-- This operation returns paginated results.
+module Amazonka.DocumentDB.DescribePendingMaintenanceActions
+  ( -- * Creating a Request
+    DescribePendingMaintenanceActions (..),
+    newDescribePendingMaintenanceActions,
+
+    -- * Request Lenses
+    describePendingMaintenanceActions_filters,
+    describePendingMaintenanceActions_marker,
+    describePendingMaintenanceActions_maxRecords,
+    describePendingMaintenanceActions_resourceIdentifier,
+
+    -- * Destructuring the Response
+    DescribePendingMaintenanceActionsResponse (..),
+    newDescribePendingMaintenanceActionsResponse,
+
+    -- * Response Lenses
+    describePendingMaintenanceActionsResponse_marker,
+    describePendingMaintenanceActionsResponse_pendingMaintenanceActions,
+    describePendingMaintenanceActionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to DescribePendingMaintenanceActions.
+--
+-- /See:/ 'newDescribePendingMaintenanceActions' smart constructor.
+data DescribePendingMaintenanceActions = DescribePendingMaintenanceActions'
+  { -- | A filter that specifies one or more resources to return pending
+    -- maintenance actions for.
+    --
+    -- Supported filters:
+    --
+    -- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+    --     Resource Names (ARNs). The results list includes only pending
+    --     maintenance actions for the clusters identified by these ARNs.
+    --
+    -- -   @db-instance-id@ - Accepts instance identifiers and instance ARNs.
+    --     The results list includes only pending maintenance actions for the
+    --     DB instances identified by these ARNs.
+    filters :: Prelude.Maybe [Filter],
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of records to include in the response. If more
+    -- records exist than the specified @MaxRecords@ value, a pagination token
+    -- (marker) is included in the response so that the remaining results can
+    -- be retrieved.
+    --
+    -- Default: 100
+    --
+    -- Constraints: Minimum 20, maximum 100.
+    maxRecords :: Prelude.Maybe Prelude.Int,
+    -- | The ARN of a resource to return pending maintenance actions for.
+    resourceIdentifier :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePendingMaintenanceActions' 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', 'describePendingMaintenanceActions_filters' - A filter that specifies one or more resources to return pending
+-- maintenance actions for.
+--
+-- Supported filters:
+--
+-- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+--     Resource Names (ARNs). The results list includes only pending
+--     maintenance actions for the clusters identified by these ARNs.
+--
+-- -   @db-instance-id@ - Accepts instance identifiers and instance ARNs.
+--     The results list includes only pending maintenance actions for the
+--     DB instances identified by these ARNs.
+--
+-- 'marker', 'describePendingMaintenanceActions_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'maxRecords', 'describePendingMaintenanceActions_maxRecords' - The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+--
+-- 'resourceIdentifier', 'describePendingMaintenanceActions_resourceIdentifier' - The ARN of a resource to return pending maintenance actions for.
+newDescribePendingMaintenanceActions ::
+  DescribePendingMaintenanceActions
+newDescribePendingMaintenanceActions =
+  DescribePendingMaintenanceActions'
+    { filters =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      maxRecords = Prelude.Nothing,
+      resourceIdentifier = Prelude.Nothing
+    }
+
+-- | A filter that specifies one or more resources to return pending
+-- maintenance actions for.
+--
+-- Supported filters:
+--
+-- -   @db-cluster-id@ - Accepts cluster identifiers and cluster Amazon
+--     Resource Names (ARNs). The results list includes only pending
+--     maintenance actions for the clusters identified by these ARNs.
+--
+-- -   @db-instance-id@ - Accepts instance identifiers and instance ARNs.
+--     The results list includes only pending maintenance actions for the
+--     DB instances identified by these ARNs.
+describePendingMaintenanceActions_filters :: Lens.Lens' DescribePendingMaintenanceActions (Prelude.Maybe [Filter])
+describePendingMaintenanceActions_filters = Lens.lens (\DescribePendingMaintenanceActions' {filters} -> filters) (\s@DescribePendingMaintenanceActions' {} a -> s {filters = a} :: DescribePendingMaintenanceActions) Prelude.. Lens.mapping Lens.coerced
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describePendingMaintenanceActions_marker :: Lens.Lens' DescribePendingMaintenanceActions (Prelude.Maybe Prelude.Text)
+describePendingMaintenanceActions_marker = Lens.lens (\DescribePendingMaintenanceActions' {marker} -> marker) (\s@DescribePendingMaintenanceActions' {} a -> s {marker = a} :: DescribePendingMaintenanceActions)
+
+-- | The maximum number of records to include in the response. If more
+-- records exist than the specified @MaxRecords@ value, a pagination token
+-- (marker) is included in the response so that the remaining results can
+-- be retrieved.
+--
+-- Default: 100
+--
+-- Constraints: Minimum 20, maximum 100.
+describePendingMaintenanceActions_maxRecords :: Lens.Lens' DescribePendingMaintenanceActions (Prelude.Maybe Prelude.Int)
+describePendingMaintenanceActions_maxRecords = Lens.lens (\DescribePendingMaintenanceActions' {maxRecords} -> maxRecords) (\s@DescribePendingMaintenanceActions' {} a -> s {maxRecords = a} :: DescribePendingMaintenanceActions)
+
+-- | The ARN of a resource to return pending maintenance actions for.
+describePendingMaintenanceActions_resourceIdentifier :: Lens.Lens' DescribePendingMaintenanceActions (Prelude.Maybe Prelude.Text)
+describePendingMaintenanceActions_resourceIdentifier = Lens.lens (\DescribePendingMaintenanceActions' {resourceIdentifier} -> resourceIdentifier) (\s@DescribePendingMaintenanceActions' {} a -> s {resourceIdentifier = a} :: DescribePendingMaintenanceActions)
+
+instance
+  Core.AWSPager
+    DescribePendingMaintenanceActions
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describePendingMaintenanceActionsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describePendingMaintenanceActionsResponse_pendingMaintenanceActions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describePendingMaintenanceActions_marker
+          Lens..~ rs
+          Lens.^? describePendingMaintenanceActionsResponse_marker
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    DescribePendingMaintenanceActions
+  where
+  type
+    AWSResponse DescribePendingMaintenanceActions =
+      DescribePendingMaintenanceActionsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribePendingMaintenanceActionsResult"
+      ( \s h x ->
+          DescribePendingMaintenanceActionsResponse'
+            Prelude.<$> (x Data..@? "Marker")
+            Prelude.<*> ( x
+                            Data..@? "PendingMaintenanceActions"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may
+                              ( Data.parseXMLList
+                                  "ResourcePendingMaintenanceActions"
+                              )
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribePendingMaintenanceActions
+  where
+  hashWithSalt
+    _salt
+    DescribePendingMaintenanceActions' {..} =
+      _salt
+        `Prelude.hashWithSalt` filters
+        `Prelude.hashWithSalt` marker
+        `Prelude.hashWithSalt` maxRecords
+        `Prelude.hashWithSalt` resourceIdentifier
+
+instance
+  Prelude.NFData
+    DescribePendingMaintenanceActions
+  where
+  rnf DescribePendingMaintenanceActions' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf maxRecords
+      `Prelude.seq` Prelude.rnf resourceIdentifier
+
+instance
+  Data.ToHeaders
+    DescribePendingMaintenanceActions
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DescribePendingMaintenanceActions
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DescribePendingMaintenanceActions
+  where
+  toQuery DescribePendingMaintenanceActions' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DescribePendingMaintenanceActions" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "Marker" Data.=: marker,
+        "MaxRecords" Data.=: maxRecords,
+        "ResourceIdentifier" Data.=: resourceIdentifier
+      ]
+
+-- | Represents the output of DescribePendingMaintenanceActions.
+--
+-- /See:/ 'newDescribePendingMaintenanceActionsResponse' smart constructor.
+data DescribePendingMaintenanceActionsResponse = DescribePendingMaintenanceActionsResponse'
+  { -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The maintenance actions to be applied.
+    pendingMaintenanceActions :: Prelude.Maybe [ResourcePendingMaintenanceActions],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePendingMaintenanceActionsResponse' 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:
+--
+-- 'marker', 'describePendingMaintenanceActionsResponse_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'pendingMaintenanceActions', 'describePendingMaintenanceActionsResponse_pendingMaintenanceActions' - The maintenance actions to be applied.
+--
+-- 'httpStatus', 'describePendingMaintenanceActionsResponse_httpStatus' - The response's http status code.
+newDescribePendingMaintenanceActionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribePendingMaintenanceActionsResponse
+newDescribePendingMaintenanceActionsResponse
+  pHttpStatus_ =
+    DescribePendingMaintenanceActionsResponse'
+      { marker =
+          Prelude.Nothing,
+        pendingMaintenanceActions =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+describePendingMaintenanceActionsResponse_marker :: Lens.Lens' DescribePendingMaintenanceActionsResponse (Prelude.Maybe Prelude.Text)
+describePendingMaintenanceActionsResponse_marker = Lens.lens (\DescribePendingMaintenanceActionsResponse' {marker} -> marker) (\s@DescribePendingMaintenanceActionsResponse' {} a -> s {marker = a} :: DescribePendingMaintenanceActionsResponse)
+
+-- | The maintenance actions to be applied.
+describePendingMaintenanceActionsResponse_pendingMaintenanceActions :: Lens.Lens' DescribePendingMaintenanceActionsResponse (Prelude.Maybe [ResourcePendingMaintenanceActions])
+describePendingMaintenanceActionsResponse_pendingMaintenanceActions = Lens.lens (\DescribePendingMaintenanceActionsResponse' {pendingMaintenanceActions} -> pendingMaintenanceActions) (\s@DescribePendingMaintenanceActionsResponse' {} a -> s {pendingMaintenanceActions = a} :: DescribePendingMaintenanceActionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describePendingMaintenanceActionsResponse_httpStatus :: Lens.Lens' DescribePendingMaintenanceActionsResponse Prelude.Int
+describePendingMaintenanceActionsResponse_httpStatus = Lens.lens (\DescribePendingMaintenanceActionsResponse' {httpStatus} -> httpStatus) (\s@DescribePendingMaintenanceActionsResponse' {} a -> s {httpStatus = a} :: DescribePendingMaintenanceActionsResponse)
+
+instance
+  Prelude.NFData
+    DescribePendingMaintenanceActionsResponse
+  where
+  rnf DescribePendingMaintenanceActionsResponse' {..} =
+    Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf pendingMaintenanceActions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/FailoverDBCluster.hs b/gen/Amazonka/DocumentDB/FailoverDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/FailoverDBCluster.hs
@@ -0,0 +1,208 @@
+{-# 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.DocumentDB.FailoverDBCluster
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Forces a failover for a cluster.
+--
+-- A failover for a cluster promotes one of the Amazon DocumentDB replicas
+-- (read-only instances) in the cluster to be the primary instance (the
+-- cluster writer).
+--
+-- If the primary instance fails, Amazon DocumentDB automatically fails
+-- over to an Amazon DocumentDB replica, if one exists. You can force a
+-- failover when you want to simulate a failure of a primary instance for
+-- testing.
+module Amazonka.DocumentDB.FailoverDBCluster
+  ( -- * Creating a Request
+    FailoverDBCluster (..),
+    newFailoverDBCluster,
+
+    -- * Request Lenses
+    failoverDBCluster_dbClusterIdentifier,
+    failoverDBCluster_targetDBInstanceIdentifier,
+
+    -- * Destructuring the Response
+    FailoverDBClusterResponse (..),
+    newFailoverDBClusterResponse,
+
+    -- * Response Lenses
+    failoverDBClusterResponse_dbCluster,
+    failoverDBClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to FailoverDBCluster.
+--
+-- /See:/ 'newFailoverDBCluster' smart constructor.
+data FailoverDBCluster = FailoverDBCluster'
+  { -- | A cluster identifier to force a failover for. This parameter is not case
+    -- sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the identifier of an existing @DBCluster@.
+    dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The name of the instance to promote to the primary instance.
+    --
+    -- You must specify the instance identifier for an Amazon DocumentDB
+    -- replica in the cluster. For example, @mydbcluster-replica1@.
+    targetDBInstanceIdentifier :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FailoverDBCluster' 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:
+--
+-- 'dbClusterIdentifier', 'failoverDBCluster_dbClusterIdentifier' - A cluster identifier to force a failover for. This parameter is not case
+-- sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBCluster@.
+--
+-- 'targetDBInstanceIdentifier', 'failoverDBCluster_targetDBInstanceIdentifier' - The name of the instance to promote to the primary instance.
+--
+-- You must specify the instance identifier for an Amazon DocumentDB
+-- replica in the cluster. For example, @mydbcluster-replica1@.
+newFailoverDBCluster ::
+  FailoverDBCluster
+newFailoverDBCluster =
+  FailoverDBCluster'
+    { dbClusterIdentifier =
+        Prelude.Nothing,
+      targetDBInstanceIdentifier = Prelude.Nothing
+    }
+
+-- | A cluster identifier to force a failover for. This parameter is not case
+-- sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBCluster@.
+failoverDBCluster_dbClusterIdentifier :: Lens.Lens' FailoverDBCluster (Prelude.Maybe Prelude.Text)
+failoverDBCluster_dbClusterIdentifier = Lens.lens (\FailoverDBCluster' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@FailoverDBCluster' {} a -> s {dbClusterIdentifier = a} :: FailoverDBCluster)
+
+-- | The name of the instance to promote to the primary instance.
+--
+-- You must specify the instance identifier for an Amazon DocumentDB
+-- replica in the cluster. For example, @mydbcluster-replica1@.
+failoverDBCluster_targetDBInstanceIdentifier :: Lens.Lens' FailoverDBCluster (Prelude.Maybe Prelude.Text)
+failoverDBCluster_targetDBInstanceIdentifier = Lens.lens (\FailoverDBCluster' {targetDBInstanceIdentifier} -> targetDBInstanceIdentifier) (\s@FailoverDBCluster' {} a -> s {targetDBInstanceIdentifier = a} :: FailoverDBCluster)
+
+instance Core.AWSRequest FailoverDBCluster where
+  type
+    AWSResponse FailoverDBCluster =
+      FailoverDBClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "FailoverDBClusterResult"
+      ( \s h x ->
+          FailoverDBClusterResponse'
+            Prelude.<$> (x Data..@? "DBCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable FailoverDBCluster where
+  hashWithSalt _salt FailoverDBCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` targetDBInstanceIdentifier
+
+instance Prelude.NFData FailoverDBCluster where
+  rnf FailoverDBCluster' {..} =
+    Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf targetDBInstanceIdentifier
+
+instance Data.ToHeaders FailoverDBCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath FailoverDBCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery FailoverDBCluster where
+  toQuery FailoverDBCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("FailoverDBCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier,
+        "TargetDBInstanceIdentifier"
+          Data.=: targetDBInstanceIdentifier
+      ]
+
+-- | /See:/ 'newFailoverDBClusterResponse' smart constructor.
+data FailoverDBClusterResponse = FailoverDBClusterResponse'
+  { dbCluster :: Prelude.Maybe DBCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FailoverDBClusterResponse' 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:
+--
+-- 'dbCluster', 'failoverDBClusterResponse_dbCluster' - Undocumented member.
+--
+-- 'httpStatus', 'failoverDBClusterResponse_httpStatus' - The response's http status code.
+newFailoverDBClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  FailoverDBClusterResponse
+newFailoverDBClusterResponse pHttpStatus_ =
+  FailoverDBClusterResponse'
+    { dbCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+failoverDBClusterResponse_dbCluster :: Lens.Lens' FailoverDBClusterResponse (Prelude.Maybe DBCluster)
+failoverDBClusterResponse_dbCluster = Lens.lens (\FailoverDBClusterResponse' {dbCluster} -> dbCluster) (\s@FailoverDBClusterResponse' {} a -> s {dbCluster = a} :: FailoverDBClusterResponse)
+
+-- | The response's http status code.
+failoverDBClusterResponse_httpStatus :: Lens.Lens' FailoverDBClusterResponse Prelude.Int
+failoverDBClusterResponse_httpStatus = Lens.lens (\FailoverDBClusterResponse' {httpStatus} -> httpStatus) (\s@FailoverDBClusterResponse' {} a -> s {httpStatus = a} :: FailoverDBClusterResponse)
+
+instance Prelude.NFData FailoverDBClusterResponse where
+  rnf FailoverDBClusterResponse' {..} =
+    Prelude.rnf dbCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/Lens.hs b/gen/Amazonka/DocumentDB/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Lens.hs
@@ -0,0 +1,839 @@
+{-# 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.DocumentDB.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.DocumentDB.Lens
+  ( -- * Operations
+
+    -- ** AddSourceIdentifierToSubscription
+    addSourceIdentifierToSubscription_subscriptionName,
+    addSourceIdentifierToSubscription_sourceIdentifier,
+    addSourceIdentifierToSubscriptionResponse_eventSubscription,
+    addSourceIdentifierToSubscriptionResponse_httpStatus,
+
+    -- ** AddTagsToResource
+    addTagsToResource_resourceName,
+    addTagsToResource_tags,
+
+    -- ** ApplyPendingMaintenanceAction
+    applyPendingMaintenanceAction_resourceIdentifier,
+    applyPendingMaintenanceAction_applyAction,
+    applyPendingMaintenanceAction_optInType,
+    applyPendingMaintenanceActionResponse_resourcePendingMaintenanceActions,
+    applyPendingMaintenanceActionResponse_httpStatus,
+
+    -- ** CopyDBClusterParameterGroup
+    copyDBClusterParameterGroup_tags,
+    copyDBClusterParameterGroup_sourceDBClusterParameterGroupIdentifier,
+    copyDBClusterParameterGroup_targetDBClusterParameterGroupIdentifier,
+    copyDBClusterParameterGroup_targetDBClusterParameterGroupDescription,
+    copyDBClusterParameterGroupResponse_dbClusterParameterGroup,
+    copyDBClusterParameterGroupResponse_httpStatus,
+
+    -- ** CopyDBClusterSnapshot
+    copyDBClusterSnapshot_copyTags,
+    copyDBClusterSnapshot_kmsKeyId,
+    copyDBClusterSnapshot_preSignedUrl,
+    copyDBClusterSnapshot_tags,
+    copyDBClusterSnapshot_sourceDBClusterSnapshotIdentifier,
+    copyDBClusterSnapshot_targetDBClusterSnapshotIdentifier,
+    copyDBClusterSnapshotResponse_dbClusterSnapshot,
+    copyDBClusterSnapshotResponse_httpStatus,
+
+    -- ** CreateDBCluster
+    createDBCluster_availabilityZones,
+    createDBCluster_backupRetentionPeriod,
+    createDBCluster_dbClusterParameterGroupName,
+    createDBCluster_dbSubnetGroupName,
+    createDBCluster_deletionProtection,
+    createDBCluster_enableCloudwatchLogsExports,
+    createDBCluster_engineVersion,
+    createDBCluster_globalClusterIdentifier,
+    createDBCluster_kmsKeyId,
+    createDBCluster_masterUserPassword,
+    createDBCluster_masterUsername,
+    createDBCluster_port,
+    createDBCluster_preSignedUrl,
+    createDBCluster_preferredBackupWindow,
+    createDBCluster_preferredMaintenanceWindow,
+    createDBCluster_storageEncrypted,
+    createDBCluster_tags,
+    createDBCluster_vpcSecurityGroupIds,
+    createDBCluster_dbClusterIdentifier,
+    createDBCluster_engine,
+    createDBClusterResponse_dbCluster,
+    createDBClusterResponse_httpStatus,
+
+    -- ** CreateDBClusterParameterGroup
+    createDBClusterParameterGroup_tags,
+    createDBClusterParameterGroup_dbClusterParameterGroupName,
+    createDBClusterParameterGroup_dbParameterGroupFamily,
+    createDBClusterParameterGroup_description,
+    createDBClusterParameterGroupResponse_dbClusterParameterGroup,
+    createDBClusterParameterGroupResponse_httpStatus,
+
+    -- ** CreateDBClusterSnapshot
+    createDBClusterSnapshot_tags,
+    createDBClusterSnapshot_dbClusterSnapshotIdentifier,
+    createDBClusterSnapshot_dbClusterIdentifier,
+    createDBClusterSnapshotResponse_dbClusterSnapshot,
+    createDBClusterSnapshotResponse_httpStatus,
+
+    -- ** CreateDBInstance
+    createDBInstance_autoMinorVersionUpgrade,
+    createDBInstance_availabilityZone,
+    createDBInstance_copyTagsToSnapshot,
+    createDBInstance_enablePerformanceInsights,
+    createDBInstance_performanceInsightsKMSKeyId,
+    createDBInstance_preferredMaintenanceWindow,
+    createDBInstance_promotionTier,
+    createDBInstance_tags,
+    createDBInstance_dbInstanceIdentifier,
+    createDBInstance_dbInstanceClass,
+    createDBInstance_engine,
+    createDBInstance_dbClusterIdentifier,
+    createDBInstanceResponse_dbInstance,
+    createDBInstanceResponse_httpStatus,
+
+    -- ** CreateDBSubnetGroup
+    createDBSubnetGroup_tags,
+    createDBSubnetGroup_dbSubnetGroupName,
+    createDBSubnetGroup_dbSubnetGroupDescription,
+    createDBSubnetGroup_subnetIds,
+    createDBSubnetGroupResponse_dbSubnetGroup,
+    createDBSubnetGroupResponse_httpStatus,
+
+    -- ** CreateEventSubscription
+    createEventSubscription_enabled,
+    createEventSubscription_eventCategories,
+    createEventSubscription_sourceIds,
+    createEventSubscription_sourceType,
+    createEventSubscription_tags,
+    createEventSubscription_subscriptionName,
+    createEventSubscription_snsTopicArn,
+    createEventSubscriptionResponse_eventSubscription,
+    createEventSubscriptionResponse_httpStatus,
+
+    -- ** CreateGlobalCluster
+    createGlobalCluster_databaseName,
+    createGlobalCluster_deletionProtection,
+    createGlobalCluster_engine,
+    createGlobalCluster_engineVersion,
+    createGlobalCluster_sourceDBClusterIdentifier,
+    createGlobalCluster_storageEncrypted,
+    createGlobalCluster_globalClusterIdentifier,
+    createGlobalClusterResponse_globalCluster,
+    createGlobalClusterResponse_httpStatus,
+
+    -- ** DeleteDBCluster
+    deleteDBCluster_finalDBSnapshotIdentifier,
+    deleteDBCluster_skipFinalSnapshot,
+    deleteDBCluster_dbClusterIdentifier,
+    deleteDBClusterResponse_dbCluster,
+    deleteDBClusterResponse_httpStatus,
+
+    -- ** DeleteDBClusterParameterGroup
+    deleteDBClusterParameterGroup_dbClusterParameterGroupName,
+
+    -- ** DeleteDBClusterSnapshot
+    deleteDBClusterSnapshot_dbClusterSnapshotIdentifier,
+    deleteDBClusterSnapshotResponse_dbClusterSnapshot,
+    deleteDBClusterSnapshotResponse_httpStatus,
+
+    -- ** DeleteDBInstance
+    deleteDBInstance_dbInstanceIdentifier,
+    deleteDBInstanceResponse_dbInstance,
+    deleteDBInstanceResponse_httpStatus,
+
+    -- ** DeleteDBSubnetGroup
+    deleteDBSubnetGroup_dbSubnetGroupName,
+
+    -- ** DeleteEventSubscription
+    deleteEventSubscription_subscriptionName,
+    deleteEventSubscriptionResponse_eventSubscription,
+    deleteEventSubscriptionResponse_httpStatus,
+
+    -- ** DeleteGlobalCluster
+    deleteGlobalCluster_globalClusterIdentifier,
+    deleteGlobalClusterResponse_globalCluster,
+    deleteGlobalClusterResponse_httpStatus,
+
+    -- ** DescribeCertificates
+    describeCertificates_certificateIdentifier,
+    describeCertificates_filters,
+    describeCertificates_marker,
+    describeCertificates_maxRecords,
+    describeCertificatesResponse_certificates,
+    describeCertificatesResponse_marker,
+    describeCertificatesResponse_httpStatus,
+
+    -- ** DescribeDBClusterParameterGroups
+    describeDBClusterParameterGroups_dbClusterParameterGroupName,
+    describeDBClusterParameterGroups_filters,
+    describeDBClusterParameterGroups_marker,
+    describeDBClusterParameterGroups_maxRecords,
+    describeDBClusterParameterGroupsResponse_dbClusterParameterGroups,
+    describeDBClusterParameterGroupsResponse_marker,
+    describeDBClusterParameterGroupsResponse_httpStatus,
+
+    -- ** DescribeDBClusterParameters
+    describeDBClusterParameters_filters,
+    describeDBClusterParameters_marker,
+    describeDBClusterParameters_maxRecords,
+    describeDBClusterParameters_source,
+    describeDBClusterParameters_dbClusterParameterGroupName,
+    describeDBClusterParametersResponse_marker,
+    describeDBClusterParametersResponse_parameters,
+    describeDBClusterParametersResponse_httpStatus,
+
+    -- ** DescribeDBClusterSnapshotAttributes
+    describeDBClusterSnapshotAttributes_dbClusterSnapshotIdentifier,
+    describeDBClusterSnapshotAttributesResponse_dbClusterSnapshotAttributesResult,
+    describeDBClusterSnapshotAttributesResponse_httpStatus,
+
+    -- ** DescribeDBClusterSnapshots
+    describeDBClusterSnapshots_dbClusterIdentifier,
+    describeDBClusterSnapshots_dbClusterSnapshotIdentifier,
+    describeDBClusterSnapshots_filters,
+    describeDBClusterSnapshots_includePublic,
+    describeDBClusterSnapshots_includeShared,
+    describeDBClusterSnapshots_marker,
+    describeDBClusterSnapshots_maxRecords,
+    describeDBClusterSnapshots_snapshotType,
+    describeDBClusterSnapshotsResponse_dbClusterSnapshots,
+    describeDBClusterSnapshotsResponse_marker,
+    describeDBClusterSnapshotsResponse_httpStatus,
+
+    -- ** DescribeDBClusters
+    describeDBClusters_dbClusterIdentifier,
+    describeDBClusters_filters,
+    describeDBClusters_marker,
+    describeDBClusters_maxRecords,
+    describeDBClustersResponse_dbClusters,
+    describeDBClustersResponse_marker,
+    describeDBClustersResponse_httpStatus,
+
+    -- ** DescribeDBEngineVersions
+    describeDBEngineVersions_dbParameterGroupFamily,
+    describeDBEngineVersions_defaultOnly,
+    describeDBEngineVersions_engine,
+    describeDBEngineVersions_engineVersion,
+    describeDBEngineVersions_filters,
+    describeDBEngineVersions_listSupportedCharacterSets,
+    describeDBEngineVersions_listSupportedTimezones,
+    describeDBEngineVersions_marker,
+    describeDBEngineVersions_maxRecords,
+    describeDBEngineVersionsResponse_dbEngineVersions,
+    describeDBEngineVersionsResponse_marker,
+    describeDBEngineVersionsResponse_httpStatus,
+
+    -- ** DescribeDBInstances
+    describeDBInstances_dbInstanceIdentifier,
+    describeDBInstances_filters,
+    describeDBInstances_marker,
+    describeDBInstances_maxRecords,
+    describeDBInstancesResponse_dbInstances,
+    describeDBInstancesResponse_marker,
+    describeDBInstancesResponse_httpStatus,
+
+    -- ** DescribeDBSubnetGroups
+    describeDBSubnetGroups_dbSubnetGroupName,
+    describeDBSubnetGroups_filters,
+    describeDBSubnetGroups_marker,
+    describeDBSubnetGroups_maxRecords,
+    describeDBSubnetGroupsResponse_dbSubnetGroups,
+    describeDBSubnetGroupsResponse_marker,
+    describeDBSubnetGroupsResponse_httpStatus,
+
+    -- ** DescribeEngineDefaultClusterParameters
+    describeEngineDefaultClusterParameters_filters,
+    describeEngineDefaultClusterParameters_marker,
+    describeEngineDefaultClusterParameters_maxRecords,
+    describeEngineDefaultClusterParameters_dbParameterGroupFamily,
+    describeEngineDefaultClusterParametersResponse_engineDefaults,
+    describeEngineDefaultClusterParametersResponse_httpStatus,
+
+    -- ** DescribeEventCategories
+    describeEventCategories_filters,
+    describeEventCategories_sourceType,
+    describeEventCategoriesResponse_eventCategoriesMapList,
+    describeEventCategoriesResponse_httpStatus,
+
+    -- ** DescribeEventSubscriptions
+    describeEventSubscriptions_filters,
+    describeEventSubscriptions_marker,
+    describeEventSubscriptions_maxRecords,
+    describeEventSubscriptions_subscriptionName,
+    describeEventSubscriptionsResponse_eventSubscriptionsList,
+    describeEventSubscriptionsResponse_marker,
+    describeEventSubscriptionsResponse_httpStatus,
+
+    -- ** DescribeEvents
+    describeEvents_duration,
+    describeEvents_endTime,
+    describeEvents_eventCategories,
+    describeEvents_filters,
+    describeEvents_marker,
+    describeEvents_maxRecords,
+    describeEvents_sourceIdentifier,
+    describeEvents_sourceType,
+    describeEvents_startTime,
+    describeEventsResponse_events,
+    describeEventsResponse_marker,
+    describeEventsResponse_httpStatus,
+
+    -- ** DescribeGlobalClusters
+    describeGlobalClusters_filters,
+    describeGlobalClusters_globalClusterIdentifier,
+    describeGlobalClusters_marker,
+    describeGlobalClusters_maxRecords,
+    describeGlobalClustersResponse_globalClusters,
+    describeGlobalClustersResponse_marker,
+    describeGlobalClustersResponse_httpStatus,
+
+    -- ** DescribeOrderableDBInstanceOptions
+    describeOrderableDBInstanceOptions_dbInstanceClass,
+    describeOrderableDBInstanceOptions_engineVersion,
+    describeOrderableDBInstanceOptions_filters,
+    describeOrderableDBInstanceOptions_licenseModel,
+    describeOrderableDBInstanceOptions_marker,
+    describeOrderableDBInstanceOptions_maxRecords,
+    describeOrderableDBInstanceOptions_vpc,
+    describeOrderableDBInstanceOptions_engine,
+    describeOrderableDBInstanceOptionsResponse_marker,
+    describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions,
+    describeOrderableDBInstanceOptionsResponse_httpStatus,
+
+    -- ** DescribePendingMaintenanceActions
+    describePendingMaintenanceActions_filters,
+    describePendingMaintenanceActions_marker,
+    describePendingMaintenanceActions_maxRecords,
+    describePendingMaintenanceActions_resourceIdentifier,
+    describePendingMaintenanceActionsResponse_marker,
+    describePendingMaintenanceActionsResponse_pendingMaintenanceActions,
+    describePendingMaintenanceActionsResponse_httpStatus,
+
+    -- ** FailoverDBCluster
+    failoverDBCluster_dbClusterIdentifier,
+    failoverDBCluster_targetDBInstanceIdentifier,
+    failoverDBClusterResponse_dbCluster,
+    failoverDBClusterResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_filters,
+    listTagsForResource_resourceName,
+    listTagsForResourceResponse_tagList,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** ModifyDBCluster
+    modifyDBCluster_applyImmediately,
+    modifyDBCluster_backupRetentionPeriod,
+    modifyDBCluster_cloudwatchLogsExportConfiguration,
+    modifyDBCluster_dbClusterParameterGroupName,
+    modifyDBCluster_deletionProtection,
+    modifyDBCluster_engineVersion,
+    modifyDBCluster_masterUserPassword,
+    modifyDBCluster_newDBClusterIdentifier,
+    modifyDBCluster_port,
+    modifyDBCluster_preferredBackupWindow,
+    modifyDBCluster_preferredMaintenanceWindow,
+    modifyDBCluster_vpcSecurityGroupIds,
+    modifyDBCluster_dbClusterIdentifier,
+    modifyDBClusterResponse_dbCluster,
+    modifyDBClusterResponse_httpStatus,
+
+    -- ** ModifyDBClusterParameterGroup
+    modifyDBClusterParameterGroup_dbClusterParameterGroupName,
+    modifyDBClusterParameterGroup_parameters,
+    dbClusterParameterGroupNameMessage_dbClusterParameterGroupName,
+
+    -- ** ModifyDBClusterSnapshotAttribute
+    modifyDBClusterSnapshotAttribute_valuesToAdd,
+    modifyDBClusterSnapshotAttribute_valuesToRemove,
+    modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier,
+    modifyDBClusterSnapshotAttribute_attributeName,
+    modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult,
+    modifyDBClusterSnapshotAttributeResponse_httpStatus,
+
+    -- ** ModifyDBInstance
+    modifyDBInstance_applyImmediately,
+    modifyDBInstance_autoMinorVersionUpgrade,
+    modifyDBInstance_cACertificateIdentifier,
+    modifyDBInstance_copyTagsToSnapshot,
+    modifyDBInstance_dbInstanceClass,
+    modifyDBInstance_enablePerformanceInsights,
+    modifyDBInstance_newDBInstanceIdentifier,
+    modifyDBInstance_performanceInsightsKMSKeyId,
+    modifyDBInstance_preferredMaintenanceWindow,
+    modifyDBInstance_promotionTier,
+    modifyDBInstance_dbInstanceIdentifier,
+    modifyDBInstanceResponse_dbInstance,
+    modifyDBInstanceResponse_httpStatus,
+
+    -- ** ModifyDBSubnetGroup
+    modifyDBSubnetGroup_dbSubnetGroupDescription,
+    modifyDBSubnetGroup_dbSubnetGroupName,
+    modifyDBSubnetGroup_subnetIds,
+    modifyDBSubnetGroupResponse_dbSubnetGroup,
+    modifyDBSubnetGroupResponse_httpStatus,
+
+    -- ** ModifyEventSubscription
+    modifyEventSubscription_enabled,
+    modifyEventSubscription_eventCategories,
+    modifyEventSubscription_snsTopicArn,
+    modifyEventSubscription_sourceType,
+    modifyEventSubscription_subscriptionName,
+    modifyEventSubscriptionResponse_eventSubscription,
+    modifyEventSubscriptionResponse_httpStatus,
+
+    -- ** ModifyGlobalCluster
+    modifyGlobalCluster_deletionProtection,
+    modifyGlobalCluster_newGlobalClusterIdentifier,
+    modifyGlobalCluster_globalClusterIdentifier,
+    modifyGlobalClusterResponse_globalCluster,
+    modifyGlobalClusterResponse_httpStatus,
+
+    -- ** RebootDBInstance
+    rebootDBInstance_forceFailover,
+    rebootDBInstance_dbInstanceIdentifier,
+    rebootDBInstanceResponse_dbInstance,
+    rebootDBInstanceResponse_httpStatus,
+
+    -- ** RemoveFromGlobalCluster
+    removeFromGlobalCluster_globalClusterIdentifier,
+    removeFromGlobalCluster_dbClusterIdentifier,
+    removeFromGlobalClusterResponse_globalCluster,
+    removeFromGlobalClusterResponse_httpStatus,
+
+    -- ** RemoveSourceIdentifierFromSubscription
+    removeSourceIdentifierFromSubscription_subscriptionName,
+    removeSourceIdentifierFromSubscription_sourceIdentifier,
+    removeSourceIdentifierFromSubscriptionResponse_eventSubscription,
+    removeSourceIdentifierFromSubscriptionResponse_httpStatus,
+
+    -- ** RemoveTagsFromResource
+    removeTagsFromResource_resourceName,
+    removeTagsFromResource_tagKeys,
+
+    -- ** ResetDBClusterParameterGroup
+    resetDBClusterParameterGroup_parameters,
+    resetDBClusterParameterGroup_resetAllParameters,
+    resetDBClusterParameterGroup_dbClusterParameterGroupName,
+    dbClusterParameterGroupNameMessage_dbClusterParameterGroupName,
+
+    -- ** RestoreDBClusterFromSnapshot
+    restoreDBClusterFromSnapshot_availabilityZones,
+    restoreDBClusterFromSnapshot_dbSubnetGroupName,
+    restoreDBClusterFromSnapshot_deletionProtection,
+    restoreDBClusterFromSnapshot_enableCloudwatchLogsExports,
+    restoreDBClusterFromSnapshot_engineVersion,
+    restoreDBClusterFromSnapshot_kmsKeyId,
+    restoreDBClusterFromSnapshot_port,
+    restoreDBClusterFromSnapshot_tags,
+    restoreDBClusterFromSnapshot_vpcSecurityGroupIds,
+    restoreDBClusterFromSnapshot_dbClusterIdentifier,
+    restoreDBClusterFromSnapshot_snapshotIdentifier,
+    restoreDBClusterFromSnapshot_engine,
+    restoreDBClusterFromSnapshotResponse_dbCluster,
+    restoreDBClusterFromSnapshotResponse_httpStatus,
+
+    -- ** RestoreDBClusterToPointInTime
+    restoreDBClusterToPointInTime_dbSubnetGroupName,
+    restoreDBClusterToPointInTime_deletionProtection,
+    restoreDBClusterToPointInTime_enableCloudwatchLogsExports,
+    restoreDBClusterToPointInTime_kmsKeyId,
+    restoreDBClusterToPointInTime_port,
+    restoreDBClusterToPointInTime_restoreToTime,
+    restoreDBClusterToPointInTime_restoreType,
+    restoreDBClusterToPointInTime_tags,
+    restoreDBClusterToPointInTime_useLatestRestorableTime,
+    restoreDBClusterToPointInTime_vpcSecurityGroupIds,
+    restoreDBClusterToPointInTime_dbClusterIdentifier,
+    restoreDBClusterToPointInTime_sourceDBClusterIdentifier,
+    restoreDBClusterToPointInTimeResponse_dbCluster,
+    restoreDBClusterToPointInTimeResponse_httpStatus,
+
+    -- ** StartDBCluster
+    startDBCluster_dbClusterIdentifier,
+    startDBClusterResponse_dbCluster,
+    startDBClusterResponse_httpStatus,
+
+    -- ** StopDBCluster
+    stopDBCluster_dbClusterIdentifier,
+    stopDBClusterResponse_dbCluster,
+    stopDBClusterResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AvailabilityZone
+    availabilityZone_name,
+
+    -- ** Certificate
+    certificate_certificateArn,
+    certificate_certificateIdentifier,
+    certificate_certificateType,
+    certificate_thumbprint,
+    certificate_validFrom,
+    certificate_validTill,
+
+    -- ** CloudwatchLogsExportConfiguration
+    cloudwatchLogsExportConfiguration_disableLogTypes,
+    cloudwatchLogsExportConfiguration_enableLogTypes,
+
+    -- ** DBCluster
+    dbCluster_associatedRoles,
+    dbCluster_availabilityZones,
+    dbCluster_backupRetentionPeriod,
+    dbCluster_cloneGroupId,
+    dbCluster_clusterCreateTime,
+    dbCluster_dbClusterArn,
+    dbCluster_dbClusterIdentifier,
+    dbCluster_dbClusterMembers,
+    dbCluster_dbClusterParameterGroup,
+    dbCluster_dbSubnetGroup,
+    dbCluster_dbClusterResourceId,
+    dbCluster_deletionProtection,
+    dbCluster_earliestRestorableTime,
+    dbCluster_enabledCloudwatchLogsExports,
+    dbCluster_endpoint,
+    dbCluster_engine,
+    dbCluster_engineVersion,
+    dbCluster_hostedZoneId,
+    dbCluster_kmsKeyId,
+    dbCluster_latestRestorableTime,
+    dbCluster_masterUsername,
+    dbCluster_multiAZ,
+    dbCluster_percentProgress,
+    dbCluster_port,
+    dbCluster_preferredBackupWindow,
+    dbCluster_preferredMaintenanceWindow,
+    dbCluster_readReplicaIdentifiers,
+    dbCluster_readerEndpoint,
+    dbCluster_replicationSourceIdentifier,
+    dbCluster_status,
+    dbCluster_storageEncrypted,
+    dbCluster_vpcSecurityGroups,
+
+    -- ** DBClusterMember
+    dbClusterMember_dbClusterParameterGroupStatus,
+    dbClusterMember_dbInstanceIdentifier,
+    dbClusterMember_isClusterWriter,
+    dbClusterMember_promotionTier,
+
+    -- ** DBClusterParameterGroup
+    dbClusterParameterGroup_dbClusterParameterGroupArn,
+    dbClusterParameterGroup_dbClusterParameterGroupName,
+    dbClusterParameterGroup_dbParameterGroupFamily,
+    dbClusterParameterGroup_description,
+
+    -- ** DBClusterParameterGroupNameMessage
+    dbClusterParameterGroupNameMessage_dbClusterParameterGroupName,
+
+    -- ** DBClusterRole
+    dbClusterRole_roleArn,
+    dbClusterRole_status,
+
+    -- ** DBClusterSnapshot
+    dbClusterSnapshot_availabilityZones,
+    dbClusterSnapshot_clusterCreateTime,
+    dbClusterSnapshot_dbClusterIdentifier,
+    dbClusterSnapshot_dbClusterSnapshotArn,
+    dbClusterSnapshot_dbClusterSnapshotIdentifier,
+    dbClusterSnapshot_engine,
+    dbClusterSnapshot_engineVersion,
+    dbClusterSnapshot_kmsKeyId,
+    dbClusterSnapshot_masterUsername,
+    dbClusterSnapshot_percentProgress,
+    dbClusterSnapshot_port,
+    dbClusterSnapshot_snapshotCreateTime,
+    dbClusterSnapshot_snapshotType,
+    dbClusterSnapshot_sourceDBClusterSnapshotArn,
+    dbClusterSnapshot_status,
+    dbClusterSnapshot_storageEncrypted,
+    dbClusterSnapshot_vpcId,
+
+    -- ** DBClusterSnapshotAttribute
+    dbClusterSnapshotAttribute_attributeName,
+    dbClusterSnapshotAttribute_attributeValues,
+
+    -- ** DBClusterSnapshotAttributesResult
+    dbClusterSnapshotAttributesResult_dbClusterSnapshotAttributes,
+    dbClusterSnapshotAttributesResult_dbClusterSnapshotIdentifier,
+
+    -- ** DBEngineVersion
+    dbEngineVersion_dbEngineDescription,
+    dbEngineVersion_dbEngineVersionDescription,
+    dbEngineVersion_dbParameterGroupFamily,
+    dbEngineVersion_engine,
+    dbEngineVersion_engineVersion,
+    dbEngineVersion_exportableLogTypes,
+    dbEngineVersion_supportsLogExportsToCloudwatchLogs,
+    dbEngineVersion_validUpgradeTarget,
+
+    -- ** DBInstance
+    dbInstance_autoMinorVersionUpgrade,
+    dbInstance_availabilityZone,
+    dbInstance_backupRetentionPeriod,
+    dbInstance_cACertificateIdentifier,
+    dbInstance_copyTagsToSnapshot,
+    dbInstance_dbClusterIdentifier,
+    dbInstance_dbInstanceArn,
+    dbInstance_dbInstanceClass,
+    dbInstance_dbInstanceIdentifier,
+    dbInstance_dbInstanceStatus,
+    dbInstance_dbSubnetGroup,
+    dbInstance_dbiResourceId,
+    dbInstance_enabledCloudwatchLogsExports,
+    dbInstance_endpoint,
+    dbInstance_engine,
+    dbInstance_engineVersion,
+    dbInstance_instanceCreateTime,
+    dbInstance_kmsKeyId,
+    dbInstance_latestRestorableTime,
+    dbInstance_pendingModifiedValues,
+    dbInstance_preferredBackupWindow,
+    dbInstance_preferredMaintenanceWindow,
+    dbInstance_promotionTier,
+    dbInstance_publiclyAccessible,
+    dbInstance_statusInfos,
+    dbInstance_storageEncrypted,
+    dbInstance_vpcSecurityGroups,
+
+    -- ** DBInstanceStatusInfo
+    dbInstanceStatusInfo_message,
+    dbInstanceStatusInfo_normal,
+    dbInstanceStatusInfo_status,
+    dbInstanceStatusInfo_statusType,
+
+    -- ** DBSubnetGroup
+    dbSubnetGroup_dbSubnetGroupArn,
+    dbSubnetGroup_dbSubnetGroupDescription,
+    dbSubnetGroup_dbSubnetGroupName,
+    dbSubnetGroup_subnetGroupStatus,
+    dbSubnetGroup_subnets,
+    dbSubnetGroup_vpcId,
+
+    -- ** Endpoint
+    endpoint_address,
+    endpoint_hostedZoneId,
+    endpoint_port,
+
+    -- ** EngineDefaults
+    engineDefaults_dbParameterGroupFamily,
+    engineDefaults_marker,
+    engineDefaults_parameters,
+
+    -- ** Event
+    event_date,
+    event_eventCategories,
+    event_message,
+    event_sourceArn,
+    event_sourceIdentifier,
+    event_sourceType,
+
+    -- ** EventCategoriesMap
+    eventCategoriesMap_eventCategories,
+    eventCategoriesMap_sourceType,
+
+    -- ** EventSubscription
+    eventSubscription_custSubscriptionId,
+    eventSubscription_customerAwsId,
+    eventSubscription_enabled,
+    eventSubscription_eventCategoriesList,
+    eventSubscription_eventSubscriptionArn,
+    eventSubscription_snsTopicArn,
+    eventSubscription_sourceIdsList,
+    eventSubscription_sourceType,
+    eventSubscription_status,
+    eventSubscription_subscriptionCreationTime,
+
+    -- ** Filter
+    filter_name,
+    filter_values,
+
+    -- ** GlobalCluster
+    globalCluster_databaseName,
+    globalCluster_deletionProtection,
+    globalCluster_engine,
+    globalCluster_engineVersion,
+    globalCluster_globalClusterArn,
+    globalCluster_globalClusterIdentifier,
+    globalCluster_globalClusterMembers,
+    globalCluster_globalClusterResourceId,
+    globalCluster_status,
+    globalCluster_storageEncrypted,
+
+    -- ** GlobalClusterMember
+    globalClusterMember_dbClusterArn,
+    globalClusterMember_isWriter,
+    globalClusterMember_readers,
+
+    -- ** OrderableDBInstanceOption
+    orderableDBInstanceOption_availabilityZones,
+    orderableDBInstanceOption_dbInstanceClass,
+    orderableDBInstanceOption_engine,
+    orderableDBInstanceOption_engineVersion,
+    orderableDBInstanceOption_licenseModel,
+    orderableDBInstanceOption_vpc,
+
+    -- ** Parameter
+    parameter_allowedValues,
+    parameter_applyMethod,
+    parameter_applyType,
+    parameter_dataType,
+    parameter_description,
+    parameter_isModifiable,
+    parameter_minimumEngineVersion,
+    parameter_parameterName,
+    parameter_parameterValue,
+    parameter_source,
+
+    -- ** PendingCloudwatchLogsExports
+    pendingCloudwatchLogsExports_logTypesToDisable,
+    pendingCloudwatchLogsExports_logTypesToEnable,
+
+    -- ** PendingMaintenanceAction
+    pendingMaintenanceAction_action,
+    pendingMaintenanceAction_autoAppliedAfterDate,
+    pendingMaintenanceAction_currentApplyDate,
+    pendingMaintenanceAction_description,
+    pendingMaintenanceAction_forcedApplyDate,
+    pendingMaintenanceAction_optInStatus,
+
+    -- ** PendingModifiedValues
+    pendingModifiedValues_allocatedStorage,
+    pendingModifiedValues_backupRetentionPeriod,
+    pendingModifiedValues_cACertificateIdentifier,
+    pendingModifiedValues_dbInstanceClass,
+    pendingModifiedValues_dbInstanceIdentifier,
+    pendingModifiedValues_dbSubnetGroupName,
+    pendingModifiedValues_engineVersion,
+    pendingModifiedValues_iops,
+    pendingModifiedValues_licenseModel,
+    pendingModifiedValues_masterUserPassword,
+    pendingModifiedValues_multiAZ,
+    pendingModifiedValues_pendingCloudwatchLogsExports,
+    pendingModifiedValues_port,
+    pendingModifiedValues_storageType,
+
+    -- ** ResourcePendingMaintenanceActions
+    resourcePendingMaintenanceActions_pendingMaintenanceActionDetails,
+    resourcePendingMaintenanceActions_resourceIdentifier,
+
+    -- ** Subnet
+    subnet_subnetAvailabilityZone,
+    subnet_subnetIdentifier,
+    subnet_subnetStatus,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** UpgradeTarget
+    upgradeTarget_autoUpgrade,
+    upgradeTarget_description,
+    upgradeTarget_engine,
+    upgradeTarget_engineVersion,
+    upgradeTarget_isMajorVersionUpgrade,
+
+    -- ** VpcSecurityGroupMembership
+    vpcSecurityGroupMembership_status,
+    vpcSecurityGroupMembership_vpcSecurityGroupId,
+  )
+where
+
+import Amazonka.DocumentDB.AddSourceIdentifierToSubscription
+import Amazonka.DocumentDB.AddTagsToResource
+import Amazonka.DocumentDB.ApplyPendingMaintenanceAction
+import Amazonka.DocumentDB.CopyDBClusterParameterGroup
+import Amazonka.DocumentDB.CopyDBClusterSnapshot
+import Amazonka.DocumentDB.CreateDBCluster
+import Amazonka.DocumentDB.CreateDBClusterParameterGroup
+import Amazonka.DocumentDB.CreateDBClusterSnapshot
+import Amazonka.DocumentDB.CreateDBInstance
+import Amazonka.DocumentDB.CreateDBSubnetGroup
+import Amazonka.DocumentDB.CreateEventSubscription
+import Amazonka.DocumentDB.CreateGlobalCluster
+import Amazonka.DocumentDB.DeleteDBCluster
+import Amazonka.DocumentDB.DeleteDBClusterParameterGroup
+import Amazonka.DocumentDB.DeleteDBClusterSnapshot
+import Amazonka.DocumentDB.DeleteDBInstance
+import Amazonka.DocumentDB.DeleteDBSubnetGroup
+import Amazonka.DocumentDB.DeleteEventSubscription
+import Amazonka.DocumentDB.DeleteGlobalCluster
+import Amazonka.DocumentDB.DescribeCertificates
+import Amazonka.DocumentDB.DescribeDBClusterParameterGroups
+import Amazonka.DocumentDB.DescribeDBClusterParameters
+import Amazonka.DocumentDB.DescribeDBClusterSnapshotAttributes
+import Amazonka.DocumentDB.DescribeDBClusterSnapshots
+import Amazonka.DocumentDB.DescribeDBClusters
+import Amazonka.DocumentDB.DescribeDBEngineVersions
+import Amazonka.DocumentDB.DescribeDBInstances
+import Amazonka.DocumentDB.DescribeDBSubnetGroups
+import Amazonka.DocumentDB.DescribeEngineDefaultClusterParameters
+import Amazonka.DocumentDB.DescribeEventCategories
+import Amazonka.DocumentDB.DescribeEventSubscriptions
+import Amazonka.DocumentDB.DescribeEvents
+import Amazonka.DocumentDB.DescribeGlobalClusters
+import Amazonka.DocumentDB.DescribeOrderableDBInstanceOptions
+import Amazonka.DocumentDB.DescribePendingMaintenanceActions
+import Amazonka.DocumentDB.FailoverDBCluster
+import Amazonka.DocumentDB.ListTagsForResource
+import Amazonka.DocumentDB.ModifyDBCluster
+import Amazonka.DocumentDB.ModifyDBClusterParameterGroup
+import Amazonka.DocumentDB.ModifyDBClusterSnapshotAttribute
+import Amazonka.DocumentDB.ModifyDBInstance
+import Amazonka.DocumentDB.ModifyDBSubnetGroup
+import Amazonka.DocumentDB.ModifyEventSubscription
+import Amazonka.DocumentDB.ModifyGlobalCluster
+import Amazonka.DocumentDB.RebootDBInstance
+import Amazonka.DocumentDB.RemoveFromGlobalCluster
+import Amazonka.DocumentDB.RemoveSourceIdentifierFromSubscription
+import Amazonka.DocumentDB.RemoveTagsFromResource
+import Amazonka.DocumentDB.ResetDBClusterParameterGroup
+import Amazonka.DocumentDB.RestoreDBClusterFromSnapshot
+import Amazonka.DocumentDB.RestoreDBClusterToPointInTime
+import Amazonka.DocumentDB.StartDBCluster
+import Amazonka.DocumentDB.StopDBCluster
+import Amazonka.DocumentDB.Types.AvailabilityZone
+import Amazonka.DocumentDB.Types.Certificate
+import Amazonka.DocumentDB.Types.CloudwatchLogsExportConfiguration
+import Amazonka.DocumentDB.Types.DBCluster
+import Amazonka.DocumentDB.Types.DBClusterMember
+import Amazonka.DocumentDB.Types.DBClusterParameterGroup
+import Amazonka.DocumentDB.Types.DBClusterParameterGroupNameMessage
+import Amazonka.DocumentDB.Types.DBClusterRole
+import Amazonka.DocumentDB.Types.DBClusterSnapshot
+import Amazonka.DocumentDB.Types.DBClusterSnapshotAttribute
+import Amazonka.DocumentDB.Types.DBClusterSnapshotAttributesResult
+import Amazonka.DocumentDB.Types.DBEngineVersion
+import Amazonka.DocumentDB.Types.DBInstance
+import Amazonka.DocumentDB.Types.DBInstanceStatusInfo
+import Amazonka.DocumentDB.Types.DBSubnetGroup
+import Amazonka.DocumentDB.Types.Endpoint
+import Amazonka.DocumentDB.Types.EngineDefaults
+import Amazonka.DocumentDB.Types.Event
+import Amazonka.DocumentDB.Types.EventCategoriesMap
+import Amazonka.DocumentDB.Types.EventSubscription
+import Amazonka.DocumentDB.Types.Filter
+import Amazonka.DocumentDB.Types.GlobalCluster
+import Amazonka.DocumentDB.Types.GlobalClusterMember
+import Amazonka.DocumentDB.Types.OrderableDBInstanceOption
+import Amazonka.DocumentDB.Types.Parameter
+import Amazonka.DocumentDB.Types.PendingCloudwatchLogsExports
+import Amazonka.DocumentDB.Types.PendingMaintenanceAction
+import Amazonka.DocumentDB.Types.PendingModifiedValues
+import Amazonka.DocumentDB.Types.ResourcePendingMaintenanceActions
+import Amazonka.DocumentDB.Types.Subnet
+import Amazonka.DocumentDB.Types.Tag
+import Amazonka.DocumentDB.Types.UpgradeTarget
+import Amazonka.DocumentDB.Types.VpcSecurityGroupMembership
diff --git a/gen/Amazonka/DocumentDB/ListTagsForResource.hs b/gen/Amazonka/DocumentDB/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ListTagsForResource.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.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)
+--
+-- Lists all tags on an Amazon DocumentDB resource.
+module Amazonka.DocumentDB.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_filters,
+    listTagsForResource_resourceName,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tagList,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ListTagsForResource.
+--
+-- /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | This parameter is not currently supported.
+    filters :: Prelude.Maybe [Filter],
+    -- | The Amazon DocumentDB resource with tags to be listed. This value is an
+    -- Amazon Resource Name (ARN).
+    resourceName :: 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:
+--
+-- 'filters', 'listTagsForResource_filters' - This parameter is not currently supported.
+--
+-- 'resourceName', 'listTagsForResource_resourceName' - The Amazon DocumentDB resource with tags to be listed. This value is an
+-- Amazon Resource Name (ARN).
+newListTagsForResource ::
+  -- | 'resourceName'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceName_ =
+  ListTagsForResource'
+    { filters = Prelude.Nothing,
+      resourceName = pResourceName_
+    }
+
+-- | This parameter is not currently supported.
+listTagsForResource_filters :: Lens.Lens' ListTagsForResource (Prelude.Maybe [Filter])
+listTagsForResource_filters = Lens.lens (\ListTagsForResource' {filters} -> filters) (\s@ListTagsForResource' {} a -> s {filters = a} :: ListTagsForResource) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon DocumentDB resource with tags to be listed. This value is an
+-- Amazon Resource Name (ARN).
+listTagsForResource_resourceName :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceName = Lens.lens (\ListTagsForResource' {resourceName} -> resourceName) (\s@ListTagsForResource' {} a -> s {resourceName = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListTagsForResourceResult"
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> ( x
+                            Data..@? "TagList"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "Tag")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery ListTagsForResource' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ListTagsForResource" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Filters"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Filter" Prelude.<$> filters),
+        "ResourceName" Data.=: resourceName
+      ]
+
+-- | Represents the output of ListTagsForResource.
+--
+-- /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | A list of one or more tags.
+    tagList :: Prelude.Maybe [Tag],
+    -- | 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:
+--
+-- 'tagList', 'listTagsForResourceResponse_tagList' - A list of one or more tags.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tagList =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of one or more tags.
+listTagsForResourceResponse_tagList :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])
+listTagsForResourceResponse_tagList = Lens.lens (\ListTagsForResourceResponse' {tagList} -> tagList) (\s@ListTagsForResourceResponse' {} a -> s {tagList = 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 tagList
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/ModifyDBCluster.hs b/gen/Amazonka/DocumentDB/ModifyDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ModifyDBCluster.hs
@@ -0,0 +1,568 @@
+{-# 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.DocumentDB.ModifyDBCluster
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies a setting for an Amazon DocumentDB cluster. You can change one
+-- or more database configuration parameters by specifying these parameters
+-- and the new values in the request.
+module Amazonka.DocumentDB.ModifyDBCluster
+  ( -- * Creating a Request
+    ModifyDBCluster (..),
+    newModifyDBCluster,
+
+    -- * Request Lenses
+    modifyDBCluster_applyImmediately,
+    modifyDBCluster_backupRetentionPeriod,
+    modifyDBCluster_cloudwatchLogsExportConfiguration,
+    modifyDBCluster_dbClusterParameterGroupName,
+    modifyDBCluster_deletionProtection,
+    modifyDBCluster_engineVersion,
+    modifyDBCluster_masterUserPassword,
+    modifyDBCluster_newDBClusterIdentifier,
+    modifyDBCluster_port,
+    modifyDBCluster_preferredBackupWindow,
+    modifyDBCluster_preferredMaintenanceWindow,
+    modifyDBCluster_vpcSecurityGroupIds,
+    modifyDBCluster_dbClusterIdentifier,
+
+    -- * Destructuring the Response
+    ModifyDBClusterResponse (..),
+    newModifyDBClusterResponse,
+
+    -- * Response Lenses
+    modifyDBClusterResponse_dbCluster,
+    modifyDBClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ModifyDBCluster.
+--
+-- /See:/ 'newModifyDBCluster' smart constructor.
+data ModifyDBCluster = ModifyDBCluster'
+  { -- | A value that specifies whether the changes in this request and any
+    -- pending changes are asynchronously applied as soon as possible,
+    -- regardless of the @PreferredMaintenanceWindow@ setting for the cluster.
+    -- If this parameter is set to @false@, changes to the cluster are applied
+    -- during the next maintenance window.
+    --
+    -- The @ApplyImmediately@ parameter affects only the
+    -- @NewDBClusterIdentifier@ and @MasterUserPassword@ values. If you set
+    -- this parameter value to @false@, the changes to the
+    -- @NewDBClusterIdentifier@ and @MasterUserPassword@ values are applied
+    -- during the next maintenance window. All other changes are applied
+    -- immediately, regardless of the value of the @ApplyImmediately@
+    -- parameter.
+    --
+    -- Default: @false@
+    applyImmediately :: Prelude.Maybe Prelude.Bool,
+    -- | The number of days for which automated backups are retained. You must
+    -- specify a minimum value of 1.
+    --
+    -- Default: 1
+    --
+    -- Constraints:
+    --
+    -- -   Must be a value from 1 to 35.
+    backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
+    -- | The configuration setting for the log types to be enabled for export to
+    -- Amazon CloudWatch Logs for a specific instance or cluster. The
+    -- @EnableLogTypes@ and @DisableLogTypes@ arrays determine which logs are
+    -- exported (or not exported) to CloudWatch Logs.
+    cloudwatchLogsExportConfiguration :: Prelude.Maybe CloudwatchLogsExportConfiguration,
+    -- | The name of the cluster parameter group to use for the cluster.
+    dbClusterParameterGroupName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+    -- is enabled, the cluster cannot be deleted unless it is modified and
+    -- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+    -- from being accidentally deleted.
+    deletionProtection :: Prelude.Maybe Prelude.Bool,
+    -- | The version number of the database engine to which you want to upgrade.
+    -- Modifying engine version is not supported on Amazon DocumentDB.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | The password for the master database user. This password can contain any
+    -- printable ASCII character except forward slash (\/), double quote (\"),
+    -- or the \"at\" symbol (\@).
+    --
+    -- Constraints: Must contain from 8 to 100 characters.
+    masterUserPassword :: Prelude.Maybe Prelude.Text,
+    -- | The new cluster identifier for the cluster when renaming a cluster. This
+    -- value is stored as a lowercase string.
+    --
+    -- Constraints:
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- Example: @my-cluster2@
+    newDBClusterIdentifier' :: Prelude.Maybe Prelude.Text,
+    -- | The port number on which the cluster accepts connections.
+    --
+    -- Constraints: Must be a value from @1150@ to @65535@.
+    --
+    -- Default: The same port as the original cluster.
+    port :: Prelude.Maybe Prelude.Int,
+    -- | The daily time range during which automated backups are created if
+    -- automated backups are enabled, using the @BackupRetentionPeriod@
+    -- parameter.
+    --
+    -- The default is a 30-minute window selected at random from an 8-hour
+    -- block of time for each Amazon Web Services Region.
+    --
+    -- Constraints:
+    --
+    -- -   Must be in the format @hh24:mi-hh24:mi@.
+    --
+    -- -   Must be in Universal Coordinated Time (UTC).
+    --
+    -- -   Must not conflict with the preferred maintenance window.
+    --
+    -- -   Must be at least 30 minutes.
+    preferredBackupWindow :: Prelude.Maybe Prelude.Text,
+    -- | The weekly time range during which system maintenance can occur, in
+    -- Universal Coordinated Time (UTC).
+    --
+    -- Format: @ddd:hh24:mi-ddd:hh24:mi@
+    --
+    -- The default is a 30-minute window selected at random from an 8-hour
+    -- block of time for each Amazon Web Services Region, occurring on a random
+    -- day of the week.
+    --
+    -- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+    --
+    -- Constraints: Minimum 30-minute window.
+    preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
+    -- | A list of virtual private cloud (VPC) security groups that the cluster
+    -- will belong to.
+    vpcSecurityGroupIds :: Prelude.Maybe [Prelude.Text],
+    -- | The cluster identifier for the cluster that is being modified. This
+    -- parameter is not case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the identifier of an existing @DBCluster@.
+    dbClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBCluster' 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:
+--
+-- 'applyImmediately', 'modifyDBCluster_applyImmediately' - A value that specifies whether the changes in this request and any
+-- pending changes are asynchronously applied as soon as possible,
+-- regardless of the @PreferredMaintenanceWindow@ setting for the cluster.
+-- If this parameter is set to @false@, changes to the cluster are applied
+-- during the next maintenance window.
+--
+-- The @ApplyImmediately@ parameter affects only the
+-- @NewDBClusterIdentifier@ and @MasterUserPassword@ values. If you set
+-- this parameter value to @false@, the changes to the
+-- @NewDBClusterIdentifier@ and @MasterUserPassword@ values are applied
+-- during the next maintenance window. All other changes are applied
+-- immediately, regardless of the value of the @ApplyImmediately@
+-- parameter.
+--
+-- Default: @false@
+--
+-- 'backupRetentionPeriod', 'modifyDBCluster_backupRetentionPeriod' - The number of days for which automated backups are retained. You must
+-- specify a minimum value of 1.
+--
+-- Default: 1
+--
+-- Constraints:
+--
+-- -   Must be a value from 1 to 35.
+--
+-- 'cloudwatchLogsExportConfiguration', 'modifyDBCluster_cloudwatchLogsExportConfiguration' - The configuration setting for the log types to be enabled for export to
+-- Amazon CloudWatch Logs for a specific instance or cluster. The
+-- @EnableLogTypes@ and @DisableLogTypes@ arrays determine which logs are
+-- exported (or not exported) to CloudWatch Logs.
+--
+-- 'dbClusterParameterGroupName', 'modifyDBCluster_dbClusterParameterGroupName' - The name of the cluster parameter group to use for the cluster.
+--
+-- 'deletionProtection', 'modifyDBCluster_deletionProtection' - Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+--
+-- 'engineVersion', 'modifyDBCluster_engineVersion' - The version number of the database engine to which you want to upgrade.
+-- Modifying engine version is not supported on Amazon DocumentDB.
+--
+-- 'masterUserPassword', 'modifyDBCluster_masterUserPassword' - The password for the master database user. This password can contain any
+-- printable ASCII character except forward slash (\/), double quote (\"),
+-- or the \"at\" symbol (\@).
+--
+-- Constraints: Must contain from 8 to 100 characters.
+--
+-- 'newDBClusterIdentifier'', 'modifyDBCluster_newDBClusterIdentifier' - The new cluster identifier for the cluster when renaming a cluster. This
+-- value is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster2@
+--
+-- 'port', 'modifyDBCluster_port' - The port number on which the cluster accepts connections.
+--
+-- Constraints: Must be a value from @1150@ to @65535@.
+--
+-- Default: The same port as the original cluster.
+--
+-- 'preferredBackupWindow', 'modifyDBCluster_preferredBackupWindow' - The daily time range during which automated backups are created if
+-- automated backups are enabled, using the @BackupRetentionPeriod@
+-- parameter.
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region.
+--
+-- Constraints:
+--
+-- -   Must be in the format @hh24:mi-hh24:mi@.
+--
+-- -   Must be in Universal Coordinated Time (UTC).
+--
+-- -   Must not conflict with the preferred maintenance window.
+--
+-- -   Must be at least 30 minutes.
+--
+-- 'preferredMaintenanceWindow', 'modifyDBCluster_preferredMaintenanceWindow' - The weekly time range during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC).
+--
+-- Format: @ddd:hh24:mi-ddd:hh24:mi@
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region, occurring on a random
+-- day of the week.
+--
+-- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+--
+-- 'vpcSecurityGroupIds', 'modifyDBCluster_vpcSecurityGroupIds' - A list of virtual private cloud (VPC) security groups that the cluster
+-- will belong to.
+--
+-- 'dbClusterIdentifier', 'modifyDBCluster_dbClusterIdentifier' - The cluster identifier for the cluster that is being modified. This
+-- parameter is not case sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBCluster@.
+newModifyDBCluster ::
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  ModifyDBCluster
+newModifyDBCluster pDBClusterIdentifier_ =
+  ModifyDBCluster'
+    { applyImmediately =
+        Prelude.Nothing,
+      backupRetentionPeriod = Prelude.Nothing,
+      cloudwatchLogsExportConfiguration = Prelude.Nothing,
+      dbClusterParameterGroupName = Prelude.Nothing,
+      deletionProtection = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      masterUserPassword = Prelude.Nothing,
+      newDBClusterIdentifier' = Prelude.Nothing,
+      port = Prelude.Nothing,
+      preferredBackupWindow = Prelude.Nothing,
+      preferredMaintenanceWindow = Prelude.Nothing,
+      vpcSecurityGroupIds = Prelude.Nothing,
+      dbClusterIdentifier = pDBClusterIdentifier_
+    }
+
+-- | A value that specifies whether the changes in this request and any
+-- pending changes are asynchronously applied as soon as possible,
+-- regardless of the @PreferredMaintenanceWindow@ setting for the cluster.
+-- If this parameter is set to @false@, changes to the cluster are applied
+-- during the next maintenance window.
+--
+-- The @ApplyImmediately@ parameter affects only the
+-- @NewDBClusterIdentifier@ and @MasterUserPassword@ values. If you set
+-- this parameter value to @false@, the changes to the
+-- @NewDBClusterIdentifier@ and @MasterUserPassword@ values are applied
+-- during the next maintenance window. All other changes are applied
+-- immediately, regardless of the value of the @ApplyImmediately@
+-- parameter.
+--
+-- Default: @false@
+modifyDBCluster_applyImmediately :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Bool)
+modifyDBCluster_applyImmediately = Lens.lens (\ModifyDBCluster' {applyImmediately} -> applyImmediately) (\s@ModifyDBCluster' {} a -> s {applyImmediately = a} :: ModifyDBCluster)
+
+-- | The number of days for which automated backups are retained. You must
+-- specify a minimum value of 1.
+--
+-- Default: 1
+--
+-- Constraints:
+--
+-- -   Must be a value from 1 to 35.
+modifyDBCluster_backupRetentionPeriod :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Int)
+modifyDBCluster_backupRetentionPeriod = Lens.lens (\ModifyDBCluster' {backupRetentionPeriod} -> backupRetentionPeriod) (\s@ModifyDBCluster' {} a -> s {backupRetentionPeriod = a} :: ModifyDBCluster)
+
+-- | The configuration setting for the log types to be enabled for export to
+-- Amazon CloudWatch Logs for a specific instance or cluster. The
+-- @EnableLogTypes@ and @DisableLogTypes@ arrays determine which logs are
+-- exported (or not exported) to CloudWatch Logs.
+modifyDBCluster_cloudwatchLogsExportConfiguration :: Lens.Lens' ModifyDBCluster (Prelude.Maybe CloudwatchLogsExportConfiguration)
+modifyDBCluster_cloudwatchLogsExportConfiguration = Lens.lens (\ModifyDBCluster' {cloudwatchLogsExportConfiguration} -> cloudwatchLogsExportConfiguration) (\s@ModifyDBCluster' {} a -> s {cloudwatchLogsExportConfiguration = a} :: ModifyDBCluster)
+
+-- | The name of the cluster parameter group to use for the cluster.
+modifyDBCluster_dbClusterParameterGroupName :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Text)
+modifyDBCluster_dbClusterParameterGroupName = Lens.lens (\ModifyDBCluster' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@ModifyDBCluster' {} a -> s {dbClusterParameterGroupName = a} :: ModifyDBCluster)
+
+-- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+modifyDBCluster_deletionProtection :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Bool)
+modifyDBCluster_deletionProtection = Lens.lens (\ModifyDBCluster' {deletionProtection} -> deletionProtection) (\s@ModifyDBCluster' {} a -> s {deletionProtection = a} :: ModifyDBCluster)
+
+-- | The version number of the database engine to which you want to upgrade.
+-- Modifying engine version is not supported on Amazon DocumentDB.
+modifyDBCluster_engineVersion :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Text)
+modifyDBCluster_engineVersion = Lens.lens (\ModifyDBCluster' {engineVersion} -> engineVersion) (\s@ModifyDBCluster' {} a -> s {engineVersion = a} :: ModifyDBCluster)
+
+-- | The password for the master database user. This password can contain any
+-- printable ASCII character except forward slash (\/), double quote (\"),
+-- or the \"at\" symbol (\@).
+--
+-- Constraints: Must contain from 8 to 100 characters.
+modifyDBCluster_masterUserPassword :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Text)
+modifyDBCluster_masterUserPassword = Lens.lens (\ModifyDBCluster' {masterUserPassword} -> masterUserPassword) (\s@ModifyDBCluster' {} a -> s {masterUserPassword = a} :: ModifyDBCluster)
+
+-- | The new cluster identifier for the cluster when renaming a cluster. This
+-- value is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-cluster2@
+modifyDBCluster_newDBClusterIdentifier :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Text)
+modifyDBCluster_newDBClusterIdentifier = Lens.lens (\ModifyDBCluster' {newDBClusterIdentifier'} -> newDBClusterIdentifier') (\s@ModifyDBCluster' {} a -> s {newDBClusterIdentifier' = a} :: ModifyDBCluster)
+
+-- | The port number on which the cluster accepts connections.
+--
+-- Constraints: Must be a value from @1150@ to @65535@.
+--
+-- Default: The same port as the original cluster.
+modifyDBCluster_port :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Int)
+modifyDBCluster_port = Lens.lens (\ModifyDBCluster' {port} -> port) (\s@ModifyDBCluster' {} a -> s {port = a} :: ModifyDBCluster)
+
+-- | The daily time range during which automated backups are created if
+-- automated backups are enabled, using the @BackupRetentionPeriod@
+-- parameter.
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region.
+--
+-- Constraints:
+--
+-- -   Must be in the format @hh24:mi-hh24:mi@.
+--
+-- -   Must be in Universal Coordinated Time (UTC).
+--
+-- -   Must not conflict with the preferred maintenance window.
+--
+-- -   Must be at least 30 minutes.
+modifyDBCluster_preferredBackupWindow :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Text)
+modifyDBCluster_preferredBackupWindow = Lens.lens (\ModifyDBCluster' {preferredBackupWindow} -> preferredBackupWindow) (\s@ModifyDBCluster' {} a -> s {preferredBackupWindow = a} :: ModifyDBCluster)
+
+-- | The weekly time range during which system maintenance can occur, in
+-- Universal Coordinated Time (UTC).
+--
+-- Format: @ddd:hh24:mi-ddd:hh24:mi@
+--
+-- The default is a 30-minute window selected at random from an 8-hour
+-- block of time for each Amazon Web Services Region, occurring on a random
+-- day of the week.
+--
+-- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Minimum 30-minute window.
+modifyDBCluster_preferredMaintenanceWindow :: Lens.Lens' ModifyDBCluster (Prelude.Maybe Prelude.Text)
+modifyDBCluster_preferredMaintenanceWindow = Lens.lens (\ModifyDBCluster' {preferredMaintenanceWindow} -> preferredMaintenanceWindow) (\s@ModifyDBCluster' {} a -> s {preferredMaintenanceWindow = a} :: ModifyDBCluster)
+
+-- | A list of virtual private cloud (VPC) security groups that the cluster
+-- will belong to.
+modifyDBCluster_vpcSecurityGroupIds :: Lens.Lens' ModifyDBCluster (Prelude.Maybe [Prelude.Text])
+modifyDBCluster_vpcSecurityGroupIds = Lens.lens (\ModifyDBCluster' {vpcSecurityGroupIds} -> vpcSecurityGroupIds) (\s@ModifyDBCluster' {} a -> s {vpcSecurityGroupIds = a} :: ModifyDBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | The cluster identifier for the cluster that is being modified. This
+-- parameter is not case sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBCluster@.
+modifyDBCluster_dbClusterIdentifier :: Lens.Lens' ModifyDBCluster Prelude.Text
+modifyDBCluster_dbClusterIdentifier = Lens.lens (\ModifyDBCluster' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@ModifyDBCluster' {} a -> s {dbClusterIdentifier = a} :: ModifyDBCluster)
+
+instance Core.AWSRequest ModifyDBCluster where
+  type
+    AWSResponse ModifyDBCluster =
+      ModifyDBClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ModifyDBClusterResult"
+      ( \s h x ->
+          ModifyDBClusterResponse'
+            Prelude.<$> (x Data..@? "DBCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ModifyDBCluster where
+  hashWithSalt _salt ModifyDBCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` applyImmediately
+      `Prelude.hashWithSalt` backupRetentionPeriod
+      `Prelude.hashWithSalt` cloudwatchLogsExportConfiguration
+      `Prelude.hashWithSalt` dbClusterParameterGroupName
+      `Prelude.hashWithSalt` deletionProtection
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` masterUserPassword
+      `Prelude.hashWithSalt` newDBClusterIdentifier'
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` preferredBackupWindow
+      `Prelude.hashWithSalt` preferredMaintenanceWindow
+      `Prelude.hashWithSalt` vpcSecurityGroupIds
+      `Prelude.hashWithSalt` dbClusterIdentifier
+
+instance Prelude.NFData ModifyDBCluster where
+  rnf ModifyDBCluster' {..} =
+    Prelude.rnf applyImmediately
+      `Prelude.seq` Prelude.rnf backupRetentionPeriod
+      `Prelude.seq` Prelude.rnf cloudwatchLogsExportConfiguration
+      `Prelude.seq` Prelude.rnf dbClusterParameterGroupName
+      `Prelude.seq` Prelude.rnf deletionProtection
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf masterUserPassword
+      `Prelude.seq` Prelude.rnf newDBClusterIdentifier'
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf preferredBackupWindow
+      `Prelude.seq` Prelude.rnf preferredMaintenanceWindow
+      `Prelude.seq` Prelude.rnf vpcSecurityGroupIds
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+
+instance Data.ToHeaders ModifyDBCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ModifyDBCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ModifyDBCluster where
+  toQuery ModifyDBCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ModifyDBCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "ApplyImmediately" Data.=: applyImmediately,
+        "BackupRetentionPeriod"
+          Data.=: backupRetentionPeriod,
+        "CloudwatchLogsExportConfiguration"
+          Data.=: cloudwatchLogsExportConfiguration,
+        "DBClusterParameterGroupName"
+          Data.=: dbClusterParameterGroupName,
+        "DeletionProtection" Data.=: deletionProtection,
+        "EngineVersion" Data.=: engineVersion,
+        "MasterUserPassword" Data.=: masterUserPassword,
+        "NewDBClusterIdentifier"
+          Data.=: newDBClusterIdentifier',
+        "Port" Data.=: port,
+        "PreferredBackupWindow"
+          Data.=: preferredBackupWindow,
+        "PreferredMaintenanceWindow"
+          Data.=: preferredMaintenanceWindow,
+        "VpcSecurityGroupIds"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "VpcSecurityGroupId"
+                Prelude.<$> vpcSecurityGroupIds
+            ),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier
+      ]
+
+-- | /See:/ 'newModifyDBClusterResponse' smart constructor.
+data ModifyDBClusterResponse = ModifyDBClusterResponse'
+  { dbCluster :: Prelude.Maybe DBCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBClusterResponse' 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:
+--
+-- 'dbCluster', 'modifyDBClusterResponse_dbCluster' - Undocumented member.
+--
+-- 'httpStatus', 'modifyDBClusterResponse_httpStatus' - The response's http status code.
+newModifyDBClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ModifyDBClusterResponse
+newModifyDBClusterResponse pHttpStatus_ =
+  ModifyDBClusterResponse'
+    { dbCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+modifyDBClusterResponse_dbCluster :: Lens.Lens' ModifyDBClusterResponse (Prelude.Maybe DBCluster)
+modifyDBClusterResponse_dbCluster = Lens.lens (\ModifyDBClusterResponse' {dbCluster} -> dbCluster) (\s@ModifyDBClusterResponse' {} a -> s {dbCluster = a} :: ModifyDBClusterResponse)
+
+-- | The response's http status code.
+modifyDBClusterResponse_httpStatus :: Lens.Lens' ModifyDBClusterResponse Prelude.Int
+modifyDBClusterResponse_httpStatus = Lens.lens (\ModifyDBClusterResponse' {httpStatus} -> httpStatus) (\s@ModifyDBClusterResponse' {} a -> s {httpStatus = a} :: ModifyDBClusterResponse)
+
+instance Prelude.NFData ModifyDBClusterResponse where
+  rnf ModifyDBClusterResponse' {..} =
+    Prelude.rnf dbCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/ModifyDBClusterParameterGroup.hs b/gen/Amazonka/DocumentDB/ModifyDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ModifyDBClusterParameterGroup.hs
@@ -0,0 +1,155 @@
+{-# 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.DocumentDB.ModifyDBClusterParameterGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies the parameters of a cluster parameter group. To modify more
+-- than one parameter, submit a list of the following: @ParameterName@,
+-- @ParameterValue@, and @ApplyMethod@. A maximum of 20 parameters can be
+-- modified in a single request.
+--
+-- Changes to dynamic parameters are applied immediately. Changes to static
+-- parameters require a reboot or maintenance window before the change can
+-- take effect.
+--
+-- After you create a cluster parameter group, you should wait at least 5
+-- minutes before creating your first cluster that uses that cluster
+-- parameter group as the default parameter group. This allows Amazon
+-- DocumentDB to fully complete the create action before the parameter
+-- group is used as the default for a new cluster. This step is especially
+-- important for parameters that are critical when creating the default
+-- database for a cluster, such as the character set for the default
+-- database defined by the @character_set_database@ parameter.
+module Amazonka.DocumentDB.ModifyDBClusterParameterGroup
+  ( -- * Creating a Request
+    ModifyDBClusterParameterGroup (..),
+    newModifyDBClusterParameterGroup,
+
+    -- * Request Lenses
+    modifyDBClusterParameterGroup_dbClusterParameterGroupName,
+    modifyDBClusterParameterGroup_parameters,
+
+    -- * Destructuring the Response
+    DBClusterParameterGroupNameMessage (..),
+    newDBClusterParameterGroupNameMessage,
+
+    -- * Response Lenses
+    dbClusterParameterGroupNameMessage_dbClusterParameterGroupName,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ModifyDBClusterParameterGroup.
+--
+-- /See:/ 'newModifyDBClusterParameterGroup' smart constructor.
+data ModifyDBClusterParameterGroup = ModifyDBClusterParameterGroup'
+  { -- | The name of the cluster parameter group to modify.
+    dbClusterParameterGroupName :: Prelude.Text,
+    -- | A list of parameters in the cluster parameter group to modify.
+    parameters :: [Parameter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBClusterParameterGroup' 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:
+--
+-- 'dbClusterParameterGroupName', 'modifyDBClusterParameterGroup_dbClusterParameterGroupName' - The name of the cluster parameter group to modify.
+--
+-- 'parameters', 'modifyDBClusterParameterGroup_parameters' - A list of parameters in the cluster parameter group to modify.
+newModifyDBClusterParameterGroup ::
+  -- | 'dbClusterParameterGroupName'
+  Prelude.Text ->
+  ModifyDBClusterParameterGroup
+newModifyDBClusterParameterGroup
+  pDBClusterParameterGroupName_ =
+    ModifyDBClusterParameterGroup'
+      { dbClusterParameterGroupName =
+          pDBClusterParameterGroupName_,
+        parameters = Prelude.mempty
+      }
+
+-- | The name of the cluster parameter group to modify.
+modifyDBClusterParameterGroup_dbClusterParameterGroupName :: Lens.Lens' ModifyDBClusterParameterGroup Prelude.Text
+modifyDBClusterParameterGroup_dbClusterParameterGroupName = Lens.lens (\ModifyDBClusterParameterGroup' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@ModifyDBClusterParameterGroup' {} a -> s {dbClusterParameterGroupName = a} :: ModifyDBClusterParameterGroup)
+
+-- | A list of parameters in the cluster parameter group to modify.
+modifyDBClusterParameterGroup_parameters :: Lens.Lens' ModifyDBClusterParameterGroup [Parameter]
+modifyDBClusterParameterGroup_parameters = Lens.lens (\ModifyDBClusterParameterGroup' {parameters} -> parameters) (\s@ModifyDBClusterParameterGroup' {} a -> s {parameters = a} :: ModifyDBClusterParameterGroup) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    ModifyDBClusterParameterGroup
+  where
+  type
+    AWSResponse ModifyDBClusterParameterGroup =
+      DBClusterParameterGroupNameMessage
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ModifyDBClusterParameterGroupResult"
+      (\s h x -> Data.parseXML x)
+
+instance
+  Prelude.Hashable
+    ModifyDBClusterParameterGroup
+  where
+  hashWithSalt _salt ModifyDBClusterParameterGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterParameterGroupName
+      `Prelude.hashWithSalt` parameters
+
+instance Prelude.NFData ModifyDBClusterParameterGroup where
+  rnf ModifyDBClusterParameterGroup' {..} =
+    Prelude.rnf dbClusterParameterGroupName
+      `Prelude.seq` Prelude.rnf parameters
+
+instance Data.ToHeaders ModifyDBClusterParameterGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ModifyDBClusterParameterGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ModifyDBClusterParameterGroup where
+  toQuery ModifyDBClusterParameterGroup' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "ModifyDBClusterParameterGroup" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterParameterGroupName"
+          Data.=: dbClusterParameterGroupName,
+        "Parameters"
+          Data.=: Data.toQueryList "Parameter" parameters
+      ]
diff --git a/gen/Amazonka/DocumentDB/ModifyDBClusterSnapshotAttribute.hs b/gen/Amazonka/DocumentDB/ModifyDBClusterSnapshotAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ModifyDBClusterSnapshotAttribute.hs
@@ -0,0 +1,316 @@
+{-# 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.DocumentDB.ModifyDBClusterSnapshotAttribute
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds an attribute and values to, or removes an attribute and values
+-- from, a manual cluster snapshot.
+--
+-- To share a manual cluster snapshot with other Amazon Web Services
+-- accounts, specify @restore@ as the @AttributeName@, and use the
+-- @ValuesToAdd@ parameter to add a list of IDs of the Amazon Web Services
+-- accounts that are authorized to restore the manual cluster snapshot. Use
+-- the value @all@ to make the manual cluster snapshot public, which means
+-- that it can be copied or restored by all Amazon Web Services accounts.
+-- Do not add the @all@ value for any manual cluster snapshots that contain
+-- private information that you don\'t want available to all Amazon Web
+-- Services accounts. If a manual cluster snapshot is encrypted, it can be
+-- shared, but only by specifying a list of authorized Amazon Web Services
+-- account IDs for the @ValuesToAdd@ parameter. You can\'t use @all@ as a
+-- value for that parameter in this case.
+module Amazonka.DocumentDB.ModifyDBClusterSnapshotAttribute
+  ( -- * Creating a Request
+    ModifyDBClusterSnapshotAttribute (..),
+    newModifyDBClusterSnapshotAttribute,
+
+    -- * Request Lenses
+    modifyDBClusterSnapshotAttribute_valuesToAdd,
+    modifyDBClusterSnapshotAttribute_valuesToRemove,
+    modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier,
+    modifyDBClusterSnapshotAttribute_attributeName,
+
+    -- * Destructuring the Response
+    ModifyDBClusterSnapshotAttributeResponse (..),
+    newModifyDBClusterSnapshotAttributeResponse,
+
+    -- * Response Lenses
+    modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult,
+    modifyDBClusterSnapshotAttributeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ModifyDBClusterSnapshotAttribute.
+--
+-- /See:/ 'newModifyDBClusterSnapshotAttribute' smart constructor.
+data ModifyDBClusterSnapshotAttribute = ModifyDBClusterSnapshotAttribute'
+  { -- | A list of cluster snapshot attributes to add to the attribute specified
+    -- by @AttributeName@.
+    --
+    -- To authorize other Amazon Web Services accounts to copy or restore a
+    -- manual cluster snapshot, set this list to include one or more Amazon Web
+    -- Services account IDs. To make the manual cluster snapshot restorable by
+    -- any Amazon Web Services account, set it to @all@. Do not add the @all@
+    -- value for any manual cluster snapshots that contain private information
+    -- that you don\'t want to be available to all Amazon Web Services
+    -- accounts.
+    valuesToAdd :: Prelude.Maybe [Prelude.Text],
+    -- | A list of cluster snapshot attributes to remove from the attribute
+    -- specified by @AttributeName@.
+    --
+    -- To remove authorization for other Amazon Web Services accounts to copy
+    -- or restore a manual cluster snapshot, set this list to include one or
+    -- more Amazon Web Services account identifiers. To remove authorization
+    -- for any Amazon Web Services account to copy or restore the cluster
+    -- snapshot, set it to @all@ . If you specify @all@, an Amazon Web Services
+    -- account whose account ID is explicitly added to the @restore@ attribute
+    -- can still copy or restore a manual cluster snapshot.
+    valuesToRemove :: Prelude.Maybe [Prelude.Text],
+    -- | The identifier for the cluster snapshot to modify the attributes for.
+    dbClusterSnapshotIdentifier :: Prelude.Text,
+    -- | The name of the cluster snapshot attribute to modify.
+    --
+    -- To manage authorization for other Amazon Web Services accounts to copy
+    -- or restore a manual cluster snapshot, set this value to @restore@.
+    attributeName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBClusterSnapshotAttribute' 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:
+--
+-- 'valuesToAdd', 'modifyDBClusterSnapshotAttribute_valuesToAdd' - A list of cluster snapshot attributes to add to the attribute specified
+-- by @AttributeName@.
+--
+-- To authorize other Amazon Web Services accounts to copy or restore a
+-- manual cluster snapshot, set this list to include one or more Amazon Web
+-- Services account IDs. To make the manual cluster snapshot restorable by
+-- any Amazon Web Services account, set it to @all@. Do not add the @all@
+-- value for any manual cluster snapshots that contain private information
+-- that you don\'t want to be available to all Amazon Web Services
+-- accounts.
+--
+-- 'valuesToRemove', 'modifyDBClusterSnapshotAttribute_valuesToRemove' - A list of cluster snapshot attributes to remove from the attribute
+-- specified by @AttributeName@.
+--
+-- To remove authorization for other Amazon Web Services accounts to copy
+-- or restore a manual cluster snapshot, set this list to include one or
+-- more Amazon Web Services account identifiers. To remove authorization
+-- for any Amazon Web Services account to copy or restore the cluster
+-- snapshot, set it to @all@ . If you specify @all@, an Amazon Web Services
+-- account whose account ID is explicitly added to the @restore@ attribute
+-- can still copy or restore a manual cluster snapshot.
+--
+-- 'dbClusterSnapshotIdentifier', 'modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier' - The identifier for the cluster snapshot to modify the attributes for.
+--
+-- 'attributeName', 'modifyDBClusterSnapshotAttribute_attributeName' - The name of the cluster snapshot attribute to modify.
+--
+-- To manage authorization for other Amazon Web Services accounts to copy
+-- or restore a manual cluster snapshot, set this value to @restore@.
+newModifyDBClusterSnapshotAttribute ::
+  -- | 'dbClusterSnapshotIdentifier'
+  Prelude.Text ->
+  -- | 'attributeName'
+  Prelude.Text ->
+  ModifyDBClusterSnapshotAttribute
+newModifyDBClusterSnapshotAttribute
+  pDBClusterSnapshotIdentifier_
+  pAttributeName_ =
+    ModifyDBClusterSnapshotAttribute'
+      { valuesToAdd =
+          Prelude.Nothing,
+        valuesToRemove = Prelude.Nothing,
+        dbClusterSnapshotIdentifier =
+          pDBClusterSnapshotIdentifier_,
+        attributeName = pAttributeName_
+      }
+
+-- | A list of cluster snapshot attributes to add to the attribute specified
+-- by @AttributeName@.
+--
+-- To authorize other Amazon Web Services accounts to copy or restore a
+-- manual cluster snapshot, set this list to include one or more Amazon Web
+-- Services account IDs. To make the manual cluster snapshot restorable by
+-- any Amazon Web Services account, set it to @all@. Do not add the @all@
+-- value for any manual cluster snapshots that contain private information
+-- that you don\'t want to be available to all Amazon Web Services
+-- accounts.
+modifyDBClusterSnapshotAttribute_valuesToAdd :: Lens.Lens' ModifyDBClusterSnapshotAttribute (Prelude.Maybe [Prelude.Text])
+modifyDBClusterSnapshotAttribute_valuesToAdd = Lens.lens (\ModifyDBClusterSnapshotAttribute' {valuesToAdd} -> valuesToAdd) (\s@ModifyDBClusterSnapshotAttribute' {} a -> s {valuesToAdd = a} :: ModifyDBClusterSnapshotAttribute) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of cluster snapshot attributes to remove from the attribute
+-- specified by @AttributeName@.
+--
+-- To remove authorization for other Amazon Web Services accounts to copy
+-- or restore a manual cluster snapshot, set this list to include one or
+-- more Amazon Web Services account identifiers. To remove authorization
+-- for any Amazon Web Services account to copy or restore the cluster
+-- snapshot, set it to @all@ . If you specify @all@, an Amazon Web Services
+-- account whose account ID is explicitly added to the @restore@ attribute
+-- can still copy or restore a manual cluster snapshot.
+modifyDBClusterSnapshotAttribute_valuesToRemove :: Lens.Lens' ModifyDBClusterSnapshotAttribute (Prelude.Maybe [Prelude.Text])
+modifyDBClusterSnapshotAttribute_valuesToRemove = Lens.lens (\ModifyDBClusterSnapshotAttribute' {valuesToRemove} -> valuesToRemove) (\s@ModifyDBClusterSnapshotAttribute' {} a -> s {valuesToRemove = a} :: ModifyDBClusterSnapshotAttribute) Prelude.. Lens.mapping Lens.coerced
+
+-- | The identifier for the cluster snapshot to modify the attributes for.
+modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier :: Lens.Lens' ModifyDBClusterSnapshotAttribute Prelude.Text
+modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier = Lens.lens (\ModifyDBClusterSnapshotAttribute' {dbClusterSnapshotIdentifier} -> dbClusterSnapshotIdentifier) (\s@ModifyDBClusterSnapshotAttribute' {} a -> s {dbClusterSnapshotIdentifier = a} :: ModifyDBClusterSnapshotAttribute)
+
+-- | The name of the cluster snapshot attribute to modify.
+--
+-- To manage authorization for other Amazon Web Services accounts to copy
+-- or restore a manual cluster snapshot, set this value to @restore@.
+modifyDBClusterSnapshotAttribute_attributeName :: Lens.Lens' ModifyDBClusterSnapshotAttribute Prelude.Text
+modifyDBClusterSnapshotAttribute_attributeName = Lens.lens (\ModifyDBClusterSnapshotAttribute' {attributeName} -> attributeName) (\s@ModifyDBClusterSnapshotAttribute' {} a -> s {attributeName = a} :: ModifyDBClusterSnapshotAttribute)
+
+instance
+  Core.AWSRequest
+    ModifyDBClusterSnapshotAttribute
+  where
+  type
+    AWSResponse ModifyDBClusterSnapshotAttribute =
+      ModifyDBClusterSnapshotAttributeResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ModifyDBClusterSnapshotAttributeResult"
+      ( \s h x ->
+          ModifyDBClusterSnapshotAttributeResponse'
+            Prelude.<$> (x Data..@? "DBClusterSnapshotAttributesResult")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ModifyDBClusterSnapshotAttribute
+  where
+  hashWithSalt
+    _salt
+    ModifyDBClusterSnapshotAttribute' {..} =
+      _salt
+        `Prelude.hashWithSalt` valuesToAdd
+        `Prelude.hashWithSalt` valuesToRemove
+        `Prelude.hashWithSalt` dbClusterSnapshotIdentifier
+        `Prelude.hashWithSalt` attributeName
+
+instance
+  Prelude.NFData
+    ModifyDBClusterSnapshotAttribute
+  where
+  rnf ModifyDBClusterSnapshotAttribute' {..} =
+    Prelude.rnf valuesToAdd
+      `Prelude.seq` Prelude.rnf valuesToRemove
+      `Prelude.seq` Prelude.rnf dbClusterSnapshotIdentifier
+      `Prelude.seq` Prelude.rnf attributeName
+
+instance
+  Data.ToHeaders
+    ModifyDBClusterSnapshotAttribute
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ModifyDBClusterSnapshotAttribute where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ModifyDBClusterSnapshotAttribute
+  where
+  toQuery ModifyDBClusterSnapshotAttribute' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "ModifyDBClusterSnapshotAttribute" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "ValuesToAdd"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "AttributeValue"
+                Prelude.<$> valuesToAdd
+            ),
+        "ValuesToRemove"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "AttributeValue"
+                Prelude.<$> valuesToRemove
+            ),
+        "DBClusterSnapshotIdentifier"
+          Data.=: dbClusterSnapshotIdentifier,
+        "AttributeName" Data.=: attributeName
+      ]
+
+-- | /See:/ 'newModifyDBClusterSnapshotAttributeResponse' smart constructor.
+data ModifyDBClusterSnapshotAttributeResponse = ModifyDBClusterSnapshotAttributeResponse'
+  { dbClusterSnapshotAttributesResult :: Prelude.Maybe DBClusterSnapshotAttributesResult,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBClusterSnapshotAttributeResponse' 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:
+--
+-- 'dbClusterSnapshotAttributesResult', 'modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult' - Undocumented member.
+--
+-- 'httpStatus', 'modifyDBClusterSnapshotAttributeResponse_httpStatus' - The response's http status code.
+newModifyDBClusterSnapshotAttributeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ModifyDBClusterSnapshotAttributeResponse
+newModifyDBClusterSnapshotAttributeResponse
+  pHttpStatus_ =
+    ModifyDBClusterSnapshotAttributeResponse'
+      { dbClusterSnapshotAttributesResult =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult :: Lens.Lens' ModifyDBClusterSnapshotAttributeResponse (Prelude.Maybe DBClusterSnapshotAttributesResult)
+modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult = Lens.lens (\ModifyDBClusterSnapshotAttributeResponse' {dbClusterSnapshotAttributesResult} -> dbClusterSnapshotAttributesResult) (\s@ModifyDBClusterSnapshotAttributeResponse' {} a -> s {dbClusterSnapshotAttributesResult = a} :: ModifyDBClusterSnapshotAttributeResponse)
+
+-- | The response's http status code.
+modifyDBClusterSnapshotAttributeResponse_httpStatus :: Lens.Lens' ModifyDBClusterSnapshotAttributeResponse Prelude.Int
+modifyDBClusterSnapshotAttributeResponse_httpStatus = Lens.lens (\ModifyDBClusterSnapshotAttributeResponse' {httpStatus} -> httpStatus) (\s@ModifyDBClusterSnapshotAttributeResponse' {} a -> s {httpStatus = a} :: ModifyDBClusterSnapshotAttributeResponse)
+
+instance
+  Prelude.NFData
+    ModifyDBClusterSnapshotAttributeResponse
+  where
+  rnf ModifyDBClusterSnapshotAttributeResponse' {..} =
+    Prelude.rnf dbClusterSnapshotAttributesResult
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/ModifyDBInstance.hs b/gen/Amazonka/DocumentDB/ModifyDBInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ModifyDBInstance.hs
@@ -0,0 +1,505 @@
+{-# 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.DocumentDB.ModifyDBInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies settings for an instance. You can change one or more database
+-- configuration parameters by specifying these parameters and the new
+-- values in the request.
+module Amazonka.DocumentDB.ModifyDBInstance
+  ( -- * Creating a Request
+    ModifyDBInstance (..),
+    newModifyDBInstance,
+
+    -- * Request Lenses
+    modifyDBInstance_applyImmediately,
+    modifyDBInstance_autoMinorVersionUpgrade,
+    modifyDBInstance_cACertificateIdentifier,
+    modifyDBInstance_copyTagsToSnapshot,
+    modifyDBInstance_dbInstanceClass,
+    modifyDBInstance_enablePerformanceInsights,
+    modifyDBInstance_newDBInstanceIdentifier,
+    modifyDBInstance_performanceInsightsKMSKeyId,
+    modifyDBInstance_preferredMaintenanceWindow,
+    modifyDBInstance_promotionTier,
+    modifyDBInstance_dbInstanceIdentifier,
+
+    -- * Destructuring the Response
+    ModifyDBInstanceResponse (..),
+    newModifyDBInstanceResponse,
+
+    -- * Response Lenses
+    modifyDBInstanceResponse_dbInstance,
+    modifyDBInstanceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ModifyDBInstance.
+--
+-- /See:/ 'newModifyDBInstance' smart constructor.
+data ModifyDBInstance = ModifyDBInstance'
+  { -- | Specifies whether the modifications in this request and any pending
+    -- modifications are asynchronously applied as soon as possible, regardless
+    -- of the @PreferredMaintenanceWindow@ setting for the instance.
+    --
+    -- If this parameter is set to @false@, changes to the instance are applied
+    -- during the next maintenance window. Some parameter changes can cause an
+    -- outage and are applied on the next reboot.
+    --
+    -- Default: @false@
+    applyImmediately :: Prelude.Maybe Prelude.Bool,
+    -- | This parameter does not apply to Amazon DocumentDB. Amazon DocumentDB
+    -- does not perform minor version upgrades regardless of the value set.
+    autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates the certificate that needs to be associated with the instance.
+    cACertificateIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | A value that indicates whether to copy all tags from the DB instance to
+    -- snapshots of the DB instance. By default, tags are not copied.
+    copyTagsToSnapshot :: Prelude.Maybe Prelude.Bool,
+    -- | The new compute and memory capacity of the instance; for example,
+    -- @db.r5.large@. Not all instance classes are available in all Amazon Web
+    -- Services Regions.
+    --
+    -- If you modify the instance class, an outage occurs during the change.
+    -- The change is applied during the next maintenance window, unless
+    -- @ApplyImmediately@ is specified as @true@ for this request.
+    --
+    -- Default: Uses existing setting.
+    dbInstanceClass :: Prelude.Maybe Prelude.Text,
+    -- | A value that indicates whether to enable Performance Insights for the DB
+    -- Instance. For more information, see
+    -- <https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights.html Using Amazon Performance Insights>.
+    enablePerformanceInsights :: Prelude.Maybe Prelude.Bool,
+    -- | The new instance identifier for the instance when renaming an instance.
+    -- When you change the instance identifier, an instance reboot occurs
+    -- immediately if you set @Apply Immediately@ to @true@. It occurs during
+    -- the next maintenance window if you set @Apply Immediately@ to @false@.
+    -- This value is stored as a lowercase string.
+    --
+    -- Constraints:
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- Example: @mydbinstance@
+    newDBInstanceIdentifier' :: Prelude.Maybe Prelude.Text,
+    -- | The KMS key identifier for encryption of Performance Insights data.
+    --
+    -- The KMS key identifier is the key ARN, key ID, alias ARN, or alias name
+    -- for the KMS key.
+    --
+    -- If you do not specify a value for PerformanceInsightsKMSKeyId, then
+    -- Amazon DocumentDB uses your default KMS key. There is a default KMS key
+    -- for your Amazon Web Services account. Your Amazon Web Services account
+    -- has a different default KMS key for each Amazon Web Services region.
+    performanceInsightsKMSKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The weekly time range (in UTC) during which system maintenance can
+    -- occur, which might result in an outage. Changing this parameter doesn\'t
+    -- result in an outage except in the following situation, and the change is
+    -- asynchronously applied as soon as possible. If there are pending actions
+    -- that cause a reboot, and the maintenance window is changed to include
+    -- the current time, changing this parameter causes a reboot of the
+    -- instance. If you are moving this window to the current time, there must
+    -- be at least 30 minutes between the current time and end of the window to
+    -- ensure that pending changes are applied.
+    --
+    -- Default: Uses existing setting.
+    --
+    -- Format: @ddd:hh24:mi-ddd:hh24:mi@
+    --
+    -- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+    --
+    -- Constraints: Must be at least 30 minutes.
+    preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
+    -- | A value that specifies the order in which an Amazon DocumentDB replica
+    -- is promoted to the primary instance after a failure of the existing
+    -- primary instance.
+    --
+    -- Default: 1
+    --
+    -- Valid values: 0-15
+    promotionTier :: Prelude.Maybe Prelude.Int,
+    -- | The instance identifier. This value is stored as a lowercase string.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the identifier of an existing @DBInstance@.
+    dbInstanceIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBInstance' 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:
+--
+-- 'applyImmediately', 'modifyDBInstance_applyImmediately' - Specifies whether the modifications in this request and any pending
+-- modifications are asynchronously applied as soon as possible, regardless
+-- of the @PreferredMaintenanceWindow@ setting for the instance.
+--
+-- If this parameter is set to @false@, changes to the instance are applied
+-- during the next maintenance window. Some parameter changes can cause an
+-- outage and are applied on the next reboot.
+--
+-- Default: @false@
+--
+-- 'autoMinorVersionUpgrade', 'modifyDBInstance_autoMinorVersionUpgrade' - This parameter does not apply to Amazon DocumentDB. Amazon DocumentDB
+-- does not perform minor version upgrades regardless of the value set.
+--
+-- 'cACertificateIdentifier', 'modifyDBInstance_cACertificateIdentifier' - Indicates the certificate that needs to be associated with the instance.
+--
+-- 'copyTagsToSnapshot', 'modifyDBInstance_copyTagsToSnapshot' - A value that indicates whether to copy all tags from the DB instance to
+-- snapshots of the DB instance. By default, tags are not copied.
+--
+-- 'dbInstanceClass', 'modifyDBInstance_dbInstanceClass' - The new compute and memory capacity of the instance; for example,
+-- @db.r5.large@. Not all instance classes are available in all Amazon Web
+-- Services Regions.
+--
+-- If you modify the instance class, an outage occurs during the change.
+-- The change is applied during the next maintenance window, unless
+-- @ApplyImmediately@ is specified as @true@ for this request.
+--
+-- Default: Uses existing setting.
+--
+-- 'enablePerformanceInsights', 'modifyDBInstance_enablePerformanceInsights' - A value that indicates whether to enable Performance Insights for the DB
+-- Instance. For more information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights.html Using Amazon Performance Insights>.
+--
+-- 'newDBInstanceIdentifier'', 'modifyDBInstance_newDBInstanceIdentifier' - The new instance identifier for the instance when renaming an instance.
+-- When you change the instance identifier, an instance reboot occurs
+-- immediately if you set @Apply Immediately@ to @true@. It occurs during
+-- the next maintenance window if you set @Apply Immediately@ to @false@.
+-- This value is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @mydbinstance@
+--
+-- 'performanceInsightsKMSKeyId', 'modifyDBInstance_performanceInsightsKMSKeyId' - The KMS key identifier for encryption of Performance Insights data.
+--
+-- The KMS key identifier is the key ARN, key ID, alias ARN, or alias name
+-- for the KMS key.
+--
+-- If you do not specify a value for PerformanceInsightsKMSKeyId, then
+-- Amazon DocumentDB uses your default KMS key. There is a default KMS key
+-- for your Amazon Web Services account. Your Amazon Web Services account
+-- has a different default KMS key for each Amazon Web Services region.
+--
+-- 'preferredMaintenanceWindow', 'modifyDBInstance_preferredMaintenanceWindow' - The weekly time range (in UTC) during which system maintenance can
+-- occur, which might result in an outage. Changing this parameter doesn\'t
+-- result in an outage except in the following situation, and the change is
+-- asynchronously applied as soon as possible. If there are pending actions
+-- that cause a reboot, and the maintenance window is changed to include
+-- the current time, changing this parameter causes a reboot of the
+-- instance. If you are moving this window to the current time, there must
+-- be at least 30 minutes between the current time and end of the window to
+-- ensure that pending changes are applied.
+--
+-- Default: Uses existing setting.
+--
+-- Format: @ddd:hh24:mi-ddd:hh24:mi@
+--
+-- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Must be at least 30 minutes.
+--
+-- 'promotionTier', 'modifyDBInstance_promotionTier' - A value that specifies the order in which an Amazon DocumentDB replica
+-- is promoted to the primary instance after a failure of the existing
+-- primary instance.
+--
+-- Default: 1
+--
+-- Valid values: 0-15
+--
+-- 'dbInstanceIdentifier', 'modifyDBInstance_dbInstanceIdentifier' - The instance identifier. This value is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBInstance@.
+newModifyDBInstance ::
+  -- | 'dbInstanceIdentifier'
+  Prelude.Text ->
+  ModifyDBInstance
+newModifyDBInstance pDBInstanceIdentifier_ =
+  ModifyDBInstance'
+    { applyImmediately =
+        Prelude.Nothing,
+      autoMinorVersionUpgrade = Prelude.Nothing,
+      cACertificateIdentifier = Prelude.Nothing,
+      copyTagsToSnapshot = Prelude.Nothing,
+      dbInstanceClass = Prelude.Nothing,
+      enablePerformanceInsights = Prelude.Nothing,
+      newDBInstanceIdentifier' = Prelude.Nothing,
+      performanceInsightsKMSKeyId = Prelude.Nothing,
+      preferredMaintenanceWindow = Prelude.Nothing,
+      promotionTier = Prelude.Nothing,
+      dbInstanceIdentifier = pDBInstanceIdentifier_
+    }
+
+-- | Specifies whether the modifications in this request and any pending
+-- modifications are asynchronously applied as soon as possible, regardless
+-- of the @PreferredMaintenanceWindow@ setting for the instance.
+--
+-- If this parameter is set to @false@, changes to the instance are applied
+-- during the next maintenance window. Some parameter changes can cause an
+-- outage and are applied on the next reboot.
+--
+-- Default: @false@
+modifyDBInstance_applyImmediately :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Bool)
+modifyDBInstance_applyImmediately = Lens.lens (\ModifyDBInstance' {applyImmediately} -> applyImmediately) (\s@ModifyDBInstance' {} a -> s {applyImmediately = a} :: ModifyDBInstance)
+
+-- | This parameter does not apply to Amazon DocumentDB. Amazon DocumentDB
+-- does not perform minor version upgrades regardless of the value set.
+modifyDBInstance_autoMinorVersionUpgrade :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Bool)
+modifyDBInstance_autoMinorVersionUpgrade = Lens.lens (\ModifyDBInstance' {autoMinorVersionUpgrade} -> autoMinorVersionUpgrade) (\s@ModifyDBInstance' {} a -> s {autoMinorVersionUpgrade = a} :: ModifyDBInstance)
+
+-- | Indicates the certificate that needs to be associated with the instance.
+modifyDBInstance_cACertificateIdentifier :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Text)
+modifyDBInstance_cACertificateIdentifier = Lens.lens (\ModifyDBInstance' {cACertificateIdentifier} -> cACertificateIdentifier) (\s@ModifyDBInstance' {} a -> s {cACertificateIdentifier = a} :: ModifyDBInstance)
+
+-- | A value that indicates whether to copy all tags from the DB instance to
+-- snapshots of the DB instance. By default, tags are not copied.
+modifyDBInstance_copyTagsToSnapshot :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Bool)
+modifyDBInstance_copyTagsToSnapshot = Lens.lens (\ModifyDBInstance' {copyTagsToSnapshot} -> copyTagsToSnapshot) (\s@ModifyDBInstance' {} a -> s {copyTagsToSnapshot = a} :: ModifyDBInstance)
+
+-- | The new compute and memory capacity of the instance; for example,
+-- @db.r5.large@. Not all instance classes are available in all Amazon Web
+-- Services Regions.
+--
+-- If you modify the instance class, an outage occurs during the change.
+-- The change is applied during the next maintenance window, unless
+-- @ApplyImmediately@ is specified as @true@ for this request.
+--
+-- Default: Uses existing setting.
+modifyDBInstance_dbInstanceClass :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Text)
+modifyDBInstance_dbInstanceClass = Lens.lens (\ModifyDBInstance' {dbInstanceClass} -> dbInstanceClass) (\s@ModifyDBInstance' {} a -> s {dbInstanceClass = a} :: ModifyDBInstance)
+
+-- | A value that indicates whether to enable Performance Insights for the DB
+-- Instance. For more information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights.html Using Amazon Performance Insights>.
+modifyDBInstance_enablePerformanceInsights :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Bool)
+modifyDBInstance_enablePerformanceInsights = Lens.lens (\ModifyDBInstance' {enablePerformanceInsights} -> enablePerformanceInsights) (\s@ModifyDBInstance' {} a -> s {enablePerformanceInsights = a} :: ModifyDBInstance)
+
+-- | The new instance identifier for the instance when renaming an instance.
+-- When you change the instance identifier, an instance reboot occurs
+-- immediately if you set @Apply Immediately@ to @true@. It occurs during
+-- the next maintenance window if you set @Apply Immediately@ to @false@.
+-- This value is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @mydbinstance@
+modifyDBInstance_newDBInstanceIdentifier :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Text)
+modifyDBInstance_newDBInstanceIdentifier = Lens.lens (\ModifyDBInstance' {newDBInstanceIdentifier'} -> newDBInstanceIdentifier') (\s@ModifyDBInstance' {} a -> s {newDBInstanceIdentifier' = a} :: ModifyDBInstance)
+
+-- | The KMS key identifier for encryption of Performance Insights data.
+--
+-- The KMS key identifier is the key ARN, key ID, alias ARN, or alias name
+-- for the KMS key.
+--
+-- If you do not specify a value for PerformanceInsightsKMSKeyId, then
+-- Amazon DocumentDB uses your default KMS key. There is a default KMS key
+-- for your Amazon Web Services account. Your Amazon Web Services account
+-- has a different default KMS key for each Amazon Web Services region.
+modifyDBInstance_performanceInsightsKMSKeyId :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Text)
+modifyDBInstance_performanceInsightsKMSKeyId = Lens.lens (\ModifyDBInstance' {performanceInsightsKMSKeyId} -> performanceInsightsKMSKeyId) (\s@ModifyDBInstance' {} a -> s {performanceInsightsKMSKeyId = a} :: ModifyDBInstance)
+
+-- | The weekly time range (in UTC) during which system maintenance can
+-- occur, which might result in an outage. Changing this parameter doesn\'t
+-- result in an outage except in the following situation, and the change is
+-- asynchronously applied as soon as possible. If there are pending actions
+-- that cause a reboot, and the maintenance window is changed to include
+-- the current time, changing this parameter causes a reboot of the
+-- instance. If you are moving this window to the current time, there must
+-- be at least 30 minutes between the current time and end of the window to
+-- ensure that pending changes are applied.
+--
+-- Default: Uses existing setting.
+--
+-- Format: @ddd:hh24:mi-ddd:hh24:mi@
+--
+-- Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun
+--
+-- Constraints: Must be at least 30 minutes.
+modifyDBInstance_preferredMaintenanceWindow :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Text)
+modifyDBInstance_preferredMaintenanceWindow = Lens.lens (\ModifyDBInstance' {preferredMaintenanceWindow} -> preferredMaintenanceWindow) (\s@ModifyDBInstance' {} a -> s {preferredMaintenanceWindow = a} :: ModifyDBInstance)
+
+-- | A value that specifies the order in which an Amazon DocumentDB replica
+-- is promoted to the primary instance after a failure of the existing
+-- primary instance.
+--
+-- Default: 1
+--
+-- Valid values: 0-15
+modifyDBInstance_promotionTier :: Lens.Lens' ModifyDBInstance (Prelude.Maybe Prelude.Int)
+modifyDBInstance_promotionTier = Lens.lens (\ModifyDBInstance' {promotionTier} -> promotionTier) (\s@ModifyDBInstance' {} a -> s {promotionTier = a} :: ModifyDBInstance)
+
+-- | The instance identifier. This value is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBInstance@.
+modifyDBInstance_dbInstanceIdentifier :: Lens.Lens' ModifyDBInstance Prelude.Text
+modifyDBInstance_dbInstanceIdentifier = Lens.lens (\ModifyDBInstance' {dbInstanceIdentifier} -> dbInstanceIdentifier) (\s@ModifyDBInstance' {} a -> s {dbInstanceIdentifier = a} :: ModifyDBInstance)
+
+instance Core.AWSRequest ModifyDBInstance where
+  type
+    AWSResponse ModifyDBInstance =
+      ModifyDBInstanceResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ModifyDBInstanceResult"
+      ( \s h x ->
+          ModifyDBInstanceResponse'
+            Prelude.<$> (x Data..@? "DBInstance")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ModifyDBInstance where
+  hashWithSalt _salt ModifyDBInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` applyImmediately
+      `Prelude.hashWithSalt` autoMinorVersionUpgrade
+      `Prelude.hashWithSalt` cACertificateIdentifier
+      `Prelude.hashWithSalt` copyTagsToSnapshot
+      `Prelude.hashWithSalt` dbInstanceClass
+      `Prelude.hashWithSalt` enablePerformanceInsights
+      `Prelude.hashWithSalt` newDBInstanceIdentifier'
+      `Prelude.hashWithSalt` performanceInsightsKMSKeyId
+      `Prelude.hashWithSalt` preferredMaintenanceWindow
+      `Prelude.hashWithSalt` promotionTier
+      `Prelude.hashWithSalt` dbInstanceIdentifier
+
+instance Prelude.NFData ModifyDBInstance where
+  rnf ModifyDBInstance' {..} =
+    Prelude.rnf applyImmediately
+      `Prelude.seq` Prelude.rnf autoMinorVersionUpgrade
+      `Prelude.seq` Prelude.rnf cACertificateIdentifier
+      `Prelude.seq` Prelude.rnf copyTagsToSnapshot
+      `Prelude.seq` Prelude.rnf dbInstanceClass
+      `Prelude.seq` Prelude.rnf enablePerformanceInsights
+      `Prelude.seq` Prelude.rnf newDBInstanceIdentifier'
+      `Prelude.seq` Prelude.rnf performanceInsightsKMSKeyId
+      `Prelude.seq` Prelude.rnf preferredMaintenanceWindow
+      `Prelude.seq` Prelude.rnf promotionTier
+      `Prelude.seq` Prelude.rnf dbInstanceIdentifier
+
+instance Data.ToHeaders ModifyDBInstance where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ModifyDBInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ModifyDBInstance where
+  toQuery ModifyDBInstance' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ModifyDBInstance" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "ApplyImmediately" Data.=: applyImmediately,
+        "AutoMinorVersionUpgrade"
+          Data.=: autoMinorVersionUpgrade,
+        "CACertificateIdentifier"
+          Data.=: cACertificateIdentifier,
+        "CopyTagsToSnapshot" Data.=: copyTagsToSnapshot,
+        "DBInstanceClass" Data.=: dbInstanceClass,
+        "EnablePerformanceInsights"
+          Data.=: enablePerformanceInsights,
+        "NewDBInstanceIdentifier"
+          Data.=: newDBInstanceIdentifier',
+        "PerformanceInsightsKMSKeyId"
+          Data.=: performanceInsightsKMSKeyId,
+        "PreferredMaintenanceWindow"
+          Data.=: preferredMaintenanceWindow,
+        "PromotionTier" Data.=: promotionTier,
+        "DBInstanceIdentifier" Data.=: dbInstanceIdentifier
+      ]
+
+-- | /See:/ 'newModifyDBInstanceResponse' smart constructor.
+data ModifyDBInstanceResponse = ModifyDBInstanceResponse'
+  { dbInstance :: Prelude.Maybe DBInstance,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBInstanceResponse' 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:
+--
+-- 'dbInstance', 'modifyDBInstanceResponse_dbInstance' - Undocumented member.
+--
+-- 'httpStatus', 'modifyDBInstanceResponse_httpStatus' - The response's http status code.
+newModifyDBInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ModifyDBInstanceResponse
+newModifyDBInstanceResponse pHttpStatus_ =
+  ModifyDBInstanceResponse'
+    { dbInstance =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+modifyDBInstanceResponse_dbInstance :: Lens.Lens' ModifyDBInstanceResponse (Prelude.Maybe DBInstance)
+modifyDBInstanceResponse_dbInstance = Lens.lens (\ModifyDBInstanceResponse' {dbInstance} -> dbInstance) (\s@ModifyDBInstanceResponse' {} a -> s {dbInstance = a} :: ModifyDBInstanceResponse)
+
+-- | The response's http status code.
+modifyDBInstanceResponse_httpStatus :: Lens.Lens' ModifyDBInstanceResponse Prelude.Int
+modifyDBInstanceResponse_httpStatus = Lens.lens (\ModifyDBInstanceResponse' {httpStatus} -> httpStatus) (\s@ModifyDBInstanceResponse' {} a -> s {httpStatus = a} :: ModifyDBInstanceResponse)
+
+instance Prelude.NFData ModifyDBInstanceResponse where
+  rnf ModifyDBInstanceResponse' {..} =
+    Prelude.rnf dbInstance
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/ModifyDBSubnetGroup.hs b/gen/Amazonka/DocumentDB/ModifyDBSubnetGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ModifyDBSubnetGroup.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.ModifyDBSubnetGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies an existing subnet group. subnet groups must contain at least
+-- one subnet in at least two Availability Zones in the Amazon Web Services
+-- Region.
+module Amazonka.DocumentDB.ModifyDBSubnetGroup
+  ( -- * Creating a Request
+    ModifyDBSubnetGroup (..),
+    newModifyDBSubnetGroup,
+
+    -- * Request Lenses
+    modifyDBSubnetGroup_dbSubnetGroupDescription,
+    modifyDBSubnetGroup_dbSubnetGroupName,
+    modifyDBSubnetGroup_subnetIds,
+
+    -- * Destructuring the Response
+    ModifyDBSubnetGroupResponse (..),
+    newModifyDBSubnetGroupResponse,
+
+    -- * Response Lenses
+    modifyDBSubnetGroupResponse_dbSubnetGroup,
+    modifyDBSubnetGroupResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ModifyDBSubnetGroup.
+--
+-- /See:/ 'newModifyDBSubnetGroup' smart constructor.
+data ModifyDBSubnetGroup = ModifyDBSubnetGroup'
+  { -- | The description for the subnet group.
+    dbSubnetGroupDescription :: Prelude.Maybe Prelude.Text,
+    -- | The name for the subnet group. This value is stored as a lowercase
+    -- string. You can\'t modify the default subnet group.
+    --
+    -- Constraints: Must match the name of an existing @DBSubnetGroup@. Must
+    -- not be default.
+    --
+    -- Example: @mySubnetgroup@
+    dbSubnetGroupName :: Prelude.Text,
+    -- | The Amazon EC2 subnet IDs for the subnet group.
+    subnetIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBSubnetGroup' 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:
+--
+-- 'dbSubnetGroupDescription', 'modifyDBSubnetGroup_dbSubnetGroupDescription' - The description for the subnet group.
+--
+-- 'dbSubnetGroupName', 'modifyDBSubnetGroup_dbSubnetGroupName' - The name for the subnet group. This value is stored as a lowercase
+-- string. You can\'t modify the default subnet group.
+--
+-- Constraints: Must match the name of an existing @DBSubnetGroup@. Must
+-- not be default.
+--
+-- Example: @mySubnetgroup@
+--
+-- 'subnetIds', 'modifyDBSubnetGroup_subnetIds' - The Amazon EC2 subnet IDs for the subnet group.
+newModifyDBSubnetGroup ::
+  -- | 'dbSubnetGroupName'
+  Prelude.Text ->
+  ModifyDBSubnetGroup
+newModifyDBSubnetGroup pDBSubnetGroupName_ =
+  ModifyDBSubnetGroup'
+    { dbSubnetGroupDescription =
+        Prelude.Nothing,
+      dbSubnetGroupName = pDBSubnetGroupName_,
+      subnetIds = Prelude.mempty
+    }
+
+-- | The description for the subnet group.
+modifyDBSubnetGroup_dbSubnetGroupDescription :: Lens.Lens' ModifyDBSubnetGroup (Prelude.Maybe Prelude.Text)
+modifyDBSubnetGroup_dbSubnetGroupDescription = Lens.lens (\ModifyDBSubnetGroup' {dbSubnetGroupDescription} -> dbSubnetGroupDescription) (\s@ModifyDBSubnetGroup' {} a -> s {dbSubnetGroupDescription = a} :: ModifyDBSubnetGroup)
+
+-- | The name for the subnet group. This value is stored as a lowercase
+-- string. You can\'t modify the default subnet group.
+--
+-- Constraints: Must match the name of an existing @DBSubnetGroup@. Must
+-- not be default.
+--
+-- Example: @mySubnetgroup@
+modifyDBSubnetGroup_dbSubnetGroupName :: Lens.Lens' ModifyDBSubnetGroup Prelude.Text
+modifyDBSubnetGroup_dbSubnetGroupName = Lens.lens (\ModifyDBSubnetGroup' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@ModifyDBSubnetGroup' {} a -> s {dbSubnetGroupName = a} :: ModifyDBSubnetGroup)
+
+-- | The Amazon EC2 subnet IDs for the subnet group.
+modifyDBSubnetGroup_subnetIds :: Lens.Lens' ModifyDBSubnetGroup [Prelude.Text]
+modifyDBSubnetGroup_subnetIds = Lens.lens (\ModifyDBSubnetGroup' {subnetIds} -> subnetIds) (\s@ModifyDBSubnetGroup' {} a -> s {subnetIds = a} :: ModifyDBSubnetGroup) Prelude.. Lens.coerced
+
+instance Core.AWSRequest ModifyDBSubnetGroup where
+  type
+    AWSResponse ModifyDBSubnetGroup =
+      ModifyDBSubnetGroupResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ModifyDBSubnetGroupResult"
+      ( \s h x ->
+          ModifyDBSubnetGroupResponse'
+            Prelude.<$> (x Data..@? "DBSubnetGroup")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ModifyDBSubnetGroup where
+  hashWithSalt _salt ModifyDBSubnetGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbSubnetGroupDescription
+      `Prelude.hashWithSalt` dbSubnetGroupName
+      `Prelude.hashWithSalt` subnetIds
+
+instance Prelude.NFData ModifyDBSubnetGroup where
+  rnf ModifyDBSubnetGroup' {..} =
+    Prelude.rnf dbSubnetGroupDescription
+      `Prelude.seq` Prelude.rnf dbSubnetGroupName
+      `Prelude.seq` Prelude.rnf subnetIds
+
+instance Data.ToHeaders ModifyDBSubnetGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ModifyDBSubnetGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ModifyDBSubnetGroup where
+  toQuery ModifyDBSubnetGroup' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ModifyDBSubnetGroup" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBSubnetGroupDescription"
+          Data.=: dbSubnetGroupDescription,
+        "DBSubnetGroupName" Data.=: dbSubnetGroupName,
+        "SubnetIds"
+          Data.=: Data.toQueryList "SubnetIdentifier" subnetIds
+      ]
+
+-- | /See:/ 'newModifyDBSubnetGroupResponse' smart constructor.
+data ModifyDBSubnetGroupResponse = ModifyDBSubnetGroupResponse'
+  { dbSubnetGroup :: Prelude.Maybe DBSubnetGroup,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyDBSubnetGroupResponse' 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:
+--
+-- 'dbSubnetGroup', 'modifyDBSubnetGroupResponse_dbSubnetGroup' - Undocumented member.
+--
+-- 'httpStatus', 'modifyDBSubnetGroupResponse_httpStatus' - The response's http status code.
+newModifyDBSubnetGroupResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ModifyDBSubnetGroupResponse
+newModifyDBSubnetGroupResponse pHttpStatus_ =
+  ModifyDBSubnetGroupResponse'
+    { dbSubnetGroup =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+modifyDBSubnetGroupResponse_dbSubnetGroup :: Lens.Lens' ModifyDBSubnetGroupResponse (Prelude.Maybe DBSubnetGroup)
+modifyDBSubnetGroupResponse_dbSubnetGroup = Lens.lens (\ModifyDBSubnetGroupResponse' {dbSubnetGroup} -> dbSubnetGroup) (\s@ModifyDBSubnetGroupResponse' {} a -> s {dbSubnetGroup = a} :: ModifyDBSubnetGroupResponse)
+
+-- | The response's http status code.
+modifyDBSubnetGroupResponse_httpStatus :: Lens.Lens' ModifyDBSubnetGroupResponse Prelude.Int
+modifyDBSubnetGroupResponse_httpStatus = Lens.lens (\ModifyDBSubnetGroupResponse' {httpStatus} -> httpStatus) (\s@ModifyDBSubnetGroupResponse' {} a -> s {httpStatus = a} :: ModifyDBSubnetGroupResponse)
+
+instance Prelude.NFData ModifyDBSubnetGroupResponse where
+  rnf ModifyDBSubnetGroupResponse' {..} =
+    Prelude.rnf dbSubnetGroup
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/ModifyEventSubscription.hs b/gen/Amazonka/DocumentDB/ModifyEventSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ModifyEventSubscription.hs
@@ -0,0 +1,245 @@
+{-# 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.DocumentDB.ModifyEventSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies an existing Amazon DocumentDB event notification subscription.
+module Amazonka.DocumentDB.ModifyEventSubscription
+  ( -- * Creating a Request
+    ModifyEventSubscription (..),
+    newModifyEventSubscription,
+
+    -- * Request Lenses
+    modifyEventSubscription_enabled,
+    modifyEventSubscription_eventCategories,
+    modifyEventSubscription_snsTopicArn,
+    modifyEventSubscription_sourceType,
+    modifyEventSubscription_subscriptionName,
+
+    -- * Destructuring the Response
+    ModifyEventSubscriptionResponse (..),
+    newModifyEventSubscriptionResponse,
+
+    -- * Response Lenses
+    modifyEventSubscriptionResponse_eventSubscription,
+    modifyEventSubscriptionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ModifyEventSubscription.
+--
+-- /See:/ 'newModifyEventSubscription' smart constructor.
+data ModifyEventSubscription = ModifyEventSubscription'
+  { -- | A Boolean value; set to @true@ to activate the subscription.
+    enabled :: Prelude.Maybe Prelude.Bool,
+    -- | A list of event categories for a @SourceType@ that you want to subscribe
+    -- to.
+    eventCategories :: Prelude.Maybe [Prelude.Text],
+    -- | The Amazon Resource Name (ARN) of the SNS topic created for event
+    -- notification. The ARN is created by Amazon SNS when you create a topic
+    -- and subscribe to it.
+    snsTopicArn :: Prelude.Maybe Prelude.Text,
+    -- | The type of source that is generating the events. For example, if you
+    -- want to be notified of events generated by an instance, set this
+    -- parameter to @db-instance@. If this value is not specified, all events
+    -- are returned.
+    --
+    -- Valid values: @db-instance@, @db-parameter-group@, @db-security-group@
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Amazon DocumentDB event notification subscription.
+    subscriptionName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyEventSubscription' 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:
+--
+-- 'enabled', 'modifyEventSubscription_enabled' - A Boolean value; set to @true@ to activate the subscription.
+--
+-- 'eventCategories', 'modifyEventSubscription_eventCategories' - A list of event categories for a @SourceType@ that you want to subscribe
+-- to.
+--
+-- 'snsTopicArn', 'modifyEventSubscription_snsTopicArn' - The Amazon Resource Name (ARN) of the SNS topic created for event
+-- notification. The ARN is created by Amazon SNS when you create a topic
+-- and subscribe to it.
+--
+-- 'sourceType', 'modifyEventSubscription_sourceType' - The type of source that is generating the events. For example, if you
+-- want to be notified of events generated by an instance, set this
+-- parameter to @db-instance@. If this value is not specified, all events
+-- are returned.
+--
+-- Valid values: @db-instance@, @db-parameter-group@, @db-security-group@
+--
+-- 'subscriptionName', 'modifyEventSubscription_subscriptionName' - The name of the Amazon DocumentDB event notification subscription.
+newModifyEventSubscription ::
+  -- | 'subscriptionName'
+  Prelude.Text ->
+  ModifyEventSubscription
+newModifyEventSubscription pSubscriptionName_ =
+  ModifyEventSubscription'
+    { enabled = Prelude.Nothing,
+      eventCategories = Prelude.Nothing,
+      snsTopicArn = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      subscriptionName = pSubscriptionName_
+    }
+
+-- | A Boolean value; set to @true@ to activate the subscription.
+modifyEventSubscription_enabled :: Lens.Lens' ModifyEventSubscription (Prelude.Maybe Prelude.Bool)
+modifyEventSubscription_enabled = Lens.lens (\ModifyEventSubscription' {enabled} -> enabled) (\s@ModifyEventSubscription' {} a -> s {enabled = a} :: ModifyEventSubscription)
+
+-- | A list of event categories for a @SourceType@ that you want to subscribe
+-- to.
+modifyEventSubscription_eventCategories :: Lens.Lens' ModifyEventSubscription (Prelude.Maybe [Prelude.Text])
+modifyEventSubscription_eventCategories = Lens.lens (\ModifyEventSubscription' {eventCategories} -> eventCategories) (\s@ModifyEventSubscription' {} a -> s {eventCategories = a} :: ModifyEventSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the SNS topic created for event
+-- notification. The ARN is created by Amazon SNS when you create a topic
+-- and subscribe to it.
+modifyEventSubscription_snsTopicArn :: Lens.Lens' ModifyEventSubscription (Prelude.Maybe Prelude.Text)
+modifyEventSubscription_snsTopicArn = Lens.lens (\ModifyEventSubscription' {snsTopicArn} -> snsTopicArn) (\s@ModifyEventSubscription' {} a -> s {snsTopicArn = a} :: ModifyEventSubscription)
+
+-- | The type of source that is generating the events. For example, if you
+-- want to be notified of events generated by an instance, set this
+-- parameter to @db-instance@. If this value is not specified, all events
+-- are returned.
+--
+-- Valid values: @db-instance@, @db-parameter-group@, @db-security-group@
+modifyEventSubscription_sourceType :: Lens.Lens' ModifyEventSubscription (Prelude.Maybe Prelude.Text)
+modifyEventSubscription_sourceType = Lens.lens (\ModifyEventSubscription' {sourceType} -> sourceType) (\s@ModifyEventSubscription' {} a -> s {sourceType = a} :: ModifyEventSubscription)
+
+-- | The name of the Amazon DocumentDB event notification subscription.
+modifyEventSubscription_subscriptionName :: Lens.Lens' ModifyEventSubscription Prelude.Text
+modifyEventSubscription_subscriptionName = Lens.lens (\ModifyEventSubscription' {subscriptionName} -> subscriptionName) (\s@ModifyEventSubscription' {} a -> s {subscriptionName = a} :: ModifyEventSubscription)
+
+instance Core.AWSRequest ModifyEventSubscription where
+  type
+    AWSResponse ModifyEventSubscription =
+      ModifyEventSubscriptionResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ModifyEventSubscriptionResult"
+      ( \s h x ->
+          ModifyEventSubscriptionResponse'
+            Prelude.<$> (x Data..@? "EventSubscription")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ModifyEventSubscription where
+  hashWithSalt _salt ModifyEventSubscription' {..} =
+    _salt
+      `Prelude.hashWithSalt` enabled
+      `Prelude.hashWithSalt` eventCategories
+      `Prelude.hashWithSalt` snsTopicArn
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` subscriptionName
+
+instance Prelude.NFData ModifyEventSubscription where
+  rnf ModifyEventSubscription' {..} =
+    Prelude.rnf enabled
+      `Prelude.seq` Prelude.rnf eventCategories
+      `Prelude.seq` Prelude.rnf snsTopicArn
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf subscriptionName
+
+instance Data.ToHeaders ModifyEventSubscription where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ModifyEventSubscription where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ModifyEventSubscription where
+  toQuery ModifyEventSubscription' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ModifyEventSubscription" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Enabled" Data.=: enabled,
+        "EventCategories"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "EventCategory"
+                Prelude.<$> eventCategories
+            ),
+        "SnsTopicArn" Data.=: snsTopicArn,
+        "SourceType" Data.=: sourceType,
+        "SubscriptionName" Data.=: subscriptionName
+      ]
+
+-- | /See:/ 'newModifyEventSubscriptionResponse' smart constructor.
+data ModifyEventSubscriptionResponse = ModifyEventSubscriptionResponse'
+  { eventSubscription :: Prelude.Maybe EventSubscription,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyEventSubscriptionResponse' 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:
+--
+-- 'eventSubscription', 'modifyEventSubscriptionResponse_eventSubscription' - Undocumented member.
+--
+-- 'httpStatus', 'modifyEventSubscriptionResponse_httpStatus' - The response's http status code.
+newModifyEventSubscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ModifyEventSubscriptionResponse
+newModifyEventSubscriptionResponse pHttpStatus_ =
+  ModifyEventSubscriptionResponse'
+    { eventSubscription =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+modifyEventSubscriptionResponse_eventSubscription :: Lens.Lens' ModifyEventSubscriptionResponse (Prelude.Maybe EventSubscription)
+modifyEventSubscriptionResponse_eventSubscription = Lens.lens (\ModifyEventSubscriptionResponse' {eventSubscription} -> eventSubscription) (\s@ModifyEventSubscriptionResponse' {} a -> s {eventSubscription = a} :: ModifyEventSubscriptionResponse)
+
+-- | The response's http status code.
+modifyEventSubscriptionResponse_httpStatus :: Lens.Lens' ModifyEventSubscriptionResponse Prelude.Int
+modifyEventSubscriptionResponse_httpStatus = Lens.lens (\ModifyEventSubscriptionResponse' {httpStatus} -> httpStatus) (\s@ModifyEventSubscriptionResponse' {} a -> s {httpStatus = a} :: ModifyEventSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    ModifyEventSubscriptionResponse
+  where
+  rnf ModifyEventSubscriptionResponse' {..} =
+    Prelude.rnf eventSubscription
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/ModifyGlobalCluster.hs b/gen/Amazonka/DocumentDB/ModifyGlobalCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ModifyGlobalCluster.hs
@@ -0,0 +1,241 @@
+{-# 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.DocumentDB.ModifyGlobalCluster
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modify a setting for an Amazon DocumentDB global cluster. You can change
+-- one or more configuration parameters (for example: deletion protection),
+-- or the global cluster identifier by specifying these parameters and the
+-- new values in the request.
+--
+-- This action only applies to Amazon DocumentDB clusters.
+module Amazonka.DocumentDB.ModifyGlobalCluster
+  ( -- * Creating a Request
+    ModifyGlobalCluster (..),
+    newModifyGlobalCluster,
+
+    -- * Request Lenses
+    modifyGlobalCluster_deletionProtection,
+    modifyGlobalCluster_newGlobalClusterIdentifier,
+    modifyGlobalCluster_globalClusterIdentifier,
+
+    -- * Destructuring the Response
+    ModifyGlobalClusterResponse (..),
+    newModifyGlobalClusterResponse,
+
+    -- * Response Lenses
+    modifyGlobalClusterResponse_globalCluster,
+    modifyGlobalClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ModifyGlobalCluster.
+--
+-- /See:/ 'newModifyGlobalCluster' smart constructor.
+data ModifyGlobalCluster = ModifyGlobalCluster'
+  { -- | Indicates if the global cluster has deletion protection enabled. The
+    -- global cluster can\'t be deleted when deletion protection is enabled.
+    deletionProtection :: Prelude.Maybe Prelude.Bool,
+    -- | The new identifier for a global cluster when you modify a global
+    -- cluster. This value is stored as a lowercase string.
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens
+    --
+    --     The first character must be a letter
+    --
+    --     Can\'t end with a hyphen or contain two consecutive hyphens
+    --
+    -- Example: @my-cluster2@
+    newGlobalClusterIdentifier' :: Prelude.Maybe Prelude.Text,
+    -- | The identifier for the global cluster being modified. This parameter
+    -- isn\'t case-sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the identifier of an existing global cluster.
+    globalClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyGlobalCluster' 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:
+--
+-- 'deletionProtection', 'modifyGlobalCluster_deletionProtection' - Indicates if the global cluster has deletion protection enabled. The
+-- global cluster can\'t be deleted when deletion protection is enabled.
+--
+-- 'newGlobalClusterIdentifier'', 'modifyGlobalCluster_newGlobalClusterIdentifier' - The new identifier for a global cluster when you modify a global
+-- cluster. This value is stored as a lowercase string.
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens
+--
+--     The first character must be a letter
+--
+--     Can\'t end with a hyphen or contain two consecutive hyphens
+--
+-- Example: @my-cluster2@
+--
+-- 'globalClusterIdentifier', 'modifyGlobalCluster_globalClusterIdentifier' - The identifier for the global cluster being modified. This parameter
+-- isn\'t case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing global cluster.
+newModifyGlobalCluster ::
+  -- | 'globalClusterIdentifier'
+  Prelude.Text ->
+  ModifyGlobalCluster
+newModifyGlobalCluster pGlobalClusterIdentifier_ =
+  ModifyGlobalCluster'
+    { deletionProtection =
+        Prelude.Nothing,
+      newGlobalClusterIdentifier' = Prelude.Nothing,
+      globalClusterIdentifier = pGlobalClusterIdentifier_
+    }
+
+-- | Indicates if the global cluster has deletion protection enabled. The
+-- global cluster can\'t be deleted when deletion protection is enabled.
+modifyGlobalCluster_deletionProtection :: Lens.Lens' ModifyGlobalCluster (Prelude.Maybe Prelude.Bool)
+modifyGlobalCluster_deletionProtection = Lens.lens (\ModifyGlobalCluster' {deletionProtection} -> deletionProtection) (\s@ModifyGlobalCluster' {} a -> s {deletionProtection = a} :: ModifyGlobalCluster)
+
+-- | The new identifier for a global cluster when you modify a global
+-- cluster. This value is stored as a lowercase string.
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens
+--
+--     The first character must be a letter
+--
+--     Can\'t end with a hyphen or contain two consecutive hyphens
+--
+-- Example: @my-cluster2@
+modifyGlobalCluster_newGlobalClusterIdentifier :: Lens.Lens' ModifyGlobalCluster (Prelude.Maybe Prelude.Text)
+modifyGlobalCluster_newGlobalClusterIdentifier = Lens.lens (\ModifyGlobalCluster' {newGlobalClusterIdentifier'} -> newGlobalClusterIdentifier') (\s@ModifyGlobalCluster' {} a -> s {newGlobalClusterIdentifier' = a} :: ModifyGlobalCluster)
+
+-- | The identifier for the global cluster being modified. This parameter
+-- isn\'t case-sensitive.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing global cluster.
+modifyGlobalCluster_globalClusterIdentifier :: Lens.Lens' ModifyGlobalCluster Prelude.Text
+modifyGlobalCluster_globalClusterIdentifier = Lens.lens (\ModifyGlobalCluster' {globalClusterIdentifier} -> globalClusterIdentifier) (\s@ModifyGlobalCluster' {} a -> s {globalClusterIdentifier = a} :: ModifyGlobalCluster)
+
+instance Core.AWSRequest ModifyGlobalCluster where
+  type
+    AWSResponse ModifyGlobalCluster =
+      ModifyGlobalClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ModifyGlobalClusterResult"
+      ( \s h x ->
+          ModifyGlobalClusterResponse'
+            Prelude.<$> (x Data..@? "GlobalCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ModifyGlobalCluster where
+  hashWithSalt _salt ModifyGlobalCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` deletionProtection
+      `Prelude.hashWithSalt` newGlobalClusterIdentifier'
+      `Prelude.hashWithSalt` globalClusterIdentifier
+
+instance Prelude.NFData ModifyGlobalCluster where
+  rnf ModifyGlobalCluster' {..} =
+    Prelude.rnf deletionProtection
+      `Prelude.seq` Prelude.rnf newGlobalClusterIdentifier'
+      `Prelude.seq` Prelude.rnf globalClusterIdentifier
+
+instance Data.ToHeaders ModifyGlobalCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ModifyGlobalCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ModifyGlobalCluster where
+  toQuery ModifyGlobalCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ModifyGlobalCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DeletionProtection" Data.=: deletionProtection,
+        "NewGlobalClusterIdentifier"
+          Data.=: newGlobalClusterIdentifier',
+        "GlobalClusterIdentifier"
+          Data.=: globalClusterIdentifier
+      ]
+
+-- | /See:/ 'newModifyGlobalClusterResponse' smart constructor.
+data ModifyGlobalClusterResponse = ModifyGlobalClusterResponse'
+  { globalCluster :: Prelude.Maybe GlobalCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ModifyGlobalClusterResponse' 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:
+--
+-- 'globalCluster', 'modifyGlobalClusterResponse_globalCluster' - Undocumented member.
+--
+-- 'httpStatus', 'modifyGlobalClusterResponse_httpStatus' - The response's http status code.
+newModifyGlobalClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ModifyGlobalClusterResponse
+newModifyGlobalClusterResponse pHttpStatus_ =
+  ModifyGlobalClusterResponse'
+    { globalCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+modifyGlobalClusterResponse_globalCluster :: Lens.Lens' ModifyGlobalClusterResponse (Prelude.Maybe GlobalCluster)
+modifyGlobalClusterResponse_globalCluster = Lens.lens (\ModifyGlobalClusterResponse' {globalCluster} -> globalCluster) (\s@ModifyGlobalClusterResponse' {} a -> s {globalCluster = a} :: ModifyGlobalClusterResponse)
+
+-- | The response's http status code.
+modifyGlobalClusterResponse_httpStatus :: Lens.Lens' ModifyGlobalClusterResponse Prelude.Int
+modifyGlobalClusterResponse_httpStatus = Lens.lens (\ModifyGlobalClusterResponse' {httpStatus} -> httpStatus) (\s@ModifyGlobalClusterResponse' {} a -> s {httpStatus = a} :: ModifyGlobalClusterResponse)
+
+instance Prelude.NFData ModifyGlobalClusterResponse where
+  rnf ModifyGlobalClusterResponse' {..} =
+    Prelude.rnf globalCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/RebootDBInstance.hs b/gen/Amazonka/DocumentDB/RebootDBInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/RebootDBInstance.hs
@@ -0,0 +1,203 @@
+{-# 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.DocumentDB.RebootDBInstance
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- You might need to reboot your instance, usually for maintenance reasons.
+-- For example, if you make certain changes, or if you change the cluster
+-- parameter group that is associated with the instance, you must reboot
+-- the instance for the changes to take effect.
+--
+-- Rebooting an instance restarts the database engine service. Rebooting an
+-- instance results in a momentary outage, during which the instance status
+-- is set to /rebooting/.
+module Amazonka.DocumentDB.RebootDBInstance
+  ( -- * Creating a Request
+    RebootDBInstance (..),
+    newRebootDBInstance,
+
+    -- * Request Lenses
+    rebootDBInstance_forceFailover,
+    rebootDBInstance_dbInstanceIdentifier,
+
+    -- * Destructuring the Response
+    RebootDBInstanceResponse (..),
+    newRebootDBInstanceResponse,
+
+    -- * Response Lenses
+    rebootDBInstanceResponse_dbInstance,
+    rebootDBInstanceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to RebootDBInstance.
+--
+-- /See:/ 'newRebootDBInstance' smart constructor.
+data RebootDBInstance = RebootDBInstance'
+  { -- | When @true@, the reboot is conducted through a Multi-AZ failover.
+    --
+    -- Constraint: You can\'t specify @true@ if the instance is not configured
+    -- for Multi-AZ.
+    forceFailover :: Prelude.Maybe Prelude.Bool,
+    -- | The instance identifier. This parameter is stored as a lowercase string.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the identifier of an existing @DBInstance@.
+    dbInstanceIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RebootDBInstance' 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:
+--
+-- 'forceFailover', 'rebootDBInstance_forceFailover' - When @true@, the reboot is conducted through a Multi-AZ failover.
+--
+-- Constraint: You can\'t specify @true@ if the instance is not configured
+-- for Multi-AZ.
+--
+-- 'dbInstanceIdentifier', 'rebootDBInstance_dbInstanceIdentifier' - The instance identifier. This parameter is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBInstance@.
+newRebootDBInstance ::
+  -- | 'dbInstanceIdentifier'
+  Prelude.Text ->
+  RebootDBInstance
+newRebootDBInstance pDBInstanceIdentifier_ =
+  RebootDBInstance'
+    { forceFailover = Prelude.Nothing,
+      dbInstanceIdentifier = pDBInstanceIdentifier_
+    }
+
+-- | When @true@, the reboot is conducted through a Multi-AZ failover.
+--
+-- Constraint: You can\'t specify @true@ if the instance is not configured
+-- for Multi-AZ.
+rebootDBInstance_forceFailover :: Lens.Lens' RebootDBInstance (Prelude.Maybe Prelude.Bool)
+rebootDBInstance_forceFailover = Lens.lens (\RebootDBInstance' {forceFailover} -> forceFailover) (\s@RebootDBInstance' {} a -> s {forceFailover = a} :: RebootDBInstance)
+
+-- | The instance identifier. This parameter is stored as a lowercase string.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBInstance@.
+rebootDBInstance_dbInstanceIdentifier :: Lens.Lens' RebootDBInstance Prelude.Text
+rebootDBInstance_dbInstanceIdentifier = Lens.lens (\RebootDBInstance' {dbInstanceIdentifier} -> dbInstanceIdentifier) (\s@RebootDBInstance' {} a -> s {dbInstanceIdentifier = a} :: RebootDBInstance)
+
+instance Core.AWSRequest RebootDBInstance where
+  type
+    AWSResponse RebootDBInstance =
+      RebootDBInstanceResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "RebootDBInstanceResult"
+      ( \s h x ->
+          RebootDBInstanceResponse'
+            Prelude.<$> (x Data..@? "DBInstance")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RebootDBInstance where
+  hashWithSalt _salt RebootDBInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` forceFailover
+      `Prelude.hashWithSalt` dbInstanceIdentifier
+
+instance Prelude.NFData RebootDBInstance where
+  rnf RebootDBInstance' {..} =
+    Prelude.rnf forceFailover
+      `Prelude.seq` Prelude.rnf dbInstanceIdentifier
+
+instance Data.ToHeaders RebootDBInstance where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath RebootDBInstance where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RebootDBInstance where
+  toQuery RebootDBInstance' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("RebootDBInstance" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "ForceFailover" Data.=: forceFailover,
+        "DBInstanceIdentifier" Data.=: dbInstanceIdentifier
+      ]
+
+-- | /See:/ 'newRebootDBInstanceResponse' smart constructor.
+data RebootDBInstanceResponse = RebootDBInstanceResponse'
+  { dbInstance :: Prelude.Maybe DBInstance,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RebootDBInstanceResponse' 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:
+--
+-- 'dbInstance', 'rebootDBInstanceResponse_dbInstance' - Undocumented member.
+--
+-- 'httpStatus', 'rebootDBInstanceResponse_httpStatus' - The response's http status code.
+newRebootDBInstanceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RebootDBInstanceResponse
+newRebootDBInstanceResponse pHttpStatus_ =
+  RebootDBInstanceResponse'
+    { dbInstance =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+rebootDBInstanceResponse_dbInstance :: Lens.Lens' RebootDBInstanceResponse (Prelude.Maybe DBInstance)
+rebootDBInstanceResponse_dbInstance = Lens.lens (\RebootDBInstanceResponse' {dbInstance} -> dbInstance) (\s@RebootDBInstanceResponse' {} a -> s {dbInstance = a} :: RebootDBInstanceResponse)
+
+-- | The response's http status code.
+rebootDBInstanceResponse_httpStatus :: Lens.Lens' RebootDBInstanceResponse Prelude.Int
+rebootDBInstanceResponse_httpStatus = Lens.lens (\RebootDBInstanceResponse' {httpStatus} -> httpStatus) (\s@RebootDBInstanceResponse' {} a -> s {httpStatus = a} :: RebootDBInstanceResponse)
+
+instance Prelude.NFData RebootDBInstanceResponse where
+  rnf RebootDBInstanceResponse' {..} =
+    Prelude.rnf dbInstance
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/RemoveFromGlobalCluster.hs b/gen/Amazonka/DocumentDB/RemoveFromGlobalCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/RemoveFromGlobalCluster.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.RemoveFromGlobalCluster
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Detaches an Amazon DocumentDB secondary cluster from a global cluster.
+-- The cluster becomes a standalone cluster with read-write capability
+-- instead of being read-only and receiving data from a primary in a
+-- different region.
+--
+-- This action only applies to Amazon DocumentDB clusters.
+module Amazonka.DocumentDB.RemoveFromGlobalCluster
+  ( -- * Creating a Request
+    RemoveFromGlobalCluster (..),
+    newRemoveFromGlobalCluster,
+
+    -- * Request Lenses
+    removeFromGlobalCluster_globalClusterIdentifier,
+    removeFromGlobalCluster_dbClusterIdentifier,
+
+    -- * Destructuring the Response
+    RemoveFromGlobalClusterResponse (..),
+    newRemoveFromGlobalClusterResponse,
+
+    -- * Response Lenses
+    removeFromGlobalClusterResponse_globalCluster,
+    removeFromGlobalClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to RemoveFromGlobalCluster.
+--
+-- /See:/ 'newRemoveFromGlobalCluster' smart constructor.
+data RemoveFromGlobalCluster = RemoveFromGlobalCluster'
+  { -- | The cluster identifier to detach from the Amazon DocumentDB global
+    -- cluster.
+    globalClusterIdentifier :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) identifying the cluster that was detached
+    -- from the Amazon DocumentDB global cluster.
+    dbClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveFromGlobalCluster' 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:
+--
+-- 'globalClusterIdentifier', 'removeFromGlobalCluster_globalClusterIdentifier' - The cluster identifier to detach from the Amazon DocumentDB global
+-- cluster.
+--
+-- 'dbClusterIdentifier', 'removeFromGlobalCluster_dbClusterIdentifier' - The Amazon Resource Name (ARN) identifying the cluster that was detached
+-- from the Amazon DocumentDB global cluster.
+newRemoveFromGlobalCluster ::
+  -- | 'globalClusterIdentifier'
+  Prelude.Text ->
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  RemoveFromGlobalCluster
+newRemoveFromGlobalCluster
+  pGlobalClusterIdentifier_
+  pDbClusterIdentifier_ =
+    RemoveFromGlobalCluster'
+      { globalClusterIdentifier =
+          pGlobalClusterIdentifier_,
+        dbClusterIdentifier = pDbClusterIdentifier_
+      }
+
+-- | The cluster identifier to detach from the Amazon DocumentDB global
+-- cluster.
+removeFromGlobalCluster_globalClusterIdentifier :: Lens.Lens' RemoveFromGlobalCluster Prelude.Text
+removeFromGlobalCluster_globalClusterIdentifier = Lens.lens (\RemoveFromGlobalCluster' {globalClusterIdentifier} -> globalClusterIdentifier) (\s@RemoveFromGlobalCluster' {} a -> s {globalClusterIdentifier = a} :: RemoveFromGlobalCluster)
+
+-- | The Amazon Resource Name (ARN) identifying the cluster that was detached
+-- from the Amazon DocumentDB global cluster.
+removeFromGlobalCluster_dbClusterIdentifier :: Lens.Lens' RemoveFromGlobalCluster Prelude.Text
+removeFromGlobalCluster_dbClusterIdentifier = Lens.lens (\RemoveFromGlobalCluster' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@RemoveFromGlobalCluster' {} a -> s {dbClusterIdentifier = a} :: RemoveFromGlobalCluster)
+
+instance Core.AWSRequest RemoveFromGlobalCluster where
+  type
+    AWSResponse RemoveFromGlobalCluster =
+      RemoveFromGlobalClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "RemoveFromGlobalClusterResult"
+      ( \s h x ->
+          RemoveFromGlobalClusterResponse'
+            Prelude.<$> (x Data..@? "GlobalCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RemoveFromGlobalCluster where
+  hashWithSalt _salt RemoveFromGlobalCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` globalClusterIdentifier
+      `Prelude.hashWithSalt` dbClusterIdentifier
+
+instance Prelude.NFData RemoveFromGlobalCluster where
+  rnf RemoveFromGlobalCluster' {..} =
+    Prelude.rnf globalClusterIdentifier
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+
+instance Data.ToHeaders RemoveFromGlobalCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath RemoveFromGlobalCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RemoveFromGlobalCluster where
+  toQuery RemoveFromGlobalCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("RemoveFromGlobalCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "GlobalClusterIdentifier"
+          Data.=: globalClusterIdentifier,
+        "DbClusterIdentifier" Data.=: dbClusterIdentifier
+      ]
+
+-- | /See:/ 'newRemoveFromGlobalClusterResponse' smart constructor.
+data RemoveFromGlobalClusterResponse = RemoveFromGlobalClusterResponse'
+  { globalCluster :: Prelude.Maybe GlobalCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveFromGlobalClusterResponse' 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:
+--
+-- 'globalCluster', 'removeFromGlobalClusterResponse_globalCluster' - Undocumented member.
+--
+-- 'httpStatus', 'removeFromGlobalClusterResponse_httpStatus' - The response's http status code.
+newRemoveFromGlobalClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RemoveFromGlobalClusterResponse
+newRemoveFromGlobalClusterResponse pHttpStatus_ =
+  RemoveFromGlobalClusterResponse'
+    { globalCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+removeFromGlobalClusterResponse_globalCluster :: Lens.Lens' RemoveFromGlobalClusterResponse (Prelude.Maybe GlobalCluster)
+removeFromGlobalClusterResponse_globalCluster = Lens.lens (\RemoveFromGlobalClusterResponse' {globalCluster} -> globalCluster) (\s@RemoveFromGlobalClusterResponse' {} a -> s {globalCluster = a} :: RemoveFromGlobalClusterResponse)
+
+-- | The response's http status code.
+removeFromGlobalClusterResponse_httpStatus :: Lens.Lens' RemoveFromGlobalClusterResponse Prelude.Int
+removeFromGlobalClusterResponse_httpStatus = Lens.lens (\RemoveFromGlobalClusterResponse' {httpStatus} -> httpStatus) (\s@RemoveFromGlobalClusterResponse' {} a -> s {httpStatus = a} :: RemoveFromGlobalClusterResponse)
+
+instance
+  Prelude.NFData
+    RemoveFromGlobalClusterResponse
+  where
+  rnf RemoveFromGlobalClusterResponse' {..} =
+    Prelude.rnf globalCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/RemoveSourceIdentifierFromSubscription.hs b/gen/Amazonka/DocumentDB/RemoveSourceIdentifierFromSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/RemoveSourceIdentifierFromSubscription.hs
@@ -0,0 +1,216 @@
+{-# 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.DocumentDB.RemoveSourceIdentifierFromSubscription
+-- 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 a source identifier from an existing Amazon DocumentDB event
+-- notification subscription.
+module Amazonka.DocumentDB.RemoveSourceIdentifierFromSubscription
+  ( -- * Creating a Request
+    RemoveSourceIdentifierFromSubscription (..),
+    newRemoveSourceIdentifierFromSubscription,
+
+    -- * Request Lenses
+    removeSourceIdentifierFromSubscription_subscriptionName,
+    removeSourceIdentifierFromSubscription_sourceIdentifier,
+
+    -- * Destructuring the Response
+    RemoveSourceIdentifierFromSubscriptionResponse (..),
+    newRemoveSourceIdentifierFromSubscriptionResponse,
+
+    -- * Response Lenses
+    removeSourceIdentifierFromSubscriptionResponse_eventSubscription,
+    removeSourceIdentifierFromSubscriptionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to RemoveSourceIdentifierFromSubscription.
+--
+-- /See:/ 'newRemoveSourceIdentifierFromSubscription' smart constructor.
+data RemoveSourceIdentifierFromSubscription = RemoveSourceIdentifierFromSubscription'
+  { -- | The name of the Amazon DocumentDB event notification subscription that
+    -- you want to remove a source identifier from.
+    subscriptionName :: Prelude.Text,
+    -- | The source identifier to be removed from the subscription, such as the
+    -- instance identifier for an instance, or the name of a security group.
+    sourceIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveSourceIdentifierFromSubscription' 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:
+--
+-- 'subscriptionName', 'removeSourceIdentifierFromSubscription_subscriptionName' - The name of the Amazon DocumentDB event notification subscription that
+-- you want to remove a source identifier from.
+--
+-- 'sourceIdentifier', 'removeSourceIdentifierFromSubscription_sourceIdentifier' - The source identifier to be removed from the subscription, such as the
+-- instance identifier for an instance, or the name of a security group.
+newRemoveSourceIdentifierFromSubscription ::
+  -- | 'subscriptionName'
+  Prelude.Text ->
+  -- | 'sourceIdentifier'
+  Prelude.Text ->
+  RemoveSourceIdentifierFromSubscription
+newRemoveSourceIdentifierFromSubscription
+  pSubscriptionName_
+  pSourceIdentifier_ =
+    RemoveSourceIdentifierFromSubscription'
+      { subscriptionName =
+          pSubscriptionName_,
+        sourceIdentifier =
+          pSourceIdentifier_
+      }
+
+-- | The name of the Amazon DocumentDB event notification subscription that
+-- you want to remove a source identifier from.
+removeSourceIdentifierFromSubscription_subscriptionName :: Lens.Lens' RemoveSourceIdentifierFromSubscription Prelude.Text
+removeSourceIdentifierFromSubscription_subscriptionName = Lens.lens (\RemoveSourceIdentifierFromSubscription' {subscriptionName} -> subscriptionName) (\s@RemoveSourceIdentifierFromSubscription' {} a -> s {subscriptionName = a} :: RemoveSourceIdentifierFromSubscription)
+
+-- | The source identifier to be removed from the subscription, such as the
+-- instance identifier for an instance, or the name of a security group.
+removeSourceIdentifierFromSubscription_sourceIdentifier :: Lens.Lens' RemoveSourceIdentifierFromSubscription Prelude.Text
+removeSourceIdentifierFromSubscription_sourceIdentifier = Lens.lens (\RemoveSourceIdentifierFromSubscription' {sourceIdentifier} -> sourceIdentifier) (\s@RemoveSourceIdentifierFromSubscription' {} a -> s {sourceIdentifier = a} :: RemoveSourceIdentifierFromSubscription)
+
+instance
+  Core.AWSRequest
+    RemoveSourceIdentifierFromSubscription
+  where
+  type
+    AWSResponse
+      RemoveSourceIdentifierFromSubscription =
+      RemoveSourceIdentifierFromSubscriptionResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "RemoveSourceIdentifierFromSubscriptionResult"
+      ( \s h x ->
+          RemoveSourceIdentifierFromSubscriptionResponse'
+            Prelude.<$> (x Data..@? "EventSubscription")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    RemoveSourceIdentifierFromSubscription
+  where
+  hashWithSalt
+    _salt
+    RemoveSourceIdentifierFromSubscription' {..} =
+      _salt
+        `Prelude.hashWithSalt` subscriptionName
+        `Prelude.hashWithSalt` sourceIdentifier
+
+instance
+  Prelude.NFData
+    RemoveSourceIdentifierFromSubscription
+  where
+  rnf RemoveSourceIdentifierFromSubscription' {..} =
+    Prelude.rnf subscriptionName
+      `Prelude.seq` Prelude.rnf sourceIdentifier
+
+instance
+  Data.ToHeaders
+    RemoveSourceIdentifierFromSubscription
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    RemoveSourceIdentifierFromSubscription
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    RemoveSourceIdentifierFromSubscription
+  where
+  toQuery RemoveSourceIdentifierFromSubscription' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "RemoveSourceIdentifierFromSubscription" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "SubscriptionName" Data.=: subscriptionName,
+        "SourceIdentifier" Data.=: sourceIdentifier
+      ]
+
+-- | /See:/ 'newRemoveSourceIdentifierFromSubscriptionResponse' smart constructor.
+data RemoveSourceIdentifierFromSubscriptionResponse = RemoveSourceIdentifierFromSubscriptionResponse'
+  { eventSubscription :: Prelude.Maybe EventSubscription,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveSourceIdentifierFromSubscriptionResponse' 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:
+--
+-- 'eventSubscription', 'removeSourceIdentifierFromSubscriptionResponse_eventSubscription' - Undocumented member.
+--
+-- 'httpStatus', 'removeSourceIdentifierFromSubscriptionResponse_httpStatus' - The response's http status code.
+newRemoveSourceIdentifierFromSubscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RemoveSourceIdentifierFromSubscriptionResponse
+newRemoveSourceIdentifierFromSubscriptionResponse
+  pHttpStatus_ =
+    RemoveSourceIdentifierFromSubscriptionResponse'
+      { eventSubscription =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Undocumented member.
+removeSourceIdentifierFromSubscriptionResponse_eventSubscription :: Lens.Lens' RemoveSourceIdentifierFromSubscriptionResponse (Prelude.Maybe EventSubscription)
+removeSourceIdentifierFromSubscriptionResponse_eventSubscription = Lens.lens (\RemoveSourceIdentifierFromSubscriptionResponse' {eventSubscription} -> eventSubscription) (\s@RemoveSourceIdentifierFromSubscriptionResponse' {} a -> s {eventSubscription = a} :: RemoveSourceIdentifierFromSubscriptionResponse)
+
+-- | The response's http status code.
+removeSourceIdentifierFromSubscriptionResponse_httpStatus :: Lens.Lens' RemoveSourceIdentifierFromSubscriptionResponse Prelude.Int
+removeSourceIdentifierFromSubscriptionResponse_httpStatus = Lens.lens (\RemoveSourceIdentifierFromSubscriptionResponse' {httpStatus} -> httpStatus) (\s@RemoveSourceIdentifierFromSubscriptionResponse' {} a -> s {httpStatus = a} :: RemoveSourceIdentifierFromSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    RemoveSourceIdentifierFromSubscriptionResponse
+  where
+  rnf
+    RemoveSourceIdentifierFromSubscriptionResponse' {..} =
+      Prelude.rnf eventSubscription
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/RemoveTagsFromResource.hs b/gen/Amazonka/DocumentDB/RemoveTagsFromResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/RemoveTagsFromResource.hs
@@ -0,0 +1,148 @@
+{-# 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.DocumentDB.RemoveTagsFromResource
+-- 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 metadata tags from an Amazon DocumentDB resource.
+module Amazonka.DocumentDB.RemoveTagsFromResource
+  ( -- * Creating a Request
+    RemoveTagsFromResource (..),
+    newRemoveTagsFromResource,
+
+    -- * Request Lenses
+    removeTagsFromResource_resourceName,
+    removeTagsFromResource_tagKeys,
+
+    -- * Destructuring the Response
+    RemoveTagsFromResourceResponse (..),
+    newRemoveTagsFromResourceResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to RemoveTagsFromResource.
+--
+-- /See:/ 'newRemoveTagsFromResource' smart constructor.
+data RemoveTagsFromResource = RemoveTagsFromResource'
+  { -- | The Amazon DocumentDB resource that the tags are removed from. This
+    -- value is an Amazon Resource Name (ARN).
+    resourceName :: Prelude.Text,
+    -- | The tag key (name) of the tag to be removed.
+    tagKeys :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveTagsFromResource' 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:
+--
+-- 'resourceName', 'removeTagsFromResource_resourceName' - The Amazon DocumentDB resource that the tags are removed from. This
+-- value is an Amazon Resource Name (ARN).
+--
+-- 'tagKeys', 'removeTagsFromResource_tagKeys' - The tag key (name) of the tag to be removed.
+newRemoveTagsFromResource ::
+  -- | 'resourceName'
+  Prelude.Text ->
+  RemoveTagsFromResource
+newRemoveTagsFromResource pResourceName_ =
+  RemoveTagsFromResource'
+    { resourceName =
+        pResourceName_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The Amazon DocumentDB resource that the tags are removed from. This
+-- value is an Amazon Resource Name (ARN).
+removeTagsFromResource_resourceName :: Lens.Lens' RemoveTagsFromResource Prelude.Text
+removeTagsFromResource_resourceName = Lens.lens (\RemoveTagsFromResource' {resourceName} -> resourceName) (\s@RemoveTagsFromResource' {} a -> s {resourceName = a} :: RemoveTagsFromResource)
+
+-- | The tag key (name) of the tag to be removed.
+removeTagsFromResource_tagKeys :: Lens.Lens' RemoveTagsFromResource [Prelude.Text]
+removeTagsFromResource_tagKeys = Lens.lens (\RemoveTagsFromResource' {tagKeys} -> tagKeys) (\s@RemoveTagsFromResource' {} a -> s {tagKeys = a} :: RemoveTagsFromResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest RemoveTagsFromResource where
+  type
+    AWSResponse RemoveTagsFromResource =
+      RemoveTagsFromResourceResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      RemoveTagsFromResourceResponse'
+
+instance Prelude.Hashable RemoveTagsFromResource where
+  hashWithSalt _salt RemoveTagsFromResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceName
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData RemoveTagsFromResource where
+  rnf RemoveTagsFromResource' {..} =
+    Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders RemoveTagsFromResource where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath RemoveTagsFromResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RemoveTagsFromResource where
+  toQuery RemoveTagsFromResource' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("RemoveTagsFromResource" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "ResourceName" Data.=: resourceName,
+        "TagKeys" Data.=: Data.toQueryList "member" tagKeys
+      ]
+
+-- | /See:/ 'newRemoveTagsFromResourceResponse' smart constructor.
+data RemoveTagsFromResourceResponse = RemoveTagsFromResourceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveTagsFromResourceResponse' 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.
+newRemoveTagsFromResourceResponse ::
+  RemoveTagsFromResourceResponse
+newRemoveTagsFromResourceResponse =
+  RemoveTagsFromResourceResponse'
+
+instance
+  Prelude.NFData
+    RemoveTagsFromResourceResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/DocumentDB/ResetDBClusterParameterGroup.hs b/gen/Amazonka/DocumentDB/ResetDBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/ResetDBClusterParameterGroup.hs
@@ -0,0 +1,176 @@
+{-# 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.DocumentDB.ResetDBClusterParameterGroup
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies the parameters of a cluster parameter group to the default
+-- value. To reset specific parameters, submit a list of the following:
+-- @ParameterName@ and @ApplyMethod@. To reset the entire cluster parameter
+-- group, specify the @DBClusterParameterGroupName@ and
+-- @ResetAllParameters@ parameters.
+--
+-- When you reset the entire group, dynamic parameters are updated
+-- immediately and static parameters are set to @pending-reboot@ to take
+-- effect on the next DB instance reboot.
+module Amazonka.DocumentDB.ResetDBClusterParameterGroup
+  ( -- * Creating a Request
+    ResetDBClusterParameterGroup (..),
+    newResetDBClusterParameterGroup,
+
+    -- * Request Lenses
+    resetDBClusterParameterGroup_parameters,
+    resetDBClusterParameterGroup_resetAllParameters,
+    resetDBClusterParameterGroup_dbClusterParameterGroupName,
+
+    -- * Destructuring the Response
+    DBClusterParameterGroupNameMessage (..),
+    newDBClusterParameterGroupNameMessage,
+
+    -- * Response Lenses
+    dbClusterParameterGroupNameMessage_dbClusterParameterGroupName,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to ResetDBClusterParameterGroup.
+--
+-- /See:/ 'newResetDBClusterParameterGroup' smart constructor.
+data ResetDBClusterParameterGroup = ResetDBClusterParameterGroup'
+  { -- | A list of parameter names in the cluster parameter group to reset to the
+    -- default values. You can\'t use this parameter if the
+    -- @ResetAllParameters@ parameter is set to @true@.
+    parameters :: Prelude.Maybe [Parameter],
+    -- | A value that is set to @true@ to reset all parameters in the cluster
+    -- parameter group to their default values, and @false@ otherwise. You
+    -- can\'t use this parameter if there is a list of parameter names
+    -- specified for the @Parameters@ parameter.
+    resetAllParameters :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the cluster parameter group to reset.
+    dbClusterParameterGroupName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResetDBClusterParameterGroup' 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:
+--
+-- 'parameters', 'resetDBClusterParameterGroup_parameters' - A list of parameter names in the cluster parameter group to reset to the
+-- default values. You can\'t use this parameter if the
+-- @ResetAllParameters@ parameter is set to @true@.
+--
+-- 'resetAllParameters', 'resetDBClusterParameterGroup_resetAllParameters' - A value that is set to @true@ to reset all parameters in the cluster
+-- parameter group to their default values, and @false@ otherwise. You
+-- can\'t use this parameter if there is a list of parameter names
+-- specified for the @Parameters@ parameter.
+--
+-- 'dbClusterParameterGroupName', 'resetDBClusterParameterGroup_dbClusterParameterGroupName' - The name of the cluster parameter group to reset.
+newResetDBClusterParameterGroup ::
+  -- | 'dbClusterParameterGroupName'
+  Prelude.Text ->
+  ResetDBClusterParameterGroup
+newResetDBClusterParameterGroup
+  pDBClusterParameterGroupName_ =
+    ResetDBClusterParameterGroup'
+      { parameters =
+          Prelude.Nothing,
+        resetAllParameters = Prelude.Nothing,
+        dbClusterParameterGroupName =
+          pDBClusterParameterGroupName_
+      }
+
+-- | A list of parameter names in the cluster parameter group to reset to the
+-- default values. You can\'t use this parameter if the
+-- @ResetAllParameters@ parameter is set to @true@.
+resetDBClusterParameterGroup_parameters :: Lens.Lens' ResetDBClusterParameterGroup (Prelude.Maybe [Parameter])
+resetDBClusterParameterGroup_parameters = Lens.lens (\ResetDBClusterParameterGroup' {parameters} -> parameters) (\s@ResetDBClusterParameterGroup' {} a -> s {parameters = a} :: ResetDBClusterParameterGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | A value that is set to @true@ to reset all parameters in the cluster
+-- parameter group to their default values, and @false@ otherwise. You
+-- can\'t use this parameter if there is a list of parameter names
+-- specified for the @Parameters@ parameter.
+resetDBClusterParameterGroup_resetAllParameters :: Lens.Lens' ResetDBClusterParameterGroup (Prelude.Maybe Prelude.Bool)
+resetDBClusterParameterGroup_resetAllParameters = Lens.lens (\ResetDBClusterParameterGroup' {resetAllParameters} -> resetAllParameters) (\s@ResetDBClusterParameterGroup' {} a -> s {resetAllParameters = a} :: ResetDBClusterParameterGroup)
+
+-- | The name of the cluster parameter group to reset.
+resetDBClusterParameterGroup_dbClusterParameterGroupName :: Lens.Lens' ResetDBClusterParameterGroup Prelude.Text
+resetDBClusterParameterGroup_dbClusterParameterGroupName = Lens.lens (\ResetDBClusterParameterGroup' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@ResetDBClusterParameterGroup' {} a -> s {dbClusterParameterGroupName = a} :: ResetDBClusterParameterGroup)
+
+instance Core.AWSRequest ResetDBClusterParameterGroup where
+  type
+    AWSResponse ResetDBClusterParameterGroup =
+      DBClusterParameterGroupNameMessage
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ResetDBClusterParameterGroupResult"
+      (\s h x -> Data.parseXML x)
+
+instance
+  Prelude.Hashable
+    ResetDBClusterParameterGroup
+  where
+  hashWithSalt _salt ResetDBClusterParameterGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` resetAllParameters
+      `Prelude.hashWithSalt` dbClusterParameterGroupName
+
+instance Prelude.NFData ResetDBClusterParameterGroup where
+  rnf ResetDBClusterParameterGroup' {..} =
+    Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf resetAllParameters
+      `Prelude.seq` Prelude.rnf dbClusterParameterGroupName
+
+instance Data.ToHeaders ResetDBClusterParameterGroup where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ResetDBClusterParameterGroup where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ResetDBClusterParameterGroup where
+  toQuery ResetDBClusterParameterGroup' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "ResetDBClusterParameterGroup" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "Parameters"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "Parameter"
+                Prelude.<$> parameters
+            ),
+        "ResetAllParameters" Data.=: resetAllParameters,
+        "DBClusterParameterGroupName"
+          Data.=: dbClusterParameterGroupName
+      ]
diff --git a/gen/Amazonka/DocumentDB/RestoreDBClusterFromSnapshot.hs b/gen/Amazonka/DocumentDB/RestoreDBClusterFromSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/RestoreDBClusterFromSnapshot.hs
@@ -0,0 +1,509 @@
+{-# 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.DocumentDB.RestoreDBClusterFromSnapshot
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new cluster from a snapshot or cluster snapshot.
+--
+-- If a snapshot is specified, the target cluster is created from the
+-- source DB snapshot with a default configuration and default security
+-- group.
+--
+-- If a cluster snapshot is specified, the target cluster is created from
+-- the source cluster restore point with the same configuration as the
+-- original source DB cluster, except that the new cluster is created with
+-- the default security group.
+module Amazonka.DocumentDB.RestoreDBClusterFromSnapshot
+  ( -- * Creating a Request
+    RestoreDBClusterFromSnapshot (..),
+    newRestoreDBClusterFromSnapshot,
+
+    -- * Request Lenses
+    restoreDBClusterFromSnapshot_availabilityZones,
+    restoreDBClusterFromSnapshot_dbSubnetGroupName,
+    restoreDBClusterFromSnapshot_deletionProtection,
+    restoreDBClusterFromSnapshot_enableCloudwatchLogsExports,
+    restoreDBClusterFromSnapshot_engineVersion,
+    restoreDBClusterFromSnapshot_kmsKeyId,
+    restoreDBClusterFromSnapshot_port,
+    restoreDBClusterFromSnapshot_tags,
+    restoreDBClusterFromSnapshot_vpcSecurityGroupIds,
+    restoreDBClusterFromSnapshot_dbClusterIdentifier,
+    restoreDBClusterFromSnapshot_snapshotIdentifier,
+    restoreDBClusterFromSnapshot_engine,
+
+    -- * Destructuring the Response
+    RestoreDBClusterFromSnapshotResponse (..),
+    newRestoreDBClusterFromSnapshotResponse,
+
+    -- * Response Lenses
+    restoreDBClusterFromSnapshotResponse_dbCluster,
+    restoreDBClusterFromSnapshotResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to RestoreDBClusterFromSnapshot.
+--
+-- /See:/ 'newRestoreDBClusterFromSnapshot' smart constructor.
+data RestoreDBClusterFromSnapshot = RestoreDBClusterFromSnapshot'
+  { -- | Provides the list of Amazon EC2 Availability Zones that instances in the
+    -- restored DB cluster can be created in.
+    availabilityZones :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the subnet group to use for the new cluster.
+    --
+    -- Constraints: If provided, must match the name of an existing
+    -- @DBSubnetGroup@.
+    --
+    -- Example: @mySubnetgroup@
+    dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+    -- is enabled, the cluster cannot be deleted unless it is modified and
+    -- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+    -- from being accidentally deleted.
+    deletionProtection :: Prelude.Maybe Prelude.Bool,
+    -- | A list of log types that must be enabled for exporting to Amazon
+    -- CloudWatch Logs.
+    enableCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
+    -- | The version of the database engine to use for the new cluster.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | The KMS key identifier to use when restoring an encrypted cluster from a
+    -- DB snapshot or cluster snapshot.
+    --
+    -- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+    -- encryption key. If you are restoring a cluster with the same Amazon Web
+    -- Services account that owns the KMS encryption key used to encrypt the
+    -- new cluster, then you can use the KMS key alias instead of the ARN for
+    -- the KMS encryption key.
+    --
+    -- If you do not specify a value for the @KmsKeyId@ parameter, then the
+    -- following occurs:
+    --
+    -- -   If the snapshot or cluster snapshot in @SnapshotIdentifier@ is
+    --     encrypted, then the restored cluster is encrypted using the KMS key
+    --     that was used to encrypt the snapshot or the cluster snapshot.
+    --
+    -- -   If the snapshot or the cluster snapshot in @SnapshotIdentifier@ is
+    --     not encrypted, then the restored DB cluster is not encrypted.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The port number on which the new cluster accepts connections.
+    --
+    -- Constraints: Must be a value from @1150@ to @65535@.
+    --
+    -- Default: The same port as the original cluster.
+    port :: Prelude.Maybe Prelude.Int,
+    -- | The tags to be assigned to the restored cluster.
+    tags :: Prelude.Maybe [Tag],
+    -- | A list of virtual private cloud (VPC) security groups that the new
+    -- cluster will belong to.
+    vpcSecurityGroupIds :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the cluster to create from the snapshot or cluster snapshot.
+    -- This parameter isn\'t case sensitive.
+    --
+    -- Constraints:
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- Example: @my-snapshot-id@
+    dbClusterIdentifier :: Prelude.Text,
+    -- | The identifier for the snapshot or cluster snapshot to restore from.
+    --
+    -- You can use either the name or the Amazon Resource Name (ARN) to specify
+    -- a cluster snapshot. However, you can use only the ARN to specify a
+    -- snapshot.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the identifier of an existing snapshot.
+    snapshotIdentifier :: Prelude.Text,
+    -- | The database engine to use for the new cluster.
+    --
+    -- Default: The same as source.
+    --
+    -- Constraint: Must be compatible with the engine of the source.
+    engine :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreDBClusterFromSnapshot' 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:
+--
+-- 'availabilityZones', 'restoreDBClusterFromSnapshot_availabilityZones' - Provides the list of Amazon EC2 Availability Zones that instances in the
+-- restored DB cluster can be created in.
+--
+-- 'dbSubnetGroupName', 'restoreDBClusterFromSnapshot_dbSubnetGroupName' - The name of the subnet group to use for the new cluster.
+--
+-- Constraints: If provided, must match the name of an existing
+-- @DBSubnetGroup@.
+--
+-- Example: @mySubnetgroup@
+--
+-- 'deletionProtection', 'restoreDBClusterFromSnapshot_deletionProtection' - Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+--
+-- 'enableCloudwatchLogsExports', 'restoreDBClusterFromSnapshot_enableCloudwatchLogsExports' - A list of log types that must be enabled for exporting to Amazon
+-- CloudWatch Logs.
+--
+-- 'engineVersion', 'restoreDBClusterFromSnapshot_engineVersion' - The version of the database engine to use for the new cluster.
+--
+-- 'kmsKeyId', 'restoreDBClusterFromSnapshot_kmsKeyId' - The KMS key identifier to use when restoring an encrypted cluster from a
+-- DB snapshot or cluster snapshot.
+--
+-- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+-- encryption key. If you are restoring a cluster with the same Amazon Web
+-- Services account that owns the KMS encryption key used to encrypt the
+-- new cluster, then you can use the KMS key alias instead of the ARN for
+-- the KMS encryption key.
+--
+-- If you do not specify a value for the @KmsKeyId@ parameter, then the
+-- following occurs:
+--
+-- -   If the snapshot or cluster snapshot in @SnapshotIdentifier@ is
+--     encrypted, then the restored cluster is encrypted using the KMS key
+--     that was used to encrypt the snapshot or the cluster snapshot.
+--
+-- -   If the snapshot or the cluster snapshot in @SnapshotIdentifier@ is
+--     not encrypted, then the restored DB cluster is not encrypted.
+--
+-- 'port', 'restoreDBClusterFromSnapshot_port' - The port number on which the new cluster accepts connections.
+--
+-- Constraints: Must be a value from @1150@ to @65535@.
+--
+-- Default: The same port as the original cluster.
+--
+-- 'tags', 'restoreDBClusterFromSnapshot_tags' - The tags to be assigned to the restored cluster.
+--
+-- 'vpcSecurityGroupIds', 'restoreDBClusterFromSnapshot_vpcSecurityGroupIds' - A list of virtual private cloud (VPC) security groups that the new
+-- cluster will belong to.
+--
+-- 'dbClusterIdentifier', 'restoreDBClusterFromSnapshot_dbClusterIdentifier' - The name of the cluster to create from the snapshot or cluster snapshot.
+-- This parameter isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-snapshot-id@
+--
+-- 'snapshotIdentifier', 'restoreDBClusterFromSnapshot_snapshotIdentifier' - The identifier for the snapshot or cluster snapshot to restore from.
+--
+-- You can use either the name or the Amazon Resource Name (ARN) to specify
+-- a cluster snapshot. However, you can use only the ARN to specify a
+-- snapshot.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing snapshot.
+--
+-- 'engine', 'restoreDBClusterFromSnapshot_engine' - The database engine to use for the new cluster.
+--
+-- Default: The same as source.
+--
+-- Constraint: Must be compatible with the engine of the source.
+newRestoreDBClusterFromSnapshot ::
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  -- | 'snapshotIdentifier'
+  Prelude.Text ->
+  -- | 'engine'
+  Prelude.Text ->
+  RestoreDBClusterFromSnapshot
+newRestoreDBClusterFromSnapshot
+  pDBClusterIdentifier_
+  pSnapshotIdentifier_
+  pEngine_ =
+    RestoreDBClusterFromSnapshot'
+      { availabilityZones =
+          Prelude.Nothing,
+        dbSubnetGroupName = Prelude.Nothing,
+        deletionProtection = Prelude.Nothing,
+        enableCloudwatchLogsExports = Prelude.Nothing,
+        engineVersion = Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        port = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        vpcSecurityGroupIds = Prelude.Nothing,
+        dbClusterIdentifier = pDBClusterIdentifier_,
+        snapshotIdentifier = pSnapshotIdentifier_,
+        engine = pEngine_
+      }
+
+-- | Provides the list of Amazon EC2 Availability Zones that instances in the
+-- restored DB cluster can be created in.
+restoreDBClusterFromSnapshot_availabilityZones :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe [Prelude.Text])
+restoreDBClusterFromSnapshot_availabilityZones = Lens.lens (\RestoreDBClusterFromSnapshot' {availabilityZones} -> availabilityZones) (\s@RestoreDBClusterFromSnapshot' {} a -> s {availabilityZones = a} :: RestoreDBClusterFromSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the subnet group to use for the new cluster.
+--
+-- Constraints: If provided, must match the name of an existing
+-- @DBSubnetGroup@.
+--
+-- Example: @mySubnetgroup@
+restoreDBClusterFromSnapshot_dbSubnetGroupName :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe Prelude.Text)
+restoreDBClusterFromSnapshot_dbSubnetGroupName = Lens.lens (\RestoreDBClusterFromSnapshot' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@RestoreDBClusterFromSnapshot' {} a -> s {dbSubnetGroupName = a} :: RestoreDBClusterFromSnapshot)
+
+-- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+restoreDBClusterFromSnapshot_deletionProtection :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe Prelude.Bool)
+restoreDBClusterFromSnapshot_deletionProtection = Lens.lens (\RestoreDBClusterFromSnapshot' {deletionProtection} -> deletionProtection) (\s@RestoreDBClusterFromSnapshot' {} a -> s {deletionProtection = a} :: RestoreDBClusterFromSnapshot)
+
+-- | A list of log types that must be enabled for exporting to Amazon
+-- CloudWatch Logs.
+restoreDBClusterFromSnapshot_enableCloudwatchLogsExports :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe [Prelude.Text])
+restoreDBClusterFromSnapshot_enableCloudwatchLogsExports = Lens.lens (\RestoreDBClusterFromSnapshot' {enableCloudwatchLogsExports} -> enableCloudwatchLogsExports) (\s@RestoreDBClusterFromSnapshot' {} a -> s {enableCloudwatchLogsExports = a} :: RestoreDBClusterFromSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | The version of the database engine to use for the new cluster.
+restoreDBClusterFromSnapshot_engineVersion :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe Prelude.Text)
+restoreDBClusterFromSnapshot_engineVersion = Lens.lens (\RestoreDBClusterFromSnapshot' {engineVersion} -> engineVersion) (\s@RestoreDBClusterFromSnapshot' {} a -> s {engineVersion = a} :: RestoreDBClusterFromSnapshot)
+
+-- | The KMS key identifier to use when restoring an encrypted cluster from a
+-- DB snapshot or cluster snapshot.
+--
+-- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+-- encryption key. If you are restoring a cluster with the same Amazon Web
+-- Services account that owns the KMS encryption key used to encrypt the
+-- new cluster, then you can use the KMS key alias instead of the ARN for
+-- the KMS encryption key.
+--
+-- If you do not specify a value for the @KmsKeyId@ parameter, then the
+-- following occurs:
+--
+-- -   If the snapshot or cluster snapshot in @SnapshotIdentifier@ is
+--     encrypted, then the restored cluster is encrypted using the KMS key
+--     that was used to encrypt the snapshot or the cluster snapshot.
+--
+-- -   If the snapshot or the cluster snapshot in @SnapshotIdentifier@ is
+--     not encrypted, then the restored DB cluster is not encrypted.
+restoreDBClusterFromSnapshot_kmsKeyId :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe Prelude.Text)
+restoreDBClusterFromSnapshot_kmsKeyId = Lens.lens (\RestoreDBClusterFromSnapshot' {kmsKeyId} -> kmsKeyId) (\s@RestoreDBClusterFromSnapshot' {} a -> s {kmsKeyId = a} :: RestoreDBClusterFromSnapshot)
+
+-- | The port number on which the new cluster accepts connections.
+--
+-- Constraints: Must be a value from @1150@ to @65535@.
+--
+-- Default: The same port as the original cluster.
+restoreDBClusterFromSnapshot_port :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe Prelude.Int)
+restoreDBClusterFromSnapshot_port = Lens.lens (\RestoreDBClusterFromSnapshot' {port} -> port) (\s@RestoreDBClusterFromSnapshot' {} a -> s {port = a} :: RestoreDBClusterFromSnapshot)
+
+-- | The tags to be assigned to the restored cluster.
+restoreDBClusterFromSnapshot_tags :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe [Tag])
+restoreDBClusterFromSnapshot_tags = Lens.lens (\RestoreDBClusterFromSnapshot' {tags} -> tags) (\s@RestoreDBClusterFromSnapshot' {} a -> s {tags = a} :: RestoreDBClusterFromSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of virtual private cloud (VPC) security groups that the new
+-- cluster will belong to.
+restoreDBClusterFromSnapshot_vpcSecurityGroupIds :: Lens.Lens' RestoreDBClusterFromSnapshot (Prelude.Maybe [Prelude.Text])
+restoreDBClusterFromSnapshot_vpcSecurityGroupIds = Lens.lens (\RestoreDBClusterFromSnapshot' {vpcSecurityGroupIds} -> vpcSecurityGroupIds) (\s@RestoreDBClusterFromSnapshot' {} a -> s {vpcSecurityGroupIds = a} :: RestoreDBClusterFromSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the cluster to create from the snapshot or cluster snapshot.
+-- This parameter isn\'t case sensitive.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- Example: @my-snapshot-id@
+restoreDBClusterFromSnapshot_dbClusterIdentifier :: Lens.Lens' RestoreDBClusterFromSnapshot Prelude.Text
+restoreDBClusterFromSnapshot_dbClusterIdentifier = Lens.lens (\RestoreDBClusterFromSnapshot' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@RestoreDBClusterFromSnapshot' {} a -> s {dbClusterIdentifier = a} :: RestoreDBClusterFromSnapshot)
+
+-- | The identifier for the snapshot or cluster snapshot to restore from.
+--
+-- You can use either the name or the Amazon Resource Name (ARN) to specify
+-- a cluster snapshot. However, you can use only the ARN to specify a
+-- snapshot.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing snapshot.
+restoreDBClusterFromSnapshot_snapshotIdentifier :: Lens.Lens' RestoreDBClusterFromSnapshot Prelude.Text
+restoreDBClusterFromSnapshot_snapshotIdentifier = Lens.lens (\RestoreDBClusterFromSnapshot' {snapshotIdentifier} -> snapshotIdentifier) (\s@RestoreDBClusterFromSnapshot' {} a -> s {snapshotIdentifier = a} :: RestoreDBClusterFromSnapshot)
+
+-- | The database engine to use for the new cluster.
+--
+-- Default: The same as source.
+--
+-- Constraint: Must be compatible with the engine of the source.
+restoreDBClusterFromSnapshot_engine :: Lens.Lens' RestoreDBClusterFromSnapshot Prelude.Text
+restoreDBClusterFromSnapshot_engine = Lens.lens (\RestoreDBClusterFromSnapshot' {engine} -> engine) (\s@RestoreDBClusterFromSnapshot' {} a -> s {engine = a} :: RestoreDBClusterFromSnapshot)
+
+instance Core.AWSRequest RestoreDBClusterFromSnapshot where
+  type
+    AWSResponse RestoreDBClusterFromSnapshot =
+      RestoreDBClusterFromSnapshotResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "RestoreDBClusterFromSnapshotResult"
+      ( \s h x ->
+          RestoreDBClusterFromSnapshotResponse'
+            Prelude.<$> (x Data..@? "DBCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    RestoreDBClusterFromSnapshot
+  where
+  hashWithSalt _salt RestoreDBClusterFromSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZones
+      `Prelude.hashWithSalt` dbSubnetGroupName
+      `Prelude.hashWithSalt` deletionProtection
+      `Prelude.hashWithSalt` enableCloudwatchLogsExports
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` vpcSecurityGroupIds
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` snapshotIdentifier
+      `Prelude.hashWithSalt` engine
+
+instance Prelude.NFData RestoreDBClusterFromSnapshot where
+  rnf RestoreDBClusterFromSnapshot' {..} =
+    Prelude.rnf availabilityZones
+      `Prelude.seq` Prelude.rnf dbSubnetGroupName
+      `Prelude.seq` Prelude.rnf deletionProtection
+      `Prelude.seq` Prelude.rnf enableCloudwatchLogsExports
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf vpcSecurityGroupIds
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf snapshotIdentifier
+      `Prelude.seq` Prelude.rnf engine
+
+instance Data.ToHeaders RestoreDBClusterFromSnapshot where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath RestoreDBClusterFromSnapshot where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RestoreDBClusterFromSnapshot where
+  toQuery RestoreDBClusterFromSnapshot' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "RestoreDBClusterFromSnapshot" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "AvailabilityZones"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "AvailabilityZone"
+                Prelude.<$> availabilityZones
+            ),
+        "DBSubnetGroupName" Data.=: dbSubnetGroupName,
+        "DeletionProtection" Data.=: deletionProtection,
+        "EnableCloudwatchLogsExports"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> enableCloudwatchLogsExports
+            ),
+        "EngineVersion" Data.=: engineVersion,
+        "KmsKeyId" Data.=: kmsKeyId,
+        "Port" Data.=: port,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "VpcSecurityGroupIds"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "VpcSecurityGroupId"
+                Prelude.<$> vpcSecurityGroupIds
+            ),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier,
+        "SnapshotIdentifier" Data.=: snapshotIdentifier,
+        "Engine" Data.=: engine
+      ]
+
+-- | /See:/ 'newRestoreDBClusterFromSnapshotResponse' smart constructor.
+data RestoreDBClusterFromSnapshotResponse = RestoreDBClusterFromSnapshotResponse'
+  { dbCluster :: Prelude.Maybe DBCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreDBClusterFromSnapshotResponse' 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:
+--
+-- 'dbCluster', 'restoreDBClusterFromSnapshotResponse_dbCluster' - Undocumented member.
+--
+-- 'httpStatus', 'restoreDBClusterFromSnapshotResponse_httpStatus' - The response's http status code.
+newRestoreDBClusterFromSnapshotResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RestoreDBClusterFromSnapshotResponse
+newRestoreDBClusterFromSnapshotResponse pHttpStatus_ =
+  RestoreDBClusterFromSnapshotResponse'
+    { dbCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+restoreDBClusterFromSnapshotResponse_dbCluster :: Lens.Lens' RestoreDBClusterFromSnapshotResponse (Prelude.Maybe DBCluster)
+restoreDBClusterFromSnapshotResponse_dbCluster = Lens.lens (\RestoreDBClusterFromSnapshotResponse' {dbCluster} -> dbCluster) (\s@RestoreDBClusterFromSnapshotResponse' {} a -> s {dbCluster = a} :: RestoreDBClusterFromSnapshotResponse)
+
+-- | The response's http status code.
+restoreDBClusterFromSnapshotResponse_httpStatus :: Lens.Lens' RestoreDBClusterFromSnapshotResponse Prelude.Int
+restoreDBClusterFromSnapshotResponse_httpStatus = Lens.lens (\RestoreDBClusterFromSnapshotResponse' {httpStatus} -> httpStatus) (\s@RestoreDBClusterFromSnapshotResponse' {} a -> s {httpStatus = a} :: RestoreDBClusterFromSnapshotResponse)
+
+instance
+  Prelude.NFData
+    RestoreDBClusterFromSnapshotResponse
+  where
+  rnf RestoreDBClusterFromSnapshotResponse' {..} =
+    Prelude.rnf dbCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/RestoreDBClusterToPointInTime.hs b/gen/Amazonka/DocumentDB/RestoreDBClusterToPointInTime.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/RestoreDBClusterToPointInTime.hs
@@ -0,0 +1,585 @@
+{-# 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.DocumentDB.RestoreDBClusterToPointInTime
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Restores a cluster to an arbitrary point in time. Users can restore to
+-- any point in time before @LatestRestorableTime@ for up to
+-- @BackupRetentionPeriod@ days. The target cluster is created from the
+-- source cluster with the same configuration as the original cluster,
+-- except that the new cluster is created with the default security group.
+module Amazonka.DocumentDB.RestoreDBClusterToPointInTime
+  ( -- * Creating a Request
+    RestoreDBClusterToPointInTime (..),
+    newRestoreDBClusterToPointInTime,
+
+    -- * Request Lenses
+    restoreDBClusterToPointInTime_dbSubnetGroupName,
+    restoreDBClusterToPointInTime_deletionProtection,
+    restoreDBClusterToPointInTime_enableCloudwatchLogsExports,
+    restoreDBClusterToPointInTime_kmsKeyId,
+    restoreDBClusterToPointInTime_port,
+    restoreDBClusterToPointInTime_restoreToTime,
+    restoreDBClusterToPointInTime_restoreType,
+    restoreDBClusterToPointInTime_tags,
+    restoreDBClusterToPointInTime_useLatestRestorableTime,
+    restoreDBClusterToPointInTime_vpcSecurityGroupIds,
+    restoreDBClusterToPointInTime_dbClusterIdentifier,
+    restoreDBClusterToPointInTime_sourceDBClusterIdentifier,
+
+    -- * Destructuring the Response
+    RestoreDBClusterToPointInTimeResponse (..),
+    newRestoreDBClusterToPointInTimeResponse,
+
+    -- * Response Lenses
+    restoreDBClusterToPointInTimeResponse_dbCluster,
+    restoreDBClusterToPointInTimeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Represents the input to RestoreDBClusterToPointInTime.
+--
+-- /See:/ 'newRestoreDBClusterToPointInTime' smart constructor.
+data RestoreDBClusterToPointInTime = RestoreDBClusterToPointInTime'
+  { -- | The subnet group name to use for the new cluster.
+    --
+    -- Constraints: If provided, must match the name of an existing
+    -- @DBSubnetGroup@.
+    --
+    -- Example: @mySubnetgroup@
+    dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+    -- is enabled, the cluster cannot be deleted unless it is modified and
+    -- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+    -- from being accidentally deleted.
+    deletionProtection :: Prelude.Maybe Prelude.Bool,
+    -- | A list of log types that must be enabled for exporting to Amazon
+    -- CloudWatch Logs.
+    enableCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
+    -- | The KMS key identifier to use when restoring an encrypted cluster from
+    -- an encrypted cluster.
+    --
+    -- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+    -- encryption key. If you are restoring a cluster with the same Amazon Web
+    -- Services account that owns the KMS encryption key used to encrypt the
+    -- new cluster, then you can use the KMS key alias instead of the ARN for
+    -- the KMS encryption key.
+    --
+    -- You can restore to a new cluster and encrypt the new cluster with an KMS
+    -- key that is different from the KMS key used to encrypt the source
+    -- cluster. The new DB cluster is encrypted with the KMS key identified by
+    -- the @KmsKeyId@ parameter.
+    --
+    -- If you do not specify a value for the @KmsKeyId@ parameter, then the
+    -- following occurs:
+    --
+    -- -   If the cluster is encrypted, then the restored cluster is encrypted
+    --     using the KMS key that was used to encrypt the source cluster.
+    --
+    -- -   If the cluster is not encrypted, then the restored cluster is not
+    --     encrypted.
+    --
+    -- If @DBClusterIdentifier@ refers to a cluster that is not encrypted, then
+    -- the restore request is rejected.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The port number on which the new cluster accepts connections.
+    --
+    -- Constraints: Must be a value from @1150@ to @65535@.
+    --
+    -- Default: The default port for the engine.
+    port :: Prelude.Maybe Prelude.Int,
+    -- | The date and time to restore the cluster to.
+    --
+    -- Valid values: A time in Universal Coordinated Time (UTC) format.
+    --
+    -- Constraints:
+    --
+    -- -   Must be before the latest restorable time for the instance.
+    --
+    -- -   Must be specified if the @UseLatestRestorableTime@ parameter is not
+    --     provided.
+    --
+    -- -   Cannot be specified if the @UseLatestRestorableTime@ parameter is
+    --     @true@.
+    --
+    -- -   Cannot be specified if the @RestoreType@ parameter is
+    --     @copy-on-write@.
+    --
+    -- Example: @2015-03-07T23:45:00Z@
+    restoreToTime :: Prelude.Maybe Data.ISO8601,
+    -- | The type of restore to be performed. You can specify one of the
+    -- following values:
+    --
+    -- -   @full-copy@ - The new DB cluster is restored as a full copy of the
+    --     source DB cluster.
+    --
+    -- -   @copy-on-write@ - The new DB cluster is restored as a clone of the
+    --     source DB cluster.
+    --
+    -- If you don\'t specify a @RestoreType@ value, then the new DB cluster is
+    -- restored as a full copy of the source DB cluster.
+    restoreType :: Prelude.Maybe Prelude.Text,
+    -- | The tags to be assigned to the restored cluster.
+    tags :: Prelude.Maybe [Tag],
+    -- | A value that is set to @true@ to restore the cluster to the latest
+    -- restorable backup time, and @false@ otherwise.
+    --
+    -- Default: @false@
+    --
+    -- Constraints: Cannot be specified if the @RestoreToTime@ parameter is
+    -- provided.
+    useLatestRestorableTime :: Prelude.Maybe Prelude.Bool,
+    -- | A list of VPC security groups that the new cluster belongs to.
+    vpcSecurityGroupIds :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the new cluster to be created.
+    --
+    -- Constraints:
+    --
+    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    dbClusterIdentifier :: Prelude.Text,
+    -- | The identifier of the source cluster from which to restore.
+    --
+    -- Constraints:
+    --
+    -- -   Must match the identifier of an existing @DBCluster@.
+    sourceDBClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreDBClusterToPointInTime' 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:
+--
+-- 'dbSubnetGroupName', 'restoreDBClusterToPointInTime_dbSubnetGroupName' - The subnet group name to use for the new cluster.
+--
+-- Constraints: If provided, must match the name of an existing
+-- @DBSubnetGroup@.
+--
+-- Example: @mySubnetgroup@
+--
+-- 'deletionProtection', 'restoreDBClusterToPointInTime_deletionProtection' - Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+--
+-- 'enableCloudwatchLogsExports', 'restoreDBClusterToPointInTime_enableCloudwatchLogsExports' - A list of log types that must be enabled for exporting to Amazon
+-- CloudWatch Logs.
+--
+-- 'kmsKeyId', 'restoreDBClusterToPointInTime_kmsKeyId' - The KMS key identifier to use when restoring an encrypted cluster from
+-- an encrypted cluster.
+--
+-- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+-- encryption key. If you are restoring a cluster with the same Amazon Web
+-- Services account that owns the KMS encryption key used to encrypt the
+-- new cluster, then you can use the KMS key alias instead of the ARN for
+-- the KMS encryption key.
+--
+-- You can restore to a new cluster and encrypt the new cluster with an KMS
+-- key that is different from the KMS key used to encrypt the source
+-- cluster. The new DB cluster is encrypted with the KMS key identified by
+-- the @KmsKeyId@ parameter.
+--
+-- If you do not specify a value for the @KmsKeyId@ parameter, then the
+-- following occurs:
+--
+-- -   If the cluster is encrypted, then the restored cluster is encrypted
+--     using the KMS key that was used to encrypt the source cluster.
+--
+-- -   If the cluster is not encrypted, then the restored cluster is not
+--     encrypted.
+--
+-- If @DBClusterIdentifier@ refers to a cluster that is not encrypted, then
+-- the restore request is rejected.
+--
+-- 'port', 'restoreDBClusterToPointInTime_port' - The port number on which the new cluster accepts connections.
+--
+-- Constraints: Must be a value from @1150@ to @65535@.
+--
+-- Default: The default port for the engine.
+--
+-- 'restoreToTime', 'restoreDBClusterToPointInTime_restoreToTime' - The date and time to restore the cluster to.
+--
+-- Valid values: A time in Universal Coordinated Time (UTC) format.
+--
+-- Constraints:
+--
+-- -   Must be before the latest restorable time for the instance.
+--
+-- -   Must be specified if the @UseLatestRestorableTime@ parameter is not
+--     provided.
+--
+-- -   Cannot be specified if the @UseLatestRestorableTime@ parameter is
+--     @true@.
+--
+-- -   Cannot be specified if the @RestoreType@ parameter is
+--     @copy-on-write@.
+--
+-- Example: @2015-03-07T23:45:00Z@
+--
+-- 'restoreType', 'restoreDBClusterToPointInTime_restoreType' - The type of restore to be performed. You can specify one of the
+-- following values:
+--
+-- -   @full-copy@ - The new DB cluster is restored as a full copy of the
+--     source DB cluster.
+--
+-- -   @copy-on-write@ - The new DB cluster is restored as a clone of the
+--     source DB cluster.
+--
+-- If you don\'t specify a @RestoreType@ value, then the new DB cluster is
+-- restored as a full copy of the source DB cluster.
+--
+-- 'tags', 'restoreDBClusterToPointInTime_tags' - The tags to be assigned to the restored cluster.
+--
+-- 'useLatestRestorableTime', 'restoreDBClusterToPointInTime_useLatestRestorableTime' - A value that is set to @true@ to restore the cluster to the latest
+-- restorable backup time, and @false@ otherwise.
+--
+-- Default: @false@
+--
+-- Constraints: Cannot be specified if the @RestoreToTime@ parameter is
+-- provided.
+--
+-- 'vpcSecurityGroupIds', 'restoreDBClusterToPointInTime_vpcSecurityGroupIds' - A list of VPC security groups that the new cluster belongs to.
+--
+-- 'dbClusterIdentifier', 'restoreDBClusterToPointInTime_dbClusterIdentifier' - The name of the new cluster to be created.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- 'sourceDBClusterIdentifier', 'restoreDBClusterToPointInTime_sourceDBClusterIdentifier' - The identifier of the source cluster from which to restore.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBCluster@.
+newRestoreDBClusterToPointInTime ::
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  -- | 'sourceDBClusterIdentifier'
+  Prelude.Text ->
+  RestoreDBClusterToPointInTime
+newRestoreDBClusterToPointInTime
+  pDBClusterIdentifier_
+  pSourceDBClusterIdentifier_ =
+    RestoreDBClusterToPointInTime'
+      { dbSubnetGroupName =
+          Prelude.Nothing,
+        deletionProtection = Prelude.Nothing,
+        enableCloudwatchLogsExports =
+          Prelude.Nothing,
+        kmsKeyId = Prelude.Nothing,
+        port = Prelude.Nothing,
+        restoreToTime = Prelude.Nothing,
+        restoreType = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        useLatestRestorableTime = Prelude.Nothing,
+        vpcSecurityGroupIds = Prelude.Nothing,
+        dbClusterIdentifier = pDBClusterIdentifier_,
+        sourceDBClusterIdentifier =
+          pSourceDBClusterIdentifier_
+      }
+
+-- | The subnet group name to use for the new cluster.
+--
+-- Constraints: If provided, must match the name of an existing
+-- @DBSubnetGroup@.
+--
+-- Example: @mySubnetgroup@
+restoreDBClusterToPointInTime_dbSubnetGroupName :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe Prelude.Text)
+restoreDBClusterToPointInTime_dbSubnetGroupName = Lens.lens (\RestoreDBClusterToPointInTime' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@RestoreDBClusterToPointInTime' {} a -> s {dbSubnetGroupName = a} :: RestoreDBClusterToPointInTime)
+
+-- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+restoreDBClusterToPointInTime_deletionProtection :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe Prelude.Bool)
+restoreDBClusterToPointInTime_deletionProtection = Lens.lens (\RestoreDBClusterToPointInTime' {deletionProtection} -> deletionProtection) (\s@RestoreDBClusterToPointInTime' {} a -> s {deletionProtection = a} :: RestoreDBClusterToPointInTime)
+
+-- | A list of log types that must be enabled for exporting to Amazon
+-- CloudWatch Logs.
+restoreDBClusterToPointInTime_enableCloudwatchLogsExports :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe [Prelude.Text])
+restoreDBClusterToPointInTime_enableCloudwatchLogsExports = Lens.lens (\RestoreDBClusterToPointInTime' {enableCloudwatchLogsExports} -> enableCloudwatchLogsExports) (\s@RestoreDBClusterToPointInTime' {} a -> s {enableCloudwatchLogsExports = a} :: RestoreDBClusterToPointInTime) Prelude.. Lens.mapping Lens.coerced
+
+-- | The KMS key identifier to use when restoring an encrypted cluster from
+-- an encrypted cluster.
+--
+-- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
+-- encryption key. If you are restoring a cluster with the same Amazon Web
+-- Services account that owns the KMS encryption key used to encrypt the
+-- new cluster, then you can use the KMS key alias instead of the ARN for
+-- the KMS encryption key.
+--
+-- You can restore to a new cluster and encrypt the new cluster with an KMS
+-- key that is different from the KMS key used to encrypt the source
+-- cluster. The new DB cluster is encrypted with the KMS key identified by
+-- the @KmsKeyId@ parameter.
+--
+-- If you do not specify a value for the @KmsKeyId@ parameter, then the
+-- following occurs:
+--
+-- -   If the cluster is encrypted, then the restored cluster is encrypted
+--     using the KMS key that was used to encrypt the source cluster.
+--
+-- -   If the cluster is not encrypted, then the restored cluster is not
+--     encrypted.
+--
+-- If @DBClusterIdentifier@ refers to a cluster that is not encrypted, then
+-- the restore request is rejected.
+restoreDBClusterToPointInTime_kmsKeyId :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe Prelude.Text)
+restoreDBClusterToPointInTime_kmsKeyId = Lens.lens (\RestoreDBClusterToPointInTime' {kmsKeyId} -> kmsKeyId) (\s@RestoreDBClusterToPointInTime' {} a -> s {kmsKeyId = a} :: RestoreDBClusterToPointInTime)
+
+-- | The port number on which the new cluster accepts connections.
+--
+-- Constraints: Must be a value from @1150@ to @65535@.
+--
+-- Default: The default port for the engine.
+restoreDBClusterToPointInTime_port :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe Prelude.Int)
+restoreDBClusterToPointInTime_port = Lens.lens (\RestoreDBClusterToPointInTime' {port} -> port) (\s@RestoreDBClusterToPointInTime' {} a -> s {port = a} :: RestoreDBClusterToPointInTime)
+
+-- | The date and time to restore the cluster to.
+--
+-- Valid values: A time in Universal Coordinated Time (UTC) format.
+--
+-- Constraints:
+--
+-- -   Must be before the latest restorable time for the instance.
+--
+-- -   Must be specified if the @UseLatestRestorableTime@ parameter is not
+--     provided.
+--
+-- -   Cannot be specified if the @UseLatestRestorableTime@ parameter is
+--     @true@.
+--
+-- -   Cannot be specified if the @RestoreType@ parameter is
+--     @copy-on-write@.
+--
+-- Example: @2015-03-07T23:45:00Z@
+restoreDBClusterToPointInTime_restoreToTime :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe Prelude.UTCTime)
+restoreDBClusterToPointInTime_restoreToTime = Lens.lens (\RestoreDBClusterToPointInTime' {restoreToTime} -> restoreToTime) (\s@RestoreDBClusterToPointInTime' {} a -> s {restoreToTime = a} :: RestoreDBClusterToPointInTime) Prelude.. Lens.mapping Data._Time
+
+-- | The type of restore to be performed. You can specify one of the
+-- following values:
+--
+-- -   @full-copy@ - The new DB cluster is restored as a full copy of the
+--     source DB cluster.
+--
+-- -   @copy-on-write@ - The new DB cluster is restored as a clone of the
+--     source DB cluster.
+--
+-- If you don\'t specify a @RestoreType@ value, then the new DB cluster is
+-- restored as a full copy of the source DB cluster.
+restoreDBClusterToPointInTime_restoreType :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe Prelude.Text)
+restoreDBClusterToPointInTime_restoreType = Lens.lens (\RestoreDBClusterToPointInTime' {restoreType} -> restoreType) (\s@RestoreDBClusterToPointInTime' {} a -> s {restoreType = a} :: RestoreDBClusterToPointInTime)
+
+-- | The tags to be assigned to the restored cluster.
+restoreDBClusterToPointInTime_tags :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe [Tag])
+restoreDBClusterToPointInTime_tags = Lens.lens (\RestoreDBClusterToPointInTime' {tags} -> tags) (\s@RestoreDBClusterToPointInTime' {} a -> s {tags = a} :: RestoreDBClusterToPointInTime) Prelude.. Lens.mapping Lens.coerced
+
+-- | A value that is set to @true@ to restore the cluster to the latest
+-- restorable backup time, and @false@ otherwise.
+--
+-- Default: @false@
+--
+-- Constraints: Cannot be specified if the @RestoreToTime@ parameter is
+-- provided.
+restoreDBClusterToPointInTime_useLatestRestorableTime :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe Prelude.Bool)
+restoreDBClusterToPointInTime_useLatestRestorableTime = Lens.lens (\RestoreDBClusterToPointInTime' {useLatestRestorableTime} -> useLatestRestorableTime) (\s@RestoreDBClusterToPointInTime' {} a -> s {useLatestRestorableTime = a} :: RestoreDBClusterToPointInTime)
+
+-- | A list of VPC security groups that the new cluster belongs to.
+restoreDBClusterToPointInTime_vpcSecurityGroupIds :: Lens.Lens' RestoreDBClusterToPointInTime (Prelude.Maybe [Prelude.Text])
+restoreDBClusterToPointInTime_vpcSecurityGroupIds = Lens.lens (\RestoreDBClusterToPointInTime' {vpcSecurityGroupIds} -> vpcSecurityGroupIds) (\s@RestoreDBClusterToPointInTime' {} a -> s {vpcSecurityGroupIds = a} :: RestoreDBClusterToPointInTime) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the new cluster to be created.
+--
+-- Constraints:
+--
+-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+restoreDBClusterToPointInTime_dbClusterIdentifier :: Lens.Lens' RestoreDBClusterToPointInTime Prelude.Text
+restoreDBClusterToPointInTime_dbClusterIdentifier = Lens.lens (\RestoreDBClusterToPointInTime' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@RestoreDBClusterToPointInTime' {} a -> s {dbClusterIdentifier = a} :: RestoreDBClusterToPointInTime)
+
+-- | The identifier of the source cluster from which to restore.
+--
+-- Constraints:
+--
+-- -   Must match the identifier of an existing @DBCluster@.
+restoreDBClusterToPointInTime_sourceDBClusterIdentifier :: Lens.Lens' RestoreDBClusterToPointInTime Prelude.Text
+restoreDBClusterToPointInTime_sourceDBClusterIdentifier = Lens.lens (\RestoreDBClusterToPointInTime' {sourceDBClusterIdentifier} -> sourceDBClusterIdentifier) (\s@RestoreDBClusterToPointInTime' {} a -> s {sourceDBClusterIdentifier = a} :: RestoreDBClusterToPointInTime)
+
+instance
+  Core.AWSRequest
+    RestoreDBClusterToPointInTime
+  where
+  type
+    AWSResponse RestoreDBClusterToPointInTime =
+      RestoreDBClusterToPointInTimeResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "RestoreDBClusterToPointInTimeResult"
+      ( \s h x ->
+          RestoreDBClusterToPointInTimeResponse'
+            Prelude.<$> (x Data..@? "DBCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    RestoreDBClusterToPointInTime
+  where
+  hashWithSalt _salt RestoreDBClusterToPointInTime' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbSubnetGroupName
+      `Prelude.hashWithSalt` deletionProtection
+      `Prelude.hashWithSalt` enableCloudwatchLogsExports
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` restoreToTime
+      `Prelude.hashWithSalt` restoreType
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` useLatestRestorableTime
+      `Prelude.hashWithSalt` vpcSecurityGroupIds
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` sourceDBClusterIdentifier
+
+instance Prelude.NFData RestoreDBClusterToPointInTime where
+  rnf RestoreDBClusterToPointInTime' {..} =
+    Prelude.rnf dbSubnetGroupName
+      `Prelude.seq` Prelude.rnf deletionProtection
+      `Prelude.seq` Prelude.rnf enableCloudwatchLogsExports
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf restoreToTime
+      `Prelude.seq` Prelude.rnf restoreType
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf useLatestRestorableTime
+      `Prelude.seq` Prelude.rnf vpcSecurityGroupIds
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf sourceDBClusterIdentifier
+
+instance Data.ToHeaders RestoreDBClusterToPointInTime where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath RestoreDBClusterToPointInTime where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RestoreDBClusterToPointInTime where
+  toQuery RestoreDBClusterToPointInTime' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "RestoreDBClusterToPointInTime" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBSubnetGroupName" Data.=: dbSubnetGroupName,
+        "DeletionProtection" Data.=: deletionProtection,
+        "EnableCloudwatchLogsExports"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> enableCloudwatchLogsExports
+            ),
+        "KmsKeyId" Data.=: kmsKeyId,
+        "Port" Data.=: port,
+        "RestoreToTime" Data.=: restoreToTime,
+        "RestoreType" Data.=: restoreType,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "Tag" Prelude.<$> tags),
+        "UseLatestRestorableTime"
+          Data.=: useLatestRestorableTime,
+        "VpcSecurityGroupIds"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "VpcSecurityGroupId"
+                Prelude.<$> vpcSecurityGroupIds
+            ),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier,
+        "SourceDBClusterIdentifier"
+          Data.=: sourceDBClusterIdentifier
+      ]
+
+-- | /See:/ 'newRestoreDBClusterToPointInTimeResponse' smart constructor.
+data RestoreDBClusterToPointInTimeResponse = RestoreDBClusterToPointInTimeResponse'
+  { dbCluster :: Prelude.Maybe DBCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreDBClusterToPointInTimeResponse' 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:
+--
+-- 'dbCluster', 'restoreDBClusterToPointInTimeResponse_dbCluster' - Undocumented member.
+--
+-- 'httpStatus', 'restoreDBClusterToPointInTimeResponse_httpStatus' - The response's http status code.
+newRestoreDBClusterToPointInTimeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RestoreDBClusterToPointInTimeResponse
+newRestoreDBClusterToPointInTimeResponse pHttpStatus_ =
+  RestoreDBClusterToPointInTimeResponse'
+    { dbCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+restoreDBClusterToPointInTimeResponse_dbCluster :: Lens.Lens' RestoreDBClusterToPointInTimeResponse (Prelude.Maybe DBCluster)
+restoreDBClusterToPointInTimeResponse_dbCluster = Lens.lens (\RestoreDBClusterToPointInTimeResponse' {dbCluster} -> dbCluster) (\s@RestoreDBClusterToPointInTimeResponse' {} a -> s {dbCluster = a} :: RestoreDBClusterToPointInTimeResponse)
+
+-- | The response's http status code.
+restoreDBClusterToPointInTimeResponse_httpStatus :: Lens.Lens' RestoreDBClusterToPointInTimeResponse Prelude.Int
+restoreDBClusterToPointInTimeResponse_httpStatus = Lens.lens (\RestoreDBClusterToPointInTimeResponse' {httpStatus} -> httpStatus) (\s@RestoreDBClusterToPointInTimeResponse' {} a -> s {httpStatus = a} :: RestoreDBClusterToPointInTimeResponse)
+
+instance
+  Prelude.NFData
+    RestoreDBClusterToPointInTimeResponse
+  where
+  rnf RestoreDBClusterToPointInTimeResponse' {..} =
+    Prelude.rnf dbCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/StartDBCluster.hs b/gen/Amazonka/DocumentDB/StartDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/StartDBCluster.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.DocumentDB.StartDBCluster
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Restarts the stopped cluster that is specified by @DBClusterIdentifier@.
+-- For more information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/db-cluster-stop-start.html Stopping and Starting an Amazon DocumentDB Cluster>.
+module Amazonka.DocumentDB.StartDBCluster
+  ( -- * Creating a Request
+    StartDBCluster (..),
+    newStartDBCluster,
+
+    -- * Request Lenses
+    startDBCluster_dbClusterIdentifier,
+
+    -- * Destructuring the Response
+    StartDBClusterResponse (..),
+    newStartDBClusterResponse,
+
+    -- * Response Lenses
+    startDBClusterResponse_dbCluster,
+    startDBClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartDBCluster' smart constructor.
+data StartDBCluster = StartDBCluster'
+  { -- | The identifier of the cluster to restart. Example:
+    -- @docdb-2019-05-28-15-24-52@
+    dbClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartDBCluster' 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:
+--
+-- 'dbClusterIdentifier', 'startDBCluster_dbClusterIdentifier' - The identifier of the cluster to restart. Example:
+-- @docdb-2019-05-28-15-24-52@
+newStartDBCluster ::
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  StartDBCluster
+newStartDBCluster pDBClusterIdentifier_ =
+  StartDBCluster'
+    { dbClusterIdentifier =
+        pDBClusterIdentifier_
+    }
+
+-- | The identifier of the cluster to restart. Example:
+-- @docdb-2019-05-28-15-24-52@
+startDBCluster_dbClusterIdentifier :: Lens.Lens' StartDBCluster Prelude.Text
+startDBCluster_dbClusterIdentifier = Lens.lens (\StartDBCluster' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@StartDBCluster' {} a -> s {dbClusterIdentifier = a} :: StartDBCluster)
+
+instance Core.AWSRequest StartDBCluster where
+  type
+    AWSResponse StartDBCluster =
+      StartDBClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "StartDBClusterResult"
+      ( \s h x ->
+          StartDBClusterResponse'
+            Prelude.<$> (x Data..@? "DBCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartDBCluster where
+  hashWithSalt _salt StartDBCluster' {..} =
+    _salt `Prelude.hashWithSalt` dbClusterIdentifier
+
+instance Prelude.NFData StartDBCluster where
+  rnf StartDBCluster' {..} =
+    Prelude.rnf dbClusterIdentifier
+
+instance Data.ToHeaders StartDBCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath StartDBCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartDBCluster where
+  toQuery StartDBCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("StartDBCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier
+      ]
+
+-- | /See:/ 'newStartDBClusterResponse' smart constructor.
+data StartDBClusterResponse = StartDBClusterResponse'
+  { dbCluster :: Prelude.Maybe DBCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartDBClusterResponse' 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:
+--
+-- 'dbCluster', 'startDBClusterResponse_dbCluster' - Undocumented member.
+--
+-- 'httpStatus', 'startDBClusterResponse_httpStatus' - The response's http status code.
+newStartDBClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartDBClusterResponse
+newStartDBClusterResponse pHttpStatus_ =
+  StartDBClusterResponse'
+    { dbCluster =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+startDBClusterResponse_dbCluster :: Lens.Lens' StartDBClusterResponse (Prelude.Maybe DBCluster)
+startDBClusterResponse_dbCluster = Lens.lens (\StartDBClusterResponse' {dbCluster} -> dbCluster) (\s@StartDBClusterResponse' {} a -> s {dbCluster = a} :: StartDBClusterResponse)
+
+-- | The response's http status code.
+startDBClusterResponse_httpStatus :: Lens.Lens' StartDBClusterResponse Prelude.Int
+startDBClusterResponse_httpStatus = Lens.lens (\StartDBClusterResponse' {httpStatus} -> httpStatus) (\s@StartDBClusterResponse' {} a -> s {httpStatus = a} :: StartDBClusterResponse)
+
+instance Prelude.NFData StartDBClusterResponse where
+  rnf StartDBClusterResponse' {..} =
+    Prelude.rnf dbCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/StopDBCluster.hs b/gen/Amazonka/DocumentDB/StopDBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/StopDBCluster.hs
@@ -0,0 +1,164 @@
+{-# 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.DocumentDB.StopDBCluster
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops the running cluster that is specified by @DBClusterIdentifier@.
+-- The cluster must be in the /available/ state. For more information, see
+-- <https://docs.aws.amazon.com/documentdb/latest/developerguide/db-cluster-stop-start.html Stopping and Starting an Amazon DocumentDB Cluster>.
+module Amazonka.DocumentDB.StopDBCluster
+  ( -- * Creating a Request
+    StopDBCluster (..),
+    newStopDBCluster,
+
+    -- * Request Lenses
+    stopDBCluster_dbClusterIdentifier,
+
+    -- * Destructuring the Response
+    StopDBClusterResponse (..),
+    newStopDBClusterResponse,
+
+    -- * Response Lenses
+    stopDBClusterResponse_dbCluster,
+    stopDBClusterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStopDBCluster' smart constructor.
+data StopDBCluster = StopDBCluster'
+  { -- | The identifier of the cluster to stop. Example:
+    -- @docdb-2019-05-28-15-24-52@
+    dbClusterIdentifier :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopDBCluster' 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:
+--
+-- 'dbClusterIdentifier', 'stopDBCluster_dbClusterIdentifier' - The identifier of the cluster to stop. Example:
+-- @docdb-2019-05-28-15-24-52@
+newStopDBCluster ::
+  -- | 'dbClusterIdentifier'
+  Prelude.Text ->
+  StopDBCluster
+newStopDBCluster pDBClusterIdentifier_ =
+  StopDBCluster'
+    { dbClusterIdentifier =
+        pDBClusterIdentifier_
+    }
+
+-- | The identifier of the cluster to stop. Example:
+-- @docdb-2019-05-28-15-24-52@
+stopDBCluster_dbClusterIdentifier :: Lens.Lens' StopDBCluster Prelude.Text
+stopDBCluster_dbClusterIdentifier = Lens.lens (\StopDBCluster' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@StopDBCluster' {} a -> s {dbClusterIdentifier = a} :: StopDBCluster)
+
+instance Core.AWSRequest StopDBCluster where
+  type
+    AWSResponse StopDBCluster =
+      StopDBClusterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "StopDBClusterResult"
+      ( \s h x ->
+          StopDBClusterResponse'
+            Prelude.<$> (x Data..@? "DBCluster")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopDBCluster where
+  hashWithSalt _salt StopDBCluster' {..} =
+    _salt `Prelude.hashWithSalt` dbClusterIdentifier
+
+instance Prelude.NFData StopDBCluster where
+  rnf StopDBCluster' {..} =
+    Prelude.rnf dbClusterIdentifier
+
+instance Data.ToHeaders StopDBCluster where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath StopDBCluster where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopDBCluster where
+  toQuery StopDBCluster' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("StopDBCluster" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2014-10-31" :: Prelude.ByteString),
+        "DBClusterIdentifier" Data.=: dbClusterIdentifier
+      ]
+
+-- | /See:/ 'newStopDBClusterResponse' smart constructor.
+data StopDBClusterResponse = StopDBClusterResponse'
+  { dbCluster :: Prelude.Maybe DBCluster,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopDBClusterResponse' 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:
+--
+-- 'dbCluster', 'stopDBClusterResponse_dbCluster' - Undocumented member.
+--
+-- 'httpStatus', 'stopDBClusterResponse_httpStatus' - The response's http status code.
+newStopDBClusterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopDBClusterResponse
+newStopDBClusterResponse pHttpStatus_ =
+  StopDBClusterResponse'
+    { dbCluster = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+stopDBClusterResponse_dbCluster :: Lens.Lens' StopDBClusterResponse (Prelude.Maybe DBCluster)
+stopDBClusterResponse_dbCluster = Lens.lens (\StopDBClusterResponse' {dbCluster} -> dbCluster) (\s@StopDBClusterResponse' {} a -> s {dbCluster = a} :: StopDBClusterResponse)
+
+-- | The response's http status code.
+stopDBClusterResponse_httpStatus :: Lens.Lens' StopDBClusterResponse Prelude.Int
+stopDBClusterResponse_httpStatus = Lens.lens (\StopDBClusterResponse' {httpStatus} -> httpStatus) (\s@StopDBClusterResponse' {} a -> s {httpStatus = a} :: StopDBClusterResponse)
+
+instance Prelude.NFData StopDBClusterResponse where
+  rnf StopDBClusterResponse' {..} =
+    Prelude.rnf dbCluster
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/DocumentDB/Types.hs b/gen/Amazonka/DocumentDB/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types.hs
@@ -0,0 +1,1022 @@
+{-# 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.DocumentDB.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.DocumentDB.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AuthorizationNotFoundFault,
+    _CertificateNotFoundFault,
+    _DBClusterAlreadyExistsFault,
+    _DBClusterNotFoundFault,
+    _DBClusterParameterGroupNotFoundFault,
+    _DBClusterQuotaExceededFault,
+    _DBClusterSnapshotAlreadyExistsFault,
+    _DBClusterSnapshotNotFoundFault,
+    _DBInstanceAlreadyExistsFault,
+    _DBInstanceNotFoundFault,
+    _DBParameterGroupAlreadyExistsFault,
+    _DBParameterGroupNotFoundFault,
+    _DBParameterGroupQuotaExceededFault,
+    _DBSecurityGroupNotFoundFault,
+    _DBSnapshotAlreadyExistsFault,
+    _DBSnapshotNotFoundFault,
+    _DBSubnetGroupAlreadyExistsFault,
+    _DBSubnetGroupDoesNotCoverEnoughAZs,
+    _DBSubnetGroupNotFoundFault,
+    _DBSubnetGroupQuotaExceededFault,
+    _DBSubnetQuotaExceededFault,
+    _DBUpgradeDependencyFailureFault,
+    _EventSubscriptionQuotaExceededFault,
+    _GlobalClusterAlreadyExistsFault,
+    _GlobalClusterNotFoundFault,
+    _GlobalClusterQuotaExceededFault,
+    _InstanceQuotaExceededFault,
+    _InsufficientDBClusterCapacityFault,
+    _InsufficientDBInstanceCapacityFault,
+    _InsufficientStorageClusterCapacityFault,
+    _InvalidDBClusterSnapshotStateFault,
+    _InvalidDBClusterStateFault,
+    _InvalidDBInstanceStateFault,
+    _InvalidDBParameterGroupStateFault,
+    _InvalidDBSecurityGroupStateFault,
+    _InvalidDBSnapshotStateFault,
+    _InvalidDBSubnetGroupStateFault,
+    _InvalidDBSubnetStateFault,
+    _InvalidEventSubscriptionStateFault,
+    _InvalidGlobalClusterStateFault,
+    _InvalidRestoreFault,
+    _InvalidSubnet,
+    _InvalidVPCNetworkStateFault,
+    _KMSKeyNotAccessibleFault,
+    _ResourceNotFoundFault,
+    _SNSInvalidTopicFault,
+    _SNSNoAuthorizationFault,
+    _SNSTopicArnNotFoundFault,
+    _SharedSnapshotQuotaExceededFault,
+    _SnapshotQuotaExceededFault,
+    _SourceNotFoundFault,
+    _StorageQuotaExceededFault,
+    _StorageTypeNotSupportedFault,
+    _SubnetAlreadyInUse,
+    _SubscriptionAlreadyExistFault,
+    _SubscriptionCategoryNotFoundFault,
+    _SubscriptionNotFoundFault,
+
+    -- * ApplyMethod
+    ApplyMethod (..),
+
+    -- * SourceType
+    SourceType (..),
+
+    -- * AvailabilityZone
+    AvailabilityZone (..),
+    newAvailabilityZone,
+    availabilityZone_name,
+
+    -- * Certificate
+    Certificate (..),
+    newCertificate,
+    certificate_certificateArn,
+    certificate_certificateIdentifier,
+    certificate_certificateType,
+    certificate_thumbprint,
+    certificate_validFrom,
+    certificate_validTill,
+
+    -- * CloudwatchLogsExportConfiguration
+    CloudwatchLogsExportConfiguration (..),
+    newCloudwatchLogsExportConfiguration,
+    cloudwatchLogsExportConfiguration_disableLogTypes,
+    cloudwatchLogsExportConfiguration_enableLogTypes,
+
+    -- * DBCluster
+    DBCluster (..),
+    newDBCluster,
+    dbCluster_associatedRoles,
+    dbCluster_availabilityZones,
+    dbCluster_backupRetentionPeriod,
+    dbCluster_cloneGroupId,
+    dbCluster_clusterCreateTime,
+    dbCluster_dbClusterArn,
+    dbCluster_dbClusterIdentifier,
+    dbCluster_dbClusterMembers,
+    dbCluster_dbClusterParameterGroup,
+    dbCluster_dbSubnetGroup,
+    dbCluster_dbClusterResourceId,
+    dbCluster_deletionProtection,
+    dbCluster_earliestRestorableTime,
+    dbCluster_enabledCloudwatchLogsExports,
+    dbCluster_endpoint,
+    dbCluster_engine,
+    dbCluster_engineVersion,
+    dbCluster_hostedZoneId,
+    dbCluster_kmsKeyId,
+    dbCluster_latestRestorableTime,
+    dbCluster_masterUsername,
+    dbCluster_multiAZ,
+    dbCluster_percentProgress,
+    dbCluster_port,
+    dbCluster_preferredBackupWindow,
+    dbCluster_preferredMaintenanceWindow,
+    dbCluster_readReplicaIdentifiers,
+    dbCluster_readerEndpoint,
+    dbCluster_replicationSourceIdentifier,
+    dbCluster_status,
+    dbCluster_storageEncrypted,
+    dbCluster_vpcSecurityGroups,
+
+    -- * DBClusterMember
+    DBClusterMember (..),
+    newDBClusterMember,
+    dbClusterMember_dbClusterParameterGroupStatus,
+    dbClusterMember_dbInstanceIdentifier,
+    dbClusterMember_isClusterWriter,
+    dbClusterMember_promotionTier,
+
+    -- * DBClusterParameterGroup
+    DBClusterParameterGroup (..),
+    newDBClusterParameterGroup,
+    dbClusterParameterGroup_dbClusterParameterGroupArn,
+    dbClusterParameterGroup_dbClusterParameterGroupName,
+    dbClusterParameterGroup_dbParameterGroupFamily,
+    dbClusterParameterGroup_description,
+
+    -- * DBClusterParameterGroupNameMessage
+    DBClusterParameterGroupNameMessage (..),
+    newDBClusterParameterGroupNameMessage,
+    dbClusterParameterGroupNameMessage_dbClusterParameterGroupName,
+
+    -- * DBClusterRole
+    DBClusterRole (..),
+    newDBClusterRole,
+    dbClusterRole_roleArn,
+    dbClusterRole_status,
+
+    -- * DBClusterSnapshot
+    DBClusterSnapshot (..),
+    newDBClusterSnapshot,
+    dbClusterSnapshot_availabilityZones,
+    dbClusterSnapshot_clusterCreateTime,
+    dbClusterSnapshot_dbClusterIdentifier,
+    dbClusterSnapshot_dbClusterSnapshotArn,
+    dbClusterSnapshot_dbClusterSnapshotIdentifier,
+    dbClusterSnapshot_engine,
+    dbClusterSnapshot_engineVersion,
+    dbClusterSnapshot_kmsKeyId,
+    dbClusterSnapshot_masterUsername,
+    dbClusterSnapshot_percentProgress,
+    dbClusterSnapshot_port,
+    dbClusterSnapshot_snapshotCreateTime,
+    dbClusterSnapshot_snapshotType,
+    dbClusterSnapshot_sourceDBClusterSnapshotArn,
+    dbClusterSnapshot_status,
+    dbClusterSnapshot_storageEncrypted,
+    dbClusterSnapshot_vpcId,
+
+    -- * DBClusterSnapshotAttribute
+    DBClusterSnapshotAttribute (..),
+    newDBClusterSnapshotAttribute,
+    dbClusterSnapshotAttribute_attributeName,
+    dbClusterSnapshotAttribute_attributeValues,
+
+    -- * DBClusterSnapshotAttributesResult
+    DBClusterSnapshotAttributesResult (..),
+    newDBClusterSnapshotAttributesResult,
+    dbClusterSnapshotAttributesResult_dbClusterSnapshotAttributes,
+    dbClusterSnapshotAttributesResult_dbClusterSnapshotIdentifier,
+
+    -- * DBEngineVersion
+    DBEngineVersion (..),
+    newDBEngineVersion,
+    dbEngineVersion_dbEngineDescription,
+    dbEngineVersion_dbEngineVersionDescription,
+    dbEngineVersion_dbParameterGroupFamily,
+    dbEngineVersion_engine,
+    dbEngineVersion_engineVersion,
+    dbEngineVersion_exportableLogTypes,
+    dbEngineVersion_supportsLogExportsToCloudwatchLogs,
+    dbEngineVersion_validUpgradeTarget,
+
+    -- * DBInstance
+    DBInstance (..),
+    newDBInstance,
+    dbInstance_autoMinorVersionUpgrade,
+    dbInstance_availabilityZone,
+    dbInstance_backupRetentionPeriod,
+    dbInstance_cACertificateIdentifier,
+    dbInstance_copyTagsToSnapshot,
+    dbInstance_dbClusterIdentifier,
+    dbInstance_dbInstanceArn,
+    dbInstance_dbInstanceClass,
+    dbInstance_dbInstanceIdentifier,
+    dbInstance_dbInstanceStatus,
+    dbInstance_dbSubnetGroup,
+    dbInstance_dbiResourceId,
+    dbInstance_enabledCloudwatchLogsExports,
+    dbInstance_endpoint,
+    dbInstance_engine,
+    dbInstance_engineVersion,
+    dbInstance_instanceCreateTime,
+    dbInstance_kmsKeyId,
+    dbInstance_latestRestorableTime,
+    dbInstance_pendingModifiedValues,
+    dbInstance_preferredBackupWindow,
+    dbInstance_preferredMaintenanceWindow,
+    dbInstance_promotionTier,
+    dbInstance_publiclyAccessible,
+    dbInstance_statusInfos,
+    dbInstance_storageEncrypted,
+    dbInstance_vpcSecurityGroups,
+
+    -- * DBInstanceStatusInfo
+    DBInstanceStatusInfo (..),
+    newDBInstanceStatusInfo,
+    dbInstanceStatusInfo_message,
+    dbInstanceStatusInfo_normal,
+    dbInstanceStatusInfo_status,
+    dbInstanceStatusInfo_statusType,
+
+    -- * DBSubnetGroup
+    DBSubnetGroup (..),
+    newDBSubnetGroup,
+    dbSubnetGroup_dbSubnetGroupArn,
+    dbSubnetGroup_dbSubnetGroupDescription,
+    dbSubnetGroup_dbSubnetGroupName,
+    dbSubnetGroup_subnetGroupStatus,
+    dbSubnetGroup_subnets,
+    dbSubnetGroup_vpcId,
+
+    -- * Endpoint
+    Endpoint (..),
+    newEndpoint,
+    endpoint_address,
+    endpoint_hostedZoneId,
+    endpoint_port,
+
+    -- * EngineDefaults
+    EngineDefaults (..),
+    newEngineDefaults,
+    engineDefaults_dbParameterGroupFamily,
+    engineDefaults_marker,
+    engineDefaults_parameters,
+
+    -- * Event
+    Event (..),
+    newEvent,
+    event_date,
+    event_eventCategories,
+    event_message,
+    event_sourceArn,
+    event_sourceIdentifier,
+    event_sourceType,
+
+    -- * EventCategoriesMap
+    EventCategoriesMap (..),
+    newEventCategoriesMap,
+    eventCategoriesMap_eventCategories,
+    eventCategoriesMap_sourceType,
+
+    -- * EventSubscription
+    EventSubscription (..),
+    newEventSubscription,
+    eventSubscription_custSubscriptionId,
+    eventSubscription_customerAwsId,
+    eventSubscription_enabled,
+    eventSubscription_eventCategoriesList,
+    eventSubscription_eventSubscriptionArn,
+    eventSubscription_snsTopicArn,
+    eventSubscription_sourceIdsList,
+    eventSubscription_sourceType,
+    eventSubscription_status,
+    eventSubscription_subscriptionCreationTime,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_name,
+    filter_values,
+
+    -- * GlobalCluster
+    GlobalCluster (..),
+    newGlobalCluster,
+    globalCluster_databaseName,
+    globalCluster_deletionProtection,
+    globalCluster_engine,
+    globalCluster_engineVersion,
+    globalCluster_globalClusterArn,
+    globalCluster_globalClusterIdentifier,
+    globalCluster_globalClusterMembers,
+    globalCluster_globalClusterResourceId,
+    globalCluster_status,
+    globalCluster_storageEncrypted,
+
+    -- * GlobalClusterMember
+    GlobalClusterMember (..),
+    newGlobalClusterMember,
+    globalClusterMember_dbClusterArn,
+    globalClusterMember_isWriter,
+    globalClusterMember_readers,
+
+    -- * OrderableDBInstanceOption
+    OrderableDBInstanceOption (..),
+    newOrderableDBInstanceOption,
+    orderableDBInstanceOption_availabilityZones,
+    orderableDBInstanceOption_dbInstanceClass,
+    orderableDBInstanceOption_engine,
+    orderableDBInstanceOption_engineVersion,
+    orderableDBInstanceOption_licenseModel,
+    orderableDBInstanceOption_vpc,
+
+    -- * Parameter
+    Parameter (..),
+    newParameter,
+    parameter_allowedValues,
+    parameter_applyMethod,
+    parameter_applyType,
+    parameter_dataType,
+    parameter_description,
+    parameter_isModifiable,
+    parameter_minimumEngineVersion,
+    parameter_parameterName,
+    parameter_parameterValue,
+    parameter_source,
+
+    -- * PendingCloudwatchLogsExports
+    PendingCloudwatchLogsExports (..),
+    newPendingCloudwatchLogsExports,
+    pendingCloudwatchLogsExports_logTypesToDisable,
+    pendingCloudwatchLogsExports_logTypesToEnable,
+
+    -- * PendingMaintenanceAction
+    PendingMaintenanceAction (..),
+    newPendingMaintenanceAction,
+    pendingMaintenanceAction_action,
+    pendingMaintenanceAction_autoAppliedAfterDate,
+    pendingMaintenanceAction_currentApplyDate,
+    pendingMaintenanceAction_description,
+    pendingMaintenanceAction_forcedApplyDate,
+    pendingMaintenanceAction_optInStatus,
+
+    -- * PendingModifiedValues
+    PendingModifiedValues (..),
+    newPendingModifiedValues,
+    pendingModifiedValues_allocatedStorage,
+    pendingModifiedValues_backupRetentionPeriod,
+    pendingModifiedValues_cACertificateIdentifier,
+    pendingModifiedValues_dbInstanceClass,
+    pendingModifiedValues_dbInstanceIdentifier,
+    pendingModifiedValues_dbSubnetGroupName,
+    pendingModifiedValues_engineVersion,
+    pendingModifiedValues_iops,
+    pendingModifiedValues_licenseModel,
+    pendingModifiedValues_masterUserPassword,
+    pendingModifiedValues_multiAZ,
+    pendingModifiedValues_pendingCloudwatchLogsExports,
+    pendingModifiedValues_port,
+    pendingModifiedValues_storageType,
+
+    -- * ResourcePendingMaintenanceActions
+    ResourcePendingMaintenanceActions (..),
+    newResourcePendingMaintenanceActions,
+    resourcePendingMaintenanceActions_pendingMaintenanceActionDetails,
+    resourcePendingMaintenanceActions_resourceIdentifier,
+
+    -- * Subnet
+    Subnet (..),
+    newSubnet,
+    subnet_subnetAvailabilityZone,
+    subnet_subnetIdentifier,
+    subnet_subnetStatus,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * UpgradeTarget
+    UpgradeTarget (..),
+    newUpgradeTarget,
+    upgradeTarget_autoUpgrade,
+    upgradeTarget_description,
+    upgradeTarget_engine,
+    upgradeTarget_engineVersion,
+    upgradeTarget_isMajorVersionUpgrade,
+
+    -- * VpcSecurityGroupMembership
+    VpcSecurityGroupMembership (..),
+    newVpcSecurityGroupMembership,
+    vpcSecurityGroupMembership_status,
+    vpcSecurityGroupMembership_vpcSecurityGroupId,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.DocumentDB.Types.ApplyMethod
+import Amazonka.DocumentDB.Types.AvailabilityZone
+import Amazonka.DocumentDB.Types.Certificate
+import Amazonka.DocumentDB.Types.CloudwatchLogsExportConfiguration
+import Amazonka.DocumentDB.Types.DBCluster
+import Amazonka.DocumentDB.Types.DBClusterMember
+import Amazonka.DocumentDB.Types.DBClusterParameterGroup
+import Amazonka.DocumentDB.Types.DBClusterParameterGroupNameMessage
+import Amazonka.DocumentDB.Types.DBClusterRole
+import Amazonka.DocumentDB.Types.DBClusterSnapshot
+import Amazonka.DocumentDB.Types.DBClusterSnapshotAttribute
+import Amazonka.DocumentDB.Types.DBClusterSnapshotAttributesResult
+import Amazonka.DocumentDB.Types.DBEngineVersion
+import Amazonka.DocumentDB.Types.DBInstance
+import Amazonka.DocumentDB.Types.DBInstanceStatusInfo
+import Amazonka.DocumentDB.Types.DBSubnetGroup
+import Amazonka.DocumentDB.Types.Endpoint
+import Amazonka.DocumentDB.Types.EngineDefaults
+import Amazonka.DocumentDB.Types.Event
+import Amazonka.DocumentDB.Types.EventCategoriesMap
+import Amazonka.DocumentDB.Types.EventSubscription
+import Amazonka.DocumentDB.Types.Filter
+import Amazonka.DocumentDB.Types.GlobalCluster
+import Amazonka.DocumentDB.Types.GlobalClusterMember
+import Amazonka.DocumentDB.Types.OrderableDBInstanceOption
+import Amazonka.DocumentDB.Types.Parameter
+import Amazonka.DocumentDB.Types.PendingCloudwatchLogsExports
+import Amazonka.DocumentDB.Types.PendingMaintenanceAction
+import Amazonka.DocumentDB.Types.PendingModifiedValues
+import Amazonka.DocumentDB.Types.ResourcePendingMaintenanceActions
+import Amazonka.DocumentDB.Types.SourceType
+import Amazonka.DocumentDB.Types.Subnet
+import Amazonka.DocumentDB.Types.Tag
+import Amazonka.DocumentDB.Types.UpgradeTarget
+import Amazonka.DocumentDB.Types.VpcSecurityGroupMembership
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2014-10-31@ of the Amazon DocumentDB with MongoDB compatibility SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "DocumentDB",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "rds",
+      Core.signingName = "rds",
+      Core.version = "2014-10-31",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseXMLError "DocumentDB",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | The specified CIDR IP or Amazon EC2 security group isn\'t authorized for
+-- the specified security group.
+--
+-- Amazon DocumentDB also might not be authorized to perform necessary
+-- actions on your behalf using IAM.
+_AuthorizationNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AuthorizationNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "AuthorizationNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | @CertificateIdentifier@ doesn\'t refer to an existing certificate.
+_CertificateNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_CertificateNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "CertificateNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | You already have a cluster with the given identifier.
+_DBClusterAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBClusterAlreadyExistsFault =
+  Core._MatchServiceError
+    defaultService
+    "DBClusterAlreadyExistsFault"
+    Prelude.. Core.hasStatus 400
+
+-- | @DBClusterIdentifier@ doesn\'t refer to an existing cluster.
+_DBClusterNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBClusterNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "DBClusterNotFoundFault"
+    Prelude.. Core.hasStatus 404
+
+-- | @DBClusterParameterGroupName@ doesn\'t refer to an existing cluster
+-- parameter group.
+_DBClusterParameterGroupNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBClusterParameterGroupNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "DBClusterParameterGroupNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | The cluster can\'t be created because you have reached the maximum
+-- allowed quota of clusters.
+_DBClusterQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBClusterQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "DBClusterQuotaExceededFault"
+    Prelude.. Core.hasStatus 403
+
+-- | You already have a cluster snapshot with the given identifier.
+_DBClusterSnapshotAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBClusterSnapshotAlreadyExistsFault =
+  Core._MatchServiceError
+    defaultService
+    "DBClusterSnapshotAlreadyExistsFault"
+    Prelude.. Core.hasStatus 400
+
+-- | @DBClusterSnapshotIdentifier@ doesn\'t refer to an existing cluster
+-- snapshot.
+_DBClusterSnapshotNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBClusterSnapshotNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "DBClusterSnapshotNotFoundFault"
+    Prelude.. Core.hasStatus 404
+
+-- | You already have a instance with the given identifier.
+_DBInstanceAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBInstanceAlreadyExistsFault =
+  Core._MatchServiceError
+    defaultService
+    "DBInstanceAlreadyExists"
+    Prelude.. Core.hasStatus 400
+
+-- | @DBInstanceIdentifier@ doesn\'t refer to an existing instance.
+_DBInstanceNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBInstanceNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "DBInstanceNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | A parameter group with the same name already exists.
+_DBParameterGroupAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBParameterGroupAlreadyExistsFault =
+  Core._MatchServiceError
+    defaultService
+    "DBParameterGroupAlreadyExists"
+    Prelude.. Core.hasStatus 400
+
+-- | @DBParameterGroupName@ doesn\'t refer to an existing parameter group.
+_DBParameterGroupNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBParameterGroupNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "DBParameterGroupNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | This request would cause you to exceed the allowed number of parameter
+-- groups.
+_DBParameterGroupQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBParameterGroupQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "DBParameterGroupQuotaExceeded"
+    Prelude.. Core.hasStatus 400
+
+-- | @DBSecurityGroupName@ doesn\'t refer to an existing security group.
+_DBSecurityGroupNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBSecurityGroupNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "DBSecurityGroupNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | @DBSnapshotIdentifier@ is already being used by an existing snapshot.
+_DBSnapshotAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBSnapshotAlreadyExistsFault =
+  Core._MatchServiceError
+    defaultService
+    "DBSnapshotAlreadyExists"
+    Prelude.. Core.hasStatus 400
+
+-- | @DBSnapshotIdentifier@ doesn\'t refer to an existing snapshot.
+_DBSnapshotNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBSnapshotNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "DBSnapshotNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | @DBSubnetGroupName@ is already being used by an existing subnet group.
+_DBSubnetGroupAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBSubnetGroupAlreadyExistsFault =
+  Core._MatchServiceError
+    defaultService
+    "DBSubnetGroupAlreadyExists"
+    Prelude.. Core.hasStatus 400
+
+-- | Subnets in the subnet group should cover at least two Availability Zones
+-- unless there is only one Availability Zone.
+_DBSubnetGroupDoesNotCoverEnoughAZs :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBSubnetGroupDoesNotCoverEnoughAZs =
+  Core._MatchServiceError
+    defaultService
+    "DBSubnetGroupDoesNotCoverEnoughAZs"
+    Prelude.. Core.hasStatus 400
+
+-- | @DBSubnetGroupName@ doesn\'t refer to an existing subnet group.
+_DBSubnetGroupNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBSubnetGroupNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "DBSubnetGroupNotFoundFault"
+    Prelude.. Core.hasStatus 404
+
+-- | The request would cause you to exceed the allowed number of subnet
+-- groups.
+_DBSubnetGroupQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBSubnetGroupQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "DBSubnetGroupQuotaExceeded"
+    Prelude.. Core.hasStatus 400
+
+-- | The request would cause you to exceed the allowed number of subnets in a
+-- subnet group.
+_DBSubnetQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBSubnetQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "DBSubnetQuotaExceededFault"
+    Prelude.. Core.hasStatus 400
+
+-- | The upgrade failed because a resource that the depends on can\'t be
+-- modified.
+_DBUpgradeDependencyFailureFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DBUpgradeDependencyFailureFault =
+  Core._MatchServiceError
+    defaultService
+    "DBUpgradeDependencyFailure"
+    Prelude.. Core.hasStatus 400
+
+-- | You have reached the maximum number of event subscriptions.
+_EventSubscriptionQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_EventSubscriptionQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "EventSubscriptionQuotaExceeded"
+    Prelude.. Core.hasStatus 400
+
+-- | The @GlobalClusterIdentifier@ already exists. Choose a new global
+-- cluster identifier (unique name) to create a new global cluster.
+_GlobalClusterAlreadyExistsFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_GlobalClusterAlreadyExistsFault =
+  Core._MatchServiceError
+    defaultService
+    "GlobalClusterAlreadyExistsFault"
+    Prelude.. Core.hasStatus 400
+
+-- | The @GlobalClusterIdentifier@ doesn\'t refer to an existing global
+-- cluster.
+_GlobalClusterNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_GlobalClusterNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "GlobalClusterNotFoundFault"
+    Prelude.. Core.hasStatus 404
+
+-- | The number of global clusters for this account is already at the maximum
+-- allowed.
+_GlobalClusterQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_GlobalClusterQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "GlobalClusterQuotaExceededFault"
+    Prelude.. Core.hasStatus 400
+
+-- | The request would cause you to exceed the allowed number of instances.
+_InstanceQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InstanceQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "InstanceQuotaExceeded"
+    Prelude.. Core.hasStatus 400
+
+-- | The cluster doesn\'t have enough capacity for the current operation.
+_InsufficientDBClusterCapacityFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InsufficientDBClusterCapacityFault =
+  Core._MatchServiceError
+    defaultService
+    "InsufficientDBClusterCapacityFault"
+    Prelude.. Core.hasStatus 403
+
+-- | The specified instance class isn\'t available in the specified
+-- Availability Zone.
+_InsufficientDBInstanceCapacityFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InsufficientDBInstanceCapacityFault =
+  Core._MatchServiceError
+    defaultService
+    "InsufficientDBInstanceCapacity"
+    Prelude.. Core.hasStatus 400
+
+-- | There is not enough storage available for the current action. You might
+-- be able to resolve this error by updating your subnet group to use
+-- different Availability Zones that have more storage available.
+_InsufficientStorageClusterCapacityFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InsufficientStorageClusterCapacityFault =
+  Core._MatchServiceError
+    defaultService
+    "InsufficientStorageClusterCapacity"
+    Prelude.. Core.hasStatus 400
+
+-- | The provided value isn\'t a valid cluster snapshot state.
+_InvalidDBClusterSnapshotStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDBClusterSnapshotStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDBClusterSnapshotStateFault"
+    Prelude.. Core.hasStatus 400
+
+-- | The cluster isn\'t in a valid state.
+_InvalidDBClusterStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDBClusterStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDBClusterStateFault"
+    Prelude.. Core.hasStatus 400
+
+-- | The specified instance isn\'t in the /available/ state.
+_InvalidDBInstanceStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDBInstanceStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDBInstanceState"
+    Prelude.. Core.hasStatus 400
+
+-- | The parameter group is in use, or it is in a state that is not valid. If
+-- you are trying to delete the parameter group, you can\'t delete it when
+-- the parameter group is in this state.
+_InvalidDBParameterGroupStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDBParameterGroupStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDBParameterGroupState"
+    Prelude.. Core.hasStatus 400
+
+-- | The state of the security group doesn\'t allow deletion.
+_InvalidDBSecurityGroupStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDBSecurityGroupStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDBSecurityGroupState"
+    Prelude.. Core.hasStatus 400
+
+-- | The state of the snapshot doesn\'t allow deletion.
+_InvalidDBSnapshotStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDBSnapshotStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDBSnapshotState"
+    Prelude.. Core.hasStatus 400
+
+-- | The subnet group can\'t be deleted because it\'s in use.
+_InvalidDBSubnetGroupStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDBSubnetGroupStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDBSubnetGroupStateFault"
+    Prelude.. Core.hasStatus 400
+
+-- | The subnet isn\'t in the /available/ state.
+_InvalidDBSubnetStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDBSubnetStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDBSubnetStateFault"
+    Prelude.. Core.hasStatus 400
+
+-- | Someone else might be modifying a subscription. Wait a few seconds, and
+-- try again.
+_InvalidEventSubscriptionStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidEventSubscriptionStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidEventSubscriptionState"
+    Prelude.. Core.hasStatus 400
+
+-- | The requested operation can\'t be performed while the cluster is in this
+-- state.
+_InvalidGlobalClusterStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidGlobalClusterStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidGlobalClusterStateFault"
+    Prelude.. Core.hasStatus 400
+
+-- | You cannot restore from a virtual private cloud (VPC) backup to a
+-- non-VPC DB instance.
+_InvalidRestoreFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidRestoreFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidRestoreFault"
+    Prelude.. Core.hasStatus 400
+
+-- | The requested subnet is not valid, or multiple subnets were requested
+-- that are not all in a common virtual private cloud (VPC).
+_InvalidSubnet :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidSubnet =
+  Core._MatchServiceError
+    defaultService
+    "InvalidSubnet"
+    Prelude.. Core.hasStatus 400
+
+-- | The subnet group doesn\'t cover all Availability Zones after it is
+-- created because of changes that were made.
+_InvalidVPCNetworkStateFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidVPCNetworkStateFault =
+  Core._MatchServiceError
+    defaultService
+    "InvalidVPCNetworkStateFault"
+    Prelude.. Core.hasStatus 400
+
+-- | An error occurred when accessing an KMS key.
+_KMSKeyNotAccessibleFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_KMSKeyNotAccessibleFault =
+  Core._MatchServiceError
+    defaultService
+    "KMSKeyNotAccessibleFault"
+    Prelude.. Core.hasStatus 400
+
+-- | The specified resource ID was not found.
+_ResourceNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundFault"
+    Prelude.. Core.hasStatus 404
+
+-- | Amazon SNS has responded that there is a problem with the specified
+-- topic.
+_SNSInvalidTopicFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SNSInvalidTopicFault =
+  Core._MatchServiceError
+    defaultService
+    "SNSInvalidTopic"
+    Prelude.. Core.hasStatus 400
+
+-- | You do not have permission to publish to the SNS topic Amazon Resource
+-- Name (ARN).
+_SNSNoAuthorizationFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SNSNoAuthorizationFault =
+  Core._MatchServiceError
+    defaultService
+    "SNSNoAuthorization"
+    Prelude.. Core.hasStatus 400
+
+-- | The SNS topic Amazon Resource Name (ARN) does not exist.
+_SNSTopicArnNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SNSTopicArnNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "SNSTopicArnNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | You have exceeded the maximum number of accounts that you can share a
+-- manual DB snapshot with.
+_SharedSnapshotQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SharedSnapshotQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "SharedSnapshotQuotaExceeded"
+    Prelude.. Core.hasStatus 400
+
+-- | The request would cause you to exceed the allowed number of snapshots.
+_SnapshotQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SnapshotQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "SnapshotQuotaExceeded"
+    Prelude.. Core.hasStatus 400
+
+-- | The requested source could not be found.
+_SourceNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SourceNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "SourceNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | The request would cause you to exceed the allowed amount of storage
+-- available across all instances.
+_StorageQuotaExceededFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_StorageQuotaExceededFault =
+  Core._MatchServiceError
+    defaultService
+    "StorageQuotaExceeded"
+    Prelude.. Core.hasStatus 400
+
+-- | Storage of the specified @StorageType@ can\'t be associated with the DB
+-- instance.
+_StorageTypeNotSupportedFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_StorageTypeNotSupportedFault =
+  Core._MatchServiceError
+    defaultService
+    "StorageTypeNotSupported"
+    Prelude.. Core.hasStatus 400
+
+-- | The subnet is already in use in the Availability Zone.
+_SubnetAlreadyInUse :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SubnetAlreadyInUse =
+  Core._MatchServiceError
+    defaultService
+    "SubnetAlreadyInUse"
+    Prelude.. Core.hasStatus 400
+
+-- | The provided subscription name already exists.
+_SubscriptionAlreadyExistFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SubscriptionAlreadyExistFault =
+  Core._MatchServiceError
+    defaultService
+    "SubscriptionAlreadyExist"
+    Prelude.. Core.hasStatus 400
+
+-- | The provided category does not exist.
+_SubscriptionCategoryNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SubscriptionCategoryNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "SubscriptionCategoryNotFound"
+    Prelude.. Core.hasStatus 404
+
+-- | The subscription name does not exist.
+_SubscriptionNotFoundFault :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_SubscriptionNotFoundFault =
+  Core._MatchServiceError
+    defaultService
+    "SubscriptionNotFound"
+    Prelude.. Core.hasStatus 404
diff --git a/gen/Amazonka/DocumentDB/Types/ApplyMethod.hs b/gen/Amazonka/DocumentDB/Types/ApplyMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/ApplyMethod.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.DocumentDB.Types.ApplyMethod
+-- 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.DocumentDB.Types.ApplyMethod
+  ( ApplyMethod
+      ( ..,
+        ApplyMethod_Immediate,
+        ApplyMethod_Pending_reboot
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ApplyMethod = ApplyMethod'
+  { fromApplyMethod ::
+      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 ApplyMethod_Immediate :: ApplyMethod
+pattern ApplyMethod_Immediate = ApplyMethod' "immediate"
+
+pattern ApplyMethod_Pending_reboot :: ApplyMethod
+pattern ApplyMethod_Pending_reboot = ApplyMethod' "pending-reboot"
+
+{-# COMPLETE
+  ApplyMethod_Immediate,
+  ApplyMethod_Pending_reboot,
+  ApplyMethod'
+  #-}
diff --git a/gen/Amazonka/DocumentDB/Types/AvailabilityZone.hs b/gen/Amazonka/DocumentDB/Types/AvailabilityZone.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/AvailabilityZone.hs
@@ -0,0 +1,63 @@
+{-# 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.DocumentDB.Types.AvailabilityZone
+-- 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.DocumentDB.Types.AvailabilityZone where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an Availability Zone.
+--
+-- /See:/ 'newAvailabilityZone' smart constructor.
+data AvailabilityZone = AvailabilityZone'
+  { -- | The name of the Availability Zone.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AvailabilityZone' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'availabilityZone_name' - The name of the Availability Zone.
+newAvailabilityZone ::
+  AvailabilityZone
+newAvailabilityZone =
+  AvailabilityZone' {name = Prelude.Nothing}
+
+-- | The name of the Availability Zone.
+availabilityZone_name :: Lens.Lens' AvailabilityZone (Prelude.Maybe Prelude.Text)
+availabilityZone_name = Lens.lens (\AvailabilityZone' {name} -> name) (\s@AvailabilityZone' {} a -> s {name = a} :: AvailabilityZone)
+
+instance Data.FromXML AvailabilityZone where
+  parseXML x =
+    AvailabilityZone' Prelude.<$> (x Data..@? "Name")
+
+instance Prelude.Hashable AvailabilityZone where
+  hashWithSalt _salt AvailabilityZone' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData AvailabilityZone where
+  rnf AvailabilityZone' {..} = Prelude.rnf name
diff --git a/gen/Amazonka/DocumentDB/Types/Certificate.hs b/gen/Amazonka/DocumentDB/Types/Certificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/Certificate.hs
@@ -0,0 +1,159 @@
+{-# 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.DocumentDB.Types.Certificate
+-- 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.DocumentDB.Types.Certificate 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 certificate authority (CA) certificate for an Amazon Web Services
+-- account.
+--
+-- /See:/ 'newCertificate' smart constructor.
+data Certificate = Certificate'
+  { -- | The Amazon Resource Name (ARN) for the certificate.
+    --
+    -- Example: @arn:aws:rds:us-east-1::cert:rds-ca-2019@
+    certificateArn :: Prelude.Maybe Prelude.Text,
+    -- | The unique key that identifies a certificate.
+    --
+    -- Example: @rds-ca-2019@
+    certificateIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The type of the certificate.
+    --
+    -- Example: @CA@
+    certificateType :: Prelude.Maybe Prelude.Text,
+    -- | The thumbprint of the certificate.
+    thumbprint :: Prelude.Maybe Prelude.Text,
+    -- | The starting date-time from which the certificate is valid.
+    --
+    -- Example: @2019-07-31T17:57:09Z@
+    validFrom :: Prelude.Maybe Data.ISO8601,
+    -- | The date-time after which the certificate is no longer valid.
+    --
+    -- Example: @2024-07-31T17:57:09Z@
+    validTill :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Certificate' 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:
+--
+-- 'certificateArn', 'certificate_certificateArn' - The Amazon Resource Name (ARN) for the certificate.
+--
+-- Example: @arn:aws:rds:us-east-1::cert:rds-ca-2019@
+--
+-- 'certificateIdentifier', 'certificate_certificateIdentifier' - The unique key that identifies a certificate.
+--
+-- Example: @rds-ca-2019@
+--
+-- 'certificateType', 'certificate_certificateType' - The type of the certificate.
+--
+-- Example: @CA@
+--
+-- 'thumbprint', 'certificate_thumbprint' - The thumbprint of the certificate.
+--
+-- 'validFrom', 'certificate_validFrom' - The starting date-time from which the certificate is valid.
+--
+-- Example: @2019-07-31T17:57:09Z@
+--
+-- 'validTill', 'certificate_validTill' - The date-time after which the certificate is no longer valid.
+--
+-- Example: @2024-07-31T17:57:09Z@
+newCertificate ::
+  Certificate
+newCertificate =
+  Certificate'
+    { certificateArn = Prelude.Nothing,
+      certificateIdentifier = Prelude.Nothing,
+      certificateType = Prelude.Nothing,
+      thumbprint = Prelude.Nothing,
+      validFrom = Prelude.Nothing,
+      validTill = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) for the certificate.
+--
+-- Example: @arn:aws:rds:us-east-1::cert:rds-ca-2019@
+certificate_certificateArn :: Lens.Lens' Certificate (Prelude.Maybe Prelude.Text)
+certificate_certificateArn = Lens.lens (\Certificate' {certificateArn} -> certificateArn) (\s@Certificate' {} a -> s {certificateArn = a} :: Certificate)
+
+-- | The unique key that identifies a certificate.
+--
+-- Example: @rds-ca-2019@
+certificate_certificateIdentifier :: Lens.Lens' Certificate (Prelude.Maybe Prelude.Text)
+certificate_certificateIdentifier = Lens.lens (\Certificate' {certificateIdentifier} -> certificateIdentifier) (\s@Certificate' {} a -> s {certificateIdentifier = a} :: Certificate)
+
+-- | The type of the certificate.
+--
+-- Example: @CA@
+certificate_certificateType :: Lens.Lens' Certificate (Prelude.Maybe Prelude.Text)
+certificate_certificateType = Lens.lens (\Certificate' {certificateType} -> certificateType) (\s@Certificate' {} a -> s {certificateType = a} :: Certificate)
+
+-- | The thumbprint of the certificate.
+certificate_thumbprint :: Lens.Lens' Certificate (Prelude.Maybe Prelude.Text)
+certificate_thumbprint = Lens.lens (\Certificate' {thumbprint} -> thumbprint) (\s@Certificate' {} a -> s {thumbprint = a} :: Certificate)
+
+-- | The starting date-time from which the certificate is valid.
+--
+-- Example: @2019-07-31T17:57:09Z@
+certificate_validFrom :: Lens.Lens' Certificate (Prelude.Maybe Prelude.UTCTime)
+certificate_validFrom = Lens.lens (\Certificate' {validFrom} -> validFrom) (\s@Certificate' {} a -> s {validFrom = a} :: Certificate) Prelude.. Lens.mapping Data._Time
+
+-- | The date-time after which the certificate is no longer valid.
+--
+-- Example: @2024-07-31T17:57:09Z@
+certificate_validTill :: Lens.Lens' Certificate (Prelude.Maybe Prelude.UTCTime)
+certificate_validTill = Lens.lens (\Certificate' {validTill} -> validTill) (\s@Certificate' {} a -> s {validTill = a} :: Certificate) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromXML Certificate where
+  parseXML x =
+    Certificate'
+      Prelude.<$> (x Data..@? "CertificateArn")
+      Prelude.<*> (x Data..@? "CertificateIdentifier")
+      Prelude.<*> (x Data..@? "CertificateType")
+      Prelude.<*> (x Data..@? "Thumbprint")
+      Prelude.<*> (x Data..@? "ValidFrom")
+      Prelude.<*> (x Data..@? "ValidTill")
+
+instance Prelude.Hashable Certificate where
+  hashWithSalt _salt Certificate' {..} =
+    _salt
+      `Prelude.hashWithSalt` certificateArn
+      `Prelude.hashWithSalt` certificateIdentifier
+      `Prelude.hashWithSalt` certificateType
+      `Prelude.hashWithSalt` thumbprint
+      `Prelude.hashWithSalt` validFrom
+      `Prelude.hashWithSalt` validTill
+
+instance Prelude.NFData Certificate where
+  rnf Certificate' {..} =
+    Prelude.rnf certificateArn
+      `Prelude.seq` Prelude.rnf certificateIdentifier
+      `Prelude.seq` Prelude.rnf certificateType
+      `Prelude.seq` Prelude.rnf thumbprint
+      `Prelude.seq` Prelude.rnf validFrom
+      `Prelude.seq` Prelude.rnf validTill
diff --git a/gen/Amazonka/DocumentDB/Types/CloudwatchLogsExportConfiguration.hs b/gen/Amazonka/DocumentDB/Types/CloudwatchLogsExportConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/CloudwatchLogsExportConfiguration.hs
@@ -0,0 +1,106 @@
+{-# 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.DocumentDB.Types.CloudwatchLogsExportConfiguration
+-- 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.DocumentDB.Types.CloudwatchLogsExportConfiguration 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 configuration setting for the log types to be enabled for export to
+-- Amazon CloudWatch Logs for a specific instance or cluster.
+--
+-- The @EnableLogTypes@ and @DisableLogTypes@ arrays determine which logs
+-- are exported (or not exported) to CloudWatch Logs. The values within
+-- these arrays depend on the engine that is being used.
+--
+-- /See:/ 'newCloudwatchLogsExportConfiguration' smart constructor.
+data CloudwatchLogsExportConfiguration = CloudwatchLogsExportConfiguration'
+  { -- | The list of log types to disable.
+    disableLogTypes :: Prelude.Maybe [Prelude.Text],
+    -- | The list of log types to enable.
+    enableLogTypes :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudwatchLogsExportConfiguration' 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:
+--
+-- 'disableLogTypes', 'cloudwatchLogsExportConfiguration_disableLogTypes' - The list of log types to disable.
+--
+-- 'enableLogTypes', 'cloudwatchLogsExportConfiguration_enableLogTypes' - The list of log types to enable.
+newCloudwatchLogsExportConfiguration ::
+  CloudwatchLogsExportConfiguration
+newCloudwatchLogsExportConfiguration =
+  CloudwatchLogsExportConfiguration'
+    { disableLogTypes =
+        Prelude.Nothing,
+      enableLogTypes = Prelude.Nothing
+    }
+
+-- | The list of log types to disable.
+cloudwatchLogsExportConfiguration_disableLogTypes :: Lens.Lens' CloudwatchLogsExportConfiguration (Prelude.Maybe [Prelude.Text])
+cloudwatchLogsExportConfiguration_disableLogTypes = Lens.lens (\CloudwatchLogsExportConfiguration' {disableLogTypes} -> disableLogTypes) (\s@CloudwatchLogsExportConfiguration' {} a -> s {disableLogTypes = a} :: CloudwatchLogsExportConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | The list of log types to enable.
+cloudwatchLogsExportConfiguration_enableLogTypes :: Lens.Lens' CloudwatchLogsExportConfiguration (Prelude.Maybe [Prelude.Text])
+cloudwatchLogsExportConfiguration_enableLogTypes = Lens.lens (\CloudwatchLogsExportConfiguration' {enableLogTypes} -> enableLogTypes) (\s@CloudwatchLogsExportConfiguration' {} a -> s {enableLogTypes = a} :: CloudwatchLogsExportConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Prelude.Hashable
+    CloudwatchLogsExportConfiguration
+  where
+  hashWithSalt
+    _salt
+    CloudwatchLogsExportConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` disableLogTypes
+        `Prelude.hashWithSalt` enableLogTypes
+
+instance
+  Prelude.NFData
+    CloudwatchLogsExportConfiguration
+  where
+  rnf CloudwatchLogsExportConfiguration' {..} =
+    Prelude.rnf disableLogTypes
+      `Prelude.seq` Prelude.rnf enableLogTypes
+
+instance
+  Data.ToQuery
+    CloudwatchLogsExportConfiguration
+  where
+  toQuery CloudwatchLogsExportConfiguration' {..} =
+    Prelude.mconcat
+      [ "DisableLogTypes"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> disableLogTypes
+            ),
+        "EnableLogTypes"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> enableLogTypes
+            )
+      ]
diff --git a/gen/Amazonka/DocumentDB/Types/DBCluster.hs b/gen/Amazonka/DocumentDB/Types/DBCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBCluster.hs
@@ -0,0 +1,592 @@
+{-# 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.DocumentDB.Types.DBCluster
+-- 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.DocumentDB.Types.DBCluster where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.DBClusterMember
+import Amazonka.DocumentDB.Types.DBClusterRole
+import Amazonka.DocumentDB.Types.VpcSecurityGroupMembership
+import qualified Amazonka.Prelude as Prelude
+
+-- | Detailed information about a cluster.
+--
+-- /See:/ 'newDBCluster' smart constructor.
+data DBCluster = DBCluster'
+  { -- | Provides a list of the Identity and Access Management (IAM) roles that
+    -- are associated with the cluster. (IAM) roles that are associated with a
+    -- cluster grant permission for the cluster to access other Amazon Web
+    -- Services services on your behalf.
+    associatedRoles :: Prelude.Maybe [DBClusterRole],
+    -- | Provides the list of Amazon EC2 Availability Zones that instances in the
+    -- cluster can be created in.
+    availabilityZones :: Prelude.Maybe [Prelude.Text],
+    -- | Specifies the number of days for which automatic snapshots are retained.
+    backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
+    -- | Identifies the clone group to which the DB cluster is associated.
+    cloneGroupId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the time when the cluster was created, in Universal
+    -- Coordinated Time (UTC).
+    clusterCreateTime :: Prelude.Maybe Data.ISO8601,
+    -- | The Amazon Resource Name (ARN) for the cluster.
+    dbClusterArn :: Prelude.Maybe Prelude.Text,
+    -- | Contains a user-supplied cluster identifier. This identifier is the
+    -- unique key that identifies a cluster.
+    dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Provides the list of instances that make up the cluster.
+    dbClusterMembers :: Prelude.Maybe [DBClusterMember],
+    -- | Specifies the name of the cluster parameter group for the cluster.
+    dbClusterParameterGroup :: Prelude.Maybe Prelude.Text,
+    -- | Specifies information on the subnet group that is associated with the
+    -- cluster, including the name, description, and subnets in the subnet
+    -- group.
+    dbSubnetGroup :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services Region-unique, immutable identifier for the
+    -- cluster. This identifier is found in CloudTrail log entries whenever the
+    -- KMS key for the cluster is accessed.
+    dbClusterResourceId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+    -- is enabled, the cluster cannot be deleted unless it is modified and
+    -- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+    -- from being accidentally deleted.
+    deletionProtection :: Prelude.Maybe Prelude.Bool,
+    -- | The earliest time to which a database can be restored with point-in-time
+    -- restore.
+    earliestRestorableTime :: Prelude.Maybe Data.ISO8601,
+    -- | A list of log types that this cluster is configured to export to Amazon
+    -- CloudWatch Logs.
+    enabledCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
+    -- | Specifies the connection endpoint for the primary instance of the
+    -- cluster.
+    endpoint :: Prelude.Maybe Prelude.Text,
+    -- | Provides the name of the database engine to be used for this cluster.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the database engine version.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the ID that Amazon Route 53 assigns when you create a hosted
+    -- zone.
+    hostedZoneId :: Prelude.Maybe Prelude.Text,
+    -- | If @StorageEncrypted@ is @true@, the KMS key identifier for the
+    -- encrypted cluster.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the latest time to which a database can be restored with
+    -- point-in-time restore.
+    latestRestorableTime :: Prelude.Maybe Data.ISO8601,
+    -- | Contains the master user name for the cluster.
+    masterUsername :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether the cluster has instances in multiple Availability
+    -- Zones.
+    multiAZ :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the progress of the operation as a percentage.
+    percentProgress :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the port that the database engine is listening on.
+    port :: Prelude.Maybe Prelude.Int,
+    -- | Specifies the daily time range during which automated backups are
+    -- created if automated backups are enabled, as determined by the
+    -- @BackupRetentionPeriod@.
+    preferredBackupWindow :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the weekly time range during which system maintenance can
+    -- occur, in Universal Coordinated Time (UTC).
+    preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
+    -- | Contains one or more identifiers of the secondary clusters that are
+    -- associated with this cluster.
+    readReplicaIdentifiers :: Prelude.Maybe [Prelude.Text],
+    -- | The reader endpoint for the cluster. The reader endpoint for a cluster
+    -- load balances connections across the Amazon DocumentDB replicas that are
+    -- available in a cluster. As clients request new connections to the reader
+    -- endpoint, Amazon DocumentDB distributes the connection requests among
+    -- the Amazon DocumentDB replicas in the cluster. This functionality can
+    -- help balance your read workload across multiple Amazon DocumentDB
+    -- replicas in your cluster.
+    --
+    -- If a failover occurs, and the Amazon DocumentDB replica that you are
+    -- connected to is promoted to be the primary instance, your connection is
+    -- dropped. To continue sending your read workload to other Amazon
+    -- DocumentDB replicas in the cluster, you can then reconnect to the reader
+    -- endpoint.
+    readerEndpoint :: Prelude.Maybe Prelude.Text,
+    -- | Contains the identifier of the source cluster if this cluster is a
+    -- secondary cluster.
+    replicationSourceIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the current state of this cluster.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether the cluster is encrypted.
+    storageEncrypted :: Prelude.Maybe Prelude.Bool,
+    -- | Provides a list of virtual private cloud (VPC) security groups that the
+    -- cluster belongs to.
+    vpcSecurityGroups :: Prelude.Maybe [VpcSecurityGroupMembership]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBCluster' 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:
+--
+-- 'associatedRoles', 'dbCluster_associatedRoles' - Provides a list of the Identity and Access Management (IAM) roles that
+-- are associated with the cluster. (IAM) roles that are associated with a
+-- cluster grant permission for the cluster to access other Amazon Web
+-- Services services on your behalf.
+--
+-- 'availabilityZones', 'dbCluster_availabilityZones' - Provides the list of Amazon EC2 Availability Zones that instances in the
+-- cluster can be created in.
+--
+-- 'backupRetentionPeriod', 'dbCluster_backupRetentionPeriod' - Specifies the number of days for which automatic snapshots are retained.
+--
+-- 'cloneGroupId', 'dbCluster_cloneGroupId' - Identifies the clone group to which the DB cluster is associated.
+--
+-- 'clusterCreateTime', 'dbCluster_clusterCreateTime' - Specifies the time when the cluster was created, in Universal
+-- Coordinated Time (UTC).
+--
+-- 'dbClusterArn', 'dbCluster_dbClusterArn' - The Amazon Resource Name (ARN) for the cluster.
+--
+-- 'dbClusterIdentifier', 'dbCluster_dbClusterIdentifier' - Contains a user-supplied cluster identifier. This identifier is the
+-- unique key that identifies a cluster.
+--
+-- 'dbClusterMembers', 'dbCluster_dbClusterMembers' - Provides the list of instances that make up the cluster.
+--
+-- 'dbClusterParameterGroup', 'dbCluster_dbClusterParameterGroup' - Specifies the name of the cluster parameter group for the cluster.
+--
+-- 'dbSubnetGroup', 'dbCluster_dbSubnetGroup' - Specifies information on the subnet group that is associated with the
+-- cluster, including the name, description, and subnets in the subnet
+-- group.
+--
+-- 'dbClusterResourceId', 'dbCluster_dbClusterResourceId' - The Amazon Web Services Region-unique, immutable identifier for the
+-- cluster. This identifier is found in CloudTrail log entries whenever the
+-- KMS key for the cluster is accessed.
+--
+-- 'deletionProtection', 'dbCluster_deletionProtection' - Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+--
+-- 'earliestRestorableTime', 'dbCluster_earliestRestorableTime' - The earliest time to which a database can be restored with point-in-time
+-- restore.
+--
+-- 'enabledCloudwatchLogsExports', 'dbCluster_enabledCloudwatchLogsExports' - A list of log types that this cluster is configured to export to Amazon
+-- CloudWatch Logs.
+--
+-- 'endpoint', 'dbCluster_endpoint' - Specifies the connection endpoint for the primary instance of the
+-- cluster.
+--
+-- 'engine', 'dbCluster_engine' - Provides the name of the database engine to be used for this cluster.
+--
+-- 'engineVersion', 'dbCluster_engineVersion' - Indicates the database engine version.
+--
+-- 'hostedZoneId', 'dbCluster_hostedZoneId' - Specifies the ID that Amazon Route 53 assigns when you create a hosted
+-- zone.
+--
+-- 'kmsKeyId', 'dbCluster_kmsKeyId' - If @StorageEncrypted@ is @true@, the KMS key identifier for the
+-- encrypted cluster.
+--
+-- 'latestRestorableTime', 'dbCluster_latestRestorableTime' - Specifies the latest time to which a database can be restored with
+-- point-in-time restore.
+--
+-- 'masterUsername', 'dbCluster_masterUsername' - Contains the master user name for the cluster.
+--
+-- 'multiAZ', 'dbCluster_multiAZ' - Specifies whether the cluster has instances in multiple Availability
+-- Zones.
+--
+-- 'percentProgress', 'dbCluster_percentProgress' - Specifies the progress of the operation as a percentage.
+--
+-- 'port', 'dbCluster_port' - Specifies the port that the database engine is listening on.
+--
+-- 'preferredBackupWindow', 'dbCluster_preferredBackupWindow' - Specifies the daily time range during which automated backups are
+-- created if automated backups are enabled, as determined by the
+-- @BackupRetentionPeriod@.
+--
+-- 'preferredMaintenanceWindow', 'dbCluster_preferredMaintenanceWindow' - Specifies the weekly time range during which system maintenance can
+-- occur, in Universal Coordinated Time (UTC).
+--
+-- 'readReplicaIdentifiers', 'dbCluster_readReplicaIdentifiers' - Contains one or more identifiers of the secondary clusters that are
+-- associated with this cluster.
+--
+-- 'readerEndpoint', 'dbCluster_readerEndpoint' - The reader endpoint for the cluster. The reader endpoint for a cluster
+-- load balances connections across the Amazon DocumentDB replicas that are
+-- available in a cluster. As clients request new connections to the reader
+-- endpoint, Amazon DocumentDB distributes the connection requests among
+-- the Amazon DocumentDB replicas in the cluster. This functionality can
+-- help balance your read workload across multiple Amazon DocumentDB
+-- replicas in your cluster.
+--
+-- If a failover occurs, and the Amazon DocumentDB replica that you are
+-- connected to is promoted to be the primary instance, your connection is
+-- dropped. To continue sending your read workload to other Amazon
+-- DocumentDB replicas in the cluster, you can then reconnect to the reader
+-- endpoint.
+--
+-- 'replicationSourceIdentifier', 'dbCluster_replicationSourceIdentifier' - Contains the identifier of the source cluster if this cluster is a
+-- secondary cluster.
+--
+-- 'status', 'dbCluster_status' - Specifies the current state of this cluster.
+--
+-- 'storageEncrypted', 'dbCluster_storageEncrypted' - Specifies whether the cluster is encrypted.
+--
+-- 'vpcSecurityGroups', 'dbCluster_vpcSecurityGroups' - Provides a list of virtual private cloud (VPC) security groups that the
+-- cluster belongs to.
+newDBCluster ::
+  DBCluster
+newDBCluster =
+  DBCluster'
+    { associatedRoles = Prelude.Nothing,
+      availabilityZones = Prelude.Nothing,
+      backupRetentionPeriod = Prelude.Nothing,
+      cloneGroupId = Prelude.Nothing,
+      clusterCreateTime = Prelude.Nothing,
+      dbClusterArn = Prelude.Nothing,
+      dbClusterIdentifier = Prelude.Nothing,
+      dbClusterMembers = Prelude.Nothing,
+      dbClusterParameterGroup = Prelude.Nothing,
+      dbSubnetGroup = Prelude.Nothing,
+      dbClusterResourceId = Prelude.Nothing,
+      deletionProtection = Prelude.Nothing,
+      earliestRestorableTime = Prelude.Nothing,
+      enabledCloudwatchLogsExports = Prelude.Nothing,
+      endpoint = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      hostedZoneId = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      latestRestorableTime = Prelude.Nothing,
+      masterUsername = Prelude.Nothing,
+      multiAZ = Prelude.Nothing,
+      percentProgress = Prelude.Nothing,
+      port = Prelude.Nothing,
+      preferredBackupWindow = Prelude.Nothing,
+      preferredMaintenanceWindow = Prelude.Nothing,
+      readReplicaIdentifiers = Prelude.Nothing,
+      readerEndpoint = Prelude.Nothing,
+      replicationSourceIdentifier = Prelude.Nothing,
+      status = Prelude.Nothing,
+      storageEncrypted = Prelude.Nothing,
+      vpcSecurityGroups = Prelude.Nothing
+    }
+
+-- | Provides a list of the Identity and Access Management (IAM) roles that
+-- are associated with the cluster. (IAM) roles that are associated with a
+-- cluster grant permission for the cluster to access other Amazon Web
+-- Services services on your behalf.
+dbCluster_associatedRoles :: Lens.Lens' DBCluster (Prelude.Maybe [DBClusterRole])
+dbCluster_associatedRoles = Lens.lens (\DBCluster' {associatedRoles} -> associatedRoles) (\s@DBCluster' {} a -> s {associatedRoles = a} :: DBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | Provides the list of Amazon EC2 Availability Zones that instances in the
+-- cluster can be created in.
+dbCluster_availabilityZones :: Lens.Lens' DBCluster (Prelude.Maybe [Prelude.Text])
+dbCluster_availabilityZones = Lens.lens (\DBCluster' {availabilityZones} -> availabilityZones) (\s@DBCluster' {} a -> s {availabilityZones = a} :: DBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the number of days for which automatic snapshots are retained.
+dbCluster_backupRetentionPeriod :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Int)
+dbCluster_backupRetentionPeriod = Lens.lens (\DBCluster' {backupRetentionPeriod} -> backupRetentionPeriod) (\s@DBCluster' {} a -> s {backupRetentionPeriod = a} :: DBCluster)
+
+-- | Identifies the clone group to which the DB cluster is associated.
+dbCluster_cloneGroupId :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_cloneGroupId = Lens.lens (\DBCluster' {cloneGroupId} -> cloneGroupId) (\s@DBCluster' {} a -> s {cloneGroupId = a} :: DBCluster)
+
+-- | Specifies the time when the cluster was created, in Universal
+-- Coordinated Time (UTC).
+dbCluster_clusterCreateTime :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.UTCTime)
+dbCluster_clusterCreateTime = Lens.lens (\DBCluster' {clusterCreateTime} -> clusterCreateTime) (\s@DBCluster' {} a -> s {clusterCreateTime = a} :: DBCluster) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) for the cluster.
+dbCluster_dbClusterArn :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_dbClusterArn = Lens.lens (\DBCluster' {dbClusterArn} -> dbClusterArn) (\s@DBCluster' {} a -> s {dbClusterArn = a} :: DBCluster)
+
+-- | Contains a user-supplied cluster identifier. This identifier is the
+-- unique key that identifies a cluster.
+dbCluster_dbClusterIdentifier :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_dbClusterIdentifier = Lens.lens (\DBCluster' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@DBCluster' {} a -> s {dbClusterIdentifier = a} :: DBCluster)
+
+-- | Provides the list of instances that make up the cluster.
+dbCluster_dbClusterMembers :: Lens.Lens' DBCluster (Prelude.Maybe [DBClusterMember])
+dbCluster_dbClusterMembers = Lens.lens (\DBCluster' {dbClusterMembers} -> dbClusterMembers) (\s@DBCluster' {} a -> s {dbClusterMembers = a} :: DBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the name of the cluster parameter group for the cluster.
+dbCluster_dbClusterParameterGroup :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_dbClusterParameterGroup = Lens.lens (\DBCluster' {dbClusterParameterGroup} -> dbClusterParameterGroup) (\s@DBCluster' {} a -> s {dbClusterParameterGroup = a} :: DBCluster)
+
+-- | Specifies information on the subnet group that is associated with the
+-- cluster, including the name, description, and subnets in the subnet
+-- group.
+dbCluster_dbSubnetGroup :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_dbSubnetGroup = Lens.lens (\DBCluster' {dbSubnetGroup} -> dbSubnetGroup) (\s@DBCluster' {} a -> s {dbSubnetGroup = a} :: DBCluster)
+
+-- | The Amazon Web Services Region-unique, immutable identifier for the
+-- cluster. This identifier is found in CloudTrail log entries whenever the
+-- KMS key for the cluster is accessed.
+dbCluster_dbClusterResourceId :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_dbClusterResourceId = Lens.lens (\DBCluster' {dbClusterResourceId} -> dbClusterResourceId) (\s@DBCluster' {} a -> s {dbClusterResourceId = a} :: DBCluster)
+
+-- | Specifies whether this cluster can be deleted. If @DeletionProtection@
+-- is enabled, the cluster cannot be deleted unless it is modified and
+-- @DeletionProtection@ is disabled. @DeletionProtection@ protects clusters
+-- from being accidentally deleted.
+dbCluster_deletionProtection :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
+dbCluster_deletionProtection = Lens.lens (\DBCluster' {deletionProtection} -> deletionProtection) (\s@DBCluster' {} a -> s {deletionProtection = a} :: DBCluster)
+
+-- | The earliest time to which a database can be restored with point-in-time
+-- restore.
+dbCluster_earliestRestorableTime :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.UTCTime)
+dbCluster_earliestRestorableTime = Lens.lens (\DBCluster' {earliestRestorableTime} -> earliestRestorableTime) (\s@DBCluster' {} a -> s {earliestRestorableTime = a} :: DBCluster) Prelude.. Lens.mapping Data._Time
+
+-- | A list of log types that this cluster is configured to export to Amazon
+-- CloudWatch Logs.
+dbCluster_enabledCloudwatchLogsExports :: Lens.Lens' DBCluster (Prelude.Maybe [Prelude.Text])
+dbCluster_enabledCloudwatchLogsExports = Lens.lens (\DBCluster' {enabledCloudwatchLogsExports} -> enabledCloudwatchLogsExports) (\s@DBCluster' {} a -> s {enabledCloudwatchLogsExports = a} :: DBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the connection endpoint for the primary instance of the
+-- cluster.
+dbCluster_endpoint :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_endpoint = Lens.lens (\DBCluster' {endpoint} -> endpoint) (\s@DBCluster' {} a -> s {endpoint = a} :: DBCluster)
+
+-- | Provides the name of the database engine to be used for this cluster.
+dbCluster_engine :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_engine = Lens.lens (\DBCluster' {engine} -> engine) (\s@DBCluster' {} a -> s {engine = a} :: DBCluster)
+
+-- | Indicates the database engine version.
+dbCluster_engineVersion :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_engineVersion = Lens.lens (\DBCluster' {engineVersion} -> engineVersion) (\s@DBCluster' {} a -> s {engineVersion = a} :: DBCluster)
+
+-- | Specifies the ID that Amazon Route 53 assigns when you create a hosted
+-- zone.
+dbCluster_hostedZoneId :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_hostedZoneId = Lens.lens (\DBCluster' {hostedZoneId} -> hostedZoneId) (\s@DBCluster' {} a -> s {hostedZoneId = a} :: DBCluster)
+
+-- | If @StorageEncrypted@ is @true@, the KMS key identifier for the
+-- encrypted cluster.
+dbCluster_kmsKeyId :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_kmsKeyId = Lens.lens (\DBCluster' {kmsKeyId} -> kmsKeyId) (\s@DBCluster' {} a -> s {kmsKeyId = a} :: DBCluster)
+
+-- | Specifies the latest time to which a database can be restored with
+-- point-in-time restore.
+dbCluster_latestRestorableTime :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.UTCTime)
+dbCluster_latestRestorableTime = Lens.lens (\DBCluster' {latestRestorableTime} -> latestRestorableTime) (\s@DBCluster' {} a -> s {latestRestorableTime = a} :: DBCluster) Prelude.. Lens.mapping Data._Time
+
+-- | Contains the master user name for the cluster.
+dbCluster_masterUsername :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_masterUsername = Lens.lens (\DBCluster' {masterUsername} -> masterUsername) (\s@DBCluster' {} a -> s {masterUsername = a} :: DBCluster)
+
+-- | Specifies whether the cluster has instances in multiple Availability
+-- Zones.
+dbCluster_multiAZ :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
+dbCluster_multiAZ = Lens.lens (\DBCluster' {multiAZ} -> multiAZ) (\s@DBCluster' {} a -> s {multiAZ = a} :: DBCluster)
+
+-- | Specifies the progress of the operation as a percentage.
+dbCluster_percentProgress :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_percentProgress = Lens.lens (\DBCluster' {percentProgress} -> percentProgress) (\s@DBCluster' {} a -> s {percentProgress = a} :: DBCluster)
+
+-- | Specifies the port that the database engine is listening on.
+dbCluster_port :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Int)
+dbCluster_port = Lens.lens (\DBCluster' {port} -> port) (\s@DBCluster' {} a -> s {port = a} :: DBCluster)
+
+-- | Specifies the daily time range during which automated backups are
+-- created if automated backups are enabled, as determined by the
+-- @BackupRetentionPeriod@.
+dbCluster_preferredBackupWindow :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_preferredBackupWindow = Lens.lens (\DBCluster' {preferredBackupWindow} -> preferredBackupWindow) (\s@DBCluster' {} a -> s {preferredBackupWindow = a} :: DBCluster)
+
+-- | Specifies the weekly time range during which system maintenance can
+-- occur, in Universal Coordinated Time (UTC).
+dbCluster_preferredMaintenanceWindow :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_preferredMaintenanceWindow = Lens.lens (\DBCluster' {preferredMaintenanceWindow} -> preferredMaintenanceWindow) (\s@DBCluster' {} a -> s {preferredMaintenanceWindow = a} :: DBCluster)
+
+-- | Contains one or more identifiers of the secondary clusters that are
+-- associated with this cluster.
+dbCluster_readReplicaIdentifiers :: Lens.Lens' DBCluster (Prelude.Maybe [Prelude.Text])
+dbCluster_readReplicaIdentifiers = Lens.lens (\DBCluster' {readReplicaIdentifiers} -> readReplicaIdentifiers) (\s@DBCluster' {} a -> s {readReplicaIdentifiers = a} :: DBCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | The reader endpoint for the cluster. The reader endpoint for a cluster
+-- load balances connections across the Amazon DocumentDB replicas that are
+-- available in a cluster. As clients request new connections to the reader
+-- endpoint, Amazon DocumentDB distributes the connection requests among
+-- the Amazon DocumentDB replicas in the cluster. This functionality can
+-- help balance your read workload across multiple Amazon DocumentDB
+-- replicas in your cluster.
+--
+-- If a failover occurs, and the Amazon DocumentDB replica that you are
+-- connected to is promoted to be the primary instance, your connection is
+-- dropped. To continue sending your read workload to other Amazon
+-- DocumentDB replicas in the cluster, you can then reconnect to the reader
+-- endpoint.
+dbCluster_readerEndpoint :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_readerEndpoint = Lens.lens (\DBCluster' {readerEndpoint} -> readerEndpoint) (\s@DBCluster' {} a -> s {readerEndpoint = a} :: DBCluster)
+
+-- | Contains the identifier of the source cluster if this cluster is a
+-- secondary cluster.
+dbCluster_replicationSourceIdentifier :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_replicationSourceIdentifier = Lens.lens (\DBCluster' {replicationSourceIdentifier} -> replicationSourceIdentifier) (\s@DBCluster' {} a -> s {replicationSourceIdentifier = a} :: DBCluster)
+
+-- | Specifies the current state of this cluster.
+dbCluster_status :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
+dbCluster_status = Lens.lens (\DBCluster' {status} -> status) (\s@DBCluster' {} a -> s {status = a} :: DBCluster)
+
+-- | Specifies whether the cluster is encrypted.
+dbCluster_storageEncrypted :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
+dbCluster_storageEncrypted = Lens.lens (\DBCluster' {storageEncrypted} -> storageEncrypted) (\s@DBCluster' {} a -> s {storageEncrypted = a} :: DBCluster)
+
+-- | Provides a list of virtual private cloud (VPC) security groups that the
+-- cluster belongs to.
+dbCluster_vpcSecurityGroups :: Lens.Lens' DBCluster (Prelude.Maybe [VpcSecurityGroupMembership])
+dbCluster_vpcSecurityGroups = Lens.lens (\DBCluster' {vpcSecurityGroups} -> vpcSecurityGroups) (\s@DBCluster' {} a -> s {vpcSecurityGroups = a} :: DBCluster) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromXML DBCluster where
+  parseXML x =
+    DBCluster'
+      Prelude.<$> ( x
+                      Data..@? "AssociatedRoles"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "DBClusterRole")
+                  )
+      Prelude.<*> ( x
+                      Data..@? "AvailabilityZones"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "AvailabilityZone")
+                  )
+      Prelude.<*> (x Data..@? "BackupRetentionPeriod")
+      Prelude.<*> (x Data..@? "CloneGroupId")
+      Prelude.<*> (x Data..@? "ClusterCreateTime")
+      Prelude.<*> (x Data..@? "DBClusterArn")
+      Prelude.<*> (x Data..@? "DBClusterIdentifier")
+      Prelude.<*> ( x
+                      Data..@? "DBClusterMembers"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "DBClusterMember")
+                  )
+      Prelude.<*> (x Data..@? "DBClusterParameterGroup")
+      Prelude.<*> (x Data..@? "DBSubnetGroup")
+      Prelude.<*> (x Data..@? "DbClusterResourceId")
+      Prelude.<*> (x Data..@? "DeletionProtection")
+      Prelude.<*> (x Data..@? "EarliestRestorableTime")
+      Prelude.<*> ( x
+                      Data..@? "EnabledCloudwatchLogsExports"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+      Prelude.<*> (x Data..@? "Endpoint")
+      Prelude.<*> (x Data..@? "Engine")
+      Prelude.<*> (x Data..@? "EngineVersion")
+      Prelude.<*> (x Data..@? "HostedZoneId")
+      Prelude.<*> (x Data..@? "KmsKeyId")
+      Prelude.<*> (x Data..@? "LatestRestorableTime")
+      Prelude.<*> (x Data..@? "MasterUsername")
+      Prelude.<*> (x Data..@? "MultiAZ")
+      Prelude.<*> (x Data..@? "PercentProgress")
+      Prelude.<*> (x Data..@? "Port")
+      Prelude.<*> (x Data..@? "PreferredBackupWindow")
+      Prelude.<*> (x Data..@? "PreferredMaintenanceWindow")
+      Prelude.<*> ( x
+                      Data..@? "ReadReplicaIdentifiers"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "ReadReplicaIdentifier")
+                  )
+      Prelude.<*> (x Data..@? "ReaderEndpoint")
+      Prelude.<*> (x Data..@? "ReplicationSourceIdentifier")
+      Prelude.<*> (x Data..@? "Status")
+      Prelude.<*> (x Data..@? "StorageEncrypted")
+      Prelude.<*> ( x
+                      Data..@? "VpcSecurityGroups"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may
+                        (Data.parseXMLList "VpcSecurityGroupMembership")
+                  )
+
+instance Prelude.Hashable DBCluster where
+  hashWithSalt _salt DBCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` associatedRoles
+      `Prelude.hashWithSalt` availabilityZones
+      `Prelude.hashWithSalt` backupRetentionPeriod
+      `Prelude.hashWithSalt` cloneGroupId
+      `Prelude.hashWithSalt` clusterCreateTime
+      `Prelude.hashWithSalt` dbClusterArn
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` dbClusterMembers
+      `Prelude.hashWithSalt` dbClusterParameterGroup
+      `Prelude.hashWithSalt` dbSubnetGroup
+      `Prelude.hashWithSalt` dbClusterResourceId
+      `Prelude.hashWithSalt` deletionProtection
+      `Prelude.hashWithSalt` earliestRestorableTime
+      `Prelude.hashWithSalt` enabledCloudwatchLogsExports
+      `Prelude.hashWithSalt` endpoint
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` hostedZoneId
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` latestRestorableTime
+      `Prelude.hashWithSalt` masterUsername
+      `Prelude.hashWithSalt` multiAZ
+      `Prelude.hashWithSalt` percentProgress
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` preferredBackupWindow
+      `Prelude.hashWithSalt` preferredMaintenanceWindow
+      `Prelude.hashWithSalt` readReplicaIdentifiers
+      `Prelude.hashWithSalt` readerEndpoint
+      `Prelude.hashWithSalt` replicationSourceIdentifier
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` storageEncrypted
+      `Prelude.hashWithSalt` vpcSecurityGroups
+
+instance Prelude.NFData DBCluster where
+  rnf DBCluster' {..} =
+    Prelude.rnf associatedRoles
+      `Prelude.seq` Prelude.rnf availabilityZones
+      `Prelude.seq` Prelude.rnf backupRetentionPeriod
+      `Prelude.seq` Prelude.rnf cloneGroupId
+      `Prelude.seq` Prelude.rnf clusterCreateTime
+      `Prelude.seq` Prelude.rnf dbClusterArn
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf dbClusterMembers
+      `Prelude.seq` Prelude.rnf dbClusterParameterGroup
+      `Prelude.seq` Prelude.rnf dbSubnetGroup
+      `Prelude.seq` Prelude.rnf dbClusterResourceId
+      `Prelude.seq` Prelude.rnf deletionProtection
+      `Prelude.seq` Prelude.rnf earliestRestorableTime
+      `Prelude.seq` Prelude.rnf enabledCloudwatchLogsExports
+      `Prelude.seq` Prelude.rnf endpoint
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf hostedZoneId
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf
+        latestRestorableTime
+      `Prelude.seq` Prelude.rnf masterUsername
+      `Prelude.seq` Prelude.rnf multiAZ
+      `Prelude.seq` Prelude.rnf
+        percentProgress
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf
+        preferredBackupWindow
+      `Prelude.seq` Prelude.rnf
+        preferredMaintenanceWindow
+      `Prelude.seq` Prelude.rnf
+        readReplicaIdentifiers
+      `Prelude.seq` Prelude.rnf
+        readerEndpoint
+      `Prelude.seq` Prelude.rnf
+        replicationSourceIdentifier
+      `Prelude.seq` Prelude.rnf
+        status
+      `Prelude.seq` Prelude.rnf
+        storageEncrypted
+      `Prelude.seq` Prelude.rnf
+        vpcSecurityGroups
diff --git a/gen/Amazonka/DocumentDB/Types/DBClusterMember.hs b/gen/Amazonka/DocumentDB/Types/DBClusterMember.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBClusterMember.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.DocumentDB.Types.DBClusterMember
+-- 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.DocumentDB.Types.DBClusterMember 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
+
+-- | Contains information about an instance that is part of a cluster.
+--
+-- /See:/ 'newDBClusterMember' smart constructor.
+data DBClusterMember = DBClusterMember'
+  { -- | Specifies the status of the cluster parameter group for this member of
+    -- the DB cluster.
+    dbClusterParameterGroupStatus :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the instance identifier for this member of the cluster.
+    dbInstanceIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | A value that is @true@ if the cluster member is the primary instance for
+    -- the cluster and @false@ otherwise.
+    isClusterWriter :: Prelude.Maybe Prelude.Bool,
+    -- | A value that specifies the order in which an Amazon DocumentDB replica
+    -- is promoted to the primary instance after a failure of the existing
+    -- primary instance.
+    promotionTier :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBClusterMember' 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:
+--
+-- 'dbClusterParameterGroupStatus', 'dbClusterMember_dbClusterParameterGroupStatus' - Specifies the status of the cluster parameter group for this member of
+-- the DB cluster.
+--
+-- 'dbInstanceIdentifier', 'dbClusterMember_dbInstanceIdentifier' - Specifies the instance identifier for this member of the cluster.
+--
+-- 'isClusterWriter', 'dbClusterMember_isClusterWriter' - A value that is @true@ if the cluster member is the primary instance for
+-- the cluster and @false@ otherwise.
+--
+-- 'promotionTier', 'dbClusterMember_promotionTier' - A value that specifies the order in which an Amazon DocumentDB replica
+-- is promoted to the primary instance after a failure of the existing
+-- primary instance.
+newDBClusterMember ::
+  DBClusterMember
+newDBClusterMember =
+  DBClusterMember'
+    { dbClusterParameterGroupStatus =
+        Prelude.Nothing,
+      dbInstanceIdentifier = Prelude.Nothing,
+      isClusterWriter = Prelude.Nothing,
+      promotionTier = Prelude.Nothing
+    }
+
+-- | Specifies the status of the cluster parameter group for this member of
+-- the DB cluster.
+dbClusterMember_dbClusterParameterGroupStatus :: Lens.Lens' DBClusterMember (Prelude.Maybe Prelude.Text)
+dbClusterMember_dbClusterParameterGroupStatus = Lens.lens (\DBClusterMember' {dbClusterParameterGroupStatus} -> dbClusterParameterGroupStatus) (\s@DBClusterMember' {} a -> s {dbClusterParameterGroupStatus = a} :: DBClusterMember)
+
+-- | Specifies the instance identifier for this member of the cluster.
+dbClusterMember_dbInstanceIdentifier :: Lens.Lens' DBClusterMember (Prelude.Maybe Prelude.Text)
+dbClusterMember_dbInstanceIdentifier = Lens.lens (\DBClusterMember' {dbInstanceIdentifier} -> dbInstanceIdentifier) (\s@DBClusterMember' {} a -> s {dbInstanceIdentifier = a} :: DBClusterMember)
+
+-- | A value that is @true@ if the cluster member is the primary instance for
+-- the cluster and @false@ otherwise.
+dbClusterMember_isClusterWriter :: Lens.Lens' DBClusterMember (Prelude.Maybe Prelude.Bool)
+dbClusterMember_isClusterWriter = Lens.lens (\DBClusterMember' {isClusterWriter} -> isClusterWriter) (\s@DBClusterMember' {} a -> s {isClusterWriter = a} :: DBClusterMember)
+
+-- | A value that specifies the order in which an Amazon DocumentDB replica
+-- is promoted to the primary instance after a failure of the existing
+-- primary instance.
+dbClusterMember_promotionTier :: Lens.Lens' DBClusterMember (Prelude.Maybe Prelude.Int)
+dbClusterMember_promotionTier = Lens.lens (\DBClusterMember' {promotionTier} -> promotionTier) (\s@DBClusterMember' {} a -> s {promotionTier = a} :: DBClusterMember)
+
+instance Data.FromXML DBClusterMember where
+  parseXML x =
+    DBClusterMember'
+      Prelude.<$> (x Data..@? "DBClusterParameterGroupStatus")
+      Prelude.<*> (x Data..@? "DBInstanceIdentifier")
+      Prelude.<*> (x Data..@? "IsClusterWriter")
+      Prelude.<*> (x Data..@? "PromotionTier")
+
+instance Prelude.Hashable DBClusterMember where
+  hashWithSalt _salt DBClusterMember' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterParameterGroupStatus
+      `Prelude.hashWithSalt` dbInstanceIdentifier
+      `Prelude.hashWithSalt` isClusterWriter
+      `Prelude.hashWithSalt` promotionTier
+
+instance Prelude.NFData DBClusterMember where
+  rnf DBClusterMember' {..} =
+    Prelude.rnf dbClusterParameterGroupStatus
+      `Prelude.seq` Prelude.rnf dbInstanceIdentifier
+      `Prelude.seq` Prelude.rnf isClusterWriter
+      `Prelude.seq` Prelude.rnf promotionTier
diff --git a/gen/Amazonka/DocumentDB/Types/DBClusterParameterGroup.hs b/gen/Amazonka/DocumentDB/Types/DBClusterParameterGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBClusterParameterGroup.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.DocumentDB.Types.DBClusterParameterGroup
+-- 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.DocumentDB.Types.DBClusterParameterGroup 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
+
+-- | Detailed information about a cluster parameter group.
+--
+-- /See:/ 'newDBClusterParameterGroup' smart constructor.
+data DBClusterParameterGroup = DBClusterParameterGroup'
+  { -- | The Amazon Resource Name (ARN) for the cluster parameter group.
+    dbClusterParameterGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | Provides the name of the cluster parameter group.
+    dbClusterParameterGroupName :: Prelude.Maybe Prelude.Text,
+    -- | Provides the name of the parameter group family that this cluster
+    -- parameter group is compatible with.
+    dbParameterGroupFamily :: Prelude.Maybe Prelude.Text,
+    -- | Provides the customer-specified description for this cluster parameter
+    -- group.
+    description :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBClusterParameterGroup' 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:
+--
+-- 'dbClusterParameterGroupArn', 'dbClusterParameterGroup_dbClusterParameterGroupArn' - The Amazon Resource Name (ARN) for the cluster parameter group.
+--
+-- 'dbClusterParameterGroupName', 'dbClusterParameterGroup_dbClusterParameterGroupName' - Provides the name of the cluster parameter group.
+--
+-- 'dbParameterGroupFamily', 'dbClusterParameterGroup_dbParameterGroupFamily' - Provides the name of the parameter group family that this cluster
+-- parameter group is compatible with.
+--
+-- 'description', 'dbClusterParameterGroup_description' - Provides the customer-specified description for this cluster parameter
+-- group.
+newDBClusterParameterGroup ::
+  DBClusterParameterGroup
+newDBClusterParameterGroup =
+  DBClusterParameterGroup'
+    { dbClusterParameterGroupArn =
+        Prelude.Nothing,
+      dbClusterParameterGroupName = Prelude.Nothing,
+      dbParameterGroupFamily = Prelude.Nothing,
+      description = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) for the cluster parameter group.
+dbClusterParameterGroup_dbClusterParameterGroupArn :: Lens.Lens' DBClusterParameterGroup (Prelude.Maybe Prelude.Text)
+dbClusterParameterGroup_dbClusterParameterGroupArn = Lens.lens (\DBClusterParameterGroup' {dbClusterParameterGroupArn} -> dbClusterParameterGroupArn) (\s@DBClusterParameterGroup' {} a -> s {dbClusterParameterGroupArn = a} :: DBClusterParameterGroup)
+
+-- | Provides the name of the cluster parameter group.
+dbClusterParameterGroup_dbClusterParameterGroupName :: Lens.Lens' DBClusterParameterGroup (Prelude.Maybe Prelude.Text)
+dbClusterParameterGroup_dbClusterParameterGroupName = Lens.lens (\DBClusterParameterGroup' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@DBClusterParameterGroup' {} a -> s {dbClusterParameterGroupName = a} :: DBClusterParameterGroup)
+
+-- | Provides the name of the parameter group family that this cluster
+-- parameter group is compatible with.
+dbClusterParameterGroup_dbParameterGroupFamily :: Lens.Lens' DBClusterParameterGroup (Prelude.Maybe Prelude.Text)
+dbClusterParameterGroup_dbParameterGroupFamily = Lens.lens (\DBClusterParameterGroup' {dbParameterGroupFamily} -> dbParameterGroupFamily) (\s@DBClusterParameterGroup' {} a -> s {dbParameterGroupFamily = a} :: DBClusterParameterGroup)
+
+-- | Provides the customer-specified description for this cluster parameter
+-- group.
+dbClusterParameterGroup_description :: Lens.Lens' DBClusterParameterGroup (Prelude.Maybe Prelude.Text)
+dbClusterParameterGroup_description = Lens.lens (\DBClusterParameterGroup' {description} -> description) (\s@DBClusterParameterGroup' {} a -> s {description = a} :: DBClusterParameterGroup)
+
+instance Data.FromXML DBClusterParameterGroup where
+  parseXML x =
+    DBClusterParameterGroup'
+      Prelude.<$> (x Data..@? "DBClusterParameterGroupArn")
+      Prelude.<*> (x Data..@? "DBClusterParameterGroupName")
+      Prelude.<*> (x Data..@? "DBParameterGroupFamily")
+      Prelude.<*> (x Data..@? "Description")
+
+instance Prelude.Hashable DBClusterParameterGroup where
+  hashWithSalt _salt DBClusterParameterGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterParameterGroupArn
+      `Prelude.hashWithSalt` dbClusterParameterGroupName
+      `Prelude.hashWithSalt` dbParameterGroupFamily
+      `Prelude.hashWithSalt` description
+
+instance Prelude.NFData DBClusterParameterGroup where
+  rnf DBClusterParameterGroup' {..} =
+    Prelude.rnf dbClusterParameterGroupArn
+      `Prelude.seq` Prelude.rnf dbClusterParameterGroupName
+      `Prelude.seq` Prelude.rnf dbParameterGroupFamily
+      `Prelude.seq` Prelude.rnf description
diff --git a/gen/Amazonka/DocumentDB/Types/DBClusterParameterGroupNameMessage.hs b/gen/Amazonka/DocumentDB/Types/DBClusterParameterGroupNameMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBClusterParameterGroupNameMessage.hs
@@ -0,0 +1,110 @@
+{-# 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.DocumentDB.Types.DBClusterParameterGroupNameMessage
+-- 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.DocumentDB.Types.DBClusterParameterGroupNameMessage 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
+
+-- | Contains the name of a cluster parameter group.
+--
+-- /See:/ 'newDBClusterParameterGroupNameMessage' smart constructor.
+data DBClusterParameterGroupNameMessage = DBClusterParameterGroupNameMessage'
+  { -- | The name of a cluster parameter group.
+    --
+    -- Constraints:
+    --
+    -- -   Must be from 1 to 255 letters or numbers.
+    --
+    -- -   The first character must be a letter.
+    --
+    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+    --
+    -- This value is stored as a lowercase string.
+    dbClusterParameterGroupName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBClusterParameterGroupNameMessage' 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:
+--
+-- 'dbClusterParameterGroupName', 'dbClusterParameterGroupNameMessage_dbClusterParameterGroupName' - The name of a cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must be from 1 to 255 letters or numbers.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- This value is stored as a lowercase string.
+newDBClusterParameterGroupNameMessage ::
+  DBClusterParameterGroupNameMessage
+newDBClusterParameterGroupNameMessage =
+  DBClusterParameterGroupNameMessage'
+    { dbClusterParameterGroupName =
+        Prelude.Nothing
+    }
+
+-- | The name of a cluster parameter group.
+--
+-- Constraints:
+--
+-- -   Must be from 1 to 255 letters or numbers.
+--
+-- -   The first character must be a letter.
+--
+-- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
+-- This value is stored as a lowercase string.
+dbClusterParameterGroupNameMessage_dbClusterParameterGroupName :: Lens.Lens' DBClusterParameterGroupNameMessage (Prelude.Maybe Prelude.Text)
+dbClusterParameterGroupNameMessage_dbClusterParameterGroupName = Lens.lens (\DBClusterParameterGroupNameMessage' {dbClusterParameterGroupName} -> dbClusterParameterGroupName) (\s@DBClusterParameterGroupNameMessage' {} a -> s {dbClusterParameterGroupName = a} :: DBClusterParameterGroupNameMessage)
+
+instance
+  Data.FromXML
+    DBClusterParameterGroupNameMessage
+  where
+  parseXML x =
+    DBClusterParameterGroupNameMessage'
+      Prelude.<$> (x Data..@? "DBClusterParameterGroupName")
+
+instance
+  Prelude.Hashable
+    DBClusterParameterGroupNameMessage
+  where
+  hashWithSalt
+    _salt
+    DBClusterParameterGroupNameMessage' {..} =
+      _salt
+        `Prelude.hashWithSalt` dbClusterParameterGroupName
+
+instance
+  Prelude.NFData
+    DBClusterParameterGroupNameMessage
+  where
+  rnf DBClusterParameterGroupNameMessage' {..} =
+    Prelude.rnf dbClusterParameterGroupName
diff --git a/gen/Amazonka/DocumentDB/Types/DBClusterRole.hs b/gen/Amazonka/DocumentDB/Types/DBClusterRole.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBClusterRole.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.DocumentDB.Types.DBClusterRole
+-- 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.DocumentDB.Types.DBClusterRole 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
+
+-- | Describes an Identity and Access Management (IAM) role that is
+-- associated with a cluster.
+--
+-- /See:/ 'newDBClusterRole' smart constructor.
+data DBClusterRole = DBClusterRole'
+  { -- | The Amazon Resource Name (ARN) of the IAMrole that is associated with
+    -- the DB cluster.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | Describes the state of association between the IAMrole and the cluster.
+    -- The @Status@ property returns one of the following values:
+    --
+    -- -   @ACTIVE@ - The IAMrole ARN is associated with the cluster and can be
+    --     used to access other Amazon Web Services services on your behalf.
+    --
+    -- -   @PENDING@ - The IAMrole ARN is being associated with the cluster.
+    --
+    -- -   @INVALID@ - The IAMrole ARN is associated with the cluster, but the
+    --     cluster cannot assume the IAMrole to access other Amazon Web
+    --     Services services on your behalf.
+    status :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBClusterRole' 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:
+--
+-- 'roleArn', 'dbClusterRole_roleArn' - The Amazon Resource Name (ARN) of the IAMrole that is associated with
+-- the DB cluster.
+--
+-- 'status', 'dbClusterRole_status' - Describes the state of association between the IAMrole and the cluster.
+-- The @Status@ property returns one of the following values:
+--
+-- -   @ACTIVE@ - The IAMrole ARN is associated with the cluster and can be
+--     used to access other Amazon Web Services services on your behalf.
+--
+-- -   @PENDING@ - The IAMrole ARN is being associated with the cluster.
+--
+-- -   @INVALID@ - The IAMrole ARN is associated with the cluster, but the
+--     cluster cannot assume the IAMrole to access other Amazon Web
+--     Services services on your behalf.
+newDBClusterRole ::
+  DBClusterRole
+newDBClusterRole =
+  DBClusterRole'
+    { roleArn = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the IAMrole that is associated with
+-- the DB cluster.
+dbClusterRole_roleArn :: Lens.Lens' DBClusterRole (Prelude.Maybe Prelude.Text)
+dbClusterRole_roleArn = Lens.lens (\DBClusterRole' {roleArn} -> roleArn) (\s@DBClusterRole' {} a -> s {roleArn = a} :: DBClusterRole)
+
+-- | Describes the state of association between the IAMrole and the cluster.
+-- The @Status@ property returns one of the following values:
+--
+-- -   @ACTIVE@ - The IAMrole ARN is associated with the cluster and can be
+--     used to access other Amazon Web Services services on your behalf.
+--
+-- -   @PENDING@ - The IAMrole ARN is being associated with the cluster.
+--
+-- -   @INVALID@ - The IAMrole ARN is associated with the cluster, but the
+--     cluster cannot assume the IAMrole to access other Amazon Web
+--     Services services on your behalf.
+dbClusterRole_status :: Lens.Lens' DBClusterRole (Prelude.Maybe Prelude.Text)
+dbClusterRole_status = Lens.lens (\DBClusterRole' {status} -> status) (\s@DBClusterRole' {} a -> s {status = a} :: DBClusterRole)
+
+instance Data.FromXML DBClusterRole where
+  parseXML x =
+    DBClusterRole'
+      Prelude.<$> (x Data..@? "RoleArn")
+      Prelude.<*> (x Data..@? "Status")
+
+instance Prelude.Hashable DBClusterRole where
+  hashWithSalt _salt DBClusterRole' {..} =
+    _salt
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData DBClusterRole where
+  rnf DBClusterRole' {..} =
+    Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/DocumentDB/Types/DBClusterSnapshot.hs b/gen/Amazonka/DocumentDB/Types/DBClusterSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBClusterSnapshot.hs
@@ -0,0 +1,289 @@
+{-# 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.DocumentDB.Types.DBClusterSnapshot
+-- 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.DocumentDB.Types.DBClusterSnapshot 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
+
+-- | Detailed information about a cluster snapshot.
+--
+-- /See:/ 'newDBClusterSnapshot' smart constructor.
+data DBClusterSnapshot = DBClusterSnapshot'
+  { -- | Provides the list of Amazon EC2 Availability Zones that instances in the
+    -- cluster snapshot can be restored in.
+    availabilityZones :: Prelude.Maybe [Prelude.Text],
+    -- | Specifies the time when the cluster was created, in Universal
+    -- Coordinated Time (UTC).
+    clusterCreateTime :: Prelude.Maybe Data.ISO8601,
+    -- | Specifies the cluster identifier of the cluster that this cluster
+    -- snapshot was created from.
+    dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the cluster snapshot.
+    dbClusterSnapshotArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the identifier for the cluster snapshot.
+    dbClusterSnapshotIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the name of the database engine.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | Provides the version of the database engine for this cluster snapshot.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | If @StorageEncrypted@ is @true@, the KMS key identifier for the
+    -- encrypted cluster snapshot.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Provides the master user name for the cluster snapshot.
+    masterUsername :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the percentage of the estimated data that has been
+    -- transferred.
+    percentProgress :: Prelude.Maybe Prelude.Int,
+    -- | Specifies the port that the cluster was listening on at the time of the
+    -- snapshot.
+    port :: Prelude.Maybe Prelude.Int,
+    -- | Provides the time when the snapshot was taken, in UTC.
+    snapshotCreateTime :: Prelude.Maybe Data.ISO8601,
+    -- | Provides the type of the cluster snapshot.
+    snapshotType :: Prelude.Maybe Prelude.Text,
+    -- | If the cluster snapshot was copied from a source cluster snapshot, the
+    -- ARN for the source cluster snapshot; otherwise, a null value.
+    sourceDBClusterSnapshotArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the status of this cluster snapshot.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether the cluster snapshot is encrypted.
+    storageEncrypted :: Prelude.Maybe Prelude.Bool,
+    -- | Provides the virtual private cloud (VPC) ID that is associated with the
+    -- cluster snapshot.
+    vpcId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBClusterSnapshot' 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:
+--
+-- 'availabilityZones', 'dbClusterSnapshot_availabilityZones' - Provides the list of Amazon EC2 Availability Zones that instances in the
+-- cluster snapshot can be restored in.
+--
+-- 'clusterCreateTime', 'dbClusterSnapshot_clusterCreateTime' - Specifies the time when the cluster was created, in Universal
+-- Coordinated Time (UTC).
+--
+-- 'dbClusterIdentifier', 'dbClusterSnapshot_dbClusterIdentifier' - Specifies the cluster identifier of the cluster that this cluster
+-- snapshot was created from.
+--
+-- 'dbClusterSnapshotArn', 'dbClusterSnapshot_dbClusterSnapshotArn' - The Amazon Resource Name (ARN) for the cluster snapshot.
+--
+-- 'dbClusterSnapshotIdentifier', 'dbClusterSnapshot_dbClusterSnapshotIdentifier' - Specifies the identifier for the cluster snapshot.
+--
+-- 'engine', 'dbClusterSnapshot_engine' - Specifies the name of the database engine.
+--
+-- 'engineVersion', 'dbClusterSnapshot_engineVersion' - Provides the version of the database engine for this cluster snapshot.
+--
+-- 'kmsKeyId', 'dbClusterSnapshot_kmsKeyId' - If @StorageEncrypted@ is @true@, the KMS key identifier for the
+-- encrypted cluster snapshot.
+--
+-- 'masterUsername', 'dbClusterSnapshot_masterUsername' - Provides the master user name for the cluster snapshot.
+--
+-- 'percentProgress', 'dbClusterSnapshot_percentProgress' - Specifies the percentage of the estimated data that has been
+-- transferred.
+--
+-- 'port', 'dbClusterSnapshot_port' - Specifies the port that the cluster was listening on at the time of the
+-- snapshot.
+--
+-- 'snapshotCreateTime', 'dbClusterSnapshot_snapshotCreateTime' - Provides the time when the snapshot was taken, in UTC.
+--
+-- 'snapshotType', 'dbClusterSnapshot_snapshotType' - Provides the type of the cluster snapshot.
+--
+-- 'sourceDBClusterSnapshotArn', 'dbClusterSnapshot_sourceDBClusterSnapshotArn' - If the cluster snapshot was copied from a source cluster snapshot, the
+-- ARN for the source cluster snapshot; otherwise, a null value.
+--
+-- 'status', 'dbClusterSnapshot_status' - Specifies the status of this cluster snapshot.
+--
+-- 'storageEncrypted', 'dbClusterSnapshot_storageEncrypted' - Specifies whether the cluster snapshot is encrypted.
+--
+-- 'vpcId', 'dbClusterSnapshot_vpcId' - Provides the virtual private cloud (VPC) ID that is associated with the
+-- cluster snapshot.
+newDBClusterSnapshot ::
+  DBClusterSnapshot
+newDBClusterSnapshot =
+  DBClusterSnapshot'
+    { availabilityZones =
+        Prelude.Nothing,
+      clusterCreateTime = Prelude.Nothing,
+      dbClusterIdentifier = Prelude.Nothing,
+      dbClusterSnapshotArn = Prelude.Nothing,
+      dbClusterSnapshotIdentifier = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      masterUsername = Prelude.Nothing,
+      percentProgress = Prelude.Nothing,
+      port = Prelude.Nothing,
+      snapshotCreateTime = Prelude.Nothing,
+      snapshotType = Prelude.Nothing,
+      sourceDBClusterSnapshotArn = Prelude.Nothing,
+      status = Prelude.Nothing,
+      storageEncrypted = Prelude.Nothing,
+      vpcId = Prelude.Nothing
+    }
+
+-- | Provides the list of Amazon EC2 Availability Zones that instances in the
+-- cluster snapshot can be restored in.
+dbClusterSnapshot_availabilityZones :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe [Prelude.Text])
+dbClusterSnapshot_availabilityZones = Lens.lens (\DBClusterSnapshot' {availabilityZones} -> availabilityZones) (\s@DBClusterSnapshot' {} a -> s {availabilityZones = a} :: DBClusterSnapshot) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the time when the cluster was created, in Universal
+-- Coordinated Time (UTC).
+dbClusterSnapshot_clusterCreateTime :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.UTCTime)
+dbClusterSnapshot_clusterCreateTime = Lens.lens (\DBClusterSnapshot' {clusterCreateTime} -> clusterCreateTime) (\s@DBClusterSnapshot' {} a -> s {clusterCreateTime = a} :: DBClusterSnapshot) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the cluster identifier of the cluster that this cluster
+-- snapshot was created from.
+dbClusterSnapshot_dbClusterIdentifier :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_dbClusterIdentifier = Lens.lens (\DBClusterSnapshot' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@DBClusterSnapshot' {} a -> s {dbClusterIdentifier = a} :: DBClusterSnapshot)
+
+-- | The Amazon Resource Name (ARN) for the cluster snapshot.
+dbClusterSnapshot_dbClusterSnapshotArn :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_dbClusterSnapshotArn = Lens.lens (\DBClusterSnapshot' {dbClusterSnapshotArn} -> dbClusterSnapshotArn) (\s@DBClusterSnapshot' {} a -> s {dbClusterSnapshotArn = a} :: DBClusterSnapshot)
+
+-- | Specifies the identifier for the cluster snapshot.
+dbClusterSnapshot_dbClusterSnapshotIdentifier :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_dbClusterSnapshotIdentifier = Lens.lens (\DBClusterSnapshot' {dbClusterSnapshotIdentifier} -> dbClusterSnapshotIdentifier) (\s@DBClusterSnapshot' {} a -> s {dbClusterSnapshotIdentifier = a} :: DBClusterSnapshot)
+
+-- | Specifies the name of the database engine.
+dbClusterSnapshot_engine :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_engine = Lens.lens (\DBClusterSnapshot' {engine} -> engine) (\s@DBClusterSnapshot' {} a -> s {engine = a} :: DBClusterSnapshot)
+
+-- | Provides the version of the database engine for this cluster snapshot.
+dbClusterSnapshot_engineVersion :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_engineVersion = Lens.lens (\DBClusterSnapshot' {engineVersion} -> engineVersion) (\s@DBClusterSnapshot' {} a -> s {engineVersion = a} :: DBClusterSnapshot)
+
+-- | If @StorageEncrypted@ is @true@, the KMS key identifier for the
+-- encrypted cluster snapshot.
+dbClusterSnapshot_kmsKeyId :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_kmsKeyId = Lens.lens (\DBClusterSnapshot' {kmsKeyId} -> kmsKeyId) (\s@DBClusterSnapshot' {} a -> s {kmsKeyId = a} :: DBClusterSnapshot)
+
+-- | Provides the master user name for the cluster snapshot.
+dbClusterSnapshot_masterUsername :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_masterUsername = Lens.lens (\DBClusterSnapshot' {masterUsername} -> masterUsername) (\s@DBClusterSnapshot' {} a -> s {masterUsername = a} :: DBClusterSnapshot)
+
+-- | Specifies the percentage of the estimated data that has been
+-- transferred.
+dbClusterSnapshot_percentProgress :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Int)
+dbClusterSnapshot_percentProgress = Lens.lens (\DBClusterSnapshot' {percentProgress} -> percentProgress) (\s@DBClusterSnapshot' {} a -> s {percentProgress = a} :: DBClusterSnapshot)
+
+-- | Specifies the port that the cluster was listening on at the time of the
+-- snapshot.
+dbClusterSnapshot_port :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Int)
+dbClusterSnapshot_port = Lens.lens (\DBClusterSnapshot' {port} -> port) (\s@DBClusterSnapshot' {} a -> s {port = a} :: DBClusterSnapshot)
+
+-- | Provides the time when the snapshot was taken, in UTC.
+dbClusterSnapshot_snapshotCreateTime :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.UTCTime)
+dbClusterSnapshot_snapshotCreateTime = Lens.lens (\DBClusterSnapshot' {snapshotCreateTime} -> snapshotCreateTime) (\s@DBClusterSnapshot' {} a -> s {snapshotCreateTime = a} :: DBClusterSnapshot) Prelude.. Lens.mapping Data._Time
+
+-- | Provides the type of the cluster snapshot.
+dbClusterSnapshot_snapshotType :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_snapshotType = Lens.lens (\DBClusterSnapshot' {snapshotType} -> snapshotType) (\s@DBClusterSnapshot' {} a -> s {snapshotType = a} :: DBClusterSnapshot)
+
+-- | If the cluster snapshot was copied from a source cluster snapshot, the
+-- ARN for the source cluster snapshot; otherwise, a null value.
+dbClusterSnapshot_sourceDBClusterSnapshotArn :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_sourceDBClusterSnapshotArn = Lens.lens (\DBClusterSnapshot' {sourceDBClusterSnapshotArn} -> sourceDBClusterSnapshotArn) (\s@DBClusterSnapshot' {} a -> s {sourceDBClusterSnapshotArn = a} :: DBClusterSnapshot)
+
+-- | Specifies the status of this cluster snapshot.
+dbClusterSnapshot_status :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_status = Lens.lens (\DBClusterSnapshot' {status} -> status) (\s@DBClusterSnapshot' {} a -> s {status = a} :: DBClusterSnapshot)
+
+-- | Specifies whether the cluster snapshot is encrypted.
+dbClusterSnapshot_storageEncrypted :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Bool)
+dbClusterSnapshot_storageEncrypted = Lens.lens (\DBClusterSnapshot' {storageEncrypted} -> storageEncrypted) (\s@DBClusterSnapshot' {} a -> s {storageEncrypted = a} :: DBClusterSnapshot)
+
+-- | Provides the virtual private cloud (VPC) ID that is associated with the
+-- cluster snapshot.
+dbClusterSnapshot_vpcId :: Lens.Lens' DBClusterSnapshot (Prelude.Maybe Prelude.Text)
+dbClusterSnapshot_vpcId = Lens.lens (\DBClusterSnapshot' {vpcId} -> vpcId) (\s@DBClusterSnapshot' {} a -> s {vpcId = a} :: DBClusterSnapshot)
+
+instance Data.FromXML DBClusterSnapshot where
+  parseXML x =
+    DBClusterSnapshot'
+      Prelude.<$> ( x
+                      Data..@? "AvailabilityZones"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "AvailabilityZone")
+                  )
+      Prelude.<*> (x Data..@? "ClusterCreateTime")
+      Prelude.<*> (x Data..@? "DBClusterIdentifier")
+      Prelude.<*> (x Data..@? "DBClusterSnapshotArn")
+      Prelude.<*> (x Data..@? "DBClusterSnapshotIdentifier")
+      Prelude.<*> (x Data..@? "Engine")
+      Prelude.<*> (x Data..@? "EngineVersion")
+      Prelude.<*> (x Data..@? "KmsKeyId")
+      Prelude.<*> (x Data..@? "MasterUsername")
+      Prelude.<*> (x Data..@? "PercentProgress")
+      Prelude.<*> (x Data..@? "Port")
+      Prelude.<*> (x Data..@? "SnapshotCreateTime")
+      Prelude.<*> (x Data..@? "SnapshotType")
+      Prelude.<*> (x Data..@? "SourceDBClusterSnapshotArn")
+      Prelude.<*> (x Data..@? "Status")
+      Prelude.<*> (x Data..@? "StorageEncrypted")
+      Prelude.<*> (x Data..@? "VpcId")
+
+instance Prelude.Hashable DBClusterSnapshot where
+  hashWithSalt _salt DBClusterSnapshot' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZones
+      `Prelude.hashWithSalt` clusterCreateTime
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` dbClusterSnapshotArn
+      `Prelude.hashWithSalt` dbClusterSnapshotIdentifier
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` masterUsername
+      `Prelude.hashWithSalt` percentProgress
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` snapshotCreateTime
+      `Prelude.hashWithSalt` snapshotType
+      `Prelude.hashWithSalt` sourceDBClusterSnapshotArn
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` storageEncrypted
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData DBClusterSnapshot where
+  rnf DBClusterSnapshot' {..} =
+    Prelude.rnf availabilityZones
+      `Prelude.seq` Prelude.rnf clusterCreateTime
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf dbClusterSnapshotArn
+      `Prelude.seq` Prelude.rnf dbClusterSnapshotIdentifier
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf masterUsername
+      `Prelude.seq` Prelude.rnf percentProgress
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf snapshotCreateTime
+      `Prelude.seq` Prelude.rnf snapshotType
+      `Prelude.seq` Prelude.rnf sourceDBClusterSnapshotArn
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf storageEncrypted
+      `Prelude.seq` Prelude.rnf vpcId
diff --git a/gen/Amazonka/DocumentDB/Types/DBClusterSnapshotAttribute.hs b/gen/Amazonka/DocumentDB/Types/DBClusterSnapshotAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBClusterSnapshotAttribute.hs
@@ -0,0 +1,118 @@
+{-# 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.DocumentDB.Types.DBClusterSnapshotAttribute
+-- 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.DocumentDB.Types.DBClusterSnapshotAttribute 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
+
+-- | Contains the name and values of a manual cluster snapshot attribute.
+--
+-- Manual cluster snapshot attributes are used to authorize other Amazon
+-- Web Services accounts to restore a manual cluster snapshot.
+--
+-- /See:/ 'newDBClusterSnapshotAttribute' smart constructor.
+data DBClusterSnapshotAttribute = DBClusterSnapshotAttribute'
+  { -- | The name of the manual cluster snapshot attribute.
+    --
+    -- The attribute named @restore@ refers to the list of Amazon Web Services
+    -- accounts that have permission to copy or restore the manual cluster
+    -- snapshot.
+    attributeName :: Prelude.Maybe Prelude.Text,
+    -- | The values for the manual cluster snapshot attribute.
+    --
+    -- If the @AttributeName@ field is set to @restore@, then this element
+    -- returns a list of IDs of the Amazon Web Services accounts that are
+    -- authorized to copy or restore the manual cluster snapshot. If a value of
+    -- @all@ is in the list, then the manual cluster snapshot is public and
+    -- available for any Amazon Web Services account to copy or restore.
+    attributeValues :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBClusterSnapshotAttribute' 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:
+--
+-- 'attributeName', 'dbClusterSnapshotAttribute_attributeName' - The name of the manual cluster snapshot attribute.
+--
+-- The attribute named @restore@ refers to the list of Amazon Web Services
+-- accounts that have permission to copy or restore the manual cluster
+-- snapshot.
+--
+-- 'attributeValues', 'dbClusterSnapshotAttribute_attributeValues' - The values for the manual cluster snapshot attribute.
+--
+-- If the @AttributeName@ field is set to @restore@, then this element
+-- returns a list of IDs of the Amazon Web Services accounts that are
+-- authorized to copy or restore the manual cluster snapshot. If a value of
+-- @all@ is in the list, then the manual cluster snapshot is public and
+-- available for any Amazon Web Services account to copy or restore.
+newDBClusterSnapshotAttribute ::
+  DBClusterSnapshotAttribute
+newDBClusterSnapshotAttribute =
+  DBClusterSnapshotAttribute'
+    { attributeName =
+        Prelude.Nothing,
+      attributeValues = Prelude.Nothing
+    }
+
+-- | The name of the manual cluster snapshot attribute.
+--
+-- The attribute named @restore@ refers to the list of Amazon Web Services
+-- accounts that have permission to copy or restore the manual cluster
+-- snapshot.
+dbClusterSnapshotAttribute_attributeName :: Lens.Lens' DBClusterSnapshotAttribute (Prelude.Maybe Prelude.Text)
+dbClusterSnapshotAttribute_attributeName = Lens.lens (\DBClusterSnapshotAttribute' {attributeName} -> attributeName) (\s@DBClusterSnapshotAttribute' {} a -> s {attributeName = a} :: DBClusterSnapshotAttribute)
+
+-- | The values for the manual cluster snapshot attribute.
+--
+-- If the @AttributeName@ field is set to @restore@, then this element
+-- returns a list of IDs of the Amazon Web Services accounts that are
+-- authorized to copy or restore the manual cluster snapshot. If a value of
+-- @all@ is in the list, then the manual cluster snapshot is public and
+-- available for any Amazon Web Services account to copy or restore.
+dbClusterSnapshotAttribute_attributeValues :: Lens.Lens' DBClusterSnapshotAttribute (Prelude.Maybe [Prelude.Text])
+dbClusterSnapshotAttribute_attributeValues = Lens.lens (\DBClusterSnapshotAttribute' {attributeValues} -> attributeValues) (\s@DBClusterSnapshotAttribute' {} a -> s {attributeValues = a} :: DBClusterSnapshotAttribute) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromXML DBClusterSnapshotAttribute where
+  parseXML x =
+    DBClusterSnapshotAttribute'
+      Prelude.<$> (x Data..@? "AttributeName")
+      Prelude.<*> ( x
+                      Data..@? "AttributeValues"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "AttributeValue")
+                  )
+
+instance Prelude.Hashable DBClusterSnapshotAttribute where
+  hashWithSalt _salt DBClusterSnapshotAttribute' {..} =
+    _salt
+      `Prelude.hashWithSalt` attributeName
+      `Prelude.hashWithSalt` attributeValues
+
+instance Prelude.NFData DBClusterSnapshotAttribute where
+  rnf DBClusterSnapshotAttribute' {..} =
+    Prelude.rnf attributeName
+      `Prelude.seq` Prelude.rnf attributeValues
diff --git a/gen/Amazonka/DocumentDB/Types/DBClusterSnapshotAttributesResult.hs b/gen/Amazonka/DocumentDB/Types/DBClusterSnapshotAttributesResult.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBClusterSnapshotAttributesResult.hs
@@ -0,0 +1,100 @@
+{-# 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.DocumentDB.Types.DBClusterSnapshotAttributesResult
+-- 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.DocumentDB.Types.DBClusterSnapshotAttributesResult where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.DBClusterSnapshotAttribute
+import qualified Amazonka.Prelude as Prelude
+
+-- | Detailed information about the attributes that are associated with a
+-- cluster snapshot.
+--
+-- /See:/ 'newDBClusterSnapshotAttributesResult' smart constructor.
+data DBClusterSnapshotAttributesResult = DBClusterSnapshotAttributesResult'
+  { -- | The list of attributes and values for the cluster snapshot.
+    dbClusterSnapshotAttributes :: Prelude.Maybe [DBClusterSnapshotAttribute],
+    -- | The identifier of the cluster snapshot that the attributes apply to.
+    dbClusterSnapshotIdentifier :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBClusterSnapshotAttributesResult' 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:
+--
+-- 'dbClusterSnapshotAttributes', 'dbClusterSnapshotAttributesResult_dbClusterSnapshotAttributes' - The list of attributes and values for the cluster snapshot.
+--
+-- 'dbClusterSnapshotIdentifier', 'dbClusterSnapshotAttributesResult_dbClusterSnapshotIdentifier' - The identifier of the cluster snapshot that the attributes apply to.
+newDBClusterSnapshotAttributesResult ::
+  DBClusterSnapshotAttributesResult
+newDBClusterSnapshotAttributesResult =
+  DBClusterSnapshotAttributesResult'
+    { dbClusterSnapshotAttributes =
+        Prelude.Nothing,
+      dbClusterSnapshotIdentifier =
+        Prelude.Nothing
+    }
+
+-- | The list of attributes and values for the cluster snapshot.
+dbClusterSnapshotAttributesResult_dbClusterSnapshotAttributes :: Lens.Lens' DBClusterSnapshotAttributesResult (Prelude.Maybe [DBClusterSnapshotAttribute])
+dbClusterSnapshotAttributesResult_dbClusterSnapshotAttributes = Lens.lens (\DBClusterSnapshotAttributesResult' {dbClusterSnapshotAttributes} -> dbClusterSnapshotAttributes) (\s@DBClusterSnapshotAttributesResult' {} a -> s {dbClusterSnapshotAttributes = a} :: DBClusterSnapshotAttributesResult) Prelude.. Lens.mapping Lens.coerced
+
+-- | The identifier of the cluster snapshot that the attributes apply to.
+dbClusterSnapshotAttributesResult_dbClusterSnapshotIdentifier :: Lens.Lens' DBClusterSnapshotAttributesResult (Prelude.Maybe Prelude.Text)
+dbClusterSnapshotAttributesResult_dbClusterSnapshotIdentifier = Lens.lens (\DBClusterSnapshotAttributesResult' {dbClusterSnapshotIdentifier} -> dbClusterSnapshotIdentifier) (\s@DBClusterSnapshotAttributesResult' {} a -> s {dbClusterSnapshotIdentifier = a} :: DBClusterSnapshotAttributesResult)
+
+instance
+  Data.FromXML
+    DBClusterSnapshotAttributesResult
+  where
+  parseXML x =
+    DBClusterSnapshotAttributesResult'
+      Prelude.<$> ( x
+                      Data..@? "DBClusterSnapshotAttributes"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may
+                        (Data.parseXMLList "DBClusterSnapshotAttribute")
+                  )
+      Prelude.<*> (x Data..@? "DBClusterSnapshotIdentifier")
+
+instance
+  Prelude.Hashable
+    DBClusterSnapshotAttributesResult
+  where
+  hashWithSalt
+    _salt
+    DBClusterSnapshotAttributesResult' {..} =
+      _salt
+        `Prelude.hashWithSalt` dbClusterSnapshotAttributes
+        `Prelude.hashWithSalt` dbClusterSnapshotIdentifier
+
+instance
+  Prelude.NFData
+    DBClusterSnapshotAttributesResult
+  where
+  rnf DBClusterSnapshotAttributesResult' {..} =
+    Prelude.rnf dbClusterSnapshotAttributes
+      `Prelude.seq` Prelude.rnf dbClusterSnapshotIdentifier
diff --git a/gen/Amazonka/DocumentDB/Types/DBEngineVersion.hs b/gen/Amazonka/DocumentDB/Types/DBEngineVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBEngineVersion.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.Types.DBEngineVersion
+-- 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.DocumentDB.Types.DBEngineVersion where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.UpgradeTarget
+import qualified Amazonka.Prelude as Prelude
+
+-- | Detailed information about an engine version.
+--
+-- /See:/ 'newDBEngineVersion' smart constructor.
+data DBEngineVersion = DBEngineVersion'
+  { -- | The description of the database engine.
+    dbEngineDescription :: Prelude.Maybe Prelude.Text,
+    -- | The description of the database engine version.
+    dbEngineVersionDescription :: Prelude.Maybe Prelude.Text,
+    -- | The name of the parameter group family for the database engine.
+    dbParameterGroupFamily :: Prelude.Maybe Prelude.Text,
+    -- | The name of the database engine.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the database engine.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | The types of logs that the database engine has available for export to
+    -- Amazon CloudWatch Logs.
+    exportableLogTypes :: Prelude.Maybe [Prelude.Text],
+    -- | A value that indicates whether the engine version supports exporting the
+    -- log types specified by @ExportableLogTypes@ to CloudWatch Logs.
+    supportsLogExportsToCloudwatchLogs :: Prelude.Maybe Prelude.Bool,
+    -- | A list of engine versions that this database engine version can be
+    -- upgraded to.
+    validUpgradeTarget :: Prelude.Maybe [UpgradeTarget]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBEngineVersion' 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:
+--
+-- 'dbEngineDescription', 'dbEngineVersion_dbEngineDescription' - The description of the database engine.
+--
+-- 'dbEngineVersionDescription', 'dbEngineVersion_dbEngineVersionDescription' - The description of the database engine version.
+--
+-- 'dbParameterGroupFamily', 'dbEngineVersion_dbParameterGroupFamily' - The name of the parameter group family for the database engine.
+--
+-- 'engine', 'dbEngineVersion_engine' - The name of the database engine.
+--
+-- 'engineVersion', 'dbEngineVersion_engineVersion' - The version number of the database engine.
+--
+-- 'exportableLogTypes', 'dbEngineVersion_exportableLogTypes' - The types of logs that the database engine has available for export to
+-- Amazon CloudWatch Logs.
+--
+-- 'supportsLogExportsToCloudwatchLogs', 'dbEngineVersion_supportsLogExportsToCloudwatchLogs' - A value that indicates whether the engine version supports exporting the
+-- log types specified by @ExportableLogTypes@ to CloudWatch Logs.
+--
+-- 'validUpgradeTarget', 'dbEngineVersion_validUpgradeTarget' - A list of engine versions that this database engine version can be
+-- upgraded to.
+newDBEngineVersion ::
+  DBEngineVersion
+newDBEngineVersion =
+  DBEngineVersion'
+    { dbEngineDescription =
+        Prelude.Nothing,
+      dbEngineVersionDescription = Prelude.Nothing,
+      dbParameterGroupFamily = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      exportableLogTypes = Prelude.Nothing,
+      supportsLogExportsToCloudwatchLogs = Prelude.Nothing,
+      validUpgradeTarget = Prelude.Nothing
+    }
+
+-- | The description of the database engine.
+dbEngineVersion_dbEngineDescription :: Lens.Lens' DBEngineVersion (Prelude.Maybe Prelude.Text)
+dbEngineVersion_dbEngineDescription = Lens.lens (\DBEngineVersion' {dbEngineDescription} -> dbEngineDescription) (\s@DBEngineVersion' {} a -> s {dbEngineDescription = a} :: DBEngineVersion)
+
+-- | The description of the database engine version.
+dbEngineVersion_dbEngineVersionDescription :: Lens.Lens' DBEngineVersion (Prelude.Maybe Prelude.Text)
+dbEngineVersion_dbEngineVersionDescription = Lens.lens (\DBEngineVersion' {dbEngineVersionDescription} -> dbEngineVersionDescription) (\s@DBEngineVersion' {} a -> s {dbEngineVersionDescription = a} :: DBEngineVersion)
+
+-- | The name of the parameter group family for the database engine.
+dbEngineVersion_dbParameterGroupFamily :: Lens.Lens' DBEngineVersion (Prelude.Maybe Prelude.Text)
+dbEngineVersion_dbParameterGroupFamily = Lens.lens (\DBEngineVersion' {dbParameterGroupFamily} -> dbParameterGroupFamily) (\s@DBEngineVersion' {} a -> s {dbParameterGroupFamily = a} :: DBEngineVersion)
+
+-- | The name of the database engine.
+dbEngineVersion_engine :: Lens.Lens' DBEngineVersion (Prelude.Maybe Prelude.Text)
+dbEngineVersion_engine = Lens.lens (\DBEngineVersion' {engine} -> engine) (\s@DBEngineVersion' {} a -> s {engine = a} :: DBEngineVersion)
+
+-- | The version number of the database engine.
+dbEngineVersion_engineVersion :: Lens.Lens' DBEngineVersion (Prelude.Maybe Prelude.Text)
+dbEngineVersion_engineVersion = Lens.lens (\DBEngineVersion' {engineVersion} -> engineVersion) (\s@DBEngineVersion' {} a -> s {engineVersion = a} :: DBEngineVersion)
+
+-- | The types of logs that the database engine has available for export to
+-- Amazon CloudWatch Logs.
+dbEngineVersion_exportableLogTypes :: Lens.Lens' DBEngineVersion (Prelude.Maybe [Prelude.Text])
+dbEngineVersion_exportableLogTypes = Lens.lens (\DBEngineVersion' {exportableLogTypes} -> exportableLogTypes) (\s@DBEngineVersion' {} a -> s {exportableLogTypes = a} :: DBEngineVersion) Prelude.. Lens.mapping Lens.coerced
+
+-- | A value that indicates whether the engine version supports exporting the
+-- log types specified by @ExportableLogTypes@ to CloudWatch Logs.
+dbEngineVersion_supportsLogExportsToCloudwatchLogs :: Lens.Lens' DBEngineVersion (Prelude.Maybe Prelude.Bool)
+dbEngineVersion_supportsLogExportsToCloudwatchLogs = Lens.lens (\DBEngineVersion' {supportsLogExportsToCloudwatchLogs} -> supportsLogExportsToCloudwatchLogs) (\s@DBEngineVersion' {} a -> s {supportsLogExportsToCloudwatchLogs = a} :: DBEngineVersion)
+
+-- | A list of engine versions that this database engine version can be
+-- upgraded to.
+dbEngineVersion_validUpgradeTarget :: Lens.Lens' DBEngineVersion (Prelude.Maybe [UpgradeTarget])
+dbEngineVersion_validUpgradeTarget = Lens.lens (\DBEngineVersion' {validUpgradeTarget} -> validUpgradeTarget) (\s@DBEngineVersion' {} a -> s {validUpgradeTarget = a} :: DBEngineVersion) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromXML DBEngineVersion where
+  parseXML x =
+    DBEngineVersion'
+      Prelude.<$> (x Data..@? "DBEngineDescription")
+      Prelude.<*> (x Data..@? "DBEngineVersionDescription")
+      Prelude.<*> (x Data..@? "DBParameterGroupFamily")
+      Prelude.<*> (x Data..@? "Engine")
+      Prelude.<*> (x Data..@? "EngineVersion")
+      Prelude.<*> ( x
+                      Data..@? "ExportableLogTypes"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+      Prelude.<*> (x Data..@? "SupportsLogExportsToCloudwatchLogs")
+      Prelude.<*> ( x
+                      Data..@? "ValidUpgradeTarget"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "UpgradeTarget")
+                  )
+
+instance Prelude.Hashable DBEngineVersion where
+  hashWithSalt _salt DBEngineVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbEngineDescription
+      `Prelude.hashWithSalt` dbEngineVersionDescription
+      `Prelude.hashWithSalt` dbParameterGroupFamily
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` exportableLogTypes
+      `Prelude.hashWithSalt` supportsLogExportsToCloudwatchLogs
+      `Prelude.hashWithSalt` validUpgradeTarget
+
+instance Prelude.NFData DBEngineVersion where
+  rnf DBEngineVersion' {..} =
+    Prelude.rnf dbEngineDescription
+      `Prelude.seq` Prelude.rnf dbEngineVersionDescription
+      `Prelude.seq` Prelude.rnf dbParameterGroupFamily
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf exportableLogTypes
+      `Prelude.seq` Prelude.rnf supportsLogExportsToCloudwatchLogs
+      `Prelude.seq` Prelude.rnf validUpgradeTarget
diff --git a/gen/Amazonka/DocumentDB/Types/DBInstance.hs b/gen/Amazonka/DocumentDB/Types/DBInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBInstance.hs
@@ -0,0 +1,479 @@
+{-# 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.DocumentDB.Types.DBInstance
+-- 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.DocumentDB.Types.DBInstance where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.DBInstanceStatusInfo
+import Amazonka.DocumentDB.Types.DBSubnetGroup
+import Amazonka.DocumentDB.Types.Endpoint
+import Amazonka.DocumentDB.Types.PendingModifiedValues
+import Amazonka.DocumentDB.Types.VpcSecurityGroupMembership
+import qualified Amazonka.Prelude as Prelude
+
+-- | Detailed information about an instance.
+--
+-- /See:/ 'newDBInstance' smart constructor.
+data DBInstance = DBInstance'
+  { -- | Does not apply. This parameter does not apply to Amazon DocumentDB.
+    -- Amazon DocumentDB does not perform minor version upgrades regardless of
+    -- the value set.
+    autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies the name of the Availability Zone that the instance is located
+    -- in.
+    availabilityZone :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the number of days for which automatic snapshots are retained.
+    backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
+    -- | The identifier of the CA certificate for this DB instance.
+    cACertificateIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | A value that indicates whether to copy tags from the DB instance to
+    -- snapshots of the DB instance. By default, tags are not copied.
+    copyTagsToSnapshot :: Prelude.Maybe Prelude.Bool,
+    -- | Contains the name of the cluster that the instance is a member of if the
+    -- instance is a member of a cluster.
+    dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the instance.
+    dbInstanceArn :: Prelude.Maybe Prelude.Text,
+    -- | Contains the name of the compute and memory capacity class of the
+    -- instance.
+    dbInstanceClass :: Prelude.Maybe Prelude.Text,
+    -- | Contains a user-provided database identifier. This identifier is the
+    -- unique key that identifies an instance.
+    dbInstanceIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the current state of this database.
+    dbInstanceStatus :: Prelude.Maybe Prelude.Text,
+    -- | Specifies information on the subnet group that is associated with the
+    -- instance, including the name, description, and subnets in the subnet
+    -- group.
+    dbSubnetGroup :: Prelude.Maybe DBSubnetGroup,
+    -- | The Amazon Web Services Region-unique, immutable identifier for the
+    -- instance. This identifier is found in CloudTrail log entries whenever
+    -- the KMS key for the instance is accessed.
+    dbiResourceId :: Prelude.Maybe Prelude.Text,
+    -- | A list of log types that this instance is configured to export to
+    -- CloudWatch Logs.
+    enabledCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
+    -- | Specifies the connection endpoint.
+    endpoint :: Prelude.Maybe Endpoint,
+    -- | Provides the name of the database engine to be used for this instance.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the database engine version.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | Provides the date and time that the instance was created.
+    instanceCreateTime :: Prelude.Maybe Data.ISO8601,
+    -- | If @StorageEncrypted@ is @true@, the KMS key identifier for the
+    -- encrypted instance.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the latest time to which a database can be restored with
+    -- point-in-time restore.
+    latestRestorableTime :: Prelude.Maybe Data.ISO8601,
+    -- | Specifies that changes to the instance are pending. This element is
+    -- included only when changes are pending. Specific changes are identified
+    -- by subelements.
+    pendingModifiedValues :: Prelude.Maybe PendingModifiedValues,
+    -- | Specifies the daily time range during which automated backups are
+    -- created if automated backups are enabled, as determined by the
+    -- @BackupRetentionPeriod@.
+    preferredBackupWindow :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the weekly time range during which system maintenance can
+    -- occur, in Universal Coordinated Time (UTC).
+    preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
+    -- | A value that specifies the order in which an Amazon DocumentDB replica
+    -- is promoted to the primary instance after a failure of the existing
+    -- primary instance.
+    promotionTier :: Prelude.Maybe Prelude.Int,
+    -- | Not supported. Amazon DocumentDB does not currently support public
+    -- endpoints. The value of @PubliclyAccessible@ is always @false@.
+    publiclyAccessible :: Prelude.Maybe Prelude.Bool,
+    -- | The status of a read replica. If the instance is not a read replica,
+    -- this is blank.
+    statusInfos :: Prelude.Maybe [DBInstanceStatusInfo],
+    -- | Specifies whether or not the instance is encrypted.
+    storageEncrypted :: Prelude.Maybe Prelude.Bool,
+    -- | Provides a list of VPC security group elements that the instance belongs
+    -- to.
+    vpcSecurityGroups :: Prelude.Maybe [VpcSecurityGroupMembership]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBInstance' 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:
+--
+-- 'autoMinorVersionUpgrade', 'dbInstance_autoMinorVersionUpgrade' - Does not apply. This parameter does not apply to Amazon DocumentDB.
+-- Amazon DocumentDB does not perform minor version upgrades regardless of
+-- the value set.
+--
+-- 'availabilityZone', 'dbInstance_availabilityZone' - Specifies the name of the Availability Zone that the instance is located
+-- in.
+--
+-- 'backupRetentionPeriod', 'dbInstance_backupRetentionPeriod' - Specifies the number of days for which automatic snapshots are retained.
+--
+-- 'cACertificateIdentifier', 'dbInstance_cACertificateIdentifier' - The identifier of the CA certificate for this DB instance.
+--
+-- 'copyTagsToSnapshot', 'dbInstance_copyTagsToSnapshot' - A value that indicates whether to copy tags from the DB instance to
+-- snapshots of the DB instance. By default, tags are not copied.
+--
+-- 'dbClusterIdentifier', 'dbInstance_dbClusterIdentifier' - Contains the name of the cluster that the instance is a member of if the
+-- instance is a member of a cluster.
+--
+-- 'dbInstanceArn', 'dbInstance_dbInstanceArn' - The Amazon Resource Name (ARN) for the instance.
+--
+-- 'dbInstanceClass', 'dbInstance_dbInstanceClass' - Contains the name of the compute and memory capacity class of the
+-- instance.
+--
+-- 'dbInstanceIdentifier', 'dbInstance_dbInstanceIdentifier' - Contains a user-provided database identifier. This identifier is the
+-- unique key that identifies an instance.
+--
+-- 'dbInstanceStatus', 'dbInstance_dbInstanceStatus' - Specifies the current state of this database.
+--
+-- 'dbSubnetGroup', 'dbInstance_dbSubnetGroup' - Specifies information on the subnet group that is associated with the
+-- instance, including the name, description, and subnets in the subnet
+-- group.
+--
+-- 'dbiResourceId', 'dbInstance_dbiResourceId' - The Amazon Web Services Region-unique, immutable identifier for the
+-- instance. This identifier is found in CloudTrail log entries whenever
+-- the KMS key for the instance is accessed.
+--
+-- 'enabledCloudwatchLogsExports', 'dbInstance_enabledCloudwatchLogsExports' - A list of log types that this instance is configured to export to
+-- CloudWatch Logs.
+--
+-- 'endpoint', 'dbInstance_endpoint' - Specifies the connection endpoint.
+--
+-- 'engine', 'dbInstance_engine' - Provides the name of the database engine to be used for this instance.
+--
+-- 'engineVersion', 'dbInstance_engineVersion' - Indicates the database engine version.
+--
+-- 'instanceCreateTime', 'dbInstance_instanceCreateTime' - Provides the date and time that the instance was created.
+--
+-- 'kmsKeyId', 'dbInstance_kmsKeyId' - If @StorageEncrypted@ is @true@, the KMS key identifier for the
+-- encrypted instance.
+--
+-- 'latestRestorableTime', 'dbInstance_latestRestorableTime' - Specifies the latest time to which a database can be restored with
+-- point-in-time restore.
+--
+-- 'pendingModifiedValues', 'dbInstance_pendingModifiedValues' - Specifies that changes to the instance are pending. This element is
+-- included only when changes are pending. Specific changes are identified
+-- by subelements.
+--
+-- 'preferredBackupWindow', 'dbInstance_preferredBackupWindow' - Specifies the daily time range during which automated backups are
+-- created if automated backups are enabled, as determined by the
+-- @BackupRetentionPeriod@.
+--
+-- 'preferredMaintenanceWindow', 'dbInstance_preferredMaintenanceWindow' - Specifies the weekly time range during which system maintenance can
+-- occur, in Universal Coordinated Time (UTC).
+--
+-- 'promotionTier', 'dbInstance_promotionTier' - A value that specifies the order in which an Amazon DocumentDB replica
+-- is promoted to the primary instance after a failure of the existing
+-- primary instance.
+--
+-- 'publiclyAccessible', 'dbInstance_publiclyAccessible' - Not supported. Amazon DocumentDB does not currently support public
+-- endpoints. The value of @PubliclyAccessible@ is always @false@.
+--
+-- 'statusInfos', 'dbInstance_statusInfos' - The status of a read replica. If the instance is not a read replica,
+-- this is blank.
+--
+-- 'storageEncrypted', 'dbInstance_storageEncrypted' - Specifies whether or not the instance is encrypted.
+--
+-- 'vpcSecurityGroups', 'dbInstance_vpcSecurityGroups' - Provides a list of VPC security group elements that the instance belongs
+-- to.
+newDBInstance ::
+  DBInstance
+newDBInstance =
+  DBInstance'
+    { autoMinorVersionUpgrade =
+        Prelude.Nothing,
+      availabilityZone = Prelude.Nothing,
+      backupRetentionPeriod = Prelude.Nothing,
+      cACertificateIdentifier = Prelude.Nothing,
+      copyTagsToSnapshot = Prelude.Nothing,
+      dbClusterIdentifier = Prelude.Nothing,
+      dbInstanceArn = Prelude.Nothing,
+      dbInstanceClass = Prelude.Nothing,
+      dbInstanceIdentifier = Prelude.Nothing,
+      dbInstanceStatus = Prelude.Nothing,
+      dbSubnetGroup = Prelude.Nothing,
+      dbiResourceId = Prelude.Nothing,
+      enabledCloudwatchLogsExports = Prelude.Nothing,
+      endpoint = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      instanceCreateTime = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing,
+      latestRestorableTime = Prelude.Nothing,
+      pendingModifiedValues = Prelude.Nothing,
+      preferredBackupWindow = Prelude.Nothing,
+      preferredMaintenanceWindow = Prelude.Nothing,
+      promotionTier = Prelude.Nothing,
+      publiclyAccessible = Prelude.Nothing,
+      statusInfos = Prelude.Nothing,
+      storageEncrypted = Prelude.Nothing,
+      vpcSecurityGroups = Prelude.Nothing
+    }
+
+-- | Does not apply. This parameter does not apply to Amazon DocumentDB.
+-- Amazon DocumentDB does not perform minor version upgrades regardless of
+-- the value set.
+dbInstance_autoMinorVersionUpgrade :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Bool)
+dbInstance_autoMinorVersionUpgrade = Lens.lens (\DBInstance' {autoMinorVersionUpgrade} -> autoMinorVersionUpgrade) (\s@DBInstance' {} a -> s {autoMinorVersionUpgrade = a} :: DBInstance)
+
+-- | Specifies the name of the Availability Zone that the instance is located
+-- in.
+dbInstance_availabilityZone :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_availabilityZone = Lens.lens (\DBInstance' {availabilityZone} -> availabilityZone) (\s@DBInstance' {} a -> s {availabilityZone = a} :: DBInstance)
+
+-- | Specifies the number of days for which automatic snapshots are retained.
+dbInstance_backupRetentionPeriod :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Int)
+dbInstance_backupRetentionPeriod = Lens.lens (\DBInstance' {backupRetentionPeriod} -> backupRetentionPeriod) (\s@DBInstance' {} a -> s {backupRetentionPeriod = a} :: DBInstance)
+
+-- | The identifier of the CA certificate for this DB instance.
+dbInstance_cACertificateIdentifier :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_cACertificateIdentifier = Lens.lens (\DBInstance' {cACertificateIdentifier} -> cACertificateIdentifier) (\s@DBInstance' {} a -> s {cACertificateIdentifier = a} :: DBInstance)
+
+-- | A value that indicates whether to copy tags from the DB instance to
+-- snapshots of the DB instance. By default, tags are not copied.
+dbInstance_copyTagsToSnapshot :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Bool)
+dbInstance_copyTagsToSnapshot = Lens.lens (\DBInstance' {copyTagsToSnapshot} -> copyTagsToSnapshot) (\s@DBInstance' {} a -> s {copyTagsToSnapshot = a} :: DBInstance)
+
+-- | Contains the name of the cluster that the instance is a member of if the
+-- instance is a member of a cluster.
+dbInstance_dbClusterIdentifier :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_dbClusterIdentifier = Lens.lens (\DBInstance' {dbClusterIdentifier} -> dbClusterIdentifier) (\s@DBInstance' {} a -> s {dbClusterIdentifier = a} :: DBInstance)
+
+-- | The Amazon Resource Name (ARN) for the instance.
+dbInstance_dbInstanceArn :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_dbInstanceArn = Lens.lens (\DBInstance' {dbInstanceArn} -> dbInstanceArn) (\s@DBInstance' {} a -> s {dbInstanceArn = a} :: DBInstance)
+
+-- | Contains the name of the compute and memory capacity class of the
+-- instance.
+dbInstance_dbInstanceClass :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_dbInstanceClass = Lens.lens (\DBInstance' {dbInstanceClass} -> dbInstanceClass) (\s@DBInstance' {} a -> s {dbInstanceClass = a} :: DBInstance)
+
+-- | Contains a user-provided database identifier. This identifier is the
+-- unique key that identifies an instance.
+dbInstance_dbInstanceIdentifier :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_dbInstanceIdentifier = Lens.lens (\DBInstance' {dbInstanceIdentifier} -> dbInstanceIdentifier) (\s@DBInstance' {} a -> s {dbInstanceIdentifier = a} :: DBInstance)
+
+-- | Specifies the current state of this database.
+dbInstance_dbInstanceStatus :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_dbInstanceStatus = Lens.lens (\DBInstance' {dbInstanceStatus} -> dbInstanceStatus) (\s@DBInstance' {} a -> s {dbInstanceStatus = a} :: DBInstance)
+
+-- | Specifies information on the subnet group that is associated with the
+-- instance, including the name, description, and subnets in the subnet
+-- group.
+dbInstance_dbSubnetGroup :: Lens.Lens' DBInstance (Prelude.Maybe DBSubnetGroup)
+dbInstance_dbSubnetGroup = Lens.lens (\DBInstance' {dbSubnetGroup} -> dbSubnetGroup) (\s@DBInstance' {} a -> s {dbSubnetGroup = a} :: DBInstance)
+
+-- | The Amazon Web Services Region-unique, immutable identifier for the
+-- instance. This identifier is found in CloudTrail log entries whenever
+-- the KMS key for the instance is accessed.
+dbInstance_dbiResourceId :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_dbiResourceId = Lens.lens (\DBInstance' {dbiResourceId} -> dbiResourceId) (\s@DBInstance' {} a -> s {dbiResourceId = a} :: DBInstance)
+
+-- | A list of log types that this instance is configured to export to
+-- CloudWatch Logs.
+dbInstance_enabledCloudwatchLogsExports :: Lens.Lens' DBInstance (Prelude.Maybe [Prelude.Text])
+dbInstance_enabledCloudwatchLogsExports = Lens.lens (\DBInstance' {enabledCloudwatchLogsExports} -> enabledCloudwatchLogsExports) (\s@DBInstance' {} a -> s {enabledCloudwatchLogsExports = a} :: DBInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the connection endpoint.
+dbInstance_endpoint :: Lens.Lens' DBInstance (Prelude.Maybe Endpoint)
+dbInstance_endpoint = Lens.lens (\DBInstance' {endpoint} -> endpoint) (\s@DBInstance' {} a -> s {endpoint = a} :: DBInstance)
+
+-- | Provides the name of the database engine to be used for this instance.
+dbInstance_engine :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_engine = Lens.lens (\DBInstance' {engine} -> engine) (\s@DBInstance' {} a -> s {engine = a} :: DBInstance)
+
+-- | Indicates the database engine version.
+dbInstance_engineVersion :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_engineVersion = Lens.lens (\DBInstance' {engineVersion} -> engineVersion) (\s@DBInstance' {} a -> s {engineVersion = a} :: DBInstance)
+
+-- | Provides the date and time that the instance was created.
+dbInstance_instanceCreateTime :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.UTCTime)
+dbInstance_instanceCreateTime = Lens.lens (\DBInstance' {instanceCreateTime} -> instanceCreateTime) (\s@DBInstance' {} a -> s {instanceCreateTime = a} :: DBInstance) Prelude.. Lens.mapping Data._Time
+
+-- | If @StorageEncrypted@ is @true@, the KMS key identifier for the
+-- encrypted instance.
+dbInstance_kmsKeyId :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_kmsKeyId = Lens.lens (\DBInstance' {kmsKeyId} -> kmsKeyId) (\s@DBInstance' {} a -> s {kmsKeyId = a} :: DBInstance)
+
+-- | Specifies the latest time to which a database can be restored with
+-- point-in-time restore.
+dbInstance_latestRestorableTime :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.UTCTime)
+dbInstance_latestRestorableTime = Lens.lens (\DBInstance' {latestRestorableTime} -> latestRestorableTime) (\s@DBInstance' {} a -> s {latestRestorableTime = a} :: DBInstance) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies that changes to the instance are pending. This element is
+-- included only when changes are pending. Specific changes are identified
+-- by subelements.
+dbInstance_pendingModifiedValues :: Lens.Lens' DBInstance (Prelude.Maybe PendingModifiedValues)
+dbInstance_pendingModifiedValues = Lens.lens (\DBInstance' {pendingModifiedValues} -> pendingModifiedValues) (\s@DBInstance' {} a -> s {pendingModifiedValues = a} :: DBInstance)
+
+-- | Specifies the daily time range during which automated backups are
+-- created if automated backups are enabled, as determined by the
+-- @BackupRetentionPeriod@.
+dbInstance_preferredBackupWindow :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_preferredBackupWindow = Lens.lens (\DBInstance' {preferredBackupWindow} -> preferredBackupWindow) (\s@DBInstance' {} a -> s {preferredBackupWindow = a} :: DBInstance)
+
+-- | Specifies the weekly time range during which system maintenance can
+-- occur, in Universal Coordinated Time (UTC).
+dbInstance_preferredMaintenanceWindow :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
+dbInstance_preferredMaintenanceWindow = Lens.lens (\DBInstance' {preferredMaintenanceWindow} -> preferredMaintenanceWindow) (\s@DBInstance' {} a -> s {preferredMaintenanceWindow = a} :: DBInstance)
+
+-- | A value that specifies the order in which an Amazon DocumentDB replica
+-- is promoted to the primary instance after a failure of the existing
+-- primary instance.
+dbInstance_promotionTier :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Int)
+dbInstance_promotionTier = Lens.lens (\DBInstance' {promotionTier} -> promotionTier) (\s@DBInstance' {} a -> s {promotionTier = a} :: DBInstance)
+
+-- | Not supported. Amazon DocumentDB does not currently support public
+-- endpoints. The value of @PubliclyAccessible@ is always @false@.
+dbInstance_publiclyAccessible :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Bool)
+dbInstance_publiclyAccessible = Lens.lens (\DBInstance' {publiclyAccessible} -> publiclyAccessible) (\s@DBInstance' {} a -> s {publiclyAccessible = a} :: DBInstance)
+
+-- | The status of a read replica. If the instance is not a read replica,
+-- this is blank.
+dbInstance_statusInfos :: Lens.Lens' DBInstance (Prelude.Maybe [DBInstanceStatusInfo])
+dbInstance_statusInfos = Lens.lens (\DBInstance' {statusInfos} -> statusInfos) (\s@DBInstance' {} a -> s {statusInfos = a} :: DBInstance) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies whether or not the instance is encrypted.
+dbInstance_storageEncrypted :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Bool)
+dbInstance_storageEncrypted = Lens.lens (\DBInstance' {storageEncrypted} -> storageEncrypted) (\s@DBInstance' {} a -> s {storageEncrypted = a} :: DBInstance)
+
+-- | Provides a list of VPC security group elements that the instance belongs
+-- to.
+dbInstance_vpcSecurityGroups :: Lens.Lens' DBInstance (Prelude.Maybe [VpcSecurityGroupMembership])
+dbInstance_vpcSecurityGroups = Lens.lens (\DBInstance' {vpcSecurityGroups} -> vpcSecurityGroups) (\s@DBInstance' {} a -> s {vpcSecurityGroups = a} :: DBInstance) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromXML DBInstance where
+  parseXML x =
+    DBInstance'
+      Prelude.<$> (x Data..@? "AutoMinorVersionUpgrade")
+      Prelude.<*> (x Data..@? "AvailabilityZone")
+      Prelude.<*> (x Data..@? "BackupRetentionPeriod")
+      Prelude.<*> (x Data..@? "CACertificateIdentifier")
+      Prelude.<*> (x Data..@? "CopyTagsToSnapshot")
+      Prelude.<*> (x Data..@? "DBClusterIdentifier")
+      Prelude.<*> (x Data..@? "DBInstanceArn")
+      Prelude.<*> (x Data..@? "DBInstanceClass")
+      Prelude.<*> (x Data..@? "DBInstanceIdentifier")
+      Prelude.<*> (x Data..@? "DBInstanceStatus")
+      Prelude.<*> (x Data..@? "DBSubnetGroup")
+      Prelude.<*> (x Data..@? "DbiResourceId")
+      Prelude.<*> ( x
+                      Data..@? "EnabledCloudwatchLogsExports"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+      Prelude.<*> (x Data..@? "Endpoint")
+      Prelude.<*> (x Data..@? "Engine")
+      Prelude.<*> (x Data..@? "EngineVersion")
+      Prelude.<*> (x Data..@? "InstanceCreateTime")
+      Prelude.<*> (x Data..@? "KmsKeyId")
+      Prelude.<*> (x Data..@? "LatestRestorableTime")
+      Prelude.<*> (x Data..@? "PendingModifiedValues")
+      Prelude.<*> (x Data..@? "PreferredBackupWindow")
+      Prelude.<*> (x Data..@? "PreferredMaintenanceWindow")
+      Prelude.<*> (x Data..@? "PromotionTier")
+      Prelude.<*> (x Data..@? "PubliclyAccessible")
+      Prelude.<*> ( x
+                      Data..@? "StatusInfos"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "DBInstanceStatusInfo")
+                  )
+      Prelude.<*> (x Data..@? "StorageEncrypted")
+      Prelude.<*> ( x
+                      Data..@? "VpcSecurityGroups"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may
+                        (Data.parseXMLList "VpcSecurityGroupMembership")
+                  )
+
+instance Prelude.Hashable DBInstance where
+  hashWithSalt _salt DBInstance' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoMinorVersionUpgrade
+      `Prelude.hashWithSalt` availabilityZone
+      `Prelude.hashWithSalt` backupRetentionPeriod
+      `Prelude.hashWithSalt` cACertificateIdentifier
+      `Prelude.hashWithSalt` copyTagsToSnapshot
+      `Prelude.hashWithSalt` dbClusterIdentifier
+      `Prelude.hashWithSalt` dbInstanceArn
+      `Prelude.hashWithSalt` dbInstanceClass
+      `Prelude.hashWithSalt` dbInstanceIdentifier
+      `Prelude.hashWithSalt` dbInstanceStatus
+      `Prelude.hashWithSalt` dbSubnetGroup
+      `Prelude.hashWithSalt` dbiResourceId
+      `Prelude.hashWithSalt` enabledCloudwatchLogsExports
+      `Prelude.hashWithSalt` endpoint
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` instanceCreateTime
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` latestRestorableTime
+      `Prelude.hashWithSalt` pendingModifiedValues
+      `Prelude.hashWithSalt` preferredBackupWindow
+      `Prelude.hashWithSalt` preferredMaintenanceWindow
+      `Prelude.hashWithSalt` promotionTier
+      `Prelude.hashWithSalt` publiclyAccessible
+      `Prelude.hashWithSalt` statusInfos
+      `Prelude.hashWithSalt` storageEncrypted
+      `Prelude.hashWithSalt` vpcSecurityGroups
+
+instance Prelude.NFData DBInstance where
+  rnf DBInstance' {..} =
+    Prelude.rnf autoMinorVersionUpgrade
+      `Prelude.seq` Prelude.rnf availabilityZone
+      `Prelude.seq` Prelude.rnf backupRetentionPeriod
+      `Prelude.seq` Prelude.rnf cACertificateIdentifier
+      `Prelude.seq` Prelude.rnf copyTagsToSnapshot
+      `Prelude.seq` Prelude.rnf dbClusterIdentifier
+      `Prelude.seq` Prelude.rnf dbInstanceArn
+      `Prelude.seq` Prelude.rnf dbInstanceClass
+      `Prelude.seq` Prelude.rnf dbInstanceIdentifier
+      `Prelude.seq` Prelude.rnf dbInstanceStatus
+      `Prelude.seq` Prelude.rnf dbSubnetGroup
+      `Prelude.seq` Prelude.rnf dbiResourceId
+      `Prelude.seq` Prelude.rnf enabledCloudwatchLogsExports
+      `Prelude.seq` Prelude.rnf endpoint
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf instanceCreateTime
+      `Prelude.seq` Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf latestRestorableTime
+      `Prelude.seq` Prelude.rnf
+        pendingModifiedValues
+      `Prelude.seq` Prelude.rnf
+        preferredBackupWindow
+      `Prelude.seq` Prelude.rnf
+        preferredMaintenanceWindow
+      `Prelude.seq` Prelude.rnf
+        promotionTier
+      `Prelude.seq` Prelude.rnf
+        publiclyAccessible
+      `Prelude.seq` Prelude.rnf
+        statusInfos
+      `Prelude.seq` Prelude.rnf
+        storageEncrypted
+      `Prelude.seq` Prelude.rnf
+        vpcSecurityGroups
diff --git a/gen/Amazonka/DocumentDB/Types/DBInstanceStatusInfo.hs b/gen/Amazonka/DocumentDB/Types/DBInstanceStatusInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBInstanceStatusInfo.hs
@@ -0,0 +1,113 @@
+{-# 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.DocumentDB.Types.DBInstanceStatusInfo
+-- 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.DocumentDB.Types.DBInstanceStatusInfo 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
+
+-- | Provides a list of status information for an instance.
+--
+-- /See:/ 'newDBInstanceStatusInfo' smart constructor.
+data DBInstanceStatusInfo = DBInstanceStatusInfo'
+  { -- | Details of the error if there is an error for the instance. If the
+    -- instance is not in an error state, this value is blank.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | A Boolean value that is @true@ if the instance is operating normally, or
+    -- @false@ if the instance is in an error state.
+    normal :: Prelude.Maybe Prelude.Bool,
+    -- | Status of the instance. For a @StatusType@ of read replica, the values
+    -- can be @replicating@, error, @stopped@, or @terminated@.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | This value is currently \"@read replication@.\"
+    statusType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBInstanceStatusInfo' 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', 'dbInstanceStatusInfo_message' - Details of the error if there is an error for the instance. If the
+-- instance is not in an error state, this value is blank.
+--
+-- 'normal', 'dbInstanceStatusInfo_normal' - A Boolean value that is @true@ if the instance is operating normally, or
+-- @false@ if the instance is in an error state.
+--
+-- 'status', 'dbInstanceStatusInfo_status' - Status of the instance. For a @StatusType@ of read replica, the values
+-- can be @replicating@, error, @stopped@, or @terminated@.
+--
+-- 'statusType', 'dbInstanceStatusInfo_statusType' - This value is currently \"@read replication@.\"
+newDBInstanceStatusInfo ::
+  DBInstanceStatusInfo
+newDBInstanceStatusInfo =
+  DBInstanceStatusInfo'
+    { message = Prelude.Nothing,
+      normal = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusType = Prelude.Nothing
+    }
+
+-- | Details of the error if there is an error for the instance. If the
+-- instance is not in an error state, this value is blank.
+dbInstanceStatusInfo_message :: Lens.Lens' DBInstanceStatusInfo (Prelude.Maybe Prelude.Text)
+dbInstanceStatusInfo_message = Lens.lens (\DBInstanceStatusInfo' {message} -> message) (\s@DBInstanceStatusInfo' {} a -> s {message = a} :: DBInstanceStatusInfo)
+
+-- | A Boolean value that is @true@ if the instance is operating normally, or
+-- @false@ if the instance is in an error state.
+dbInstanceStatusInfo_normal :: Lens.Lens' DBInstanceStatusInfo (Prelude.Maybe Prelude.Bool)
+dbInstanceStatusInfo_normal = Lens.lens (\DBInstanceStatusInfo' {normal} -> normal) (\s@DBInstanceStatusInfo' {} a -> s {normal = a} :: DBInstanceStatusInfo)
+
+-- | Status of the instance. For a @StatusType@ of read replica, the values
+-- can be @replicating@, error, @stopped@, or @terminated@.
+dbInstanceStatusInfo_status :: Lens.Lens' DBInstanceStatusInfo (Prelude.Maybe Prelude.Text)
+dbInstanceStatusInfo_status = Lens.lens (\DBInstanceStatusInfo' {status} -> status) (\s@DBInstanceStatusInfo' {} a -> s {status = a} :: DBInstanceStatusInfo)
+
+-- | This value is currently \"@read replication@.\"
+dbInstanceStatusInfo_statusType :: Lens.Lens' DBInstanceStatusInfo (Prelude.Maybe Prelude.Text)
+dbInstanceStatusInfo_statusType = Lens.lens (\DBInstanceStatusInfo' {statusType} -> statusType) (\s@DBInstanceStatusInfo' {} a -> s {statusType = a} :: DBInstanceStatusInfo)
+
+instance Data.FromXML DBInstanceStatusInfo where
+  parseXML x =
+    DBInstanceStatusInfo'
+      Prelude.<$> (x Data..@? "Message")
+      Prelude.<*> (x Data..@? "Normal")
+      Prelude.<*> (x Data..@? "Status")
+      Prelude.<*> (x Data..@? "StatusType")
+
+instance Prelude.Hashable DBInstanceStatusInfo where
+  hashWithSalt _salt DBInstanceStatusInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` normal
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusType
+
+instance Prelude.NFData DBInstanceStatusInfo where
+  rnf DBInstanceStatusInfo' {..} =
+    Prelude.rnf message
+      `Prelude.seq` Prelude.rnf normal
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusType
diff --git a/gen/Amazonka/DocumentDB/Types/DBSubnetGroup.hs b/gen/Amazonka/DocumentDB/Types/DBSubnetGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/DBSubnetGroup.hs
@@ -0,0 +1,133 @@
+{-# 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.DocumentDB.Types.DBSubnetGroup
+-- 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.DocumentDB.Types.DBSubnetGroup where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.Subnet
+import qualified Amazonka.Prelude as Prelude
+
+-- | Detailed information about a subnet group.
+--
+-- /See:/ 'newDBSubnetGroup' smart constructor.
+data DBSubnetGroup = DBSubnetGroup'
+  { -- | The Amazon Resource Name (ARN) for the DB subnet group.
+    dbSubnetGroupArn :: Prelude.Maybe Prelude.Text,
+    -- | Provides the description of the subnet group.
+    dbSubnetGroupDescription :: Prelude.Maybe Prelude.Text,
+    -- | The name of the subnet group.
+    dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
+    -- | Provides the status of the subnet group.
+    subnetGroupStatus :: Prelude.Maybe Prelude.Text,
+    -- | Detailed information about one or more subnets within a subnet group.
+    subnets :: Prelude.Maybe [Subnet],
+    -- | Provides the virtual private cloud (VPC) ID of the subnet group.
+    vpcId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DBSubnetGroup' 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:
+--
+-- 'dbSubnetGroupArn', 'dbSubnetGroup_dbSubnetGroupArn' - The Amazon Resource Name (ARN) for the DB subnet group.
+--
+-- 'dbSubnetGroupDescription', 'dbSubnetGroup_dbSubnetGroupDescription' - Provides the description of the subnet group.
+--
+-- 'dbSubnetGroupName', 'dbSubnetGroup_dbSubnetGroupName' - The name of the subnet group.
+--
+-- 'subnetGroupStatus', 'dbSubnetGroup_subnetGroupStatus' - Provides the status of the subnet group.
+--
+-- 'subnets', 'dbSubnetGroup_subnets' - Detailed information about one or more subnets within a subnet group.
+--
+-- 'vpcId', 'dbSubnetGroup_vpcId' - Provides the virtual private cloud (VPC) ID of the subnet group.
+newDBSubnetGroup ::
+  DBSubnetGroup
+newDBSubnetGroup =
+  DBSubnetGroup'
+    { dbSubnetGroupArn = Prelude.Nothing,
+      dbSubnetGroupDescription = Prelude.Nothing,
+      dbSubnetGroupName = Prelude.Nothing,
+      subnetGroupStatus = Prelude.Nothing,
+      subnets = Prelude.Nothing,
+      vpcId = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) for the DB subnet group.
+dbSubnetGroup_dbSubnetGroupArn :: Lens.Lens' DBSubnetGroup (Prelude.Maybe Prelude.Text)
+dbSubnetGroup_dbSubnetGroupArn = Lens.lens (\DBSubnetGroup' {dbSubnetGroupArn} -> dbSubnetGroupArn) (\s@DBSubnetGroup' {} a -> s {dbSubnetGroupArn = a} :: DBSubnetGroup)
+
+-- | Provides the description of the subnet group.
+dbSubnetGroup_dbSubnetGroupDescription :: Lens.Lens' DBSubnetGroup (Prelude.Maybe Prelude.Text)
+dbSubnetGroup_dbSubnetGroupDescription = Lens.lens (\DBSubnetGroup' {dbSubnetGroupDescription} -> dbSubnetGroupDescription) (\s@DBSubnetGroup' {} a -> s {dbSubnetGroupDescription = a} :: DBSubnetGroup)
+
+-- | The name of the subnet group.
+dbSubnetGroup_dbSubnetGroupName :: Lens.Lens' DBSubnetGroup (Prelude.Maybe Prelude.Text)
+dbSubnetGroup_dbSubnetGroupName = Lens.lens (\DBSubnetGroup' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@DBSubnetGroup' {} a -> s {dbSubnetGroupName = a} :: DBSubnetGroup)
+
+-- | Provides the status of the subnet group.
+dbSubnetGroup_subnetGroupStatus :: Lens.Lens' DBSubnetGroup (Prelude.Maybe Prelude.Text)
+dbSubnetGroup_subnetGroupStatus = Lens.lens (\DBSubnetGroup' {subnetGroupStatus} -> subnetGroupStatus) (\s@DBSubnetGroup' {} a -> s {subnetGroupStatus = a} :: DBSubnetGroup)
+
+-- | Detailed information about one or more subnets within a subnet group.
+dbSubnetGroup_subnets :: Lens.Lens' DBSubnetGroup (Prelude.Maybe [Subnet])
+dbSubnetGroup_subnets = Lens.lens (\DBSubnetGroup' {subnets} -> subnets) (\s@DBSubnetGroup' {} a -> s {subnets = a} :: DBSubnetGroup) Prelude.. Lens.mapping Lens.coerced
+
+-- | Provides the virtual private cloud (VPC) ID of the subnet group.
+dbSubnetGroup_vpcId :: Lens.Lens' DBSubnetGroup (Prelude.Maybe Prelude.Text)
+dbSubnetGroup_vpcId = Lens.lens (\DBSubnetGroup' {vpcId} -> vpcId) (\s@DBSubnetGroup' {} a -> s {vpcId = a} :: DBSubnetGroup)
+
+instance Data.FromXML DBSubnetGroup where
+  parseXML x =
+    DBSubnetGroup'
+      Prelude.<$> (x Data..@? "DBSubnetGroupArn")
+      Prelude.<*> (x Data..@? "DBSubnetGroupDescription")
+      Prelude.<*> (x Data..@? "DBSubnetGroupName")
+      Prelude.<*> (x Data..@? "SubnetGroupStatus")
+      Prelude.<*> ( x
+                      Data..@? "Subnets"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "Subnet")
+                  )
+      Prelude.<*> (x Data..@? "VpcId")
+
+instance Prelude.Hashable DBSubnetGroup where
+  hashWithSalt _salt DBSubnetGroup' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbSubnetGroupArn
+      `Prelude.hashWithSalt` dbSubnetGroupDescription
+      `Prelude.hashWithSalt` dbSubnetGroupName
+      `Prelude.hashWithSalt` subnetGroupStatus
+      `Prelude.hashWithSalt` subnets
+      `Prelude.hashWithSalt` vpcId
+
+instance Prelude.NFData DBSubnetGroup where
+  rnf DBSubnetGroup' {..} =
+    Prelude.rnf dbSubnetGroupArn
+      `Prelude.seq` Prelude.rnf dbSubnetGroupDescription
+      `Prelude.seq` Prelude.rnf dbSubnetGroupName
+      `Prelude.seq` Prelude.rnf subnetGroupStatus
+      `Prelude.seq` Prelude.rnf subnets
+      `Prelude.seq` Prelude.rnf vpcId
diff --git a/gen/Amazonka/DocumentDB/Types/Endpoint.hs b/gen/Amazonka/DocumentDB/Types/Endpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/Endpoint.hs
@@ -0,0 +1,97 @@
+{-# 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.DocumentDB.Types.Endpoint
+-- 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.DocumentDB.Types.Endpoint where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Network information for accessing a cluster or instance. Client programs
+-- must specify a valid endpoint to access these Amazon DocumentDB
+-- resources.
+--
+-- /See:/ 'newEndpoint' smart constructor.
+data Endpoint = Endpoint'
+  { -- | Specifies the DNS address of the instance.
+    address :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the ID that Amazon Route 53 assigns when you create a hosted
+    -- zone.
+    hostedZoneId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the port that the database engine is listening on.
+    port :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Endpoint' 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:
+--
+-- 'address', 'endpoint_address' - Specifies the DNS address of the instance.
+--
+-- 'hostedZoneId', 'endpoint_hostedZoneId' - Specifies the ID that Amazon Route 53 assigns when you create a hosted
+-- zone.
+--
+-- 'port', 'endpoint_port' - Specifies the port that the database engine is listening on.
+newEndpoint ::
+  Endpoint
+newEndpoint =
+  Endpoint'
+    { address = Prelude.Nothing,
+      hostedZoneId = Prelude.Nothing,
+      port = Prelude.Nothing
+    }
+
+-- | Specifies the DNS address of the instance.
+endpoint_address :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
+endpoint_address = Lens.lens (\Endpoint' {address} -> address) (\s@Endpoint' {} a -> s {address = a} :: Endpoint)
+
+-- | Specifies the ID that Amazon Route 53 assigns when you create a hosted
+-- zone.
+endpoint_hostedZoneId :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
+endpoint_hostedZoneId = Lens.lens (\Endpoint' {hostedZoneId} -> hostedZoneId) (\s@Endpoint' {} a -> s {hostedZoneId = a} :: Endpoint)
+
+-- | Specifies the port that the database engine is listening on.
+endpoint_port :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Int)
+endpoint_port = Lens.lens (\Endpoint' {port} -> port) (\s@Endpoint' {} a -> s {port = a} :: Endpoint)
+
+instance Data.FromXML Endpoint where
+  parseXML x =
+    Endpoint'
+      Prelude.<$> (x Data..@? "Address")
+      Prelude.<*> (x Data..@? "HostedZoneId")
+      Prelude.<*> (x Data..@? "Port")
+
+instance Prelude.Hashable Endpoint where
+  hashWithSalt _salt Endpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` address
+      `Prelude.hashWithSalt` hostedZoneId
+      `Prelude.hashWithSalt` port
+
+instance Prelude.NFData Endpoint where
+  rnf Endpoint' {..} =
+    Prelude.rnf address
+      `Prelude.seq` Prelude.rnf hostedZoneId
+      `Prelude.seq` Prelude.rnf port
diff --git a/gen/Amazonka/DocumentDB/Types/EngineDefaults.hs b/gen/Amazonka/DocumentDB/Types/EngineDefaults.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/EngineDefaults.hs
@@ -0,0 +1,108 @@
+{-# 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.DocumentDB.Types.EngineDefaults
+-- 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.DocumentDB.Types.EngineDefaults where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.Parameter
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains the result of a successful invocation of the
+-- @DescribeEngineDefaultClusterParameters@ operation.
+--
+-- /See:/ 'newEngineDefaults' smart constructor.
+data EngineDefaults = EngineDefaults'
+  { -- | The name of the cluster parameter group family to return the engine
+    -- parameter information for.
+    dbParameterGroupFamily :: Prelude.Maybe Prelude.Text,
+    -- | An optional pagination token provided by a previous request. If this
+    -- parameter is specified, the response includes only records beyond the
+    -- marker, up to the value specified by @MaxRecords@.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The parameters of a particular cluster parameter group family.
+    parameters :: Prelude.Maybe [Parameter]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EngineDefaults' 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:
+--
+-- 'dbParameterGroupFamily', 'engineDefaults_dbParameterGroupFamily' - The name of the cluster parameter group family to return the engine
+-- parameter information for.
+--
+-- 'marker', 'engineDefaults_marker' - An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+--
+-- 'parameters', 'engineDefaults_parameters' - The parameters of a particular cluster parameter group family.
+newEngineDefaults ::
+  EngineDefaults
+newEngineDefaults =
+  EngineDefaults'
+    { dbParameterGroupFamily =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      parameters = Prelude.Nothing
+    }
+
+-- | The name of the cluster parameter group family to return the engine
+-- parameter information for.
+engineDefaults_dbParameterGroupFamily :: Lens.Lens' EngineDefaults (Prelude.Maybe Prelude.Text)
+engineDefaults_dbParameterGroupFamily = Lens.lens (\EngineDefaults' {dbParameterGroupFamily} -> dbParameterGroupFamily) (\s@EngineDefaults' {} a -> s {dbParameterGroupFamily = a} :: EngineDefaults)
+
+-- | An optional pagination token provided by a previous request. If this
+-- parameter is specified, the response includes only records beyond the
+-- marker, up to the value specified by @MaxRecords@.
+engineDefaults_marker :: Lens.Lens' EngineDefaults (Prelude.Maybe Prelude.Text)
+engineDefaults_marker = Lens.lens (\EngineDefaults' {marker} -> marker) (\s@EngineDefaults' {} a -> s {marker = a} :: EngineDefaults)
+
+-- | The parameters of a particular cluster parameter group family.
+engineDefaults_parameters :: Lens.Lens' EngineDefaults (Prelude.Maybe [Parameter])
+engineDefaults_parameters = Lens.lens (\EngineDefaults' {parameters} -> parameters) (\s@EngineDefaults' {} a -> s {parameters = a} :: EngineDefaults) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromXML EngineDefaults where
+  parseXML x =
+    EngineDefaults'
+      Prelude.<$> (x Data..@? "DBParameterGroupFamily")
+      Prelude.<*> (x Data..@? "Marker")
+      Prelude.<*> ( x
+                      Data..@? "Parameters"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "Parameter")
+                  )
+
+instance Prelude.Hashable EngineDefaults where
+  hashWithSalt _salt EngineDefaults' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbParameterGroupFamily
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` parameters
+
+instance Prelude.NFData EngineDefaults where
+  rnf EngineDefaults' {..} =
+    Prelude.rnf dbParameterGroupFamily
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf parameters
diff --git a/gen/Amazonka/DocumentDB/Types/Event.hs b/gen/Amazonka/DocumentDB/Types/Event.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/Event.hs
@@ -0,0 +1,133 @@
+{-# 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.DocumentDB.Types.Event
+-- 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.DocumentDB.Types.Event where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.SourceType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Detailed information about an event.
+--
+-- /See:/ 'newEvent' smart constructor.
+data Event = Event'
+  { -- | Specifies the date and time of the event.
+    date :: Prelude.Maybe Data.ISO8601,
+    -- | Specifies the category for the event.
+    eventCategories :: Prelude.Maybe [Prelude.Text],
+    -- | Provides the text of this event.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the event.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | Provides the identifier for the source of the event.
+    sourceIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the source type for this event.
+    sourceType :: Prelude.Maybe SourceType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Event' 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:
+--
+-- 'date', 'event_date' - Specifies the date and time of the event.
+--
+-- 'eventCategories', 'event_eventCategories' - Specifies the category for the event.
+--
+-- 'message', 'event_message' - Provides the text of this event.
+--
+-- 'sourceArn', 'event_sourceArn' - The Amazon Resource Name (ARN) for the event.
+--
+-- 'sourceIdentifier', 'event_sourceIdentifier' - Provides the identifier for the source of the event.
+--
+-- 'sourceType', 'event_sourceType' - Specifies the source type for this event.
+newEvent ::
+  Event
+newEvent =
+  Event'
+    { date = Prelude.Nothing,
+      eventCategories = Prelude.Nothing,
+      message = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      sourceIdentifier = Prelude.Nothing,
+      sourceType = Prelude.Nothing
+    }
+
+-- | Specifies the date and time of the event.
+event_date :: Lens.Lens' Event (Prelude.Maybe Prelude.UTCTime)
+event_date = Lens.lens (\Event' {date} -> date) (\s@Event' {} a -> s {date = a} :: Event) Prelude.. Lens.mapping Data._Time
+
+-- | Specifies the category for the event.
+event_eventCategories :: Lens.Lens' Event (Prelude.Maybe [Prelude.Text])
+event_eventCategories = Lens.lens (\Event' {eventCategories} -> eventCategories) (\s@Event' {} a -> s {eventCategories = a} :: Event) Prelude.. Lens.mapping Lens.coerced
+
+-- | Provides the text of this event.
+event_message :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)
+event_message = Lens.lens (\Event' {message} -> message) (\s@Event' {} a -> s {message = a} :: Event)
+
+-- | The Amazon Resource Name (ARN) for the event.
+event_sourceArn :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)
+event_sourceArn = Lens.lens (\Event' {sourceArn} -> sourceArn) (\s@Event' {} a -> s {sourceArn = a} :: Event)
+
+-- | Provides the identifier for the source of the event.
+event_sourceIdentifier :: Lens.Lens' Event (Prelude.Maybe Prelude.Text)
+event_sourceIdentifier = Lens.lens (\Event' {sourceIdentifier} -> sourceIdentifier) (\s@Event' {} a -> s {sourceIdentifier = a} :: Event)
+
+-- | Specifies the source type for this event.
+event_sourceType :: Lens.Lens' Event (Prelude.Maybe SourceType)
+event_sourceType = Lens.lens (\Event' {sourceType} -> sourceType) (\s@Event' {} a -> s {sourceType = a} :: Event)
+
+instance Data.FromXML Event where
+  parseXML x =
+    Event'
+      Prelude.<$> (x Data..@? "Date")
+      Prelude.<*> ( x
+                      Data..@? "EventCategories"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "EventCategory")
+                  )
+      Prelude.<*> (x Data..@? "Message")
+      Prelude.<*> (x Data..@? "SourceArn")
+      Prelude.<*> (x Data..@? "SourceIdentifier")
+      Prelude.<*> (x Data..@? "SourceType")
+
+instance Prelude.Hashable Event where
+  hashWithSalt _salt Event' {..} =
+    _salt
+      `Prelude.hashWithSalt` date
+      `Prelude.hashWithSalt` eventCategories
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` sourceIdentifier
+      `Prelude.hashWithSalt` sourceType
+
+instance Prelude.NFData Event where
+  rnf Event' {..} =
+    Prelude.rnf date
+      `Prelude.seq` Prelude.rnf eventCategories
+      `Prelude.seq` Prelude.rnf message
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf sourceIdentifier
+      `Prelude.seq` Prelude.rnf sourceType
diff --git a/gen/Amazonka/DocumentDB/Types/EventCategoriesMap.hs b/gen/Amazonka/DocumentDB/Types/EventCategoriesMap.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/EventCategoriesMap.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.DocumentDB.Types.EventCategoriesMap
+-- 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.DocumentDB.Types.EventCategoriesMap where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An event source type, accompanied by one or more event category names.
+--
+-- /See:/ 'newEventCategoriesMap' smart constructor.
+data EventCategoriesMap = EventCategoriesMap'
+  { -- | The event categories for the specified source type.
+    eventCategories :: Prelude.Maybe [Prelude.Text],
+    -- | The source type that the returned categories belong to.
+    sourceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventCategoriesMap' 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:
+--
+-- 'eventCategories', 'eventCategoriesMap_eventCategories' - The event categories for the specified source type.
+--
+-- 'sourceType', 'eventCategoriesMap_sourceType' - The source type that the returned categories belong to.
+newEventCategoriesMap ::
+  EventCategoriesMap
+newEventCategoriesMap =
+  EventCategoriesMap'
+    { eventCategories =
+        Prelude.Nothing,
+      sourceType = Prelude.Nothing
+    }
+
+-- | The event categories for the specified source type.
+eventCategoriesMap_eventCategories :: Lens.Lens' EventCategoriesMap (Prelude.Maybe [Prelude.Text])
+eventCategoriesMap_eventCategories = Lens.lens (\EventCategoriesMap' {eventCategories} -> eventCategories) (\s@EventCategoriesMap' {} a -> s {eventCategories = a} :: EventCategoriesMap) Prelude.. Lens.mapping Lens.coerced
+
+-- | The source type that the returned categories belong to.
+eventCategoriesMap_sourceType :: Lens.Lens' EventCategoriesMap (Prelude.Maybe Prelude.Text)
+eventCategoriesMap_sourceType = Lens.lens (\EventCategoriesMap' {sourceType} -> sourceType) (\s@EventCategoriesMap' {} a -> s {sourceType = a} :: EventCategoriesMap)
+
+instance Data.FromXML EventCategoriesMap where
+  parseXML x =
+    EventCategoriesMap'
+      Prelude.<$> ( x
+                      Data..@? "EventCategories"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "EventCategory")
+                  )
+      Prelude.<*> (x Data..@? "SourceType")
+
+instance Prelude.Hashable EventCategoriesMap where
+  hashWithSalt _salt EventCategoriesMap' {..} =
+    _salt
+      `Prelude.hashWithSalt` eventCategories
+      `Prelude.hashWithSalt` sourceType
+
+instance Prelude.NFData EventCategoriesMap where
+  rnf EventCategoriesMap' {..} =
+    Prelude.rnf eventCategories
+      `Prelude.seq` Prelude.rnf sourceType
diff --git a/gen/Amazonka/DocumentDB/Types/EventSubscription.hs b/gen/Amazonka/DocumentDB/Types/EventSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/EventSubscription.hs
@@ -0,0 +1,230 @@
+{-# 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.DocumentDB.Types.EventSubscription
+-- 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.DocumentDB.Types.EventSubscription 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
+
+-- | Detailed information about an event to which you have subscribed.
+--
+-- /See:/ 'newEventSubscription' smart constructor.
+data EventSubscription = EventSubscription'
+  { -- | The Amazon DocumentDB event notification subscription ID.
+    custSubscriptionId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Web Services customer account that is associated with the
+    -- Amazon DocumentDB event notification subscription.
+    customerAwsId :: Prelude.Maybe Prelude.Text,
+    -- | A Boolean value indicating whether the subscription is enabled. A value
+    -- of @true@ indicates that the subscription is enabled.
+    enabled :: Prelude.Maybe Prelude.Bool,
+    -- | A list of event categories for the Amazon DocumentDB event notification
+    -- subscription.
+    eventCategoriesList :: Prelude.Maybe [Prelude.Text],
+    -- | The Amazon Resource Name (ARN) for the event subscription.
+    eventSubscriptionArn :: Prelude.Maybe Prelude.Text,
+    -- | The topic ARN of the Amazon DocumentDB event notification subscription.
+    snsTopicArn :: Prelude.Maybe Prelude.Text,
+    -- | A list of source IDs for the Amazon DocumentDB event notification
+    -- subscription.
+    sourceIdsList :: Prelude.Maybe [Prelude.Text],
+    -- | The source type for the Amazon DocumentDB event notification
+    -- subscription.
+    sourceType :: Prelude.Maybe Prelude.Text,
+    -- | The status of the Amazon DocumentDB event notification subscription.
+    --
+    -- Constraints:
+    --
+    -- Can be one of the following: @creating@, @modifying@, @deleting@,
+    -- @active@, @no-permission@, @topic-not-exist@
+    --
+    -- The @no-permission@ status indicates that Amazon DocumentDB no longer
+    -- has permission to post to the SNS topic. The @topic-not-exist@ status
+    -- indicates that the topic was deleted after the subscription was created.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the Amazon DocumentDB event notification subscription
+    -- was created.
+    subscriptionCreationTime :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventSubscription' 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:
+--
+-- 'custSubscriptionId', 'eventSubscription_custSubscriptionId' - The Amazon DocumentDB event notification subscription ID.
+--
+-- 'customerAwsId', 'eventSubscription_customerAwsId' - The Amazon Web Services customer account that is associated with the
+-- Amazon DocumentDB event notification subscription.
+--
+-- 'enabled', 'eventSubscription_enabled' - A Boolean value indicating whether the subscription is enabled. A value
+-- of @true@ indicates that the subscription is enabled.
+--
+-- 'eventCategoriesList', 'eventSubscription_eventCategoriesList' - A list of event categories for the Amazon DocumentDB event notification
+-- subscription.
+--
+-- 'eventSubscriptionArn', 'eventSubscription_eventSubscriptionArn' - The Amazon Resource Name (ARN) for the event subscription.
+--
+-- 'snsTopicArn', 'eventSubscription_snsTopicArn' - The topic ARN of the Amazon DocumentDB event notification subscription.
+--
+-- 'sourceIdsList', 'eventSubscription_sourceIdsList' - A list of source IDs for the Amazon DocumentDB event notification
+-- subscription.
+--
+-- 'sourceType', 'eventSubscription_sourceType' - The source type for the Amazon DocumentDB event notification
+-- subscription.
+--
+-- 'status', 'eventSubscription_status' - The status of the Amazon DocumentDB event notification subscription.
+--
+-- Constraints:
+--
+-- Can be one of the following: @creating@, @modifying@, @deleting@,
+-- @active@, @no-permission@, @topic-not-exist@
+--
+-- The @no-permission@ status indicates that Amazon DocumentDB no longer
+-- has permission to post to the SNS topic. The @topic-not-exist@ status
+-- indicates that the topic was deleted after the subscription was created.
+--
+-- 'subscriptionCreationTime', 'eventSubscription_subscriptionCreationTime' - The time at which the Amazon DocumentDB event notification subscription
+-- was created.
+newEventSubscription ::
+  EventSubscription
+newEventSubscription =
+  EventSubscription'
+    { custSubscriptionId =
+        Prelude.Nothing,
+      customerAwsId = Prelude.Nothing,
+      enabled = Prelude.Nothing,
+      eventCategoriesList = Prelude.Nothing,
+      eventSubscriptionArn = Prelude.Nothing,
+      snsTopicArn = Prelude.Nothing,
+      sourceIdsList = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      status = Prelude.Nothing,
+      subscriptionCreationTime = Prelude.Nothing
+    }
+
+-- | The Amazon DocumentDB event notification subscription ID.
+eventSubscription_custSubscriptionId :: Lens.Lens' EventSubscription (Prelude.Maybe Prelude.Text)
+eventSubscription_custSubscriptionId = Lens.lens (\EventSubscription' {custSubscriptionId} -> custSubscriptionId) (\s@EventSubscription' {} a -> s {custSubscriptionId = a} :: EventSubscription)
+
+-- | The Amazon Web Services customer account that is associated with the
+-- Amazon DocumentDB event notification subscription.
+eventSubscription_customerAwsId :: Lens.Lens' EventSubscription (Prelude.Maybe Prelude.Text)
+eventSubscription_customerAwsId = Lens.lens (\EventSubscription' {customerAwsId} -> customerAwsId) (\s@EventSubscription' {} a -> s {customerAwsId = a} :: EventSubscription)
+
+-- | A Boolean value indicating whether the subscription is enabled. A value
+-- of @true@ indicates that the subscription is enabled.
+eventSubscription_enabled :: Lens.Lens' EventSubscription (Prelude.Maybe Prelude.Bool)
+eventSubscription_enabled = Lens.lens (\EventSubscription' {enabled} -> enabled) (\s@EventSubscription' {} a -> s {enabled = a} :: EventSubscription)
+
+-- | A list of event categories for the Amazon DocumentDB event notification
+-- subscription.
+eventSubscription_eventCategoriesList :: Lens.Lens' EventSubscription (Prelude.Maybe [Prelude.Text])
+eventSubscription_eventCategoriesList = Lens.lens (\EventSubscription' {eventCategoriesList} -> eventCategoriesList) (\s@EventSubscription' {} a -> s {eventCategoriesList = a} :: EventSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) for the event subscription.
+eventSubscription_eventSubscriptionArn :: Lens.Lens' EventSubscription (Prelude.Maybe Prelude.Text)
+eventSubscription_eventSubscriptionArn = Lens.lens (\EventSubscription' {eventSubscriptionArn} -> eventSubscriptionArn) (\s@EventSubscription' {} a -> s {eventSubscriptionArn = a} :: EventSubscription)
+
+-- | The topic ARN of the Amazon DocumentDB event notification subscription.
+eventSubscription_snsTopicArn :: Lens.Lens' EventSubscription (Prelude.Maybe Prelude.Text)
+eventSubscription_snsTopicArn = Lens.lens (\EventSubscription' {snsTopicArn} -> snsTopicArn) (\s@EventSubscription' {} a -> s {snsTopicArn = a} :: EventSubscription)
+
+-- | A list of source IDs for the Amazon DocumentDB event notification
+-- subscription.
+eventSubscription_sourceIdsList :: Lens.Lens' EventSubscription (Prelude.Maybe [Prelude.Text])
+eventSubscription_sourceIdsList = Lens.lens (\EventSubscription' {sourceIdsList} -> sourceIdsList) (\s@EventSubscription' {} a -> s {sourceIdsList = a} :: EventSubscription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The source type for the Amazon DocumentDB event notification
+-- subscription.
+eventSubscription_sourceType :: Lens.Lens' EventSubscription (Prelude.Maybe Prelude.Text)
+eventSubscription_sourceType = Lens.lens (\EventSubscription' {sourceType} -> sourceType) (\s@EventSubscription' {} a -> s {sourceType = a} :: EventSubscription)
+
+-- | The status of the Amazon DocumentDB event notification subscription.
+--
+-- Constraints:
+--
+-- Can be one of the following: @creating@, @modifying@, @deleting@,
+-- @active@, @no-permission@, @topic-not-exist@
+--
+-- The @no-permission@ status indicates that Amazon DocumentDB no longer
+-- has permission to post to the SNS topic. The @topic-not-exist@ status
+-- indicates that the topic was deleted after the subscription was created.
+eventSubscription_status :: Lens.Lens' EventSubscription (Prelude.Maybe Prelude.Text)
+eventSubscription_status = Lens.lens (\EventSubscription' {status} -> status) (\s@EventSubscription' {} a -> s {status = a} :: EventSubscription)
+
+-- | The time at which the Amazon DocumentDB event notification subscription
+-- was created.
+eventSubscription_subscriptionCreationTime :: Lens.Lens' EventSubscription (Prelude.Maybe Prelude.Text)
+eventSubscription_subscriptionCreationTime = Lens.lens (\EventSubscription' {subscriptionCreationTime} -> subscriptionCreationTime) (\s@EventSubscription' {} a -> s {subscriptionCreationTime = a} :: EventSubscription)
+
+instance Data.FromXML EventSubscription where
+  parseXML x =
+    EventSubscription'
+      Prelude.<$> (x Data..@? "CustSubscriptionId")
+      Prelude.<*> (x Data..@? "CustomerAwsId")
+      Prelude.<*> (x Data..@? "Enabled")
+      Prelude.<*> ( x
+                      Data..@? "EventCategoriesList"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "EventCategory")
+                  )
+      Prelude.<*> (x Data..@? "EventSubscriptionArn")
+      Prelude.<*> (x Data..@? "SnsTopicArn")
+      Prelude.<*> ( x
+                      Data..@? "SourceIdsList"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "SourceId")
+                  )
+      Prelude.<*> (x Data..@? "SourceType")
+      Prelude.<*> (x Data..@? "Status")
+      Prelude.<*> (x Data..@? "SubscriptionCreationTime")
+
+instance Prelude.Hashable EventSubscription where
+  hashWithSalt _salt EventSubscription' {..} =
+    _salt
+      `Prelude.hashWithSalt` custSubscriptionId
+      `Prelude.hashWithSalt` customerAwsId
+      `Prelude.hashWithSalt` enabled
+      `Prelude.hashWithSalt` eventCategoriesList
+      `Prelude.hashWithSalt` eventSubscriptionArn
+      `Prelude.hashWithSalt` snsTopicArn
+      `Prelude.hashWithSalt` sourceIdsList
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` subscriptionCreationTime
+
+instance Prelude.NFData EventSubscription where
+  rnf EventSubscription' {..} =
+    Prelude.rnf custSubscriptionId
+      `Prelude.seq` Prelude.rnf customerAwsId
+      `Prelude.seq` Prelude.rnf enabled
+      `Prelude.seq` Prelude.rnf eventCategoriesList
+      `Prelude.seq` Prelude.rnf eventSubscriptionArn
+      `Prelude.seq` Prelude.rnf snsTopicArn
+      `Prelude.seq` Prelude.rnf sourceIdsList
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf subscriptionCreationTime
diff --git a/gen/Amazonka/DocumentDB/Types/Filter.hs b/gen/Amazonka/DocumentDB/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/Filter.hs
@@ -0,0 +1,83 @@
+{-# 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.DocumentDB.Types.Filter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.DocumentDB.Types.Filter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A named set of filter values, used to return a more specific list of
+-- results. You can use a filter to match a set of resources by specific
+-- criteria, such as IDs.
+--
+-- Wildcards are not supported in filters.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | The name of the filter. Filter names are case sensitive.
+    name :: Prelude.Text,
+    -- | One or more filter values. Filter values are case sensitive.
+    values :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Filter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'filter_name' - The name of the filter. Filter names are case sensitive.
+--
+-- 'values', 'filter_values' - One or more filter values. Filter values are case sensitive.
+newFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  Filter
+newFilter pName_ =
+  Filter' {name = pName_, values = Prelude.mempty}
+
+-- | The name of the filter. Filter names are case sensitive.
+filter_name :: Lens.Lens' Filter Prelude.Text
+filter_name = Lens.lens (\Filter' {name} -> name) (\s@Filter' {} a -> s {name = a} :: Filter)
+
+-- | One or more filter values. Filter values are case sensitive.
+filter_values :: Lens.Lens' Filter [Prelude.Text]
+filter_values = Lens.lens (\Filter' {values} -> values) (\s@Filter' {} a -> s {values = a} :: Filter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToQuery Filter where
+  toQuery Filter' {..} =
+    Prelude.mconcat
+      [ "Name" Data.=: name,
+        "Values" Data.=: Data.toQueryList "Value" values
+      ]
diff --git a/gen/Amazonka/DocumentDB/Types/GlobalCluster.hs b/gen/Amazonka/DocumentDB/Types/GlobalCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/GlobalCluster.hs
@@ -0,0 +1,196 @@
+{-# 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.DocumentDB.Types.GlobalCluster
+-- 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.DocumentDB.Types.GlobalCluster where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.GlobalClusterMember
+import qualified Amazonka.Prelude as Prelude
+
+-- | A data type representing an Amazon DocumentDB global cluster.
+--
+-- /See:/ 'newGlobalCluster' smart constructor.
+data GlobalCluster = GlobalCluster'
+  { -- | The default database name within the new global cluster.
+    databaseName :: Prelude.Maybe Prelude.Text,
+    -- | The deletion protection setting for the new global cluster.
+    deletionProtection :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon DocumentDB database engine used by the global cluster.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the database engine version.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the global cluster.
+    globalClusterArn :: Prelude.Maybe Prelude.Text,
+    -- | Contains a user-supplied global cluster identifier. This identifier is
+    -- the unique key that identifies a global cluster.
+    globalClusterIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The list of cluster IDs for secondary clusters within the global
+    -- cluster. Currently limited to one item.
+    globalClusterMembers :: Prelude.Maybe [GlobalClusterMember],
+    -- | The Amazon Web Services Region-unique, immutable identifier for the
+    -- global database cluster. This identifier is found in AWS CloudTrail log
+    -- entries whenever the AWS KMS customer master key (CMK) for the cluster
+    -- is accessed.
+    globalClusterResourceId :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the current state of this global cluster.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | The storage encryption setting for the global cluster.
+    storageEncrypted :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GlobalCluster' 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:
+--
+-- 'databaseName', 'globalCluster_databaseName' - The default database name within the new global cluster.
+--
+-- 'deletionProtection', 'globalCluster_deletionProtection' - The deletion protection setting for the new global cluster.
+--
+-- 'engine', 'globalCluster_engine' - The Amazon DocumentDB database engine used by the global cluster.
+--
+-- 'engineVersion', 'globalCluster_engineVersion' - Indicates the database engine version.
+--
+-- 'globalClusterArn', 'globalCluster_globalClusterArn' - The Amazon Resource Name (ARN) for the global cluster.
+--
+-- 'globalClusterIdentifier', 'globalCluster_globalClusterIdentifier' - Contains a user-supplied global cluster identifier. This identifier is
+-- the unique key that identifies a global cluster.
+--
+-- 'globalClusterMembers', 'globalCluster_globalClusterMembers' - The list of cluster IDs for secondary clusters within the global
+-- cluster. Currently limited to one item.
+--
+-- 'globalClusterResourceId', 'globalCluster_globalClusterResourceId' - The Amazon Web Services Region-unique, immutable identifier for the
+-- global database cluster. This identifier is found in AWS CloudTrail log
+-- entries whenever the AWS KMS customer master key (CMK) for the cluster
+-- is accessed.
+--
+-- 'status', 'globalCluster_status' - Specifies the current state of this global cluster.
+--
+-- 'storageEncrypted', 'globalCluster_storageEncrypted' - The storage encryption setting for the global cluster.
+newGlobalCluster ::
+  GlobalCluster
+newGlobalCluster =
+  GlobalCluster'
+    { databaseName = Prelude.Nothing,
+      deletionProtection = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      globalClusterArn = Prelude.Nothing,
+      globalClusterIdentifier = Prelude.Nothing,
+      globalClusterMembers = Prelude.Nothing,
+      globalClusterResourceId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      storageEncrypted = Prelude.Nothing
+    }
+
+-- | The default database name within the new global cluster.
+globalCluster_databaseName :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Text)
+globalCluster_databaseName = Lens.lens (\GlobalCluster' {databaseName} -> databaseName) (\s@GlobalCluster' {} a -> s {databaseName = a} :: GlobalCluster)
+
+-- | The deletion protection setting for the new global cluster.
+globalCluster_deletionProtection :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Bool)
+globalCluster_deletionProtection = Lens.lens (\GlobalCluster' {deletionProtection} -> deletionProtection) (\s@GlobalCluster' {} a -> s {deletionProtection = a} :: GlobalCluster)
+
+-- | The Amazon DocumentDB database engine used by the global cluster.
+globalCluster_engine :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Text)
+globalCluster_engine = Lens.lens (\GlobalCluster' {engine} -> engine) (\s@GlobalCluster' {} a -> s {engine = a} :: GlobalCluster)
+
+-- | Indicates the database engine version.
+globalCluster_engineVersion :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Text)
+globalCluster_engineVersion = Lens.lens (\GlobalCluster' {engineVersion} -> engineVersion) (\s@GlobalCluster' {} a -> s {engineVersion = a} :: GlobalCluster)
+
+-- | The Amazon Resource Name (ARN) for the global cluster.
+globalCluster_globalClusterArn :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Text)
+globalCluster_globalClusterArn = Lens.lens (\GlobalCluster' {globalClusterArn} -> globalClusterArn) (\s@GlobalCluster' {} a -> s {globalClusterArn = a} :: GlobalCluster)
+
+-- | Contains a user-supplied global cluster identifier. This identifier is
+-- the unique key that identifies a global cluster.
+globalCluster_globalClusterIdentifier :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Text)
+globalCluster_globalClusterIdentifier = Lens.lens (\GlobalCluster' {globalClusterIdentifier} -> globalClusterIdentifier) (\s@GlobalCluster' {} a -> s {globalClusterIdentifier = a} :: GlobalCluster)
+
+-- | The list of cluster IDs for secondary clusters within the global
+-- cluster. Currently limited to one item.
+globalCluster_globalClusterMembers :: Lens.Lens' GlobalCluster (Prelude.Maybe [GlobalClusterMember])
+globalCluster_globalClusterMembers = Lens.lens (\GlobalCluster' {globalClusterMembers} -> globalClusterMembers) (\s@GlobalCluster' {} a -> s {globalClusterMembers = a} :: GlobalCluster) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Web Services Region-unique, immutable identifier for the
+-- global database cluster. This identifier is found in AWS CloudTrail log
+-- entries whenever the AWS KMS customer master key (CMK) for the cluster
+-- is accessed.
+globalCluster_globalClusterResourceId :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Text)
+globalCluster_globalClusterResourceId = Lens.lens (\GlobalCluster' {globalClusterResourceId} -> globalClusterResourceId) (\s@GlobalCluster' {} a -> s {globalClusterResourceId = a} :: GlobalCluster)
+
+-- | Specifies the current state of this global cluster.
+globalCluster_status :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Text)
+globalCluster_status = Lens.lens (\GlobalCluster' {status} -> status) (\s@GlobalCluster' {} a -> s {status = a} :: GlobalCluster)
+
+-- | The storage encryption setting for the global cluster.
+globalCluster_storageEncrypted :: Lens.Lens' GlobalCluster (Prelude.Maybe Prelude.Bool)
+globalCluster_storageEncrypted = Lens.lens (\GlobalCluster' {storageEncrypted} -> storageEncrypted) (\s@GlobalCluster' {} a -> s {storageEncrypted = a} :: GlobalCluster)
+
+instance Data.FromXML GlobalCluster where
+  parseXML x =
+    GlobalCluster'
+      Prelude.<$> (x Data..@? "DatabaseName")
+      Prelude.<*> (x Data..@? "DeletionProtection")
+      Prelude.<*> (x Data..@? "Engine")
+      Prelude.<*> (x Data..@? "EngineVersion")
+      Prelude.<*> (x Data..@? "GlobalClusterArn")
+      Prelude.<*> (x Data..@? "GlobalClusterIdentifier")
+      Prelude.<*> ( x
+                      Data..@? "GlobalClusterMembers"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "GlobalClusterMember")
+                  )
+      Prelude.<*> (x Data..@? "GlobalClusterResourceId")
+      Prelude.<*> (x Data..@? "Status")
+      Prelude.<*> (x Data..@? "StorageEncrypted")
+
+instance Prelude.Hashable GlobalCluster where
+  hashWithSalt _salt GlobalCluster' {..} =
+    _salt
+      `Prelude.hashWithSalt` databaseName
+      `Prelude.hashWithSalt` deletionProtection
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` globalClusterArn
+      `Prelude.hashWithSalt` globalClusterIdentifier
+      `Prelude.hashWithSalt` globalClusterMembers
+      `Prelude.hashWithSalt` globalClusterResourceId
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` storageEncrypted
+
+instance Prelude.NFData GlobalCluster where
+  rnf GlobalCluster' {..} =
+    Prelude.rnf databaseName
+      `Prelude.seq` Prelude.rnf deletionProtection
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf globalClusterArn
+      `Prelude.seq` Prelude.rnf globalClusterIdentifier
+      `Prelude.seq` Prelude.rnf globalClusterMembers
+      `Prelude.seq` Prelude.rnf globalClusterResourceId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf storageEncrypted
diff --git a/gen/Amazonka/DocumentDB/Types/GlobalClusterMember.hs b/gen/Amazonka/DocumentDB/Types/GlobalClusterMember.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/GlobalClusterMember.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.DocumentDB.Types.GlobalClusterMember
+-- 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.DocumentDB.Types.GlobalClusterMember 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 data structure with information about any primary and secondary
+-- clusters associated with an Amazon DocumentDB global clusters.
+--
+-- /See:/ 'newGlobalClusterMember' smart constructor.
+data GlobalClusterMember = GlobalClusterMember'
+  { -- | The Amazon Resource Name (ARN) for each Amazon DocumentDB cluster.
+    dbClusterArn :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether the Amazon DocumentDB cluster is the primary cluster
+    -- (that is, has read-write capability) for the Amazon DocumentDB global
+    -- cluster with which it is associated.
+    isWriter :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) for each read-only secondary cluster
+    -- associated with the Aurora global cluster.
+    readers :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GlobalClusterMember' 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:
+--
+-- 'dbClusterArn', 'globalClusterMember_dbClusterArn' - The Amazon Resource Name (ARN) for each Amazon DocumentDB cluster.
+--
+-- 'isWriter', 'globalClusterMember_isWriter' - Specifies whether the Amazon DocumentDB cluster is the primary cluster
+-- (that is, has read-write capability) for the Amazon DocumentDB global
+-- cluster with which it is associated.
+--
+-- 'readers', 'globalClusterMember_readers' - The Amazon Resource Name (ARN) for each read-only secondary cluster
+-- associated with the Aurora global cluster.
+newGlobalClusterMember ::
+  GlobalClusterMember
+newGlobalClusterMember =
+  GlobalClusterMember'
+    { dbClusterArn =
+        Prelude.Nothing,
+      isWriter = Prelude.Nothing,
+      readers = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) for each Amazon DocumentDB cluster.
+globalClusterMember_dbClusterArn :: Lens.Lens' GlobalClusterMember (Prelude.Maybe Prelude.Text)
+globalClusterMember_dbClusterArn = Lens.lens (\GlobalClusterMember' {dbClusterArn} -> dbClusterArn) (\s@GlobalClusterMember' {} a -> s {dbClusterArn = a} :: GlobalClusterMember)
+
+-- | Specifies whether the Amazon DocumentDB cluster is the primary cluster
+-- (that is, has read-write capability) for the Amazon DocumentDB global
+-- cluster with which it is associated.
+globalClusterMember_isWriter :: Lens.Lens' GlobalClusterMember (Prelude.Maybe Prelude.Bool)
+globalClusterMember_isWriter = Lens.lens (\GlobalClusterMember' {isWriter} -> isWriter) (\s@GlobalClusterMember' {} a -> s {isWriter = a} :: GlobalClusterMember)
+
+-- | The Amazon Resource Name (ARN) for each read-only secondary cluster
+-- associated with the Aurora global cluster.
+globalClusterMember_readers :: Lens.Lens' GlobalClusterMember (Prelude.Maybe [Prelude.Text])
+globalClusterMember_readers = Lens.lens (\GlobalClusterMember' {readers} -> readers) (\s@GlobalClusterMember' {} a -> s {readers = a} :: GlobalClusterMember) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromXML GlobalClusterMember where
+  parseXML x =
+    GlobalClusterMember'
+      Prelude.<$> (x Data..@? "DBClusterArn")
+      Prelude.<*> (x Data..@? "IsWriter")
+      Prelude.<*> ( x
+                      Data..@? "Readers"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+
+instance Prelude.Hashable GlobalClusterMember where
+  hashWithSalt _salt GlobalClusterMember' {..} =
+    _salt
+      `Prelude.hashWithSalt` dbClusterArn
+      `Prelude.hashWithSalt` isWriter
+      `Prelude.hashWithSalt` readers
+
+instance Prelude.NFData GlobalClusterMember where
+  rnf GlobalClusterMember' {..} =
+    Prelude.rnf dbClusterArn
+      `Prelude.seq` Prelude.rnf isWriter
+      `Prelude.seq` Prelude.rnf readers
diff --git a/gen/Amazonka/DocumentDB/Types/OrderableDBInstanceOption.hs b/gen/Amazonka/DocumentDB/Types/OrderableDBInstanceOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/OrderableDBInstanceOption.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.Types.OrderableDBInstanceOption
+-- 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.DocumentDB.Types.OrderableDBInstanceOption where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.AvailabilityZone
+import qualified Amazonka.Prelude as Prelude
+
+-- | The options that are available for an instance.
+--
+-- /See:/ 'newOrderableDBInstanceOption' smart constructor.
+data OrderableDBInstanceOption = OrderableDBInstanceOption'
+  { -- | A list of Availability Zones for an instance.
+    availabilityZones :: Prelude.Maybe [AvailabilityZone],
+    -- | The instance class for an instance.
+    dbInstanceClass :: Prelude.Maybe Prelude.Text,
+    -- | The engine type of an instance.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | The engine version of an instance.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | The license model for an instance.
+    licenseModel :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether an instance is in a virtual private cloud (VPC).
+    vpc :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OrderableDBInstanceOption' 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:
+--
+-- 'availabilityZones', 'orderableDBInstanceOption_availabilityZones' - A list of Availability Zones for an instance.
+--
+-- 'dbInstanceClass', 'orderableDBInstanceOption_dbInstanceClass' - The instance class for an instance.
+--
+-- 'engine', 'orderableDBInstanceOption_engine' - The engine type of an instance.
+--
+-- 'engineVersion', 'orderableDBInstanceOption_engineVersion' - The engine version of an instance.
+--
+-- 'licenseModel', 'orderableDBInstanceOption_licenseModel' - The license model for an instance.
+--
+-- 'vpc', 'orderableDBInstanceOption_vpc' - Indicates whether an instance is in a virtual private cloud (VPC).
+newOrderableDBInstanceOption ::
+  OrderableDBInstanceOption
+newOrderableDBInstanceOption =
+  OrderableDBInstanceOption'
+    { availabilityZones =
+        Prelude.Nothing,
+      dbInstanceClass = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      licenseModel = Prelude.Nothing,
+      vpc = Prelude.Nothing
+    }
+
+-- | A list of Availability Zones for an instance.
+orderableDBInstanceOption_availabilityZones :: Lens.Lens' OrderableDBInstanceOption (Prelude.Maybe [AvailabilityZone])
+orderableDBInstanceOption_availabilityZones = Lens.lens (\OrderableDBInstanceOption' {availabilityZones} -> availabilityZones) (\s@OrderableDBInstanceOption' {} a -> s {availabilityZones = a} :: OrderableDBInstanceOption) Prelude.. Lens.mapping Lens.coerced
+
+-- | The instance class for an instance.
+orderableDBInstanceOption_dbInstanceClass :: Lens.Lens' OrderableDBInstanceOption (Prelude.Maybe Prelude.Text)
+orderableDBInstanceOption_dbInstanceClass = Lens.lens (\OrderableDBInstanceOption' {dbInstanceClass} -> dbInstanceClass) (\s@OrderableDBInstanceOption' {} a -> s {dbInstanceClass = a} :: OrderableDBInstanceOption)
+
+-- | The engine type of an instance.
+orderableDBInstanceOption_engine :: Lens.Lens' OrderableDBInstanceOption (Prelude.Maybe Prelude.Text)
+orderableDBInstanceOption_engine = Lens.lens (\OrderableDBInstanceOption' {engine} -> engine) (\s@OrderableDBInstanceOption' {} a -> s {engine = a} :: OrderableDBInstanceOption)
+
+-- | The engine version of an instance.
+orderableDBInstanceOption_engineVersion :: Lens.Lens' OrderableDBInstanceOption (Prelude.Maybe Prelude.Text)
+orderableDBInstanceOption_engineVersion = Lens.lens (\OrderableDBInstanceOption' {engineVersion} -> engineVersion) (\s@OrderableDBInstanceOption' {} a -> s {engineVersion = a} :: OrderableDBInstanceOption)
+
+-- | The license model for an instance.
+orderableDBInstanceOption_licenseModel :: Lens.Lens' OrderableDBInstanceOption (Prelude.Maybe Prelude.Text)
+orderableDBInstanceOption_licenseModel = Lens.lens (\OrderableDBInstanceOption' {licenseModel} -> licenseModel) (\s@OrderableDBInstanceOption' {} a -> s {licenseModel = a} :: OrderableDBInstanceOption)
+
+-- | Indicates whether an instance is in a virtual private cloud (VPC).
+orderableDBInstanceOption_vpc :: Lens.Lens' OrderableDBInstanceOption (Prelude.Maybe Prelude.Bool)
+orderableDBInstanceOption_vpc = Lens.lens (\OrderableDBInstanceOption' {vpc} -> vpc) (\s@OrderableDBInstanceOption' {} a -> s {vpc = a} :: OrderableDBInstanceOption)
+
+instance Data.FromXML OrderableDBInstanceOption where
+  parseXML x =
+    OrderableDBInstanceOption'
+      Prelude.<$> ( x
+                      Data..@? "AvailabilityZones"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "AvailabilityZone")
+                  )
+      Prelude.<*> (x Data..@? "DBInstanceClass")
+      Prelude.<*> (x Data..@? "Engine")
+      Prelude.<*> (x Data..@? "EngineVersion")
+      Prelude.<*> (x Data..@? "LicenseModel")
+      Prelude.<*> (x Data..@? "Vpc")
+
+instance Prelude.Hashable OrderableDBInstanceOption where
+  hashWithSalt _salt OrderableDBInstanceOption' {..} =
+    _salt
+      `Prelude.hashWithSalt` availabilityZones
+      `Prelude.hashWithSalt` dbInstanceClass
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` licenseModel
+      `Prelude.hashWithSalt` vpc
+
+instance Prelude.NFData OrderableDBInstanceOption where
+  rnf OrderableDBInstanceOption' {..} =
+    Prelude.rnf availabilityZones
+      `Prelude.seq` Prelude.rnf dbInstanceClass
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf licenseModel
+      `Prelude.seq` Prelude.rnf vpc
diff --git a/gen/Amazonka/DocumentDB/Types/Parameter.hs b/gen/Amazonka/DocumentDB/Types/Parameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/Parameter.hs
@@ -0,0 +1,198 @@
+{-# 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.DocumentDB.Types.Parameter
+-- 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.DocumentDB.Types.Parameter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.ApplyMethod
+import qualified Amazonka.Prelude as Prelude
+
+-- | Detailed information about an individual parameter.
+--
+-- /See:/ 'newParameter' smart constructor.
+data Parameter = Parameter'
+  { -- | Specifies the valid range of values for the parameter.
+    allowedValues :: Prelude.Maybe Prelude.Text,
+    -- | Indicates when to apply parameter updates.
+    applyMethod :: Prelude.Maybe ApplyMethod,
+    -- | Specifies the engine-specific parameters type.
+    applyType :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the valid data type for the parameter.
+    dataType :: Prelude.Maybe Prelude.Text,
+    -- | Provides a description of the parameter.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Indicates whether (@true@) or not (@false@) the parameter can be
+    -- modified. Some parameters have security or operational implications that
+    -- prevent them from being changed.
+    isModifiable :: Prelude.Maybe Prelude.Bool,
+    -- | The earliest engine version to which the parameter can apply.
+    minimumEngineVersion :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the name of the parameter.
+    parameterName :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the value of the parameter.
+    parameterValue :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the source of the parameter value.
+    source :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Parameter' 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:
+--
+-- 'allowedValues', 'parameter_allowedValues' - Specifies the valid range of values for the parameter.
+--
+-- 'applyMethod', 'parameter_applyMethod' - Indicates when to apply parameter updates.
+--
+-- 'applyType', 'parameter_applyType' - Specifies the engine-specific parameters type.
+--
+-- 'dataType', 'parameter_dataType' - Specifies the valid data type for the parameter.
+--
+-- 'description', 'parameter_description' - Provides a description of the parameter.
+--
+-- 'isModifiable', 'parameter_isModifiable' - Indicates whether (@true@) or not (@false@) the parameter can be
+-- modified. Some parameters have security or operational implications that
+-- prevent them from being changed.
+--
+-- 'minimumEngineVersion', 'parameter_minimumEngineVersion' - The earliest engine version to which the parameter can apply.
+--
+-- 'parameterName', 'parameter_parameterName' - Specifies the name of the parameter.
+--
+-- 'parameterValue', 'parameter_parameterValue' - Specifies the value of the parameter.
+--
+-- 'source', 'parameter_source' - Indicates the source of the parameter value.
+newParameter ::
+  Parameter
+newParameter =
+  Parameter'
+    { allowedValues = Prelude.Nothing,
+      applyMethod = Prelude.Nothing,
+      applyType = Prelude.Nothing,
+      dataType = Prelude.Nothing,
+      description = Prelude.Nothing,
+      isModifiable = Prelude.Nothing,
+      minimumEngineVersion = Prelude.Nothing,
+      parameterName = Prelude.Nothing,
+      parameterValue = Prelude.Nothing,
+      source = Prelude.Nothing
+    }
+
+-- | Specifies the valid range of values for the parameter.
+parameter_allowedValues :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)
+parameter_allowedValues = Lens.lens (\Parameter' {allowedValues} -> allowedValues) (\s@Parameter' {} a -> s {allowedValues = a} :: Parameter)
+
+-- | Indicates when to apply parameter updates.
+parameter_applyMethod :: Lens.Lens' Parameter (Prelude.Maybe ApplyMethod)
+parameter_applyMethod = Lens.lens (\Parameter' {applyMethod} -> applyMethod) (\s@Parameter' {} a -> s {applyMethod = a} :: Parameter)
+
+-- | Specifies the engine-specific parameters type.
+parameter_applyType :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)
+parameter_applyType = Lens.lens (\Parameter' {applyType} -> applyType) (\s@Parameter' {} a -> s {applyType = a} :: Parameter)
+
+-- | Specifies the valid data type for the parameter.
+parameter_dataType :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)
+parameter_dataType = Lens.lens (\Parameter' {dataType} -> dataType) (\s@Parameter' {} a -> s {dataType = a} :: Parameter)
+
+-- | Provides a description of the parameter.
+parameter_description :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)
+parameter_description = Lens.lens (\Parameter' {description} -> description) (\s@Parameter' {} a -> s {description = a} :: Parameter)
+
+-- | Indicates whether (@true@) or not (@false@) the parameter can be
+-- modified. Some parameters have security or operational implications that
+-- prevent them from being changed.
+parameter_isModifiable :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Bool)
+parameter_isModifiable = Lens.lens (\Parameter' {isModifiable} -> isModifiable) (\s@Parameter' {} a -> s {isModifiable = a} :: Parameter)
+
+-- | The earliest engine version to which the parameter can apply.
+parameter_minimumEngineVersion :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)
+parameter_minimumEngineVersion = Lens.lens (\Parameter' {minimumEngineVersion} -> minimumEngineVersion) (\s@Parameter' {} a -> s {minimumEngineVersion = a} :: Parameter)
+
+-- | Specifies the name of the parameter.
+parameter_parameterName :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)
+parameter_parameterName = Lens.lens (\Parameter' {parameterName} -> parameterName) (\s@Parameter' {} a -> s {parameterName = a} :: Parameter)
+
+-- | Specifies the value of the parameter.
+parameter_parameterValue :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)
+parameter_parameterValue = Lens.lens (\Parameter' {parameterValue} -> parameterValue) (\s@Parameter' {} a -> s {parameterValue = a} :: Parameter)
+
+-- | Indicates the source of the parameter value.
+parameter_source :: Lens.Lens' Parameter (Prelude.Maybe Prelude.Text)
+parameter_source = Lens.lens (\Parameter' {source} -> source) (\s@Parameter' {} a -> s {source = a} :: Parameter)
+
+instance Data.FromXML Parameter where
+  parseXML x =
+    Parameter'
+      Prelude.<$> (x Data..@? "AllowedValues")
+      Prelude.<*> (x Data..@? "ApplyMethod")
+      Prelude.<*> (x Data..@? "ApplyType")
+      Prelude.<*> (x Data..@? "DataType")
+      Prelude.<*> (x Data..@? "Description")
+      Prelude.<*> (x Data..@? "IsModifiable")
+      Prelude.<*> (x Data..@? "MinimumEngineVersion")
+      Prelude.<*> (x Data..@? "ParameterName")
+      Prelude.<*> (x Data..@? "ParameterValue")
+      Prelude.<*> (x Data..@? "Source")
+
+instance Prelude.Hashable Parameter where
+  hashWithSalt _salt Parameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` allowedValues
+      `Prelude.hashWithSalt` applyMethod
+      `Prelude.hashWithSalt` applyType
+      `Prelude.hashWithSalt` dataType
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` isModifiable
+      `Prelude.hashWithSalt` minimumEngineVersion
+      `Prelude.hashWithSalt` parameterName
+      `Prelude.hashWithSalt` parameterValue
+      `Prelude.hashWithSalt` source
+
+instance Prelude.NFData Parameter where
+  rnf Parameter' {..} =
+    Prelude.rnf allowedValues
+      `Prelude.seq` Prelude.rnf applyMethod
+      `Prelude.seq` Prelude.rnf applyType
+      `Prelude.seq` Prelude.rnf dataType
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf isModifiable
+      `Prelude.seq` Prelude.rnf minimumEngineVersion
+      `Prelude.seq` Prelude.rnf parameterName
+      `Prelude.seq` Prelude.rnf parameterValue
+      `Prelude.seq` Prelude.rnf source
+
+instance Data.ToQuery Parameter where
+  toQuery Parameter' {..} =
+    Prelude.mconcat
+      [ "AllowedValues" Data.=: allowedValues,
+        "ApplyMethod" Data.=: applyMethod,
+        "ApplyType" Data.=: applyType,
+        "DataType" Data.=: dataType,
+        "Description" Data.=: description,
+        "IsModifiable" Data.=: isModifiable,
+        "MinimumEngineVersion" Data.=: minimumEngineVersion,
+        "ParameterName" Data.=: parameterName,
+        "ParameterValue" Data.=: parameterValue,
+        "Source" Data.=: source
+      ]
diff --git a/gen/Amazonka/DocumentDB/Types/PendingCloudwatchLogsExports.hs b/gen/Amazonka/DocumentDB/Types/PendingCloudwatchLogsExports.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/PendingCloudwatchLogsExports.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.DocumentDB.Types.PendingCloudwatchLogsExports
+-- 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.DocumentDB.Types.PendingCloudwatchLogsExports 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 list of the log types whose configuration is still pending. These log
+-- types are in the process of being activated or deactivated.
+--
+-- /See:/ 'newPendingCloudwatchLogsExports' smart constructor.
+data PendingCloudwatchLogsExports = PendingCloudwatchLogsExports'
+  { -- | Log types that are in the process of being enabled. After they are
+    -- enabled, these log types are exported to Amazon CloudWatch Logs.
+    logTypesToDisable :: Prelude.Maybe [Prelude.Text],
+    -- | Log types that are in the process of being deactivated. After they are
+    -- deactivated, these log types aren\'t exported to CloudWatch Logs.
+    logTypesToEnable :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PendingCloudwatchLogsExports' 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:
+--
+-- 'logTypesToDisable', 'pendingCloudwatchLogsExports_logTypesToDisable' - Log types that are in the process of being enabled. After they are
+-- enabled, these log types are exported to Amazon CloudWatch Logs.
+--
+-- 'logTypesToEnable', 'pendingCloudwatchLogsExports_logTypesToEnable' - Log types that are in the process of being deactivated. After they are
+-- deactivated, these log types aren\'t exported to CloudWatch Logs.
+newPendingCloudwatchLogsExports ::
+  PendingCloudwatchLogsExports
+newPendingCloudwatchLogsExports =
+  PendingCloudwatchLogsExports'
+    { logTypesToDisable =
+        Prelude.Nothing,
+      logTypesToEnable = Prelude.Nothing
+    }
+
+-- | Log types that are in the process of being enabled. After they are
+-- enabled, these log types are exported to Amazon CloudWatch Logs.
+pendingCloudwatchLogsExports_logTypesToDisable :: Lens.Lens' PendingCloudwatchLogsExports (Prelude.Maybe [Prelude.Text])
+pendingCloudwatchLogsExports_logTypesToDisable = Lens.lens (\PendingCloudwatchLogsExports' {logTypesToDisable} -> logTypesToDisable) (\s@PendingCloudwatchLogsExports' {} a -> s {logTypesToDisable = a} :: PendingCloudwatchLogsExports) Prelude.. Lens.mapping Lens.coerced
+
+-- | Log types that are in the process of being deactivated. After they are
+-- deactivated, these log types aren\'t exported to CloudWatch Logs.
+pendingCloudwatchLogsExports_logTypesToEnable :: Lens.Lens' PendingCloudwatchLogsExports (Prelude.Maybe [Prelude.Text])
+pendingCloudwatchLogsExports_logTypesToEnable = Lens.lens (\PendingCloudwatchLogsExports' {logTypesToEnable} -> logTypesToEnable) (\s@PendingCloudwatchLogsExports' {} a -> s {logTypesToEnable = a} :: PendingCloudwatchLogsExports) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromXML PendingCloudwatchLogsExports where
+  parseXML x =
+    PendingCloudwatchLogsExports'
+      Prelude.<$> ( x
+                      Data..@? "LogTypesToDisable"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+      Prelude.<*> ( x
+                      Data..@? "LogTypesToEnable"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+
+instance
+  Prelude.Hashable
+    PendingCloudwatchLogsExports
+  where
+  hashWithSalt _salt PendingCloudwatchLogsExports' {..} =
+    _salt
+      `Prelude.hashWithSalt` logTypesToDisable
+      `Prelude.hashWithSalt` logTypesToEnable
+
+instance Prelude.NFData PendingCloudwatchLogsExports where
+  rnf PendingCloudwatchLogsExports' {..} =
+    Prelude.rnf logTypesToDisable
+      `Prelude.seq` Prelude.rnf logTypesToEnable
diff --git a/gen/Amazonka/DocumentDB/Types/PendingMaintenanceAction.hs b/gen/Amazonka/DocumentDB/Types/PendingMaintenanceAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/PendingMaintenanceAction.hs
@@ -0,0 +1,155 @@
+{-# 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.DocumentDB.Types.PendingMaintenanceAction
+-- 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.DocumentDB.Types.PendingMaintenanceAction 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
+
+-- | Provides information about a pending maintenance action for a resource.
+--
+-- /See:/ 'newPendingMaintenanceAction' smart constructor.
+data PendingMaintenanceAction = PendingMaintenanceAction'
+  { -- | The type of pending maintenance action that is available for the
+    -- resource.
+    action :: Prelude.Maybe Prelude.Text,
+    -- | The date of the maintenance window when the action is applied. The
+    -- maintenance action is applied to the resource during its first
+    -- maintenance window after this date. If this date is specified, any
+    -- @next-maintenance@ opt-in requests are ignored.
+    autoAppliedAfterDate :: Prelude.Maybe Data.ISO8601,
+    -- | The effective date when the pending maintenance action is applied to the
+    -- resource.
+    currentApplyDate :: Prelude.Maybe Data.ISO8601,
+    -- | A description providing more detail about the maintenance action.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The date when the maintenance action is automatically applied. The
+    -- maintenance action is applied to the resource on this date regardless of
+    -- the maintenance window for the resource. If this date is specified, any
+    -- @immediate@ opt-in requests are ignored.
+    forcedApplyDate :: Prelude.Maybe Data.ISO8601,
+    -- | Indicates the type of opt-in request that has been received for the
+    -- resource.
+    optInStatus :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PendingMaintenanceAction' 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:
+--
+-- 'action', 'pendingMaintenanceAction_action' - The type of pending maintenance action that is available for the
+-- resource.
+--
+-- 'autoAppliedAfterDate', 'pendingMaintenanceAction_autoAppliedAfterDate' - The date of the maintenance window when the action is applied. The
+-- maintenance action is applied to the resource during its first
+-- maintenance window after this date. If this date is specified, any
+-- @next-maintenance@ opt-in requests are ignored.
+--
+-- 'currentApplyDate', 'pendingMaintenanceAction_currentApplyDate' - The effective date when the pending maintenance action is applied to the
+-- resource.
+--
+-- 'description', 'pendingMaintenanceAction_description' - A description providing more detail about the maintenance action.
+--
+-- 'forcedApplyDate', 'pendingMaintenanceAction_forcedApplyDate' - The date when the maintenance action is automatically applied. The
+-- maintenance action is applied to the resource on this date regardless of
+-- the maintenance window for the resource. If this date is specified, any
+-- @immediate@ opt-in requests are ignored.
+--
+-- 'optInStatus', 'pendingMaintenanceAction_optInStatus' - Indicates the type of opt-in request that has been received for the
+-- resource.
+newPendingMaintenanceAction ::
+  PendingMaintenanceAction
+newPendingMaintenanceAction =
+  PendingMaintenanceAction'
+    { action = Prelude.Nothing,
+      autoAppliedAfterDate = Prelude.Nothing,
+      currentApplyDate = Prelude.Nothing,
+      description = Prelude.Nothing,
+      forcedApplyDate = Prelude.Nothing,
+      optInStatus = Prelude.Nothing
+    }
+
+-- | The type of pending maintenance action that is available for the
+-- resource.
+pendingMaintenanceAction_action :: Lens.Lens' PendingMaintenanceAction (Prelude.Maybe Prelude.Text)
+pendingMaintenanceAction_action = Lens.lens (\PendingMaintenanceAction' {action} -> action) (\s@PendingMaintenanceAction' {} a -> s {action = a} :: PendingMaintenanceAction)
+
+-- | The date of the maintenance window when the action is applied. The
+-- maintenance action is applied to the resource during its first
+-- maintenance window after this date. If this date is specified, any
+-- @next-maintenance@ opt-in requests are ignored.
+pendingMaintenanceAction_autoAppliedAfterDate :: Lens.Lens' PendingMaintenanceAction (Prelude.Maybe Prelude.UTCTime)
+pendingMaintenanceAction_autoAppliedAfterDate = Lens.lens (\PendingMaintenanceAction' {autoAppliedAfterDate} -> autoAppliedAfterDate) (\s@PendingMaintenanceAction' {} a -> s {autoAppliedAfterDate = a} :: PendingMaintenanceAction) Prelude.. Lens.mapping Data._Time
+
+-- | The effective date when the pending maintenance action is applied to the
+-- resource.
+pendingMaintenanceAction_currentApplyDate :: Lens.Lens' PendingMaintenanceAction (Prelude.Maybe Prelude.UTCTime)
+pendingMaintenanceAction_currentApplyDate = Lens.lens (\PendingMaintenanceAction' {currentApplyDate} -> currentApplyDate) (\s@PendingMaintenanceAction' {} a -> s {currentApplyDate = a} :: PendingMaintenanceAction) Prelude.. Lens.mapping Data._Time
+
+-- | A description providing more detail about the maintenance action.
+pendingMaintenanceAction_description :: Lens.Lens' PendingMaintenanceAction (Prelude.Maybe Prelude.Text)
+pendingMaintenanceAction_description = Lens.lens (\PendingMaintenanceAction' {description} -> description) (\s@PendingMaintenanceAction' {} a -> s {description = a} :: PendingMaintenanceAction)
+
+-- | The date when the maintenance action is automatically applied. The
+-- maintenance action is applied to the resource on this date regardless of
+-- the maintenance window for the resource. If this date is specified, any
+-- @immediate@ opt-in requests are ignored.
+pendingMaintenanceAction_forcedApplyDate :: Lens.Lens' PendingMaintenanceAction (Prelude.Maybe Prelude.UTCTime)
+pendingMaintenanceAction_forcedApplyDate = Lens.lens (\PendingMaintenanceAction' {forcedApplyDate} -> forcedApplyDate) (\s@PendingMaintenanceAction' {} a -> s {forcedApplyDate = a} :: PendingMaintenanceAction) Prelude.. Lens.mapping Data._Time
+
+-- | Indicates the type of opt-in request that has been received for the
+-- resource.
+pendingMaintenanceAction_optInStatus :: Lens.Lens' PendingMaintenanceAction (Prelude.Maybe Prelude.Text)
+pendingMaintenanceAction_optInStatus = Lens.lens (\PendingMaintenanceAction' {optInStatus} -> optInStatus) (\s@PendingMaintenanceAction' {} a -> s {optInStatus = a} :: PendingMaintenanceAction)
+
+instance Data.FromXML PendingMaintenanceAction where
+  parseXML x =
+    PendingMaintenanceAction'
+      Prelude.<$> (x Data..@? "Action")
+      Prelude.<*> (x Data..@? "AutoAppliedAfterDate")
+      Prelude.<*> (x Data..@? "CurrentApplyDate")
+      Prelude.<*> (x Data..@? "Description")
+      Prelude.<*> (x Data..@? "ForcedApplyDate")
+      Prelude.<*> (x Data..@? "OptInStatus")
+
+instance Prelude.Hashable PendingMaintenanceAction where
+  hashWithSalt _salt PendingMaintenanceAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` action
+      `Prelude.hashWithSalt` autoAppliedAfterDate
+      `Prelude.hashWithSalt` currentApplyDate
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` forcedApplyDate
+      `Prelude.hashWithSalt` optInStatus
+
+instance Prelude.NFData PendingMaintenanceAction where
+  rnf PendingMaintenanceAction' {..} =
+    Prelude.rnf action
+      `Prelude.seq` Prelude.rnf autoAppliedAfterDate
+      `Prelude.seq` Prelude.rnf currentApplyDate
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf forcedApplyDate
+      `Prelude.seq` Prelude.rnf optInStatus
diff --git a/gen/Amazonka/DocumentDB/Types/PendingModifiedValues.hs b/gen/Amazonka/DocumentDB/Types/PendingModifiedValues.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/PendingModifiedValues.hs
@@ -0,0 +1,263 @@
+{-# 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.DocumentDB.Types.PendingModifiedValues
+-- 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.DocumentDB.Types.PendingModifiedValues where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.PendingCloudwatchLogsExports
+import qualified Amazonka.Prelude as Prelude
+
+-- | One or more modified settings for an instance. These modified settings
+-- have been requested, but haven\'t been applied yet.
+--
+-- /See:/ 'newPendingModifiedValues' smart constructor.
+data PendingModifiedValues = PendingModifiedValues'
+  { -- | Contains the new @AllocatedStorage@ size for then instance that will be
+    -- applied or is currently being applied.
+    allocatedStorage :: Prelude.Maybe Prelude.Int,
+    -- | Specifies the pending number of days for which automated backups are
+    -- retained.
+    backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
+    -- | Specifies the identifier of the certificate authority (CA) certificate
+    -- for the DB instance.
+    cACertificateIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Contains the new @DBInstanceClass@ for the instance that will be applied
+    -- or is currently being applied.
+    dbInstanceClass :: Prelude.Maybe Prelude.Text,
+    -- | Contains the new @DBInstanceIdentifier@ for the instance that will be
+    -- applied or is currently being applied.
+    dbInstanceIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | The new subnet group for the instance.
+    dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
+    -- | Indicates the database engine version.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the new Provisioned IOPS value for the instance that will be
+    -- applied or is currently being applied.
+    iops :: Prelude.Maybe Prelude.Int,
+    -- | The license model for the instance.
+    --
+    -- Valid values: @license-included@, @bring-your-own-license@,
+    -- @general-public-license@
+    licenseModel :: Prelude.Maybe Prelude.Text,
+    -- | Contains the pending or currently in-progress change of the master
+    -- credentials for the instance.
+    masterUserPassword :: Prelude.Maybe Prelude.Text,
+    -- | Indicates that the Single-AZ instance is to change to a Multi-AZ
+    -- deployment.
+    multiAZ :: Prelude.Maybe Prelude.Bool,
+    -- | A list of the log types whose configuration is still pending. These log
+    -- types are in the process of being activated or deactivated.
+    pendingCloudwatchLogsExports :: Prelude.Maybe PendingCloudwatchLogsExports,
+    -- | Specifies the pending port for the instance.
+    port :: Prelude.Maybe Prelude.Int,
+    -- | Specifies the storage type to be associated with the instance.
+    storageType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PendingModifiedValues' 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:
+--
+-- 'allocatedStorage', 'pendingModifiedValues_allocatedStorage' - Contains the new @AllocatedStorage@ size for then instance that will be
+-- applied or is currently being applied.
+--
+-- 'backupRetentionPeriod', 'pendingModifiedValues_backupRetentionPeriod' - Specifies the pending number of days for which automated backups are
+-- retained.
+--
+-- 'cACertificateIdentifier', 'pendingModifiedValues_cACertificateIdentifier' - Specifies the identifier of the certificate authority (CA) certificate
+-- for the DB instance.
+--
+-- 'dbInstanceClass', 'pendingModifiedValues_dbInstanceClass' - Contains the new @DBInstanceClass@ for the instance that will be applied
+-- or is currently being applied.
+--
+-- 'dbInstanceIdentifier', 'pendingModifiedValues_dbInstanceIdentifier' - Contains the new @DBInstanceIdentifier@ for the instance that will be
+-- applied or is currently being applied.
+--
+-- 'dbSubnetGroupName', 'pendingModifiedValues_dbSubnetGroupName' - The new subnet group for the instance.
+--
+-- 'engineVersion', 'pendingModifiedValues_engineVersion' - Indicates the database engine version.
+--
+-- 'iops', 'pendingModifiedValues_iops' - Specifies the new Provisioned IOPS value for the instance that will be
+-- applied or is currently being applied.
+--
+-- 'licenseModel', 'pendingModifiedValues_licenseModel' - The license model for the instance.
+--
+-- Valid values: @license-included@, @bring-your-own-license@,
+-- @general-public-license@
+--
+-- 'masterUserPassword', 'pendingModifiedValues_masterUserPassword' - Contains the pending or currently in-progress change of the master
+-- credentials for the instance.
+--
+-- 'multiAZ', 'pendingModifiedValues_multiAZ' - Indicates that the Single-AZ instance is to change to a Multi-AZ
+-- deployment.
+--
+-- 'pendingCloudwatchLogsExports', 'pendingModifiedValues_pendingCloudwatchLogsExports' - A list of the log types whose configuration is still pending. These log
+-- types are in the process of being activated or deactivated.
+--
+-- 'port', 'pendingModifiedValues_port' - Specifies the pending port for the instance.
+--
+-- 'storageType', 'pendingModifiedValues_storageType' - Specifies the storage type to be associated with the instance.
+newPendingModifiedValues ::
+  PendingModifiedValues
+newPendingModifiedValues =
+  PendingModifiedValues'
+    { allocatedStorage =
+        Prelude.Nothing,
+      backupRetentionPeriod = Prelude.Nothing,
+      cACertificateIdentifier = Prelude.Nothing,
+      dbInstanceClass = Prelude.Nothing,
+      dbInstanceIdentifier = Prelude.Nothing,
+      dbSubnetGroupName = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      iops = Prelude.Nothing,
+      licenseModel = Prelude.Nothing,
+      masterUserPassword = Prelude.Nothing,
+      multiAZ = Prelude.Nothing,
+      pendingCloudwatchLogsExports = Prelude.Nothing,
+      port = Prelude.Nothing,
+      storageType = Prelude.Nothing
+    }
+
+-- | Contains the new @AllocatedStorage@ size for then instance that will be
+-- applied or is currently being applied.
+pendingModifiedValues_allocatedStorage :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Int)
+pendingModifiedValues_allocatedStorage = Lens.lens (\PendingModifiedValues' {allocatedStorage} -> allocatedStorage) (\s@PendingModifiedValues' {} a -> s {allocatedStorage = a} :: PendingModifiedValues)
+
+-- | Specifies the pending number of days for which automated backups are
+-- retained.
+pendingModifiedValues_backupRetentionPeriod :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Int)
+pendingModifiedValues_backupRetentionPeriod = Lens.lens (\PendingModifiedValues' {backupRetentionPeriod} -> backupRetentionPeriod) (\s@PendingModifiedValues' {} a -> s {backupRetentionPeriod = a} :: PendingModifiedValues)
+
+-- | Specifies the identifier of the certificate authority (CA) certificate
+-- for the DB instance.
+pendingModifiedValues_cACertificateIdentifier :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Text)
+pendingModifiedValues_cACertificateIdentifier = Lens.lens (\PendingModifiedValues' {cACertificateIdentifier} -> cACertificateIdentifier) (\s@PendingModifiedValues' {} a -> s {cACertificateIdentifier = a} :: PendingModifiedValues)
+
+-- | Contains the new @DBInstanceClass@ for the instance that will be applied
+-- or is currently being applied.
+pendingModifiedValues_dbInstanceClass :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Text)
+pendingModifiedValues_dbInstanceClass = Lens.lens (\PendingModifiedValues' {dbInstanceClass} -> dbInstanceClass) (\s@PendingModifiedValues' {} a -> s {dbInstanceClass = a} :: PendingModifiedValues)
+
+-- | Contains the new @DBInstanceIdentifier@ for the instance that will be
+-- applied or is currently being applied.
+pendingModifiedValues_dbInstanceIdentifier :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Text)
+pendingModifiedValues_dbInstanceIdentifier = Lens.lens (\PendingModifiedValues' {dbInstanceIdentifier} -> dbInstanceIdentifier) (\s@PendingModifiedValues' {} a -> s {dbInstanceIdentifier = a} :: PendingModifiedValues)
+
+-- | The new subnet group for the instance.
+pendingModifiedValues_dbSubnetGroupName :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Text)
+pendingModifiedValues_dbSubnetGroupName = Lens.lens (\PendingModifiedValues' {dbSubnetGroupName} -> dbSubnetGroupName) (\s@PendingModifiedValues' {} a -> s {dbSubnetGroupName = a} :: PendingModifiedValues)
+
+-- | Indicates the database engine version.
+pendingModifiedValues_engineVersion :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Text)
+pendingModifiedValues_engineVersion = Lens.lens (\PendingModifiedValues' {engineVersion} -> engineVersion) (\s@PendingModifiedValues' {} a -> s {engineVersion = a} :: PendingModifiedValues)
+
+-- | Specifies the new Provisioned IOPS value for the instance that will be
+-- applied or is currently being applied.
+pendingModifiedValues_iops :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Int)
+pendingModifiedValues_iops = Lens.lens (\PendingModifiedValues' {iops} -> iops) (\s@PendingModifiedValues' {} a -> s {iops = a} :: PendingModifiedValues)
+
+-- | The license model for the instance.
+--
+-- Valid values: @license-included@, @bring-your-own-license@,
+-- @general-public-license@
+pendingModifiedValues_licenseModel :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Text)
+pendingModifiedValues_licenseModel = Lens.lens (\PendingModifiedValues' {licenseModel} -> licenseModel) (\s@PendingModifiedValues' {} a -> s {licenseModel = a} :: PendingModifiedValues)
+
+-- | Contains the pending or currently in-progress change of the master
+-- credentials for the instance.
+pendingModifiedValues_masterUserPassword :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Text)
+pendingModifiedValues_masterUserPassword = Lens.lens (\PendingModifiedValues' {masterUserPassword} -> masterUserPassword) (\s@PendingModifiedValues' {} a -> s {masterUserPassword = a} :: PendingModifiedValues)
+
+-- | Indicates that the Single-AZ instance is to change to a Multi-AZ
+-- deployment.
+pendingModifiedValues_multiAZ :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Bool)
+pendingModifiedValues_multiAZ = Lens.lens (\PendingModifiedValues' {multiAZ} -> multiAZ) (\s@PendingModifiedValues' {} a -> s {multiAZ = a} :: PendingModifiedValues)
+
+-- | A list of the log types whose configuration is still pending. These log
+-- types are in the process of being activated or deactivated.
+pendingModifiedValues_pendingCloudwatchLogsExports :: Lens.Lens' PendingModifiedValues (Prelude.Maybe PendingCloudwatchLogsExports)
+pendingModifiedValues_pendingCloudwatchLogsExports = Lens.lens (\PendingModifiedValues' {pendingCloudwatchLogsExports} -> pendingCloudwatchLogsExports) (\s@PendingModifiedValues' {} a -> s {pendingCloudwatchLogsExports = a} :: PendingModifiedValues)
+
+-- | Specifies the pending port for the instance.
+pendingModifiedValues_port :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Int)
+pendingModifiedValues_port = Lens.lens (\PendingModifiedValues' {port} -> port) (\s@PendingModifiedValues' {} a -> s {port = a} :: PendingModifiedValues)
+
+-- | Specifies the storage type to be associated with the instance.
+pendingModifiedValues_storageType :: Lens.Lens' PendingModifiedValues (Prelude.Maybe Prelude.Text)
+pendingModifiedValues_storageType = Lens.lens (\PendingModifiedValues' {storageType} -> storageType) (\s@PendingModifiedValues' {} a -> s {storageType = a} :: PendingModifiedValues)
+
+instance Data.FromXML PendingModifiedValues where
+  parseXML x =
+    PendingModifiedValues'
+      Prelude.<$> (x Data..@? "AllocatedStorage")
+      Prelude.<*> (x Data..@? "BackupRetentionPeriod")
+      Prelude.<*> (x Data..@? "CACertificateIdentifier")
+      Prelude.<*> (x Data..@? "DBInstanceClass")
+      Prelude.<*> (x Data..@? "DBInstanceIdentifier")
+      Prelude.<*> (x Data..@? "DBSubnetGroupName")
+      Prelude.<*> (x Data..@? "EngineVersion")
+      Prelude.<*> (x Data..@? "Iops")
+      Prelude.<*> (x Data..@? "LicenseModel")
+      Prelude.<*> (x Data..@? "MasterUserPassword")
+      Prelude.<*> (x Data..@? "MultiAZ")
+      Prelude.<*> (x Data..@? "PendingCloudwatchLogsExports")
+      Prelude.<*> (x Data..@? "Port")
+      Prelude.<*> (x Data..@? "StorageType")
+
+instance Prelude.Hashable PendingModifiedValues where
+  hashWithSalt _salt PendingModifiedValues' {..} =
+    _salt
+      `Prelude.hashWithSalt` allocatedStorage
+      `Prelude.hashWithSalt` backupRetentionPeriod
+      `Prelude.hashWithSalt` cACertificateIdentifier
+      `Prelude.hashWithSalt` dbInstanceClass
+      `Prelude.hashWithSalt` dbInstanceIdentifier
+      `Prelude.hashWithSalt` dbSubnetGroupName
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` iops
+      `Prelude.hashWithSalt` licenseModel
+      `Prelude.hashWithSalt` masterUserPassword
+      `Prelude.hashWithSalt` multiAZ
+      `Prelude.hashWithSalt` pendingCloudwatchLogsExports
+      `Prelude.hashWithSalt` port
+      `Prelude.hashWithSalt` storageType
+
+instance Prelude.NFData PendingModifiedValues where
+  rnf PendingModifiedValues' {..} =
+    Prelude.rnf allocatedStorage
+      `Prelude.seq` Prelude.rnf backupRetentionPeriod
+      `Prelude.seq` Prelude.rnf cACertificateIdentifier
+      `Prelude.seq` Prelude.rnf dbInstanceClass
+      `Prelude.seq` Prelude.rnf dbInstanceIdentifier
+      `Prelude.seq` Prelude.rnf dbSubnetGroupName
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf iops
+      `Prelude.seq` Prelude.rnf licenseModel
+      `Prelude.seq` Prelude.rnf masterUserPassword
+      `Prelude.seq` Prelude.rnf multiAZ
+      `Prelude.seq` Prelude.rnf pendingCloudwatchLogsExports
+      `Prelude.seq` Prelude.rnf port
+      `Prelude.seq` Prelude.rnf storageType
diff --git a/gen/Amazonka/DocumentDB/Types/ResourcePendingMaintenanceActions.hs b/gen/Amazonka/DocumentDB/Types/ResourcePendingMaintenanceActions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/ResourcePendingMaintenanceActions.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.DocumentDB.Types.ResourcePendingMaintenanceActions
+-- 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.DocumentDB.Types.ResourcePendingMaintenanceActions where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.PendingMaintenanceAction
+import qualified Amazonka.Prelude as Prelude
+
+-- | Represents the output of ApplyPendingMaintenanceAction.
+--
+-- /See:/ 'newResourcePendingMaintenanceActions' smart constructor.
+data ResourcePendingMaintenanceActions = ResourcePendingMaintenanceActions'
+  { -- | A list that provides details about the pending maintenance actions for
+    -- the resource.
+    pendingMaintenanceActionDetails :: Prelude.Maybe [PendingMaintenanceAction],
+    -- | The Amazon Resource Name (ARN) of the resource that has pending
+    -- maintenance actions.
+    resourceIdentifier :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourcePendingMaintenanceActions' 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:
+--
+-- 'pendingMaintenanceActionDetails', 'resourcePendingMaintenanceActions_pendingMaintenanceActionDetails' - A list that provides details about the pending maintenance actions for
+-- the resource.
+--
+-- 'resourceIdentifier', 'resourcePendingMaintenanceActions_resourceIdentifier' - The Amazon Resource Name (ARN) of the resource that has pending
+-- maintenance actions.
+newResourcePendingMaintenanceActions ::
+  ResourcePendingMaintenanceActions
+newResourcePendingMaintenanceActions =
+  ResourcePendingMaintenanceActions'
+    { pendingMaintenanceActionDetails =
+        Prelude.Nothing,
+      resourceIdentifier = Prelude.Nothing
+    }
+
+-- | A list that provides details about the pending maintenance actions for
+-- the resource.
+resourcePendingMaintenanceActions_pendingMaintenanceActionDetails :: Lens.Lens' ResourcePendingMaintenanceActions (Prelude.Maybe [PendingMaintenanceAction])
+resourcePendingMaintenanceActions_pendingMaintenanceActionDetails = Lens.lens (\ResourcePendingMaintenanceActions' {pendingMaintenanceActionDetails} -> pendingMaintenanceActionDetails) (\s@ResourcePendingMaintenanceActions' {} a -> s {pendingMaintenanceActionDetails = a} :: ResourcePendingMaintenanceActions) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the resource that has pending
+-- maintenance actions.
+resourcePendingMaintenanceActions_resourceIdentifier :: Lens.Lens' ResourcePendingMaintenanceActions (Prelude.Maybe Prelude.Text)
+resourcePendingMaintenanceActions_resourceIdentifier = Lens.lens (\ResourcePendingMaintenanceActions' {resourceIdentifier} -> resourceIdentifier) (\s@ResourcePendingMaintenanceActions' {} a -> s {resourceIdentifier = a} :: ResourcePendingMaintenanceActions)
+
+instance
+  Data.FromXML
+    ResourcePendingMaintenanceActions
+  where
+  parseXML x =
+    ResourcePendingMaintenanceActions'
+      Prelude.<$> ( x
+                      Data..@? "PendingMaintenanceActionDetails"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may
+                        (Data.parseXMLList "PendingMaintenanceAction")
+                  )
+      Prelude.<*> (x Data..@? "ResourceIdentifier")
+
+instance
+  Prelude.Hashable
+    ResourcePendingMaintenanceActions
+  where
+  hashWithSalt
+    _salt
+    ResourcePendingMaintenanceActions' {..} =
+      _salt
+        `Prelude.hashWithSalt` pendingMaintenanceActionDetails
+        `Prelude.hashWithSalt` resourceIdentifier
+
+instance
+  Prelude.NFData
+    ResourcePendingMaintenanceActions
+  where
+  rnf ResourcePendingMaintenanceActions' {..} =
+    Prelude.rnf pendingMaintenanceActionDetails
+      `Prelude.seq` Prelude.rnf resourceIdentifier
diff --git a/gen/Amazonka/DocumentDB/Types/SourceType.hs b/gen/Amazonka/DocumentDB/Types/SourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/SourceType.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.Types.SourceType
+-- 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.DocumentDB.Types.SourceType
+  ( SourceType
+      ( ..,
+        SourceType_Db_cluster,
+        SourceType_Db_cluster_snapshot,
+        SourceType_Db_instance,
+        SourceType_Db_parameter_group,
+        SourceType_Db_security_group,
+        SourceType_Db_snapshot
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SourceType = SourceType'
+  { fromSourceType ::
+      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 SourceType_Db_cluster :: SourceType
+pattern SourceType_Db_cluster = SourceType' "db-cluster"
+
+pattern SourceType_Db_cluster_snapshot :: SourceType
+pattern SourceType_Db_cluster_snapshot = SourceType' "db-cluster-snapshot"
+
+pattern SourceType_Db_instance :: SourceType
+pattern SourceType_Db_instance = SourceType' "db-instance"
+
+pattern SourceType_Db_parameter_group :: SourceType
+pattern SourceType_Db_parameter_group = SourceType' "db-parameter-group"
+
+pattern SourceType_Db_security_group :: SourceType
+pattern SourceType_Db_security_group = SourceType' "db-security-group"
+
+pattern SourceType_Db_snapshot :: SourceType
+pattern SourceType_Db_snapshot = SourceType' "db-snapshot"
+
+{-# COMPLETE
+  SourceType_Db_cluster,
+  SourceType_Db_cluster_snapshot,
+  SourceType_Db_instance,
+  SourceType_Db_parameter_group,
+  SourceType_Db_security_group,
+  SourceType_Db_snapshot,
+  SourceType'
+  #-}
diff --git a/gen/Amazonka/DocumentDB/Types/Subnet.hs b/gen/Amazonka/DocumentDB/Types/Subnet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/Subnet.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.DocumentDB.Types.Subnet
+-- 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.DocumentDB.Types.Subnet where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.Types.AvailabilityZone
+import qualified Amazonka.Prelude as Prelude
+
+-- | Detailed information about a subnet.
+--
+-- /See:/ 'newSubnet' smart constructor.
+data Subnet = Subnet'
+  { -- | Specifies the Availability Zone for the subnet.
+    subnetAvailabilityZone :: Prelude.Maybe AvailabilityZone,
+    -- | Specifies the identifier of the subnet.
+    subnetIdentifier :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the status of the subnet.
+    subnetStatus :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Subnet' 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:
+--
+-- 'subnetAvailabilityZone', 'subnet_subnetAvailabilityZone' - Specifies the Availability Zone for the subnet.
+--
+-- 'subnetIdentifier', 'subnet_subnetIdentifier' - Specifies the identifier of the subnet.
+--
+-- 'subnetStatus', 'subnet_subnetStatus' - Specifies the status of the subnet.
+newSubnet ::
+  Subnet
+newSubnet =
+  Subnet'
+    { subnetAvailabilityZone = Prelude.Nothing,
+      subnetIdentifier = Prelude.Nothing,
+      subnetStatus = Prelude.Nothing
+    }
+
+-- | Specifies the Availability Zone for the subnet.
+subnet_subnetAvailabilityZone :: Lens.Lens' Subnet (Prelude.Maybe AvailabilityZone)
+subnet_subnetAvailabilityZone = Lens.lens (\Subnet' {subnetAvailabilityZone} -> subnetAvailabilityZone) (\s@Subnet' {} a -> s {subnetAvailabilityZone = a} :: Subnet)
+
+-- | Specifies the identifier of the subnet.
+subnet_subnetIdentifier :: Lens.Lens' Subnet (Prelude.Maybe Prelude.Text)
+subnet_subnetIdentifier = Lens.lens (\Subnet' {subnetIdentifier} -> subnetIdentifier) (\s@Subnet' {} a -> s {subnetIdentifier = a} :: Subnet)
+
+-- | Specifies the status of the subnet.
+subnet_subnetStatus :: Lens.Lens' Subnet (Prelude.Maybe Prelude.Text)
+subnet_subnetStatus = Lens.lens (\Subnet' {subnetStatus} -> subnetStatus) (\s@Subnet' {} a -> s {subnetStatus = a} :: Subnet)
+
+instance Data.FromXML Subnet where
+  parseXML x =
+    Subnet'
+      Prelude.<$> (x Data..@? "SubnetAvailabilityZone")
+      Prelude.<*> (x Data..@? "SubnetIdentifier")
+      Prelude.<*> (x Data..@? "SubnetStatus")
+
+instance Prelude.Hashable Subnet where
+  hashWithSalt _salt Subnet' {..} =
+    _salt
+      `Prelude.hashWithSalt` subnetAvailabilityZone
+      `Prelude.hashWithSalt` subnetIdentifier
+      `Prelude.hashWithSalt` subnetStatus
+
+instance Prelude.NFData Subnet where
+  rnf Subnet' {..} =
+    Prelude.rnf subnetAvailabilityZone
+      `Prelude.seq` Prelude.rnf subnetIdentifier
+      `Prelude.seq` Prelude.rnf subnetStatus
diff --git a/gen/Amazonka/DocumentDB/Types/Tag.hs b/gen/Amazonka/DocumentDB/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/Tag.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.DocumentDB.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Metadata assigned to an Amazon DocumentDB resource consisting of a
+-- key-value pair.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The required name of the tag. The string value can be from 1 to 128
+    -- Unicode characters in length and can\'t be prefixed with \"@aws:@\" or
+    -- \"@rds:@\". The string can contain only the set of Unicode letters,
+    -- digits, white space, \'_\', \'.\', \'\/\', \'=\', \'+\', \'-\' (Java
+    -- regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:\/=+\\\\-]*)$\").
+    key :: Prelude.Maybe Prelude.Text,
+    -- | The optional value of the tag. The string value can be from 1 to 256
+    -- Unicode characters in length and can\'t be prefixed with \"@aws:@\" or
+    -- \"@rds:@\". The string can contain only the set of Unicode letters,
+    -- digits, white space, \'_\', \'.\', \'\/\', \'=\', \'+\', \'-\' (Java
+    -- regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:\/=+\\\\-]*)$\").
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - The required name of the tag. The string value can be from 1 to 128
+-- Unicode characters in length and can\'t be prefixed with \"@aws:@\" or
+-- \"@rds:@\". The string can contain only the set of Unicode letters,
+-- digits, white space, \'_\', \'.\', \'\/\', \'=\', \'+\', \'-\' (Java
+-- regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:\/=+\\\\-]*)$\").
+--
+-- 'value', 'tag_value' - The optional value of the tag. The string value can be from 1 to 256
+-- Unicode characters in length and can\'t be prefixed with \"@aws:@\" or
+-- \"@rds:@\". The string can contain only the set of Unicode letters,
+-- digits, white space, \'_\', \'.\', \'\/\', \'=\', \'+\', \'-\' (Java
+-- regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:\/=+\\\\-]*)$\").
+newTag ::
+  Tag
+newTag =
+  Tag'
+    { key = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The required name of the tag. The string value can be from 1 to 128
+-- Unicode characters in length and can\'t be prefixed with \"@aws:@\" or
+-- \"@rds:@\". The string can contain only the set of Unicode letters,
+-- digits, white space, \'_\', \'.\', \'\/\', \'=\', \'+\', \'-\' (Java
+-- regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:\/=+\\\\-]*)$\").
+tag_key :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | The optional value of the tag. The string value can be from 1 to 256
+-- Unicode characters in length and can\'t be prefixed with \"@aws:@\" or
+-- \"@rds:@\". The string can contain only the set of Unicode letters,
+-- digits, white space, \'_\', \'.\', \'\/\', \'=\', \'+\', \'-\' (Java
+-- regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:\/=+\\\\-]*)$\").
+tag_value :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromXML Tag where
+  parseXML x =
+    Tag'
+      Prelude.<$> (x Data..@? "Key")
+      Prelude.<*> (x Data..@? "Value")
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToQuery Tag where
+  toQuery Tag' {..} =
+    Prelude.mconcat
+      ["Key" Data.=: key, "Value" Data.=: value]
diff --git a/gen/Amazonka/DocumentDB/Types/UpgradeTarget.hs b/gen/Amazonka/DocumentDB/Types/UpgradeTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/UpgradeTarget.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.DocumentDB.Types.UpgradeTarget
+-- 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.DocumentDB.Types.UpgradeTarget 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 version of the database engine that an instance can be upgraded to.
+--
+-- /See:/ 'newUpgradeTarget' smart constructor.
+data UpgradeTarget = UpgradeTarget'
+  { -- | A value that indicates whether the target version is applied to any
+    -- source DB instances that have @AutoMinorVersionUpgrade@ set to @true@.
+    autoUpgrade :: Prelude.Maybe Prelude.Bool,
+    -- | The version of the database engine that an instance can be upgraded to.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the upgrade target database engine.
+    engine :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the upgrade target database engine.
+    engineVersion :: Prelude.Maybe Prelude.Text,
+    -- | A value that indicates whether a database engine is upgraded to a major
+    -- version.
+    isMajorVersionUpgrade :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpgradeTarget' 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:
+--
+-- 'autoUpgrade', 'upgradeTarget_autoUpgrade' - A value that indicates whether the target version is applied to any
+-- source DB instances that have @AutoMinorVersionUpgrade@ set to @true@.
+--
+-- 'description', 'upgradeTarget_description' - The version of the database engine that an instance can be upgraded to.
+--
+-- 'engine', 'upgradeTarget_engine' - The name of the upgrade target database engine.
+--
+-- 'engineVersion', 'upgradeTarget_engineVersion' - The version number of the upgrade target database engine.
+--
+-- 'isMajorVersionUpgrade', 'upgradeTarget_isMajorVersionUpgrade' - A value that indicates whether a database engine is upgraded to a major
+-- version.
+newUpgradeTarget ::
+  UpgradeTarget
+newUpgradeTarget =
+  UpgradeTarget'
+    { autoUpgrade = Prelude.Nothing,
+      description = Prelude.Nothing,
+      engine = Prelude.Nothing,
+      engineVersion = Prelude.Nothing,
+      isMajorVersionUpgrade = Prelude.Nothing
+    }
+
+-- | A value that indicates whether the target version is applied to any
+-- source DB instances that have @AutoMinorVersionUpgrade@ set to @true@.
+upgradeTarget_autoUpgrade :: Lens.Lens' UpgradeTarget (Prelude.Maybe Prelude.Bool)
+upgradeTarget_autoUpgrade = Lens.lens (\UpgradeTarget' {autoUpgrade} -> autoUpgrade) (\s@UpgradeTarget' {} a -> s {autoUpgrade = a} :: UpgradeTarget)
+
+-- | The version of the database engine that an instance can be upgraded to.
+upgradeTarget_description :: Lens.Lens' UpgradeTarget (Prelude.Maybe Prelude.Text)
+upgradeTarget_description = Lens.lens (\UpgradeTarget' {description} -> description) (\s@UpgradeTarget' {} a -> s {description = a} :: UpgradeTarget)
+
+-- | The name of the upgrade target database engine.
+upgradeTarget_engine :: Lens.Lens' UpgradeTarget (Prelude.Maybe Prelude.Text)
+upgradeTarget_engine = Lens.lens (\UpgradeTarget' {engine} -> engine) (\s@UpgradeTarget' {} a -> s {engine = a} :: UpgradeTarget)
+
+-- | The version number of the upgrade target database engine.
+upgradeTarget_engineVersion :: Lens.Lens' UpgradeTarget (Prelude.Maybe Prelude.Text)
+upgradeTarget_engineVersion = Lens.lens (\UpgradeTarget' {engineVersion} -> engineVersion) (\s@UpgradeTarget' {} a -> s {engineVersion = a} :: UpgradeTarget)
+
+-- | A value that indicates whether a database engine is upgraded to a major
+-- version.
+upgradeTarget_isMajorVersionUpgrade :: Lens.Lens' UpgradeTarget (Prelude.Maybe Prelude.Bool)
+upgradeTarget_isMajorVersionUpgrade = Lens.lens (\UpgradeTarget' {isMajorVersionUpgrade} -> isMajorVersionUpgrade) (\s@UpgradeTarget' {} a -> s {isMajorVersionUpgrade = a} :: UpgradeTarget)
+
+instance Data.FromXML UpgradeTarget where
+  parseXML x =
+    UpgradeTarget'
+      Prelude.<$> (x Data..@? "AutoUpgrade")
+      Prelude.<*> (x Data..@? "Description")
+      Prelude.<*> (x Data..@? "Engine")
+      Prelude.<*> (x Data..@? "EngineVersion")
+      Prelude.<*> (x Data..@? "IsMajorVersionUpgrade")
+
+instance Prelude.Hashable UpgradeTarget where
+  hashWithSalt _salt UpgradeTarget' {..} =
+    _salt
+      `Prelude.hashWithSalt` autoUpgrade
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` engine
+      `Prelude.hashWithSalt` engineVersion
+      `Prelude.hashWithSalt` isMajorVersionUpgrade
+
+instance Prelude.NFData UpgradeTarget where
+  rnf UpgradeTarget' {..} =
+    Prelude.rnf autoUpgrade
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf engine
+      `Prelude.seq` Prelude.rnf engineVersion
+      `Prelude.seq` Prelude.rnf isMajorVersionUpgrade
diff --git a/gen/Amazonka/DocumentDB/Types/VpcSecurityGroupMembership.hs b/gen/Amazonka/DocumentDB/Types/VpcSecurityGroupMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Types/VpcSecurityGroupMembership.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.DocumentDB.Types.VpcSecurityGroupMembership
+-- 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.DocumentDB.Types.VpcSecurityGroupMembership where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Used as a response element for queries on virtual private cloud (VPC)
+-- security group membership.
+--
+-- /See:/ 'newVpcSecurityGroupMembership' smart constructor.
+data VpcSecurityGroupMembership = VpcSecurityGroupMembership'
+  { -- | The status of the VPC security group.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | The name of the VPC security group.
+    vpcSecurityGroupId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VpcSecurityGroupMembership' 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:
+--
+-- 'status', 'vpcSecurityGroupMembership_status' - The status of the VPC security group.
+--
+-- 'vpcSecurityGroupId', 'vpcSecurityGroupMembership_vpcSecurityGroupId' - The name of the VPC security group.
+newVpcSecurityGroupMembership ::
+  VpcSecurityGroupMembership
+newVpcSecurityGroupMembership =
+  VpcSecurityGroupMembership'
+    { status =
+        Prelude.Nothing,
+      vpcSecurityGroupId = Prelude.Nothing
+    }
+
+-- | The status of the VPC security group.
+vpcSecurityGroupMembership_status :: Lens.Lens' VpcSecurityGroupMembership (Prelude.Maybe Prelude.Text)
+vpcSecurityGroupMembership_status = Lens.lens (\VpcSecurityGroupMembership' {status} -> status) (\s@VpcSecurityGroupMembership' {} a -> s {status = a} :: VpcSecurityGroupMembership)
+
+-- | The name of the VPC security group.
+vpcSecurityGroupMembership_vpcSecurityGroupId :: Lens.Lens' VpcSecurityGroupMembership (Prelude.Maybe Prelude.Text)
+vpcSecurityGroupMembership_vpcSecurityGroupId = Lens.lens (\VpcSecurityGroupMembership' {vpcSecurityGroupId} -> vpcSecurityGroupId) (\s@VpcSecurityGroupMembership' {} a -> s {vpcSecurityGroupId = a} :: VpcSecurityGroupMembership)
+
+instance Data.FromXML VpcSecurityGroupMembership where
+  parseXML x =
+    VpcSecurityGroupMembership'
+      Prelude.<$> (x Data..@? "Status")
+      Prelude.<*> (x Data..@? "VpcSecurityGroupId")
+
+instance Prelude.Hashable VpcSecurityGroupMembership where
+  hashWithSalt _salt VpcSecurityGroupMembership' {..} =
+    _salt
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` vpcSecurityGroupId
+
+instance Prelude.NFData VpcSecurityGroupMembership where
+  rnf VpcSecurityGroupMembership' {..} =
+    Prelude.rnf status
+      `Prelude.seq` Prelude.rnf vpcSecurityGroupId
diff --git a/gen/Amazonka/DocumentDB/Waiters.hs b/gen/Amazonka/DocumentDB/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/DocumentDB/Waiters.hs
@@ -0,0 +1,193 @@
+{-# 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.DocumentDB.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.DocumentDB.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.DocumentDB.DescribeDBInstances
+import Amazonka.DocumentDB.Lens
+import Amazonka.DocumentDB.Types
+import qualified Amazonka.Prelude as Prelude
+
+-- | Polls 'Amazonka.DocumentDB.DescribeDBInstances' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newDBInstanceAvailable :: Core.Wait DescribeDBInstances
+newDBInstanceAvailable =
+  Core.Wait
+    { Core.name = "DBInstanceAvailable",
+      Core.attempts = 60,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchAll
+            "available"
+            Core.AcceptSuccess
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAny
+            "deleted"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAny
+            "deleting"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAny
+            "failed"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAny
+            "incompatible-restore"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAny
+            "incompatible-parameters"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
+
+-- | Polls 'Amazonka.DocumentDB.DescribeDBInstances' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.
+newDBInstanceDeleted :: Core.Wait DescribeDBInstances
+newDBInstanceDeleted =
+  Core.Wait
+    { Core.name = "DBInstanceDeleted",
+      Core.attempts = 60,
+      Core.delay = 30,
+      Core.acceptors =
+        [ Core.matchAll
+            "deleted"
+            Core.AcceptSuccess
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "DBInstanceNotFound"
+            Core.AcceptSuccess,
+          Core.matchAny
+            "creating"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAny
+            "modifying"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAny
+            "rebooting"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAny
+            "resetting-master-credentials"
+            Core.AcceptFailure
+            ( Lens.folding
+                ( Lens.concatOf
+                    ( describeDBInstancesResponse_dbInstances
+                        Prelude.. Lens._Just
+                    )
+                )
+                Prelude.. dbInstance_dbInstanceStatus
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
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.DocumentDB
+import Test.Amazonka.DocumentDB.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "DocumentDB"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/DocumentDB.hs b/test/Test/Amazonka/DocumentDB.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/DocumentDB.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.DocumentDB
+-- 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.DocumentDB
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/DocumentDB/Internal.hs b/test/Test/Amazonka/DocumentDB/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/DocumentDB/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.DocumentDB.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.DocumentDB.Internal where
diff --git a/test/Test/Amazonka/Gen/DocumentDB.hs b/test/Test/Amazonka/Gen/DocumentDB.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/DocumentDB.hs
@@ -0,0 +1,1098 @@
+{-# 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.DocumentDB
+-- 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.DocumentDB where
+
+import Amazonka.DocumentDB
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.DocumentDB.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"
+--         [ requestAddSourceIdentifierToSubscription $
+--             newAddSourceIdentifierToSubscription
+--
+--         , requestAddTagsToResource $
+--             newAddTagsToResource
+--
+--         , requestApplyPendingMaintenanceAction $
+--             newApplyPendingMaintenanceAction
+--
+--         , requestCopyDBClusterParameterGroup $
+--             newCopyDBClusterParameterGroup
+--
+--         , requestCopyDBClusterSnapshot $
+--             newCopyDBClusterSnapshot
+--
+--         , requestCreateDBCluster $
+--             newCreateDBCluster
+--
+--         , requestCreateDBClusterParameterGroup $
+--             newCreateDBClusterParameterGroup
+--
+--         , requestCreateDBClusterSnapshot $
+--             newCreateDBClusterSnapshot
+--
+--         , requestCreateDBInstance $
+--             newCreateDBInstance
+--
+--         , requestCreateDBSubnetGroup $
+--             newCreateDBSubnetGroup
+--
+--         , requestCreateEventSubscription $
+--             newCreateEventSubscription
+--
+--         , requestCreateGlobalCluster $
+--             newCreateGlobalCluster
+--
+--         , requestDeleteDBCluster $
+--             newDeleteDBCluster
+--
+--         , requestDeleteDBClusterParameterGroup $
+--             newDeleteDBClusterParameterGroup
+--
+--         , requestDeleteDBClusterSnapshot $
+--             newDeleteDBClusterSnapshot
+--
+--         , requestDeleteDBInstance $
+--             newDeleteDBInstance
+--
+--         , requestDeleteDBSubnetGroup $
+--             newDeleteDBSubnetGroup
+--
+--         , requestDeleteEventSubscription $
+--             newDeleteEventSubscription
+--
+--         , requestDeleteGlobalCluster $
+--             newDeleteGlobalCluster
+--
+--         , requestDescribeCertificates $
+--             newDescribeCertificates
+--
+--         , requestDescribeDBClusterParameterGroups $
+--             newDescribeDBClusterParameterGroups
+--
+--         , requestDescribeDBClusterParameters $
+--             newDescribeDBClusterParameters
+--
+--         , requestDescribeDBClusterSnapshotAttributes $
+--             newDescribeDBClusterSnapshotAttributes
+--
+--         , requestDescribeDBClusterSnapshots $
+--             newDescribeDBClusterSnapshots
+--
+--         , requestDescribeDBClusters $
+--             newDescribeDBClusters
+--
+--         , requestDescribeDBEngineVersions $
+--             newDescribeDBEngineVersions
+--
+--         , requestDescribeDBInstances $
+--             newDescribeDBInstances
+--
+--         , requestDescribeDBSubnetGroups $
+--             newDescribeDBSubnetGroups
+--
+--         , requestDescribeEngineDefaultClusterParameters $
+--             newDescribeEngineDefaultClusterParameters
+--
+--         , requestDescribeEventCategories $
+--             newDescribeEventCategories
+--
+--         , requestDescribeEventSubscriptions $
+--             newDescribeEventSubscriptions
+--
+--         , requestDescribeEvents $
+--             newDescribeEvents
+--
+--         , requestDescribeGlobalClusters $
+--             newDescribeGlobalClusters
+--
+--         , requestDescribeOrderableDBInstanceOptions $
+--             newDescribeOrderableDBInstanceOptions
+--
+--         , requestDescribePendingMaintenanceActions $
+--             newDescribePendingMaintenanceActions
+--
+--         , requestFailoverDBCluster $
+--             newFailoverDBCluster
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestModifyDBCluster $
+--             newModifyDBCluster
+--
+--         , requestModifyDBClusterParameterGroup $
+--             newModifyDBClusterParameterGroup
+--
+--         , requestModifyDBClusterSnapshotAttribute $
+--             newModifyDBClusterSnapshotAttribute
+--
+--         , requestModifyDBInstance $
+--             newModifyDBInstance
+--
+--         , requestModifyDBSubnetGroup $
+--             newModifyDBSubnetGroup
+--
+--         , requestModifyEventSubscription $
+--             newModifyEventSubscription
+--
+--         , requestModifyGlobalCluster $
+--             newModifyGlobalCluster
+--
+--         , requestRebootDBInstance $
+--             newRebootDBInstance
+--
+--         , requestRemoveFromGlobalCluster $
+--             newRemoveFromGlobalCluster
+--
+--         , requestRemoveSourceIdentifierFromSubscription $
+--             newRemoveSourceIdentifierFromSubscription
+--
+--         , requestRemoveTagsFromResource $
+--             newRemoveTagsFromResource
+--
+--         , requestResetDBClusterParameterGroup $
+--             newResetDBClusterParameterGroup
+--
+--         , requestRestoreDBClusterFromSnapshot $
+--             newRestoreDBClusterFromSnapshot
+--
+--         , requestRestoreDBClusterToPointInTime $
+--             newRestoreDBClusterToPointInTime
+--
+--         , requestStartDBCluster $
+--             newStartDBCluster
+--
+--         , requestStopDBCluster $
+--             newStopDBCluster
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAddSourceIdentifierToSubscription $
+--             newAddSourceIdentifierToSubscriptionResponse
+--
+--         , responseAddTagsToResource $
+--             newAddTagsToResourceResponse
+--
+--         , responseApplyPendingMaintenanceAction $
+--             newApplyPendingMaintenanceActionResponse
+--
+--         , responseCopyDBClusterParameterGroup $
+--             newCopyDBClusterParameterGroupResponse
+--
+--         , responseCopyDBClusterSnapshot $
+--             newCopyDBClusterSnapshotResponse
+--
+--         , responseCreateDBCluster $
+--             newCreateDBClusterResponse
+--
+--         , responseCreateDBClusterParameterGroup $
+--             newCreateDBClusterParameterGroupResponse
+--
+--         , responseCreateDBClusterSnapshot $
+--             newCreateDBClusterSnapshotResponse
+--
+--         , responseCreateDBInstance $
+--             newCreateDBInstanceResponse
+--
+--         , responseCreateDBSubnetGroup $
+--             newCreateDBSubnetGroupResponse
+--
+--         , responseCreateEventSubscription $
+--             newCreateEventSubscriptionResponse
+--
+--         , responseCreateGlobalCluster $
+--             newCreateGlobalClusterResponse
+--
+--         , responseDeleteDBCluster $
+--             newDeleteDBClusterResponse
+--
+--         , responseDeleteDBClusterParameterGroup $
+--             newDeleteDBClusterParameterGroupResponse
+--
+--         , responseDeleteDBClusterSnapshot $
+--             newDeleteDBClusterSnapshotResponse
+--
+--         , responseDeleteDBInstance $
+--             newDeleteDBInstanceResponse
+--
+--         , responseDeleteDBSubnetGroup $
+--             newDeleteDBSubnetGroupResponse
+--
+--         , responseDeleteEventSubscription $
+--             newDeleteEventSubscriptionResponse
+--
+--         , responseDeleteGlobalCluster $
+--             newDeleteGlobalClusterResponse
+--
+--         , responseDescribeCertificates $
+--             newDescribeCertificatesResponse
+--
+--         , responseDescribeDBClusterParameterGroups $
+--             newDescribeDBClusterParameterGroupsResponse
+--
+--         , responseDescribeDBClusterParameters $
+--             newDescribeDBClusterParametersResponse
+--
+--         , responseDescribeDBClusterSnapshotAttributes $
+--             newDescribeDBClusterSnapshotAttributesResponse
+--
+--         , responseDescribeDBClusterSnapshots $
+--             newDescribeDBClusterSnapshotsResponse
+--
+--         , responseDescribeDBClusters $
+--             newDescribeDBClustersResponse
+--
+--         , responseDescribeDBEngineVersions $
+--             newDescribeDBEngineVersionsResponse
+--
+--         , responseDescribeDBInstances $
+--             newDescribeDBInstancesResponse
+--
+--         , responseDescribeDBSubnetGroups $
+--             newDescribeDBSubnetGroupsResponse
+--
+--         , responseDescribeEngineDefaultClusterParameters $
+--             newDescribeEngineDefaultClusterParametersResponse
+--
+--         , responseDescribeEventCategories $
+--             newDescribeEventCategoriesResponse
+--
+--         , responseDescribeEventSubscriptions $
+--             newDescribeEventSubscriptionsResponse
+--
+--         , responseDescribeEvents $
+--             newDescribeEventsResponse
+--
+--         , responseDescribeGlobalClusters $
+--             newDescribeGlobalClustersResponse
+--
+--         , responseDescribeOrderableDBInstanceOptions $
+--             newDescribeOrderableDBInstanceOptionsResponse
+--
+--         , responseDescribePendingMaintenanceActions $
+--             newDescribePendingMaintenanceActionsResponse
+--
+--         , responseFailoverDBCluster $
+--             newFailoverDBClusterResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseModifyDBCluster $
+--             newModifyDBClusterResponse
+--
+--         , responseModifyDBClusterParameterGroup $
+--             newDBClusterParameterGroupNameMessage
+--
+--         , responseModifyDBClusterSnapshotAttribute $
+--             newModifyDBClusterSnapshotAttributeResponse
+--
+--         , responseModifyDBInstance $
+--             newModifyDBInstanceResponse
+--
+--         , responseModifyDBSubnetGroup $
+--             newModifyDBSubnetGroupResponse
+--
+--         , responseModifyEventSubscription $
+--             newModifyEventSubscriptionResponse
+--
+--         , responseModifyGlobalCluster $
+--             newModifyGlobalClusterResponse
+--
+--         , responseRebootDBInstance $
+--             newRebootDBInstanceResponse
+--
+--         , responseRemoveFromGlobalCluster $
+--             newRemoveFromGlobalClusterResponse
+--
+--         , responseRemoveSourceIdentifierFromSubscription $
+--             newRemoveSourceIdentifierFromSubscriptionResponse
+--
+--         , responseRemoveTagsFromResource $
+--             newRemoveTagsFromResourceResponse
+--
+--         , responseResetDBClusterParameterGroup $
+--             newDBClusterParameterGroupNameMessage
+--
+--         , responseRestoreDBClusterFromSnapshot $
+--             newRestoreDBClusterFromSnapshotResponse
+--
+--         , responseRestoreDBClusterToPointInTime $
+--             newRestoreDBClusterToPointInTimeResponse
+--
+--         , responseStartDBCluster $
+--             newStartDBClusterResponse
+--
+--         , responseStopDBCluster $
+--             newStopDBClusterResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAddSourceIdentifierToSubscription :: AddSourceIdentifierToSubscription -> TestTree
+requestAddSourceIdentifierToSubscription =
+  req
+    "AddSourceIdentifierToSubscription"
+    "fixture/AddSourceIdentifierToSubscription.yaml"
+
+requestAddTagsToResource :: AddTagsToResource -> TestTree
+requestAddTagsToResource =
+  req
+    "AddTagsToResource"
+    "fixture/AddTagsToResource.yaml"
+
+requestApplyPendingMaintenanceAction :: ApplyPendingMaintenanceAction -> TestTree
+requestApplyPendingMaintenanceAction =
+  req
+    "ApplyPendingMaintenanceAction"
+    "fixture/ApplyPendingMaintenanceAction.yaml"
+
+requestCopyDBClusterParameterGroup :: CopyDBClusterParameterGroup -> TestTree
+requestCopyDBClusterParameterGroup =
+  req
+    "CopyDBClusterParameterGroup"
+    "fixture/CopyDBClusterParameterGroup.yaml"
+
+requestCopyDBClusterSnapshot :: CopyDBClusterSnapshot -> TestTree
+requestCopyDBClusterSnapshot =
+  req
+    "CopyDBClusterSnapshot"
+    "fixture/CopyDBClusterSnapshot.yaml"
+
+requestCreateDBCluster :: CreateDBCluster -> TestTree
+requestCreateDBCluster =
+  req
+    "CreateDBCluster"
+    "fixture/CreateDBCluster.yaml"
+
+requestCreateDBClusterParameterGroup :: CreateDBClusterParameterGroup -> TestTree
+requestCreateDBClusterParameterGroup =
+  req
+    "CreateDBClusterParameterGroup"
+    "fixture/CreateDBClusterParameterGroup.yaml"
+
+requestCreateDBClusterSnapshot :: CreateDBClusterSnapshot -> TestTree
+requestCreateDBClusterSnapshot =
+  req
+    "CreateDBClusterSnapshot"
+    "fixture/CreateDBClusterSnapshot.yaml"
+
+requestCreateDBInstance :: CreateDBInstance -> TestTree
+requestCreateDBInstance =
+  req
+    "CreateDBInstance"
+    "fixture/CreateDBInstance.yaml"
+
+requestCreateDBSubnetGroup :: CreateDBSubnetGroup -> TestTree
+requestCreateDBSubnetGroup =
+  req
+    "CreateDBSubnetGroup"
+    "fixture/CreateDBSubnetGroup.yaml"
+
+requestCreateEventSubscription :: CreateEventSubscription -> TestTree
+requestCreateEventSubscription =
+  req
+    "CreateEventSubscription"
+    "fixture/CreateEventSubscription.yaml"
+
+requestCreateGlobalCluster :: CreateGlobalCluster -> TestTree
+requestCreateGlobalCluster =
+  req
+    "CreateGlobalCluster"
+    "fixture/CreateGlobalCluster.yaml"
+
+requestDeleteDBCluster :: DeleteDBCluster -> TestTree
+requestDeleteDBCluster =
+  req
+    "DeleteDBCluster"
+    "fixture/DeleteDBCluster.yaml"
+
+requestDeleteDBClusterParameterGroup :: DeleteDBClusterParameterGroup -> TestTree
+requestDeleteDBClusterParameterGroup =
+  req
+    "DeleteDBClusterParameterGroup"
+    "fixture/DeleteDBClusterParameterGroup.yaml"
+
+requestDeleteDBClusterSnapshot :: DeleteDBClusterSnapshot -> TestTree
+requestDeleteDBClusterSnapshot =
+  req
+    "DeleteDBClusterSnapshot"
+    "fixture/DeleteDBClusterSnapshot.yaml"
+
+requestDeleteDBInstance :: DeleteDBInstance -> TestTree
+requestDeleteDBInstance =
+  req
+    "DeleteDBInstance"
+    "fixture/DeleteDBInstance.yaml"
+
+requestDeleteDBSubnetGroup :: DeleteDBSubnetGroup -> TestTree
+requestDeleteDBSubnetGroup =
+  req
+    "DeleteDBSubnetGroup"
+    "fixture/DeleteDBSubnetGroup.yaml"
+
+requestDeleteEventSubscription :: DeleteEventSubscription -> TestTree
+requestDeleteEventSubscription =
+  req
+    "DeleteEventSubscription"
+    "fixture/DeleteEventSubscription.yaml"
+
+requestDeleteGlobalCluster :: DeleteGlobalCluster -> TestTree
+requestDeleteGlobalCluster =
+  req
+    "DeleteGlobalCluster"
+    "fixture/DeleteGlobalCluster.yaml"
+
+requestDescribeCertificates :: DescribeCertificates -> TestTree
+requestDescribeCertificates =
+  req
+    "DescribeCertificates"
+    "fixture/DescribeCertificates.yaml"
+
+requestDescribeDBClusterParameterGroups :: DescribeDBClusterParameterGroups -> TestTree
+requestDescribeDBClusterParameterGroups =
+  req
+    "DescribeDBClusterParameterGroups"
+    "fixture/DescribeDBClusterParameterGroups.yaml"
+
+requestDescribeDBClusterParameters :: DescribeDBClusterParameters -> TestTree
+requestDescribeDBClusterParameters =
+  req
+    "DescribeDBClusterParameters"
+    "fixture/DescribeDBClusterParameters.yaml"
+
+requestDescribeDBClusterSnapshotAttributes :: DescribeDBClusterSnapshotAttributes -> TestTree
+requestDescribeDBClusterSnapshotAttributes =
+  req
+    "DescribeDBClusterSnapshotAttributes"
+    "fixture/DescribeDBClusterSnapshotAttributes.yaml"
+
+requestDescribeDBClusterSnapshots :: DescribeDBClusterSnapshots -> TestTree
+requestDescribeDBClusterSnapshots =
+  req
+    "DescribeDBClusterSnapshots"
+    "fixture/DescribeDBClusterSnapshots.yaml"
+
+requestDescribeDBClusters :: DescribeDBClusters -> TestTree
+requestDescribeDBClusters =
+  req
+    "DescribeDBClusters"
+    "fixture/DescribeDBClusters.yaml"
+
+requestDescribeDBEngineVersions :: DescribeDBEngineVersions -> TestTree
+requestDescribeDBEngineVersions =
+  req
+    "DescribeDBEngineVersions"
+    "fixture/DescribeDBEngineVersions.yaml"
+
+requestDescribeDBInstances :: DescribeDBInstances -> TestTree
+requestDescribeDBInstances =
+  req
+    "DescribeDBInstances"
+    "fixture/DescribeDBInstances.yaml"
+
+requestDescribeDBSubnetGroups :: DescribeDBSubnetGroups -> TestTree
+requestDescribeDBSubnetGroups =
+  req
+    "DescribeDBSubnetGroups"
+    "fixture/DescribeDBSubnetGroups.yaml"
+
+requestDescribeEngineDefaultClusterParameters :: DescribeEngineDefaultClusterParameters -> TestTree
+requestDescribeEngineDefaultClusterParameters =
+  req
+    "DescribeEngineDefaultClusterParameters"
+    "fixture/DescribeEngineDefaultClusterParameters.yaml"
+
+requestDescribeEventCategories :: DescribeEventCategories -> TestTree
+requestDescribeEventCategories =
+  req
+    "DescribeEventCategories"
+    "fixture/DescribeEventCategories.yaml"
+
+requestDescribeEventSubscriptions :: DescribeEventSubscriptions -> TestTree
+requestDescribeEventSubscriptions =
+  req
+    "DescribeEventSubscriptions"
+    "fixture/DescribeEventSubscriptions.yaml"
+
+requestDescribeEvents :: DescribeEvents -> TestTree
+requestDescribeEvents =
+  req
+    "DescribeEvents"
+    "fixture/DescribeEvents.yaml"
+
+requestDescribeGlobalClusters :: DescribeGlobalClusters -> TestTree
+requestDescribeGlobalClusters =
+  req
+    "DescribeGlobalClusters"
+    "fixture/DescribeGlobalClusters.yaml"
+
+requestDescribeOrderableDBInstanceOptions :: DescribeOrderableDBInstanceOptions -> TestTree
+requestDescribeOrderableDBInstanceOptions =
+  req
+    "DescribeOrderableDBInstanceOptions"
+    "fixture/DescribeOrderableDBInstanceOptions.yaml"
+
+requestDescribePendingMaintenanceActions :: DescribePendingMaintenanceActions -> TestTree
+requestDescribePendingMaintenanceActions =
+  req
+    "DescribePendingMaintenanceActions"
+    "fixture/DescribePendingMaintenanceActions.yaml"
+
+requestFailoverDBCluster :: FailoverDBCluster -> TestTree
+requestFailoverDBCluster =
+  req
+    "FailoverDBCluster"
+    "fixture/FailoverDBCluster.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestModifyDBCluster :: ModifyDBCluster -> TestTree
+requestModifyDBCluster =
+  req
+    "ModifyDBCluster"
+    "fixture/ModifyDBCluster.yaml"
+
+requestModifyDBClusterParameterGroup :: ModifyDBClusterParameterGroup -> TestTree
+requestModifyDBClusterParameterGroup =
+  req
+    "ModifyDBClusterParameterGroup"
+    "fixture/ModifyDBClusterParameterGroup.yaml"
+
+requestModifyDBClusterSnapshotAttribute :: ModifyDBClusterSnapshotAttribute -> TestTree
+requestModifyDBClusterSnapshotAttribute =
+  req
+    "ModifyDBClusterSnapshotAttribute"
+    "fixture/ModifyDBClusterSnapshotAttribute.yaml"
+
+requestModifyDBInstance :: ModifyDBInstance -> TestTree
+requestModifyDBInstance =
+  req
+    "ModifyDBInstance"
+    "fixture/ModifyDBInstance.yaml"
+
+requestModifyDBSubnetGroup :: ModifyDBSubnetGroup -> TestTree
+requestModifyDBSubnetGroup =
+  req
+    "ModifyDBSubnetGroup"
+    "fixture/ModifyDBSubnetGroup.yaml"
+
+requestModifyEventSubscription :: ModifyEventSubscription -> TestTree
+requestModifyEventSubscription =
+  req
+    "ModifyEventSubscription"
+    "fixture/ModifyEventSubscription.yaml"
+
+requestModifyGlobalCluster :: ModifyGlobalCluster -> TestTree
+requestModifyGlobalCluster =
+  req
+    "ModifyGlobalCluster"
+    "fixture/ModifyGlobalCluster.yaml"
+
+requestRebootDBInstance :: RebootDBInstance -> TestTree
+requestRebootDBInstance =
+  req
+    "RebootDBInstance"
+    "fixture/RebootDBInstance.yaml"
+
+requestRemoveFromGlobalCluster :: RemoveFromGlobalCluster -> TestTree
+requestRemoveFromGlobalCluster =
+  req
+    "RemoveFromGlobalCluster"
+    "fixture/RemoveFromGlobalCluster.yaml"
+
+requestRemoveSourceIdentifierFromSubscription :: RemoveSourceIdentifierFromSubscription -> TestTree
+requestRemoveSourceIdentifierFromSubscription =
+  req
+    "RemoveSourceIdentifierFromSubscription"
+    "fixture/RemoveSourceIdentifierFromSubscription.yaml"
+
+requestRemoveTagsFromResource :: RemoveTagsFromResource -> TestTree
+requestRemoveTagsFromResource =
+  req
+    "RemoveTagsFromResource"
+    "fixture/RemoveTagsFromResource.yaml"
+
+requestResetDBClusterParameterGroup :: ResetDBClusterParameterGroup -> TestTree
+requestResetDBClusterParameterGroup =
+  req
+    "ResetDBClusterParameterGroup"
+    "fixture/ResetDBClusterParameterGroup.yaml"
+
+requestRestoreDBClusterFromSnapshot :: RestoreDBClusterFromSnapshot -> TestTree
+requestRestoreDBClusterFromSnapshot =
+  req
+    "RestoreDBClusterFromSnapshot"
+    "fixture/RestoreDBClusterFromSnapshot.yaml"
+
+requestRestoreDBClusterToPointInTime :: RestoreDBClusterToPointInTime -> TestTree
+requestRestoreDBClusterToPointInTime =
+  req
+    "RestoreDBClusterToPointInTime"
+    "fixture/RestoreDBClusterToPointInTime.yaml"
+
+requestStartDBCluster :: StartDBCluster -> TestTree
+requestStartDBCluster =
+  req
+    "StartDBCluster"
+    "fixture/StartDBCluster.yaml"
+
+requestStopDBCluster :: StopDBCluster -> TestTree
+requestStopDBCluster =
+  req
+    "StopDBCluster"
+    "fixture/StopDBCluster.yaml"
+
+-- Responses
+
+responseAddSourceIdentifierToSubscription :: AddSourceIdentifierToSubscriptionResponse -> TestTree
+responseAddSourceIdentifierToSubscription =
+  res
+    "AddSourceIdentifierToSubscriptionResponse"
+    "fixture/AddSourceIdentifierToSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddSourceIdentifierToSubscription)
+
+responseAddTagsToResource :: AddTagsToResourceResponse -> TestTree
+responseAddTagsToResource =
+  res
+    "AddTagsToResourceResponse"
+    "fixture/AddTagsToResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddTagsToResource)
+
+responseApplyPendingMaintenanceAction :: ApplyPendingMaintenanceActionResponse -> TestTree
+responseApplyPendingMaintenanceAction =
+  res
+    "ApplyPendingMaintenanceActionResponse"
+    "fixture/ApplyPendingMaintenanceActionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ApplyPendingMaintenanceAction)
+
+responseCopyDBClusterParameterGroup :: CopyDBClusterParameterGroupResponse -> TestTree
+responseCopyDBClusterParameterGroup =
+  res
+    "CopyDBClusterParameterGroupResponse"
+    "fixture/CopyDBClusterParameterGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CopyDBClusterParameterGroup)
+
+responseCopyDBClusterSnapshot :: CopyDBClusterSnapshotResponse -> TestTree
+responseCopyDBClusterSnapshot =
+  res
+    "CopyDBClusterSnapshotResponse"
+    "fixture/CopyDBClusterSnapshotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CopyDBClusterSnapshot)
+
+responseCreateDBCluster :: CreateDBClusterResponse -> TestTree
+responseCreateDBCluster =
+  res
+    "CreateDBClusterResponse"
+    "fixture/CreateDBClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDBCluster)
+
+responseCreateDBClusterParameterGroup :: CreateDBClusterParameterGroupResponse -> TestTree
+responseCreateDBClusterParameterGroup =
+  res
+    "CreateDBClusterParameterGroupResponse"
+    "fixture/CreateDBClusterParameterGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDBClusterParameterGroup)
+
+responseCreateDBClusterSnapshot :: CreateDBClusterSnapshotResponse -> TestTree
+responseCreateDBClusterSnapshot =
+  res
+    "CreateDBClusterSnapshotResponse"
+    "fixture/CreateDBClusterSnapshotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDBClusterSnapshot)
+
+responseCreateDBInstance :: CreateDBInstanceResponse -> TestTree
+responseCreateDBInstance =
+  res
+    "CreateDBInstanceResponse"
+    "fixture/CreateDBInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDBInstance)
+
+responseCreateDBSubnetGroup :: CreateDBSubnetGroupResponse -> TestTree
+responseCreateDBSubnetGroup =
+  res
+    "CreateDBSubnetGroupResponse"
+    "fixture/CreateDBSubnetGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDBSubnetGroup)
+
+responseCreateEventSubscription :: CreateEventSubscriptionResponse -> TestTree
+responseCreateEventSubscription =
+  res
+    "CreateEventSubscriptionResponse"
+    "fixture/CreateEventSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateEventSubscription)
+
+responseCreateGlobalCluster :: CreateGlobalClusterResponse -> TestTree
+responseCreateGlobalCluster =
+  res
+    "CreateGlobalClusterResponse"
+    "fixture/CreateGlobalClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateGlobalCluster)
+
+responseDeleteDBCluster :: DeleteDBClusterResponse -> TestTree
+responseDeleteDBCluster =
+  res
+    "DeleteDBClusterResponse"
+    "fixture/DeleteDBClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDBCluster)
+
+responseDeleteDBClusterParameterGroup :: DeleteDBClusterParameterGroupResponse -> TestTree
+responseDeleteDBClusterParameterGroup =
+  res
+    "DeleteDBClusterParameterGroupResponse"
+    "fixture/DeleteDBClusterParameterGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDBClusterParameterGroup)
+
+responseDeleteDBClusterSnapshot :: DeleteDBClusterSnapshotResponse -> TestTree
+responseDeleteDBClusterSnapshot =
+  res
+    "DeleteDBClusterSnapshotResponse"
+    "fixture/DeleteDBClusterSnapshotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDBClusterSnapshot)
+
+responseDeleteDBInstance :: DeleteDBInstanceResponse -> TestTree
+responseDeleteDBInstance =
+  res
+    "DeleteDBInstanceResponse"
+    "fixture/DeleteDBInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDBInstance)
+
+responseDeleteDBSubnetGroup :: DeleteDBSubnetGroupResponse -> TestTree
+responseDeleteDBSubnetGroup =
+  res
+    "DeleteDBSubnetGroupResponse"
+    "fixture/DeleteDBSubnetGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDBSubnetGroup)
+
+responseDeleteEventSubscription :: DeleteEventSubscriptionResponse -> TestTree
+responseDeleteEventSubscription =
+  res
+    "DeleteEventSubscriptionResponse"
+    "fixture/DeleteEventSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteEventSubscription)
+
+responseDeleteGlobalCluster :: DeleteGlobalClusterResponse -> TestTree
+responseDeleteGlobalCluster =
+  res
+    "DeleteGlobalClusterResponse"
+    "fixture/DeleteGlobalClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteGlobalCluster)
+
+responseDescribeCertificates :: DescribeCertificatesResponse -> TestTree
+responseDescribeCertificates =
+  res
+    "DescribeCertificatesResponse"
+    "fixture/DescribeCertificatesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeCertificates)
+
+responseDescribeDBClusterParameterGroups :: DescribeDBClusterParameterGroupsResponse -> TestTree
+responseDescribeDBClusterParameterGroups =
+  res
+    "DescribeDBClusterParameterGroupsResponse"
+    "fixture/DescribeDBClusterParameterGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDBClusterParameterGroups)
+
+responseDescribeDBClusterParameters :: DescribeDBClusterParametersResponse -> TestTree
+responseDescribeDBClusterParameters =
+  res
+    "DescribeDBClusterParametersResponse"
+    "fixture/DescribeDBClusterParametersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDBClusterParameters)
+
+responseDescribeDBClusterSnapshotAttributes :: DescribeDBClusterSnapshotAttributesResponse -> TestTree
+responseDescribeDBClusterSnapshotAttributes =
+  res
+    "DescribeDBClusterSnapshotAttributesResponse"
+    "fixture/DescribeDBClusterSnapshotAttributesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDBClusterSnapshotAttributes)
+
+responseDescribeDBClusterSnapshots :: DescribeDBClusterSnapshotsResponse -> TestTree
+responseDescribeDBClusterSnapshots =
+  res
+    "DescribeDBClusterSnapshotsResponse"
+    "fixture/DescribeDBClusterSnapshotsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDBClusterSnapshots)
+
+responseDescribeDBClusters :: DescribeDBClustersResponse -> TestTree
+responseDescribeDBClusters =
+  res
+    "DescribeDBClustersResponse"
+    "fixture/DescribeDBClustersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDBClusters)
+
+responseDescribeDBEngineVersions :: DescribeDBEngineVersionsResponse -> TestTree
+responseDescribeDBEngineVersions =
+  res
+    "DescribeDBEngineVersionsResponse"
+    "fixture/DescribeDBEngineVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDBEngineVersions)
+
+responseDescribeDBInstances :: DescribeDBInstancesResponse -> TestTree
+responseDescribeDBInstances =
+  res
+    "DescribeDBInstancesResponse"
+    "fixture/DescribeDBInstancesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDBInstances)
+
+responseDescribeDBSubnetGroups :: DescribeDBSubnetGroupsResponse -> TestTree
+responseDescribeDBSubnetGroups =
+  res
+    "DescribeDBSubnetGroupsResponse"
+    "fixture/DescribeDBSubnetGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDBSubnetGroups)
+
+responseDescribeEngineDefaultClusterParameters :: DescribeEngineDefaultClusterParametersResponse -> TestTree
+responseDescribeEngineDefaultClusterParameters =
+  res
+    "DescribeEngineDefaultClusterParametersResponse"
+    "fixture/DescribeEngineDefaultClusterParametersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEngineDefaultClusterParameters)
+
+responseDescribeEventCategories :: DescribeEventCategoriesResponse -> TestTree
+responseDescribeEventCategories =
+  res
+    "DescribeEventCategoriesResponse"
+    "fixture/DescribeEventCategoriesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEventCategories)
+
+responseDescribeEventSubscriptions :: DescribeEventSubscriptionsResponse -> TestTree
+responseDescribeEventSubscriptions =
+  res
+    "DescribeEventSubscriptionsResponse"
+    "fixture/DescribeEventSubscriptionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEventSubscriptions)
+
+responseDescribeEvents :: DescribeEventsResponse -> TestTree
+responseDescribeEvents =
+  res
+    "DescribeEventsResponse"
+    "fixture/DescribeEventsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeEvents)
+
+responseDescribeGlobalClusters :: DescribeGlobalClustersResponse -> TestTree
+responseDescribeGlobalClusters =
+  res
+    "DescribeGlobalClustersResponse"
+    "fixture/DescribeGlobalClustersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeGlobalClusters)
+
+responseDescribeOrderableDBInstanceOptions :: DescribeOrderableDBInstanceOptionsResponse -> TestTree
+responseDescribeOrderableDBInstanceOptions =
+  res
+    "DescribeOrderableDBInstanceOptionsResponse"
+    "fixture/DescribeOrderableDBInstanceOptionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeOrderableDBInstanceOptions)
+
+responseDescribePendingMaintenanceActions :: DescribePendingMaintenanceActionsResponse -> TestTree
+responseDescribePendingMaintenanceActions =
+  res
+    "DescribePendingMaintenanceActionsResponse"
+    "fixture/DescribePendingMaintenanceActionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribePendingMaintenanceActions)
+
+responseFailoverDBCluster :: FailoverDBClusterResponse -> TestTree
+responseFailoverDBCluster =
+  res
+    "FailoverDBClusterResponse"
+    "fixture/FailoverDBClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy FailoverDBCluster)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseModifyDBCluster :: ModifyDBClusterResponse -> TestTree
+responseModifyDBCluster =
+  res
+    "ModifyDBClusterResponse"
+    "fixture/ModifyDBClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ModifyDBCluster)
+
+responseModifyDBClusterParameterGroup :: DBClusterParameterGroupNameMessage -> TestTree
+responseModifyDBClusterParameterGroup =
+  res
+    "ModifyDBClusterParameterGroupResponse"
+    "fixture/ModifyDBClusterParameterGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ModifyDBClusterParameterGroup)
+
+responseModifyDBClusterSnapshotAttribute :: ModifyDBClusterSnapshotAttributeResponse -> TestTree
+responseModifyDBClusterSnapshotAttribute =
+  res
+    "ModifyDBClusterSnapshotAttributeResponse"
+    "fixture/ModifyDBClusterSnapshotAttributeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ModifyDBClusterSnapshotAttribute)
+
+responseModifyDBInstance :: ModifyDBInstanceResponse -> TestTree
+responseModifyDBInstance =
+  res
+    "ModifyDBInstanceResponse"
+    "fixture/ModifyDBInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ModifyDBInstance)
+
+responseModifyDBSubnetGroup :: ModifyDBSubnetGroupResponse -> TestTree
+responseModifyDBSubnetGroup =
+  res
+    "ModifyDBSubnetGroupResponse"
+    "fixture/ModifyDBSubnetGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ModifyDBSubnetGroup)
+
+responseModifyEventSubscription :: ModifyEventSubscriptionResponse -> TestTree
+responseModifyEventSubscription =
+  res
+    "ModifyEventSubscriptionResponse"
+    "fixture/ModifyEventSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ModifyEventSubscription)
+
+responseModifyGlobalCluster :: ModifyGlobalClusterResponse -> TestTree
+responseModifyGlobalCluster =
+  res
+    "ModifyGlobalClusterResponse"
+    "fixture/ModifyGlobalClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ModifyGlobalCluster)
+
+responseRebootDBInstance :: RebootDBInstanceResponse -> TestTree
+responseRebootDBInstance =
+  res
+    "RebootDBInstanceResponse"
+    "fixture/RebootDBInstanceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RebootDBInstance)
+
+responseRemoveFromGlobalCluster :: RemoveFromGlobalClusterResponse -> TestTree
+responseRemoveFromGlobalCluster =
+  res
+    "RemoveFromGlobalClusterResponse"
+    "fixture/RemoveFromGlobalClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RemoveFromGlobalCluster)
+
+responseRemoveSourceIdentifierFromSubscription :: RemoveSourceIdentifierFromSubscriptionResponse -> TestTree
+responseRemoveSourceIdentifierFromSubscription =
+  res
+    "RemoveSourceIdentifierFromSubscriptionResponse"
+    "fixture/RemoveSourceIdentifierFromSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RemoveSourceIdentifierFromSubscription)
+
+responseRemoveTagsFromResource :: RemoveTagsFromResourceResponse -> TestTree
+responseRemoveTagsFromResource =
+  res
+    "RemoveTagsFromResourceResponse"
+    "fixture/RemoveTagsFromResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RemoveTagsFromResource)
+
+responseResetDBClusterParameterGroup :: DBClusterParameterGroupNameMessage -> TestTree
+responseResetDBClusterParameterGroup =
+  res
+    "ResetDBClusterParameterGroupResponse"
+    "fixture/ResetDBClusterParameterGroupResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ResetDBClusterParameterGroup)
+
+responseRestoreDBClusterFromSnapshot :: RestoreDBClusterFromSnapshotResponse -> TestTree
+responseRestoreDBClusterFromSnapshot =
+  res
+    "RestoreDBClusterFromSnapshotResponse"
+    "fixture/RestoreDBClusterFromSnapshotResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RestoreDBClusterFromSnapshot)
+
+responseRestoreDBClusterToPointInTime :: RestoreDBClusterToPointInTimeResponse -> TestTree
+responseRestoreDBClusterToPointInTime =
+  res
+    "RestoreDBClusterToPointInTimeResponse"
+    "fixture/RestoreDBClusterToPointInTimeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RestoreDBClusterToPointInTime)
+
+responseStartDBCluster :: StartDBClusterResponse -> TestTree
+responseStartDBCluster =
+  res
+    "StartDBClusterResponse"
+    "fixture/StartDBClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartDBCluster)
+
+responseStopDBCluster :: StopDBClusterResponse -> TestTree
+responseStopDBCluster =
+  res
+    "StopDBClusterResponse"
+    "fixture/StopDBClusterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopDBCluster)
