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 AmplifyBackend SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2020-08-11@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-amplifybackend)
+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.AmplifyBackend](http://hackage.haskell.org/package/amazonka-amplifybackend/docs/Amazonka-AmplifyBackend.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-amplifybackend` 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-amplifybackend.cabal b/amazonka-amplifybackend.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-amplifybackend.cabal
@@ -0,0 +1,164 @@
+cabal-version:      2.2
+name:               amazonka-amplifybackend
+version:            2.0
+synopsis:           Amazon AmplifyBackend 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 @2020-08-11@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.AmplifyBackend.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.AmplifyBackend" 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-amplifybackend
+
+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.AmplifyBackend
+    Amazonka.AmplifyBackend.CloneBackend
+    Amazonka.AmplifyBackend.CreateBackend
+    Amazonka.AmplifyBackend.CreateBackendAPI
+    Amazonka.AmplifyBackend.CreateBackendAuth
+    Amazonka.AmplifyBackend.CreateBackendConfig
+    Amazonka.AmplifyBackend.CreateBackendStorage
+    Amazonka.AmplifyBackend.CreateToken
+    Amazonka.AmplifyBackend.DeleteBackend
+    Amazonka.AmplifyBackend.DeleteBackendAPI
+    Amazonka.AmplifyBackend.DeleteBackendAuth
+    Amazonka.AmplifyBackend.DeleteBackendStorage
+    Amazonka.AmplifyBackend.DeleteToken
+    Amazonka.AmplifyBackend.GenerateBackendAPIModels
+    Amazonka.AmplifyBackend.GetBackend
+    Amazonka.AmplifyBackend.GetBackendAPI
+    Amazonka.AmplifyBackend.GetBackendAPIModels
+    Amazonka.AmplifyBackend.GetBackendAuth
+    Amazonka.AmplifyBackend.GetBackendJob
+    Amazonka.AmplifyBackend.GetBackendStorage
+    Amazonka.AmplifyBackend.GetToken
+    Amazonka.AmplifyBackend.ImportBackendAuth
+    Amazonka.AmplifyBackend.ImportBackendStorage
+    Amazonka.AmplifyBackend.Lens
+    Amazonka.AmplifyBackend.ListBackendJobs
+    Amazonka.AmplifyBackend.ListS3Buckets
+    Amazonka.AmplifyBackend.RemoveAllBackends
+    Amazonka.AmplifyBackend.RemoveBackendConfig
+    Amazonka.AmplifyBackend.Types
+    Amazonka.AmplifyBackend.Types.AdditionalConstraintsElement
+    Amazonka.AmplifyBackend.Types.AuthenticatedElement
+    Amazonka.AmplifyBackend.Types.AuthResources
+    Amazonka.AmplifyBackend.Types.BackendAPIAppSyncAuthSettings
+    Amazonka.AmplifyBackend.Types.BackendAPIAuthType
+    Amazonka.AmplifyBackend.Types.BackendAPIConflictResolution
+    Amazonka.AmplifyBackend.Types.BackendAPIResourceConfig
+    Amazonka.AmplifyBackend.Types.BackendAuthAppleProviderConfig
+    Amazonka.AmplifyBackend.Types.BackendAuthSocialProviderConfig
+    Amazonka.AmplifyBackend.Types.BackendJobRespObj
+    Amazonka.AmplifyBackend.Types.BackendStoragePermissions
+    Amazonka.AmplifyBackend.Types.CreateBackendAuthForgotPasswordConfig
+    Amazonka.AmplifyBackend.Types.CreateBackendAuthIdentityPoolConfig
+    Amazonka.AmplifyBackend.Types.CreateBackendAuthMFAConfig
+    Amazonka.AmplifyBackend.Types.CreateBackendAuthOAuthConfig
+    Amazonka.AmplifyBackend.Types.CreateBackendAuthPasswordPolicyConfig
+    Amazonka.AmplifyBackend.Types.CreateBackendAuthResourceConfig
+    Amazonka.AmplifyBackend.Types.CreateBackendAuthUserPoolConfig
+    Amazonka.AmplifyBackend.Types.CreateBackendAuthVerificationMessageConfig
+    Amazonka.AmplifyBackend.Types.CreateBackendStorageResourceConfig
+    Amazonka.AmplifyBackend.Types.DeliveryMethod
+    Amazonka.AmplifyBackend.Types.EmailSettings
+    Amazonka.AmplifyBackend.Types.GetBackendStorageResourceConfig
+    Amazonka.AmplifyBackend.Types.LoginAuthConfigReqObj
+    Amazonka.AmplifyBackend.Types.MFAMode
+    Amazonka.AmplifyBackend.Types.MfaTypesElement
+    Amazonka.AmplifyBackend.Types.Mode
+    Amazonka.AmplifyBackend.Types.OAuthGrantType
+    Amazonka.AmplifyBackend.Types.OAuthScopesElement
+    Amazonka.AmplifyBackend.Types.RequiredSignUpAttributesElement
+    Amazonka.AmplifyBackend.Types.ResolutionStrategy
+    Amazonka.AmplifyBackend.Types.ResourceConfig
+    Amazonka.AmplifyBackend.Types.S3BucketInfo
+    Amazonka.AmplifyBackend.Types.Service
+    Amazonka.AmplifyBackend.Types.ServiceName
+    Amazonka.AmplifyBackend.Types.Settings
+    Amazonka.AmplifyBackend.Types.SignInMethod
+    Amazonka.AmplifyBackend.Types.SmsSettings
+    Amazonka.AmplifyBackend.Types.SocialProviderSettings
+    Amazonka.AmplifyBackend.Types.Status
+    Amazonka.AmplifyBackend.Types.UnAuthenticatedElement
+    Amazonka.AmplifyBackend.Types.UpdateBackendAuthForgotPasswordConfig
+    Amazonka.AmplifyBackend.Types.UpdateBackendAuthIdentityPoolConfig
+    Amazonka.AmplifyBackend.Types.UpdateBackendAuthMFAConfig
+    Amazonka.AmplifyBackend.Types.UpdateBackendAuthOAuthConfig
+    Amazonka.AmplifyBackend.Types.UpdateBackendAuthPasswordPolicyConfig
+    Amazonka.AmplifyBackend.Types.UpdateBackendAuthResourceConfig
+    Amazonka.AmplifyBackend.Types.UpdateBackendAuthUserPoolConfig
+    Amazonka.AmplifyBackend.Types.UpdateBackendAuthVerificationMessageConfig
+    Amazonka.AmplifyBackend.Types.UpdateBackendStorageResourceConfig
+    Amazonka.AmplifyBackend.UpdateBackendAPI
+    Amazonka.AmplifyBackend.UpdateBackendAuth
+    Amazonka.AmplifyBackend.UpdateBackendConfig
+    Amazonka.AmplifyBackend.UpdateBackendJob
+    Amazonka.AmplifyBackend.UpdateBackendStorage
+    Amazonka.AmplifyBackend.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-amplifybackend-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.AmplifyBackend
+    Test.Amazonka.AmplifyBackend.Internal
+    Test.Amazonka.Gen.AmplifyBackend
+
+  build-depends:
+    , amazonka-amplifybackend
+    , amazonka-core            >=2.0 && <2.1
+    , amazonka-test            >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CloneBackend.yaml b/fixture/CloneBackend.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CloneBackend.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/CloneBackendResponse.proto b/fixture/CloneBackendResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CloneBackendResponse.proto
diff --git a/fixture/CreateBackend.yaml b/fixture/CreateBackend.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackend.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/CreateBackendAPI.yaml b/fixture/CreateBackendAPI.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendAPI.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/CreateBackendAPIResponse.proto b/fixture/CreateBackendAPIResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendAPIResponse.proto
diff --git a/fixture/CreateBackendAuth.yaml b/fixture/CreateBackendAuth.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendAuth.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/CreateBackendAuthResponse.proto b/fixture/CreateBackendAuthResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendAuthResponse.proto
diff --git a/fixture/CreateBackendConfig.yaml b/fixture/CreateBackendConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/CreateBackendConfigResponse.proto b/fixture/CreateBackendConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendConfigResponse.proto
diff --git a/fixture/CreateBackendResponse.proto b/fixture/CreateBackendResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendResponse.proto
diff --git a/fixture/CreateBackendStorage.yaml b/fixture/CreateBackendStorage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendStorage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/CreateBackendStorageResponse.proto b/fixture/CreateBackendStorageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBackendStorageResponse.proto
diff --git a/fixture/CreateToken.yaml b/fixture/CreateToken.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateToken.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/CreateTokenResponse.proto b/fixture/CreateTokenResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateTokenResponse.proto
diff --git a/fixture/DeleteBackend.yaml b/fixture/DeleteBackend.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackend.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/DeleteBackendAPI.yaml b/fixture/DeleteBackendAPI.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackendAPI.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/DeleteBackendAPIResponse.proto b/fixture/DeleteBackendAPIResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackendAPIResponse.proto
diff --git a/fixture/DeleteBackendAuth.yaml b/fixture/DeleteBackendAuth.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackendAuth.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/DeleteBackendAuthResponse.proto b/fixture/DeleteBackendAuthResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackendAuthResponse.proto
diff --git a/fixture/DeleteBackendResponse.proto b/fixture/DeleteBackendResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackendResponse.proto
diff --git a/fixture/DeleteBackendStorage.yaml b/fixture/DeleteBackendStorage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackendStorage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/DeleteBackendStorageResponse.proto b/fixture/DeleteBackendStorageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBackendStorageResponse.proto
diff --git a/fixture/DeleteToken.yaml b/fixture/DeleteToken.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteToken.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/DeleteTokenResponse.proto b/fixture/DeleteTokenResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteTokenResponse.proto
diff --git a/fixture/GenerateBackendAPIModels.yaml b/fixture/GenerateBackendAPIModels.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GenerateBackendAPIModels.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/GenerateBackendAPIModelsResponse.proto b/fixture/GenerateBackendAPIModelsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GenerateBackendAPIModelsResponse.proto
diff --git a/fixture/GetBackend.yaml b/fixture/GetBackend.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackend.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/GetBackendAPI.yaml b/fixture/GetBackendAPI.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendAPI.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/GetBackendAPIModels.yaml b/fixture/GetBackendAPIModels.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendAPIModels.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/GetBackendAPIModelsResponse.proto b/fixture/GetBackendAPIModelsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendAPIModelsResponse.proto
diff --git a/fixture/GetBackendAPIResponse.proto b/fixture/GetBackendAPIResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendAPIResponse.proto
diff --git a/fixture/GetBackendAuth.yaml b/fixture/GetBackendAuth.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendAuth.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/GetBackendAuthResponse.proto b/fixture/GetBackendAuthResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendAuthResponse.proto
diff --git a/fixture/GetBackendJob.yaml b/fixture/GetBackendJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendJob.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/GetBackendJobResponse.proto b/fixture/GetBackendJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendJobResponse.proto
diff --git a/fixture/GetBackendResponse.proto b/fixture/GetBackendResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendResponse.proto
diff --git a/fixture/GetBackendStorage.yaml b/fixture/GetBackendStorage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendStorage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/GetBackendStorageResponse.proto b/fixture/GetBackendStorageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBackendStorageResponse.proto
diff --git a/fixture/GetToken.yaml b/fixture/GetToken.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetToken.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/GetTokenResponse.proto b/fixture/GetTokenResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetTokenResponse.proto
diff --git a/fixture/ImportBackendAuth.yaml b/fixture/ImportBackendAuth.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ImportBackendAuth.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/ImportBackendAuthResponse.proto b/fixture/ImportBackendAuthResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ImportBackendAuthResponse.proto
diff --git a/fixture/ImportBackendStorage.yaml b/fixture/ImportBackendStorage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ImportBackendStorage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/ImportBackendStorageResponse.proto b/fixture/ImportBackendStorageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ImportBackendStorageResponse.proto
diff --git a/fixture/ListBackendJobs.yaml b/fixture/ListBackendJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListBackendJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/ListBackendJobsResponse.proto b/fixture/ListBackendJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListBackendJobsResponse.proto
diff --git a/fixture/ListS3Buckets.yaml b/fixture/ListS3Buckets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListS3Buckets.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/ListS3BucketsResponse.proto b/fixture/ListS3BucketsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListS3BucketsResponse.proto
diff --git a/fixture/RemoveAllBackends.yaml b/fixture/RemoveAllBackends.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveAllBackends.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/RemoveAllBackendsResponse.proto b/fixture/RemoveAllBackendsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveAllBackendsResponse.proto
diff --git a/fixture/RemoveBackendConfig.yaml b/fixture/RemoveBackendConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveBackendConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/RemoveBackendConfigResponse.proto b/fixture/RemoveBackendConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveBackendConfigResponse.proto
diff --git a/fixture/UpdateBackendAPI.yaml b/fixture/UpdateBackendAPI.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendAPI.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/UpdateBackendAPIResponse.proto b/fixture/UpdateBackendAPIResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendAPIResponse.proto
diff --git a/fixture/UpdateBackendAuth.yaml b/fixture/UpdateBackendAuth.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendAuth.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/UpdateBackendAuthResponse.proto b/fixture/UpdateBackendAuthResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendAuthResponse.proto
diff --git a/fixture/UpdateBackendConfig.yaml b/fixture/UpdateBackendConfig.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendConfig.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/UpdateBackendConfigResponse.proto b/fixture/UpdateBackendConfigResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendConfigResponse.proto
diff --git a/fixture/UpdateBackendJob.yaml b/fixture/UpdateBackendJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/UpdateBackendJobResponse.proto b/fixture/UpdateBackendJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendJobResponse.proto
diff --git a/fixture/UpdateBackendStorage.yaml b/fixture/UpdateBackendStorage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendStorage.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/amplifybackend/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  amplifybackend.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/UpdateBackendStorageResponse.proto b/fixture/UpdateBackendStorageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBackendStorageResponse.proto
diff --git a/gen/Amazonka/AmplifyBackend.hs b/gen/Amazonka/AmplifyBackend.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend.hs
@@ -0,0 +1,474 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.AmplifyBackend
+-- 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 @2020-08-11@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- AWS Amplify Admin API
+module Amazonka.AmplifyBackend
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** BadRequestException
+    _BadRequestException,
+
+    -- ** GatewayTimeoutException
+    _GatewayTimeoutException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** TooManyRequestsException
+    _TooManyRequestsException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CloneBackend
+    CloneBackend (CloneBackend'),
+    newCloneBackend,
+    CloneBackendResponse (CloneBackendResponse'),
+    newCloneBackendResponse,
+
+    -- ** CreateBackend
+    CreateBackend (CreateBackend'),
+    newCreateBackend,
+    CreateBackendResponse (CreateBackendResponse'),
+    newCreateBackendResponse,
+
+    -- ** CreateBackendAPI
+    CreateBackendAPI (CreateBackendAPI'),
+    newCreateBackendAPI,
+    CreateBackendAPIResponse (CreateBackendAPIResponse'),
+    newCreateBackendAPIResponse,
+
+    -- ** CreateBackendAuth
+    CreateBackendAuth (CreateBackendAuth'),
+    newCreateBackendAuth,
+    CreateBackendAuthResponse (CreateBackendAuthResponse'),
+    newCreateBackendAuthResponse,
+
+    -- ** CreateBackendConfig
+    CreateBackendConfig (CreateBackendConfig'),
+    newCreateBackendConfig,
+    CreateBackendConfigResponse (CreateBackendConfigResponse'),
+    newCreateBackendConfigResponse,
+
+    -- ** CreateBackendStorage
+    CreateBackendStorage (CreateBackendStorage'),
+    newCreateBackendStorage,
+    CreateBackendStorageResponse (CreateBackendStorageResponse'),
+    newCreateBackendStorageResponse,
+
+    -- ** CreateToken
+    CreateToken (CreateToken'),
+    newCreateToken,
+    CreateTokenResponse (CreateTokenResponse'),
+    newCreateTokenResponse,
+
+    -- ** DeleteBackend
+    DeleteBackend (DeleteBackend'),
+    newDeleteBackend,
+    DeleteBackendResponse (DeleteBackendResponse'),
+    newDeleteBackendResponse,
+
+    -- ** DeleteBackendAPI
+    DeleteBackendAPI (DeleteBackendAPI'),
+    newDeleteBackendAPI,
+    DeleteBackendAPIResponse (DeleteBackendAPIResponse'),
+    newDeleteBackendAPIResponse,
+
+    -- ** DeleteBackendAuth
+    DeleteBackendAuth (DeleteBackendAuth'),
+    newDeleteBackendAuth,
+    DeleteBackendAuthResponse (DeleteBackendAuthResponse'),
+    newDeleteBackendAuthResponse,
+
+    -- ** DeleteBackendStorage
+    DeleteBackendStorage (DeleteBackendStorage'),
+    newDeleteBackendStorage,
+    DeleteBackendStorageResponse (DeleteBackendStorageResponse'),
+    newDeleteBackendStorageResponse,
+
+    -- ** DeleteToken
+    DeleteToken (DeleteToken'),
+    newDeleteToken,
+    DeleteTokenResponse (DeleteTokenResponse'),
+    newDeleteTokenResponse,
+
+    -- ** GenerateBackendAPIModels
+    GenerateBackendAPIModels (GenerateBackendAPIModels'),
+    newGenerateBackendAPIModels,
+    GenerateBackendAPIModelsResponse (GenerateBackendAPIModelsResponse'),
+    newGenerateBackendAPIModelsResponse,
+
+    -- ** GetBackend
+    GetBackend (GetBackend'),
+    newGetBackend,
+    GetBackendResponse (GetBackendResponse'),
+    newGetBackendResponse,
+
+    -- ** GetBackendAPI
+    GetBackendAPI (GetBackendAPI'),
+    newGetBackendAPI,
+    GetBackendAPIResponse (GetBackendAPIResponse'),
+    newGetBackendAPIResponse,
+
+    -- ** GetBackendAPIModels
+    GetBackendAPIModels (GetBackendAPIModels'),
+    newGetBackendAPIModels,
+    GetBackendAPIModelsResponse (GetBackendAPIModelsResponse'),
+    newGetBackendAPIModelsResponse,
+
+    -- ** GetBackendAuth
+    GetBackendAuth (GetBackendAuth'),
+    newGetBackendAuth,
+    GetBackendAuthResponse (GetBackendAuthResponse'),
+    newGetBackendAuthResponse,
+
+    -- ** GetBackendJob
+    GetBackendJob (GetBackendJob'),
+    newGetBackendJob,
+    GetBackendJobResponse (GetBackendJobResponse'),
+    newGetBackendJobResponse,
+
+    -- ** GetBackendStorage
+    GetBackendStorage (GetBackendStorage'),
+    newGetBackendStorage,
+    GetBackendStorageResponse (GetBackendStorageResponse'),
+    newGetBackendStorageResponse,
+
+    -- ** GetToken
+    GetToken (GetToken'),
+    newGetToken,
+    GetTokenResponse (GetTokenResponse'),
+    newGetTokenResponse,
+
+    -- ** ImportBackendAuth
+    ImportBackendAuth (ImportBackendAuth'),
+    newImportBackendAuth,
+    ImportBackendAuthResponse (ImportBackendAuthResponse'),
+    newImportBackendAuthResponse,
+
+    -- ** ImportBackendStorage
+    ImportBackendStorage (ImportBackendStorage'),
+    newImportBackendStorage,
+    ImportBackendStorageResponse (ImportBackendStorageResponse'),
+    newImportBackendStorageResponse,
+
+    -- ** ListBackendJobs (Paginated)
+    ListBackendJobs (ListBackendJobs'),
+    newListBackendJobs,
+    ListBackendJobsResponse (ListBackendJobsResponse'),
+    newListBackendJobsResponse,
+
+    -- ** ListS3Buckets
+    ListS3Buckets (ListS3Buckets'),
+    newListS3Buckets,
+    ListS3BucketsResponse (ListS3BucketsResponse'),
+    newListS3BucketsResponse,
+
+    -- ** RemoveAllBackends
+    RemoveAllBackends (RemoveAllBackends'),
+    newRemoveAllBackends,
+    RemoveAllBackendsResponse (RemoveAllBackendsResponse'),
+    newRemoveAllBackendsResponse,
+
+    -- ** RemoveBackendConfig
+    RemoveBackendConfig (RemoveBackendConfig'),
+    newRemoveBackendConfig,
+    RemoveBackendConfigResponse (RemoveBackendConfigResponse'),
+    newRemoveBackendConfigResponse,
+
+    -- ** UpdateBackendAPI
+    UpdateBackendAPI (UpdateBackendAPI'),
+    newUpdateBackendAPI,
+    UpdateBackendAPIResponse (UpdateBackendAPIResponse'),
+    newUpdateBackendAPIResponse,
+
+    -- ** UpdateBackendAuth
+    UpdateBackendAuth (UpdateBackendAuth'),
+    newUpdateBackendAuth,
+    UpdateBackendAuthResponse (UpdateBackendAuthResponse'),
+    newUpdateBackendAuthResponse,
+
+    -- ** UpdateBackendConfig
+    UpdateBackendConfig (UpdateBackendConfig'),
+    newUpdateBackendConfig,
+    UpdateBackendConfigResponse (UpdateBackendConfigResponse'),
+    newUpdateBackendConfigResponse,
+
+    -- ** UpdateBackendJob
+    UpdateBackendJob (UpdateBackendJob'),
+    newUpdateBackendJob,
+    UpdateBackendJobResponse (UpdateBackendJobResponse'),
+    newUpdateBackendJobResponse,
+
+    -- ** UpdateBackendStorage
+    UpdateBackendStorage (UpdateBackendStorage'),
+    newUpdateBackendStorage,
+    UpdateBackendStorageResponse (UpdateBackendStorageResponse'),
+    newUpdateBackendStorageResponse,
+
+    -- * Types
+
+    -- ** AdditionalConstraintsElement
+    AdditionalConstraintsElement (..),
+
+    -- ** AuthResources
+    AuthResources (..),
+
+    -- ** AuthenticatedElement
+    AuthenticatedElement (..),
+
+    -- ** DeliveryMethod
+    DeliveryMethod (..),
+
+    -- ** MFAMode
+    MFAMode (..),
+
+    -- ** MfaTypesElement
+    MfaTypesElement (..),
+
+    -- ** Mode
+    Mode (..),
+
+    -- ** OAuthGrantType
+    OAuthGrantType (..),
+
+    -- ** OAuthScopesElement
+    OAuthScopesElement (..),
+
+    -- ** RequiredSignUpAttributesElement
+    RequiredSignUpAttributesElement (..),
+
+    -- ** ResolutionStrategy
+    ResolutionStrategy (..),
+
+    -- ** Service
+    Service (..),
+
+    -- ** ServiceName
+    ServiceName (..),
+
+    -- ** SignInMethod
+    SignInMethod (..),
+
+    -- ** Status
+    Status (..),
+
+    -- ** UnAuthenticatedElement
+    UnAuthenticatedElement (..),
+
+    -- ** BackendAPIAppSyncAuthSettings
+    BackendAPIAppSyncAuthSettings (BackendAPIAppSyncAuthSettings'),
+    newBackendAPIAppSyncAuthSettings,
+
+    -- ** BackendAPIAuthType
+    BackendAPIAuthType (BackendAPIAuthType'),
+    newBackendAPIAuthType,
+
+    -- ** BackendAPIConflictResolution
+    BackendAPIConflictResolution (BackendAPIConflictResolution'),
+    newBackendAPIConflictResolution,
+
+    -- ** BackendAPIResourceConfig
+    BackendAPIResourceConfig (BackendAPIResourceConfig'),
+    newBackendAPIResourceConfig,
+
+    -- ** BackendAuthAppleProviderConfig
+    BackendAuthAppleProviderConfig (BackendAuthAppleProviderConfig'),
+    newBackendAuthAppleProviderConfig,
+
+    -- ** BackendAuthSocialProviderConfig
+    BackendAuthSocialProviderConfig (BackendAuthSocialProviderConfig'),
+    newBackendAuthSocialProviderConfig,
+
+    -- ** BackendJobRespObj
+    BackendJobRespObj (BackendJobRespObj'),
+    newBackendJobRespObj,
+
+    -- ** BackendStoragePermissions
+    BackendStoragePermissions (BackendStoragePermissions'),
+    newBackendStoragePermissions,
+
+    -- ** CreateBackendAuthForgotPasswordConfig
+    CreateBackendAuthForgotPasswordConfig (CreateBackendAuthForgotPasswordConfig'),
+    newCreateBackendAuthForgotPasswordConfig,
+
+    -- ** CreateBackendAuthIdentityPoolConfig
+    CreateBackendAuthIdentityPoolConfig (CreateBackendAuthIdentityPoolConfig'),
+    newCreateBackendAuthIdentityPoolConfig,
+
+    -- ** CreateBackendAuthMFAConfig
+    CreateBackendAuthMFAConfig (CreateBackendAuthMFAConfig'),
+    newCreateBackendAuthMFAConfig,
+
+    -- ** CreateBackendAuthOAuthConfig
+    CreateBackendAuthOAuthConfig (CreateBackendAuthOAuthConfig'),
+    newCreateBackendAuthOAuthConfig,
+
+    -- ** CreateBackendAuthPasswordPolicyConfig
+    CreateBackendAuthPasswordPolicyConfig (CreateBackendAuthPasswordPolicyConfig'),
+    newCreateBackendAuthPasswordPolicyConfig,
+
+    -- ** CreateBackendAuthResourceConfig
+    CreateBackendAuthResourceConfig (CreateBackendAuthResourceConfig'),
+    newCreateBackendAuthResourceConfig,
+
+    -- ** CreateBackendAuthUserPoolConfig
+    CreateBackendAuthUserPoolConfig (CreateBackendAuthUserPoolConfig'),
+    newCreateBackendAuthUserPoolConfig,
+
+    -- ** CreateBackendAuthVerificationMessageConfig
+    CreateBackendAuthVerificationMessageConfig (CreateBackendAuthVerificationMessageConfig'),
+    newCreateBackendAuthVerificationMessageConfig,
+
+    -- ** CreateBackendStorageResourceConfig
+    CreateBackendStorageResourceConfig (CreateBackendStorageResourceConfig'),
+    newCreateBackendStorageResourceConfig,
+
+    -- ** EmailSettings
+    EmailSettings (EmailSettings'),
+    newEmailSettings,
+
+    -- ** GetBackendStorageResourceConfig
+    GetBackendStorageResourceConfig (GetBackendStorageResourceConfig'),
+    newGetBackendStorageResourceConfig,
+
+    -- ** LoginAuthConfigReqObj
+    LoginAuthConfigReqObj (LoginAuthConfigReqObj'),
+    newLoginAuthConfigReqObj,
+
+    -- ** ResourceConfig
+    ResourceConfig (ResourceConfig'),
+    newResourceConfig,
+
+    -- ** S3BucketInfo
+    S3BucketInfo (S3BucketInfo'),
+    newS3BucketInfo,
+
+    -- ** Settings
+    Settings (Settings'),
+    newSettings,
+
+    -- ** SmsSettings
+    SmsSettings (SmsSettings'),
+    newSmsSettings,
+
+    -- ** SocialProviderSettings
+    SocialProviderSettings (SocialProviderSettings'),
+    newSocialProviderSettings,
+
+    -- ** UpdateBackendAuthForgotPasswordConfig
+    UpdateBackendAuthForgotPasswordConfig (UpdateBackendAuthForgotPasswordConfig'),
+    newUpdateBackendAuthForgotPasswordConfig,
+
+    -- ** UpdateBackendAuthIdentityPoolConfig
+    UpdateBackendAuthIdentityPoolConfig (UpdateBackendAuthIdentityPoolConfig'),
+    newUpdateBackendAuthIdentityPoolConfig,
+
+    -- ** UpdateBackendAuthMFAConfig
+    UpdateBackendAuthMFAConfig (UpdateBackendAuthMFAConfig'),
+    newUpdateBackendAuthMFAConfig,
+
+    -- ** UpdateBackendAuthOAuthConfig
+    UpdateBackendAuthOAuthConfig (UpdateBackendAuthOAuthConfig'),
+    newUpdateBackendAuthOAuthConfig,
+
+    -- ** UpdateBackendAuthPasswordPolicyConfig
+    UpdateBackendAuthPasswordPolicyConfig (UpdateBackendAuthPasswordPolicyConfig'),
+    newUpdateBackendAuthPasswordPolicyConfig,
+
+    -- ** UpdateBackendAuthResourceConfig
+    UpdateBackendAuthResourceConfig (UpdateBackendAuthResourceConfig'),
+    newUpdateBackendAuthResourceConfig,
+
+    -- ** UpdateBackendAuthUserPoolConfig
+    UpdateBackendAuthUserPoolConfig (UpdateBackendAuthUserPoolConfig'),
+    newUpdateBackendAuthUserPoolConfig,
+
+    -- ** UpdateBackendAuthVerificationMessageConfig
+    UpdateBackendAuthVerificationMessageConfig (UpdateBackendAuthVerificationMessageConfig'),
+    newUpdateBackendAuthVerificationMessageConfig,
+
+    -- ** UpdateBackendStorageResourceConfig
+    UpdateBackendStorageResourceConfig (UpdateBackendStorageResourceConfig'),
+    newUpdateBackendStorageResourceConfig,
+  )
+where
+
+import Amazonka.AmplifyBackend.CloneBackend
+import Amazonka.AmplifyBackend.CreateBackend
+import Amazonka.AmplifyBackend.CreateBackendAPI
+import Amazonka.AmplifyBackend.CreateBackendAuth
+import Amazonka.AmplifyBackend.CreateBackendConfig
+import Amazonka.AmplifyBackend.CreateBackendStorage
+import Amazonka.AmplifyBackend.CreateToken
+import Amazonka.AmplifyBackend.DeleteBackend
+import Amazonka.AmplifyBackend.DeleteBackendAPI
+import Amazonka.AmplifyBackend.DeleteBackendAuth
+import Amazonka.AmplifyBackend.DeleteBackendStorage
+import Amazonka.AmplifyBackend.DeleteToken
+import Amazonka.AmplifyBackend.GenerateBackendAPIModels
+import Amazonka.AmplifyBackend.GetBackend
+import Amazonka.AmplifyBackend.GetBackendAPI
+import Amazonka.AmplifyBackend.GetBackendAPIModels
+import Amazonka.AmplifyBackend.GetBackendAuth
+import Amazonka.AmplifyBackend.GetBackendJob
+import Amazonka.AmplifyBackend.GetBackendStorage
+import Amazonka.AmplifyBackend.GetToken
+import Amazonka.AmplifyBackend.ImportBackendAuth
+import Amazonka.AmplifyBackend.ImportBackendStorage
+import Amazonka.AmplifyBackend.Lens
+import Amazonka.AmplifyBackend.ListBackendJobs
+import Amazonka.AmplifyBackend.ListS3Buckets
+import Amazonka.AmplifyBackend.RemoveAllBackends
+import Amazonka.AmplifyBackend.RemoveBackendConfig
+import Amazonka.AmplifyBackend.Types
+import Amazonka.AmplifyBackend.UpdateBackendAPI
+import Amazonka.AmplifyBackend.UpdateBackendAuth
+import Amazonka.AmplifyBackend.UpdateBackendConfig
+import Amazonka.AmplifyBackend.UpdateBackendJob
+import Amazonka.AmplifyBackend.UpdateBackendStorage
+import Amazonka.AmplifyBackend.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 'AmplifyBackend'.
+
+-- $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/AmplifyBackend/CloneBackend.hs b/gen/Amazonka/AmplifyBackend/CloneBackend.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/CloneBackend.hs
@@ -0,0 +1,269 @@
+{-# 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.AmplifyBackend.CloneBackend
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This operation clones an existing backend.
+module Amazonka.AmplifyBackend.CloneBackend
+  ( -- * Creating a Request
+    CloneBackend (..),
+    newCloneBackend,
+
+    -- * Request Lenses
+    cloneBackend_appId,
+    cloneBackend_backendEnvironmentName,
+    cloneBackend_targetEnvironmentName,
+
+    -- * Destructuring the Response
+    CloneBackendResponse (..),
+    newCloneBackendResponse,
+
+    -- * Response Lenses
+    cloneBackendResponse_appId,
+    cloneBackendResponse_backendEnvironmentName,
+    cloneBackendResponse_error,
+    cloneBackendResponse_jobId,
+    cloneBackendResponse_operation,
+    cloneBackendResponse_status,
+    cloneBackendResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for CloneBackend.
+--
+-- /See:/ 'newCloneBackend' smart constructor.
+data CloneBackend = CloneBackend'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of the destination backend environment to be created.
+    targetEnvironmentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloneBackend' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'cloneBackend_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'cloneBackend_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'targetEnvironmentName', 'cloneBackend_targetEnvironmentName' - The name of the destination backend environment to be created.
+newCloneBackend ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'targetEnvironmentName'
+  Prelude.Text ->
+  CloneBackend
+newCloneBackend
+  pAppId_
+  pBackendEnvironmentName_
+  pTargetEnvironmentName_ =
+    CloneBackend'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        targetEnvironmentName = pTargetEnvironmentName_
+      }
+
+-- | The app ID.
+cloneBackend_appId :: Lens.Lens' CloneBackend Prelude.Text
+cloneBackend_appId = Lens.lens (\CloneBackend' {appId} -> appId) (\s@CloneBackend' {} a -> s {appId = a} :: CloneBackend)
+
+-- | The name of the backend environment.
+cloneBackend_backendEnvironmentName :: Lens.Lens' CloneBackend Prelude.Text
+cloneBackend_backendEnvironmentName = Lens.lens (\CloneBackend' {backendEnvironmentName} -> backendEnvironmentName) (\s@CloneBackend' {} a -> s {backendEnvironmentName = a} :: CloneBackend)
+
+-- | The name of the destination backend environment to be created.
+cloneBackend_targetEnvironmentName :: Lens.Lens' CloneBackend Prelude.Text
+cloneBackend_targetEnvironmentName = Lens.lens (\CloneBackend' {targetEnvironmentName} -> targetEnvironmentName) (\s@CloneBackend' {} a -> s {targetEnvironmentName = a} :: CloneBackend)
+
+instance Core.AWSRequest CloneBackend where
+  type AWSResponse CloneBackend = CloneBackendResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CloneBackendResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CloneBackend where
+  hashWithSalt _salt CloneBackend' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` targetEnvironmentName
+
+instance Prelude.NFData CloneBackend where
+  rnf CloneBackend' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf targetEnvironmentName
+
+instance Data.ToHeaders CloneBackend where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CloneBackend where
+  toJSON CloneBackend' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "targetEnvironmentName"
+                  Data..= targetEnvironmentName
+              )
+          ]
+      )
+
+instance Data.ToPath CloneBackend where
+  toPath CloneBackend' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/environments/",
+        Data.toBS backendEnvironmentName,
+        "/clone"
+      ]
+
+instance Data.ToQuery CloneBackend where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCloneBackendResponse' smart constructor.
+data CloneBackendResponse = CloneBackendResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'CloneBackendResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'cloneBackendResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'cloneBackendResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'cloneBackendResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'cloneBackendResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'cloneBackendResponse_operation' - The name of the operation.
+--
+-- 'status', 'cloneBackendResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'cloneBackendResponse_httpStatus' - The response's http status code.
+newCloneBackendResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CloneBackendResponse
+newCloneBackendResponse pHttpStatus_ =
+  CloneBackendResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+cloneBackendResponse_appId :: Lens.Lens' CloneBackendResponse (Prelude.Maybe Prelude.Text)
+cloneBackendResponse_appId = Lens.lens (\CloneBackendResponse' {appId} -> appId) (\s@CloneBackendResponse' {} a -> s {appId = a} :: CloneBackendResponse)
+
+-- | The name of the backend environment.
+cloneBackendResponse_backendEnvironmentName :: Lens.Lens' CloneBackendResponse (Prelude.Maybe Prelude.Text)
+cloneBackendResponse_backendEnvironmentName = Lens.lens (\CloneBackendResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@CloneBackendResponse' {} a -> s {backendEnvironmentName = a} :: CloneBackendResponse)
+
+-- | If the request fails, this error is returned.
+cloneBackendResponse_error :: Lens.Lens' CloneBackendResponse (Prelude.Maybe Prelude.Text)
+cloneBackendResponse_error = Lens.lens (\CloneBackendResponse' {error} -> error) (\s@CloneBackendResponse' {} a -> s {error = a} :: CloneBackendResponse)
+
+-- | The ID for the job.
+cloneBackendResponse_jobId :: Lens.Lens' CloneBackendResponse (Prelude.Maybe Prelude.Text)
+cloneBackendResponse_jobId = Lens.lens (\CloneBackendResponse' {jobId} -> jobId) (\s@CloneBackendResponse' {} a -> s {jobId = a} :: CloneBackendResponse)
+
+-- | The name of the operation.
+cloneBackendResponse_operation :: Lens.Lens' CloneBackendResponse (Prelude.Maybe Prelude.Text)
+cloneBackendResponse_operation = Lens.lens (\CloneBackendResponse' {operation} -> operation) (\s@CloneBackendResponse' {} a -> s {operation = a} :: CloneBackendResponse)
+
+-- | The current status of the request.
+cloneBackendResponse_status :: Lens.Lens' CloneBackendResponse (Prelude.Maybe Prelude.Text)
+cloneBackendResponse_status = Lens.lens (\CloneBackendResponse' {status} -> status) (\s@CloneBackendResponse' {} a -> s {status = a} :: CloneBackendResponse)
+
+-- | The response's http status code.
+cloneBackendResponse_httpStatus :: Lens.Lens' CloneBackendResponse Prelude.Int
+cloneBackendResponse_httpStatus = Lens.lens (\CloneBackendResponse' {httpStatus} -> httpStatus) (\s@CloneBackendResponse' {} a -> s {httpStatus = a} :: CloneBackendResponse)
+
+instance Prelude.NFData CloneBackendResponse where
+  rnf CloneBackendResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/CreateBackend.hs b/gen/Amazonka/AmplifyBackend/CreateBackend.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/CreateBackend.hs
@@ -0,0 +1,294 @@
+{-# 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.AmplifyBackend.CreateBackend
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- This operation creates a backend for an Amplify app. Backends are
+-- automatically created at the time of app creation.
+module Amazonka.AmplifyBackend.CreateBackend
+  ( -- * Creating a Request
+    CreateBackend (..),
+    newCreateBackend,
+
+    -- * Request Lenses
+    createBackend_resourceConfig,
+    createBackend_resourceName,
+    createBackend_appId,
+    createBackend_backendEnvironmentName,
+    createBackend_appName,
+
+    -- * Destructuring the Response
+    CreateBackendResponse (..),
+    newCreateBackendResponse,
+
+    -- * Response Lenses
+    createBackendResponse_appId,
+    createBackendResponse_backendEnvironmentName,
+    createBackendResponse_error,
+    createBackendResponse_jobId,
+    createBackendResponse_operation,
+    createBackendResponse_status,
+    createBackendResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for CreateBackend.
+--
+-- /See:/ 'newCreateBackend' smart constructor.
+data CreateBackend = CreateBackend'
+  { -- | The resource configuration for creating a backend.
+    resourceConfig :: Prelude.Maybe ResourceConfig,
+    -- | The name of the resource.
+    resourceName :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of the app.
+    appName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackend' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceConfig', 'createBackend_resourceConfig' - The resource configuration for creating a backend.
+--
+-- 'resourceName', 'createBackend_resourceName' - The name of the resource.
+--
+-- 'appId', 'createBackend_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'createBackend_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'appName', 'createBackend_appName' - The name of the app.
+newCreateBackend ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'appName'
+  Prelude.Text ->
+  CreateBackend
+newCreateBackend
+  pAppId_
+  pBackendEnvironmentName_
+  pAppName_ =
+    CreateBackend'
+      { resourceConfig = Prelude.Nothing,
+        resourceName = Prelude.Nothing,
+        appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        appName = pAppName_
+      }
+
+-- | The resource configuration for creating a backend.
+createBackend_resourceConfig :: Lens.Lens' CreateBackend (Prelude.Maybe ResourceConfig)
+createBackend_resourceConfig = Lens.lens (\CreateBackend' {resourceConfig} -> resourceConfig) (\s@CreateBackend' {} a -> s {resourceConfig = a} :: CreateBackend)
+
+-- | The name of the resource.
+createBackend_resourceName :: Lens.Lens' CreateBackend (Prelude.Maybe Prelude.Text)
+createBackend_resourceName = Lens.lens (\CreateBackend' {resourceName} -> resourceName) (\s@CreateBackend' {} a -> s {resourceName = a} :: CreateBackend)
+
+-- | The app ID.
+createBackend_appId :: Lens.Lens' CreateBackend Prelude.Text
+createBackend_appId = Lens.lens (\CreateBackend' {appId} -> appId) (\s@CreateBackend' {} a -> s {appId = a} :: CreateBackend)
+
+-- | The name of the backend environment.
+createBackend_backendEnvironmentName :: Lens.Lens' CreateBackend Prelude.Text
+createBackend_backendEnvironmentName = Lens.lens (\CreateBackend' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackend' {} a -> s {backendEnvironmentName = a} :: CreateBackend)
+
+-- | The name of the app.
+createBackend_appName :: Lens.Lens' CreateBackend Prelude.Text
+createBackend_appName = Lens.lens (\CreateBackend' {appName} -> appName) (\s@CreateBackend' {} a -> s {appName = a} :: CreateBackend)
+
+instance Core.AWSRequest CreateBackend where
+  type
+    AWSResponse CreateBackend =
+      CreateBackendResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateBackendResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateBackend where
+  hashWithSalt _salt CreateBackend' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceConfig
+      `Prelude.hashWithSalt` resourceName
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` appName
+
+instance Prelude.NFData CreateBackend where
+  rnf CreateBackend' {..} =
+    Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf appName
+
+instance Data.ToHeaders CreateBackend where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateBackend where
+  toJSON CreateBackend' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("resourceConfig" Data..=)
+              Prelude.<$> resourceConfig,
+            ("resourceName" Data..=) Prelude.<$> resourceName,
+            Prelude.Just ("appId" Data..= appId),
+            Prelude.Just
+              ( "backendEnvironmentName"
+                  Data..= backendEnvironmentName
+              ),
+            Prelude.Just ("appName" Data..= appName)
+          ]
+      )
+
+instance Data.ToPath CreateBackend where
+  toPath = Prelude.const "/backend"
+
+instance Data.ToQuery CreateBackend where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateBackendResponse' smart constructor.
+data CreateBackendResponse = CreateBackendResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'CreateBackendResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createBackendResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'createBackendResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'createBackendResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'createBackendResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'createBackendResponse_operation' - The name of the operation.
+--
+-- 'status', 'createBackendResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'createBackendResponse_httpStatus' - The response's http status code.
+newCreateBackendResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateBackendResponse
+newCreateBackendResponse pHttpStatus_ =
+  CreateBackendResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+createBackendResponse_appId :: Lens.Lens' CreateBackendResponse (Prelude.Maybe Prelude.Text)
+createBackendResponse_appId = Lens.lens (\CreateBackendResponse' {appId} -> appId) (\s@CreateBackendResponse' {} a -> s {appId = a} :: CreateBackendResponse)
+
+-- | The name of the backend environment.
+createBackendResponse_backendEnvironmentName :: Lens.Lens' CreateBackendResponse (Prelude.Maybe Prelude.Text)
+createBackendResponse_backendEnvironmentName = Lens.lens (\CreateBackendResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackendResponse' {} a -> s {backendEnvironmentName = a} :: CreateBackendResponse)
+
+-- | If the request fails, this error is returned.
+createBackendResponse_error :: Lens.Lens' CreateBackendResponse (Prelude.Maybe Prelude.Text)
+createBackendResponse_error = Lens.lens (\CreateBackendResponse' {error} -> error) (\s@CreateBackendResponse' {} a -> s {error = a} :: CreateBackendResponse)
+
+-- | The ID for the job.
+createBackendResponse_jobId :: Lens.Lens' CreateBackendResponse (Prelude.Maybe Prelude.Text)
+createBackendResponse_jobId = Lens.lens (\CreateBackendResponse' {jobId} -> jobId) (\s@CreateBackendResponse' {} a -> s {jobId = a} :: CreateBackendResponse)
+
+-- | The name of the operation.
+createBackendResponse_operation :: Lens.Lens' CreateBackendResponse (Prelude.Maybe Prelude.Text)
+createBackendResponse_operation = Lens.lens (\CreateBackendResponse' {operation} -> operation) (\s@CreateBackendResponse' {} a -> s {operation = a} :: CreateBackendResponse)
+
+-- | The current status of the request.
+createBackendResponse_status :: Lens.Lens' CreateBackendResponse (Prelude.Maybe Prelude.Text)
+createBackendResponse_status = Lens.lens (\CreateBackendResponse' {status} -> status) (\s@CreateBackendResponse' {} a -> s {status = a} :: CreateBackendResponse)
+
+-- | The response's http status code.
+createBackendResponse_httpStatus :: Lens.Lens' CreateBackendResponse Prelude.Int
+createBackendResponse_httpStatus = Lens.lens (\CreateBackendResponse' {httpStatus} -> httpStatus) (\s@CreateBackendResponse' {} a -> s {httpStatus = a} :: CreateBackendResponse)
+
+instance Prelude.NFData CreateBackendResponse where
+  rnf CreateBackendResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/CreateBackendAPI.hs b/gen/Amazonka/AmplifyBackend/CreateBackendAPI.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/CreateBackendAPI.hs
@@ -0,0 +1,284 @@
+{-# 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.AmplifyBackend.CreateBackendAPI
+-- 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 backend API resource.
+module Amazonka.AmplifyBackend.CreateBackendAPI
+  ( -- * Creating a Request
+    CreateBackendAPI (..),
+    newCreateBackendAPI,
+
+    -- * Request Lenses
+    createBackendAPI_appId,
+    createBackendAPI_resourceName,
+    createBackendAPI_backendEnvironmentName,
+    createBackendAPI_resourceConfig,
+
+    -- * Destructuring the Response
+    CreateBackendAPIResponse (..),
+    newCreateBackendAPIResponse,
+
+    -- * Response Lenses
+    createBackendAPIResponse_appId,
+    createBackendAPIResponse_backendEnvironmentName,
+    createBackendAPIResponse_error,
+    createBackendAPIResponse_jobId,
+    createBackendAPIResponse_operation,
+    createBackendAPIResponse_status,
+    createBackendAPIResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for CreateBackendAPI.
+--
+-- /See:/ 'newCreateBackendAPI' smart constructor.
+data CreateBackendAPI = CreateBackendAPI'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The resource configuration for this request.
+    resourceConfig :: BackendAPIResourceConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAPI' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createBackendAPI_appId' - The app ID.
+--
+-- 'resourceName', 'createBackendAPI_resourceName' - The name of this resource.
+--
+-- 'backendEnvironmentName', 'createBackendAPI_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceConfig', 'createBackendAPI_resourceConfig' - The resource configuration for this request.
+newCreateBackendAPI ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceConfig'
+  BackendAPIResourceConfig ->
+  CreateBackendAPI
+newCreateBackendAPI
+  pAppId_
+  pResourceName_
+  pBackendEnvironmentName_
+  pResourceConfig_ =
+    CreateBackendAPI'
+      { appId = pAppId_,
+        resourceName = pResourceName_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceConfig = pResourceConfig_
+      }
+
+-- | The app ID.
+createBackendAPI_appId :: Lens.Lens' CreateBackendAPI Prelude.Text
+createBackendAPI_appId = Lens.lens (\CreateBackendAPI' {appId} -> appId) (\s@CreateBackendAPI' {} a -> s {appId = a} :: CreateBackendAPI)
+
+-- | The name of this resource.
+createBackendAPI_resourceName :: Lens.Lens' CreateBackendAPI Prelude.Text
+createBackendAPI_resourceName = Lens.lens (\CreateBackendAPI' {resourceName} -> resourceName) (\s@CreateBackendAPI' {} a -> s {resourceName = a} :: CreateBackendAPI)
+
+-- | The name of the backend environment.
+createBackendAPI_backendEnvironmentName :: Lens.Lens' CreateBackendAPI Prelude.Text
+createBackendAPI_backendEnvironmentName = Lens.lens (\CreateBackendAPI' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackendAPI' {} a -> s {backendEnvironmentName = a} :: CreateBackendAPI)
+
+-- | The resource configuration for this request.
+createBackendAPI_resourceConfig :: Lens.Lens' CreateBackendAPI BackendAPIResourceConfig
+createBackendAPI_resourceConfig = Lens.lens (\CreateBackendAPI' {resourceConfig} -> resourceConfig) (\s@CreateBackendAPI' {} a -> s {resourceConfig = a} :: CreateBackendAPI)
+
+instance Core.AWSRequest CreateBackendAPI where
+  type
+    AWSResponse CreateBackendAPI =
+      CreateBackendAPIResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateBackendAPIResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateBackendAPI where
+  hashWithSalt _salt CreateBackendAPI' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` resourceName
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceConfig
+
+instance Prelude.NFData CreateBackendAPI where
+  rnf CreateBackendAPI' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceConfig
+
+instance Data.ToHeaders CreateBackendAPI where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateBackendAPI where
+  toJSON CreateBackendAPI' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("resourceName" Data..= resourceName),
+            Prelude.Just
+              ( "backendEnvironmentName"
+                  Data..= backendEnvironmentName
+              ),
+            Prelude.Just
+              ("resourceConfig" Data..= resourceConfig)
+          ]
+      )
+
+instance Data.ToPath CreateBackendAPI where
+  toPath CreateBackendAPI' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/api"]
+
+instance Data.ToQuery CreateBackendAPI where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateBackendAPIResponse' smart constructor.
+data CreateBackendAPIResponse = CreateBackendAPIResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'CreateBackendAPIResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createBackendAPIResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'createBackendAPIResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'createBackendAPIResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'createBackendAPIResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'createBackendAPIResponse_operation' - The name of the operation.
+--
+-- 'status', 'createBackendAPIResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'createBackendAPIResponse_httpStatus' - The response's http status code.
+newCreateBackendAPIResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateBackendAPIResponse
+newCreateBackendAPIResponse pHttpStatus_ =
+  CreateBackendAPIResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+createBackendAPIResponse_appId :: Lens.Lens' CreateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+createBackendAPIResponse_appId = Lens.lens (\CreateBackendAPIResponse' {appId} -> appId) (\s@CreateBackendAPIResponse' {} a -> s {appId = a} :: CreateBackendAPIResponse)
+
+-- | The name of the backend environment.
+createBackendAPIResponse_backendEnvironmentName :: Lens.Lens' CreateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+createBackendAPIResponse_backendEnvironmentName = Lens.lens (\CreateBackendAPIResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackendAPIResponse' {} a -> s {backendEnvironmentName = a} :: CreateBackendAPIResponse)
+
+-- | If the request fails, this error is returned.
+createBackendAPIResponse_error :: Lens.Lens' CreateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+createBackendAPIResponse_error = Lens.lens (\CreateBackendAPIResponse' {error} -> error) (\s@CreateBackendAPIResponse' {} a -> s {error = a} :: CreateBackendAPIResponse)
+
+-- | The ID for the job.
+createBackendAPIResponse_jobId :: Lens.Lens' CreateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+createBackendAPIResponse_jobId = Lens.lens (\CreateBackendAPIResponse' {jobId} -> jobId) (\s@CreateBackendAPIResponse' {} a -> s {jobId = a} :: CreateBackendAPIResponse)
+
+-- | The name of the operation.
+createBackendAPIResponse_operation :: Lens.Lens' CreateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+createBackendAPIResponse_operation = Lens.lens (\CreateBackendAPIResponse' {operation} -> operation) (\s@CreateBackendAPIResponse' {} a -> s {operation = a} :: CreateBackendAPIResponse)
+
+-- | The current status of the request.
+createBackendAPIResponse_status :: Lens.Lens' CreateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+createBackendAPIResponse_status = Lens.lens (\CreateBackendAPIResponse' {status} -> status) (\s@CreateBackendAPIResponse' {} a -> s {status = a} :: CreateBackendAPIResponse)
+
+-- | The response's http status code.
+createBackendAPIResponse_httpStatus :: Lens.Lens' CreateBackendAPIResponse Prelude.Int
+createBackendAPIResponse_httpStatus = Lens.lens (\CreateBackendAPIResponse' {httpStatus} -> httpStatus) (\s@CreateBackendAPIResponse' {} a -> s {httpStatus = a} :: CreateBackendAPIResponse)
+
+instance Prelude.NFData CreateBackendAPIResponse where
+  rnf CreateBackendAPIResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/CreateBackendAuth.hs b/gen/Amazonka/AmplifyBackend/CreateBackendAuth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/CreateBackendAuth.hs
@@ -0,0 +1,284 @@
+{-# 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.AmplifyBackend.CreateBackendAuth
+-- 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 backend authentication resource.
+module Amazonka.AmplifyBackend.CreateBackendAuth
+  ( -- * Creating a Request
+    CreateBackendAuth (..),
+    newCreateBackendAuth,
+
+    -- * Request Lenses
+    createBackendAuth_appId,
+    createBackendAuth_resourceName,
+    createBackendAuth_backendEnvironmentName,
+    createBackendAuth_resourceConfig,
+
+    -- * Destructuring the Response
+    CreateBackendAuthResponse (..),
+    newCreateBackendAuthResponse,
+
+    -- * Response Lenses
+    createBackendAuthResponse_appId,
+    createBackendAuthResponse_backendEnvironmentName,
+    createBackendAuthResponse_error,
+    createBackendAuthResponse_jobId,
+    createBackendAuthResponse_operation,
+    createBackendAuthResponse_status,
+    createBackendAuthResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for CreateBackendAuth.
+--
+-- /See:/ 'newCreateBackendAuth' smart constructor.
+data CreateBackendAuth = CreateBackendAuth'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The resource configuration for this request object.
+    resourceConfig :: CreateBackendAuthResourceConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createBackendAuth_appId' - The app ID.
+--
+-- 'resourceName', 'createBackendAuth_resourceName' - The name of this resource.
+--
+-- 'backendEnvironmentName', 'createBackendAuth_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceConfig', 'createBackendAuth_resourceConfig' - The resource configuration for this request object.
+newCreateBackendAuth ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceConfig'
+  CreateBackendAuthResourceConfig ->
+  CreateBackendAuth
+newCreateBackendAuth
+  pAppId_
+  pResourceName_
+  pBackendEnvironmentName_
+  pResourceConfig_ =
+    CreateBackendAuth'
+      { appId = pAppId_,
+        resourceName = pResourceName_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceConfig = pResourceConfig_
+      }
+
+-- | The app ID.
+createBackendAuth_appId :: Lens.Lens' CreateBackendAuth Prelude.Text
+createBackendAuth_appId = Lens.lens (\CreateBackendAuth' {appId} -> appId) (\s@CreateBackendAuth' {} a -> s {appId = a} :: CreateBackendAuth)
+
+-- | The name of this resource.
+createBackendAuth_resourceName :: Lens.Lens' CreateBackendAuth Prelude.Text
+createBackendAuth_resourceName = Lens.lens (\CreateBackendAuth' {resourceName} -> resourceName) (\s@CreateBackendAuth' {} a -> s {resourceName = a} :: CreateBackendAuth)
+
+-- | The name of the backend environment.
+createBackendAuth_backendEnvironmentName :: Lens.Lens' CreateBackendAuth Prelude.Text
+createBackendAuth_backendEnvironmentName = Lens.lens (\CreateBackendAuth' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackendAuth' {} a -> s {backendEnvironmentName = a} :: CreateBackendAuth)
+
+-- | The resource configuration for this request object.
+createBackendAuth_resourceConfig :: Lens.Lens' CreateBackendAuth CreateBackendAuthResourceConfig
+createBackendAuth_resourceConfig = Lens.lens (\CreateBackendAuth' {resourceConfig} -> resourceConfig) (\s@CreateBackendAuth' {} a -> s {resourceConfig = a} :: CreateBackendAuth)
+
+instance Core.AWSRequest CreateBackendAuth where
+  type
+    AWSResponse CreateBackendAuth =
+      CreateBackendAuthResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateBackendAuthResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateBackendAuth where
+  hashWithSalt _salt CreateBackendAuth' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` resourceName
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceConfig
+
+instance Prelude.NFData CreateBackendAuth where
+  rnf CreateBackendAuth' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceConfig
+
+instance Data.ToHeaders CreateBackendAuth where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateBackendAuth where
+  toJSON CreateBackendAuth' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("resourceName" Data..= resourceName),
+            Prelude.Just
+              ( "backendEnvironmentName"
+                  Data..= backendEnvironmentName
+              ),
+            Prelude.Just
+              ("resourceConfig" Data..= resourceConfig)
+          ]
+      )
+
+instance Data.ToPath CreateBackendAuth where
+  toPath CreateBackendAuth' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/auth"]
+
+instance Data.ToQuery CreateBackendAuth where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateBackendAuthResponse' smart constructor.
+data CreateBackendAuthResponse = CreateBackendAuthResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'CreateBackendAuthResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createBackendAuthResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'createBackendAuthResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'createBackendAuthResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'createBackendAuthResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'createBackendAuthResponse_operation' - The name of the operation.
+--
+-- 'status', 'createBackendAuthResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'createBackendAuthResponse_httpStatus' - The response's http status code.
+newCreateBackendAuthResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateBackendAuthResponse
+newCreateBackendAuthResponse pHttpStatus_ =
+  CreateBackendAuthResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+createBackendAuthResponse_appId :: Lens.Lens' CreateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+createBackendAuthResponse_appId = Lens.lens (\CreateBackendAuthResponse' {appId} -> appId) (\s@CreateBackendAuthResponse' {} a -> s {appId = a} :: CreateBackendAuthResponse)
+
+-- | The name of the backend environment.
+createBackendAuthResponse_backendEnvironmentName :: Lens.Lens' CreateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+createBackendAuthResponse_backendEnvironmentName = Lens.lens (\CreateBackendAuthResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackendAuthResponse' {} a -> s {backendEnvironmentName = a} :: CreateBackendAuthResponse)
+
+-- | If the request fails, this error is returned.
+createBackendAuthResponse_error :: Lens.Lens' CreateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+createBackendAuthResponse_error = Lens.lens (\CreateBackendAuthResponse' {error} -> error) (\s@CreateBackendAuthResponse' {} a -> s {error = a} :: CreateBackendAuthResponse)
+
+-- | The ID for the job.
+createBackendAuthResponse_jobId :: Lens.Lens' CreateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+createBackendAuthResponse_jobId = Lens.lens (\CreateBackendAuthResponse' {jobId} -> jobId) (\s@CreateBackendAuthResponse' {} a -> s {jobId = a} :: CreateBackendAuthResponse)
+
+-- | The name of the operation.
+createBackendAuthResponse_operation :: Lens.Lens' CreateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+createBackendAuthResponse_operation = Lens.lens (\CreateBackendAuthResponse' {operation} -> operation) (\s@CreateBackendAuthResponse' {} a -> s {operation = a} :: CreateBackendAuthResponse)
+
+-- | The current status of the request.
+createBackendAuthResponse_status :: Lens.Lens' CreateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+createBackendAuthResponse_status = Lens.lens (\CreateBackendAuthResponse' {status} -> status) (\s@CreateBackendAuthResponse' {} a -> s {status = a} :: CreateBackendAuthResponse)
+
+-- | The response's http status code.
+createBackendAuthResponse_httpStatus :: Lens.Lens' CreateBackendAuthResponse Prelude.Int
+createBackendAuthResponse_httpStatus = Lens.lens (\CreateBackendAuthResponse' {httpStatus} -> httpStatus) (\s@CreateBackendAuthResponse' {} a -> s {httpStatus = a} :: CreateBackendAuthResponse)
+
+instance Prelude.NFData CreateBackendAuthResponse where
+  rnf CreateBackendAuthResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/CreateBackendConfig.hs b/gen/Amazonka/AmplifyBackend/CreateBackendConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/CreateBackendConfig.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.CreateBackendConfig
+-- 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 config object for a backend.
+module Amazonka.AmplifyBackend.CreateBackendConfig
+  ( -- * Creating a Request
+    CreateBackendConfig (..),
+    newCreateBackendConfig,
+
+    -- * Request Lenses
+    createBackendConfig_backendManagerAppId,
+    createBackendConfig_appId,
+
+    -- * Destructuring the Response
+    CreateBackendConfigResponse (..),
+    newCreateBackendConfigResponse,
+
+    -- * Response Lenses
+    createBackendConfigResponse_appId,
+    createBackendConfigResponse_backendEnvironmentName,
+    createBackendConfigResponse_jobId,
+    createBackendConfigResponse_status,
+    createBackendConfigResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for CreateBackendConfig.
+--
+-- /See:/ 'newCreateBackendConfig' smart constructor.
+data CreateBackendConfig = CreateBackendConfig'
+  { -- | The app ID for the backend manager.
+    backendManagerAppId :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backendManagerAppId', 'createBackendConfig_backendManagerAppId' - The app ID for the backend manager.
+--
+-- 'appId', 'createBackendConfig_appId' - The app ID.
+newCreateBackendConfig ::
+  -- | 'appId'
+  Prelude.Text ->
+  CreateBackendConfig
+newCreateBackendConfig pAppId_ =
+  CreateBackendConfig'
+    { backendManagerAppId =
+        Prelude.Nothing,
+      appId = pAppId_
+    }
+
+-- | The app ID for the backend manager.
+createBackendConfig_backendManagerAppId :: Lens.Lens' CreateBackendConfig (Prelude.Maybe Prelude.Text)
+createBackendConfig_backendManagerAppId = Lens.lens (\CreateBackendConfig' {backendManagerAppId} -> backendManagerAppId) (\s@CreateBackendConfig' {} a -> s {backendManagerAppId = a} :: CreateBackendConfig)
+
+-- | The app ID.
+createBackendConfig_appId :: Lens.Lens' CreateBackendConfig Prelude.Text
+createBackendConfig_appId = Lens.lens (\CreateBackendConfig' {appId} -> appId) (\s@CreateBackendConfig' {} a -> s {appId = a} :: CreateBackendConfig)
+
+instance Core.AWSRequest CreateBackendConfig where
+  type
+    AWSResponse CreateBackendConfig =
+      CreateBackendConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateBackendConfigResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateBackendConfig where
+  hashWithSalt _salt CreateBackendConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` backendManagerAppId
+      `Prelude.hashWithSalt` appId
+
+instance Prelude.NFData CreateBackendConfig where
+  rnf CreateBackendConfig' {..} =
+    Prelude.rnf backendManagerAppId
+      `Prelude.seq` Prelude.rnf appId
+
+instance Data.ToHeaders CreateBackendConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateBackendConfig where
+  toJSON CreateBackendConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("backendManagerAppId" Data..=)
+              Prelude.<$> backendManagerAppId
+          ]
+      )
+
+instance Data.ToPath CreateBackendConfig where
+  toPath CreateBackendConfig' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/config"]
+
+instance Data.ToQuery CreateBackendConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateBackendConfigResponse' smart constructor.
+data CreateBackendConfigResponse = CreateBackendConfigResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'CreateBackendConfigResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createBackendConfigResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'createBackendConfigResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'jobId', 'createBackendConfigResponse_jobId' - The ID for the job.
+--
+-- 'status', 'createBackendConfigResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'createBackendConfigResponse_httpStatus' - The response's http status code.
+newCreateBackendConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateBackendConfigResponse
+newCreateBackendConfigResponse pHttpStatus_ =
+  CreateBackendConfigResponse'
+    { appId =
+        Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+createBackendConfigResponse_appId :: Lens.Lens' CreateBackendConfigResponse (Prelude.Maybe Prelude.Text)
+createBackendConfigResponse_appId = Lens.lens (\CreateBackendConfigResponse' {appId} -> appId) (\s@CreateBackendConfigResponse' {} a -> s {appId = a} :: CreateBackendConfigResponse)
+
+-- | The name of the backend environment.
+createBackendConfigResponse_backendEnvironmentName :: Lens.Lens' CreateBackendConfigResponse (Prelude.Maybe Prelude.Text)
+createBackendConfigResponse_backendEnvironmentName = Lens.lens (\CreateBackendConfigResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackendConfigResponse' {} a -> s {backendEnvironmentName = a} :: CreateBackendConfigResponse)
+
+-- | The ID for the job.
+createBackendConfigResponse_jobId :: Lens.Lens' CreateBackendConfigResponse (Prelude.Maybe Prelude.Text)
+createBackendConfigResponse_jobId = Lens.lens (\CreateBackendConfigResponse' {jobId} -> jobId) (\s@CreateBackendConfigResponse' {} a -> s {jobId = a} :: CreateBackendConfigResponse)
+
+-- | The current status of the request.
+createBackendConfigResponse_status :: Lens.Lens' CreateBackendConfigResponse (Prelude.Maybe Prelude.Text)
+createBackendConfigResponse_status = Lens.lens (\CreateBackendConfigResponse' {status} -> status) (\s@CreateBackendConfigResponse' {} a -> s {status = a} :: CreateBackendConfigResponse)
+
+-- | The response's http status code.
+createBackendConfigResponse_httpStatus :: Lens.Lens' CreateBackendConfigResponse Prelude.Int
+createBackendConfigResponse_httpStatus = Lens.lens (\CreateBackendConfigResponse' {httpStatus} -> httpStatus) (\s@CreateBackendConfigResponse' {} a -> s {httpStatus = a} :: CreateBackendConfigResponse)
+
+instance Prelude.NFData CreateBackendConfigResponse where
+  rnf CreateBackendConfigResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/CreateBackendStorage.hs b/gen/Amazonka/AmplifyBackend/CreateBackendStorage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/CreateBackendStorage.hs
@@ -0,0 +1,261 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.CreateBackendStorage
+-- 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 backend storage resource.
+module Amazonka.AmplifyBackend.CreateBackendStorage
+  ( -- * Creating a Request
+    CreateBackendStorage (..),
+    newCreateBackendStorage,
+
+    -- * Request Lenses
+    createBackendStorage_appId,
+    createBackendStorage_resourceName,
+    createBackendStorage_backendEnvironmentName,
+    createBackendStorage_resourceConfig,
+
+    -- * Destructuring the Response
+    CreateBackendStorageResponse (..),
+    newCreateBackendStorageResponse,
+
+    -- * Response Lenses
+    createBackendStorageResponse_appId,
+    createBackendStorageResponse_backendEnvironmentName,
+    createBackendStorageResponse_jobId,
+    createBackendStorageResponse_status,
+    createBackendStorageResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for CreateBackendStorage.
+--
+-- /See:/ 'newCreateBackendStorage' smart constructor.
+data CreateBackendStorage = CreateBackendStorage'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the storage resource.
+    resourceName :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The resource configuration for creating backend storage.
+    resourceConfig :: CreateBackendStorageResourceConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendStorage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createBackendStorage_appId' - The app ID.
+--
+-- 'resourceName', 'createBackendStorage_resourceName' - The name of the storage resource.
+--
+-- 'backendEnvironmentName', 'createBackendStorage_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceConfig', 'createBackendStorage_resourceConfig' - The resource configuration for creating backend storage.
+newCreateBackendStorage ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceConfig'
+  CreateBackendStorageResourceConfig ->
+  CreateBackendStorage
+newCreateBackendStorage
+  pAppId_
+  pResourceName_
+  pBackendEnvironmentName_
+  pResourceConfig_ =
+    CreateBackendStorage'
+      { appId = pAppId_,
+        resourceName = pResourceName_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceConfig = pResourceConfig_
+      }
+
+-- | The app ID.
+createBackendStorage_appId :: Lens.Lens' CreateBackendStorage Prelude.Text
+createBackendStorage_appId = Lens.lens (\CreateBackendStorage' {appId} -> appId) (\s@CreateBackendStorage' {} a -> s {appId = a} :: CreateBackendStorage)
+
+-- | The name of the storage resource.
+createBackendStorage_resourceName :: Lens.Lens' CreateBackendStorage Prelude.Text
+createBackendStorage_resourceName = Lens.lens (\CreateBackendStorage' {resourceName} -> resourceName) (\s@CreateBackendStorage' {} a -> s {resourceName = a} :: CreateBackendStorage)
+
+-- | The name of the backend environment.
+createBackendStorage_backendEnvironmentName :: Lens.Lens' CreateBackendStorage Prelude.Text
+createBackendStorage_backendEnvironmentName = Lens.lens (\CreateBackendStorage' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackendStorage' {} a -> s {backendEnvironmentName = a} :: CreateBackendStorage)
+
+-- | The resource configuration for creating backend storage.
+createBackendStorage_resourceConfig :: Lens.Lens' CreateBackendStorage CreateBackendStorageResourceConfig
+createBackendStorage_resourceConfig = Lens.lens (\CreateBackendStorage' {resourceConfig} -> resourceConfig) (\s@CreateBackendStorage' {} a -> s {resourceConfig = a} :: CreateBackendStorage)
+
+instance Core.AWSRequest CreateBackendStorage where
+  type
+    AWSResponse CreateBackendStorage =
+      CreateBackendStorageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateBackendStorageResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateBackendStorage where
+  hashWithSalt _salt CreateBackendStorage' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` resourceName
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceConfig
+
+instance Prelude.NFData CreateBackendStorage where
+  rnf CreateBackendStorage' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceConfig
+
+instance Data.ToHeaders CreateBackendStorage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateBackendStorage where
+  toJSON CreateBackendStorage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("resourceName" Data..= resourceName),
+            Prelude.Just
+              ( "backendEnvironmentName"
+                  Data..= backendEnvironmentName
+              ),
+            Prelude.Just
+              ("resourceConfig" Data..= resourceConfig)
+          ]
+      )
+
+instance Data.ToPath CreateBackendStorage where
+  toPath CreateBackendStorage' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/storage"]
+
+instance Data.ToQuery CreateBackendStorage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateBackendStorageResponse' smart constructor.
+data CreateBackendStorageResponse = CreateBackendStorageResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'CreateBackendStorageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createBackendStorageResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'createBackendStorageResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'jobId', 'createBackendStorageResponse_jobId' - The ID for the job.
+--
+-- 'status', 'createBackendStorageResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'createBackendStorageResponse_httpStatus' - The response's http status code.
+newCreateBackendStorageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateBackendStorageResponse
+newCreateBackendStorageResponse pHttpStatus_ =
+  CreateBackendStorageResponse'
+    { appId =
+        Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+createBackendStorageResponse_appId :: Lens.Lens' CreateBackendStorageResponse (Prelude.Maybe Prelude.Text)
+createBackendStorageResponse_appId = Lens.lens (\CreateBackendStorageResponse' {appId} -> appId) (\s@CreateBackendStorageResponse' {} a -> s {appId = a} :: CreateBackendStorageResponse)
+
+-- | The name of the backend environment.
+createBackendStorageResponse_backendEnvironmentName :: Lens.Lens' CreateBackendStorageResponse (Prelude.Maybe Prelude.Text)
+createBackendStorageResponse_backendEnvironmentName = Lens.lens (\CreateBackendStorageResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@CreateBackendStorageResponse' {} a -> s {backendEnvironmentName = a} :: CreateBackendStorageResponse)
+
+-- | The ID for the job.
+createBackendStorageResponse_jobId :: Lens.Lens' CreateBackendStorageResponse (Prelude.Maybe Prelude.Text)
+createBackendStorageResponse_jobId = Lens.lens (\CreateBackendStorageResponse' {jobId} -> jobId) (\s@CreateBackendStorageResponse' {} a -> s {jobId = a} :: CreateBackendStorageResponse)
+
+-- | The current status of the request.
+createBackendStorageResponse_status :: Lens.Lens' CreateBackendStorageResponse (Prelude.Maybe Prelude.Text)
+createBackendStorageResponse_status = Lens.lens (\CreateBackendStorageResponse' {status} -> status) (\s@CreateBackendStorageResponse' {} a -> s {status = a} :: CreateBackendStorageResponse)
+
+-- | The response's http status code.
+createBackendStorageResponse_httpStatus :: Lens.Lens' CreateBackendStorageResponse Prelude.Int
+createBackendStorageResponse_httpStatus = Lens.lens (\CreateBackendStorageResponse' {httpStatus} -> httpStatus) (\s@CreateBackendStorageResponse' {} a -> s {httpStatus = a} :: CreateBackendStorageResponse)
+
+instance Prelude.NFData CreateBackendStorageResponse where
+  rnf CreateBackendStorageResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/CreateToken.hs b/gen/Amazonka/AmplifyBackend/CreateToken.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/CreateToken.hs
@@ -0,0 +1,196 @@
+{-# 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.AmplifyBackend.CreateToken
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates a one-time challenge code to authenticate a user into your
+-- Amplify Admin UI.
+module Amazonka.AmplifyBackend.CreateToken
+  ( -- * Creating a Request
+    CreateToken (..),
+    newCreateToken,
+
+    -- * Request Lenses
+    createToken_appId,
+
+    -- * Destructuring the Response
+    CreateTokenResponse (..),
+    newCreateTokenResponse,
+
+    -- * Response Lenses
+    createTokenResponse_appId,
+    createTokenResponse_challengeCode,
+    createTokenResponse_sessionId,
+    createTokenResponse_ttl,
+    createTokenResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateToken' smart constructor.
+data CreateToken = CreateToken'
+  { -- | The app ID.
+    appId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateToken' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createToken_appId' - The app ID.
+newCreateToken ::
+  -- | 'appId'
+  Prelude.Text ->
+  CreateToken
+newCreateToken pAppId_ =
+  CreateToken' {appId = pAppId_}
+
+-- | The app ID.
+createToken_appId :: Lens.Lens' CreateToken Prelude.Text
+createToken_appId = Lens.lens (\CreateToken' {appId} -> appId) (\s@CreateToken' {} a -> s {appId = a} :: CreateToken)
+
+instance Core.AWSRequest CreateToken where
+  type AWSResponse CreateToken = CreateTokenResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateTokenResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "challengeCode")
+            Prelude.<*> (x Data..?> "sessionId")
+            Prelude.<*> (x Data..?> "ttl")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateToken where
+  hashWithSalt _salt CreateToken' {..} =
+    _salt `Prelude.hashWithSalt` appId
+
+instance Prelude.NFData CreateToken where
+  rnf CreateToken' {..} = Prelude.rnf appId
+
+instance Data.ToHeaders CreateToken where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateToken where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath CreateToken where
+  toPath CreateToken' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/challenge"]
+
+instance Data.ToQuery CreateToken where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTokenResponse' smart constructor.
+data CreateTokenResponse = CreateTokenResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | One-time challenge code for authenticating into the Amplify Admin UI.
+    challengeCode :: Prelude.Maybe Prelude.Text,
+    -- | A unique ID provided when creating a new challenge token.
+    sessionId :: Prelude.Maybe Prelude.Text,
+    -- | The expiry time for the one-time generated token code.
+    ttl :: 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 'CreateTokenResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'createTokenResponse_appId' - The app ID.
+--
+-- 'challengeCode', 'createTokenResponse_challengeCode' - One-time challenge code for authenticating into the Amplify Admin UI.
+--
+-- 'sessionId', 'createTokenResponse_sessionId' - A unique ID provided when creating a new challenge token.
+--
+-- 'ttl', 'createTokenResponse_ttl' - The expiry time for the one-time generated token code.
+--
+-- 'httpStatus', 'createTokenResponse_httpStatus' - The response's http status code.
+newCreateTokenResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateTokenResponse
+newCreateTokenResponse pHttpStatus_ =
+  CreateTokenResponse'
+    { appId = Prelude.Nothing,
+      challengeCode = Prelude.Nothing,
+      sessionId = Prelude.Nothing,
+      ttl = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+createTokenResponse_appId :: Lens.Lens' CreateTokenResponse (Prelude.Maybe Prelude.Text)
+createTokenResponse_appId = Lens.lens (\CreateTokenResponse' {appId} -> appId) (\s@CreateTokenResponse' {} a -> s {appId = a} :: CreateTokenResponse)
+
+-- | One-time challenge code for authenticating into the Amplify Admin UI.
+createTokenResponse_challengeCode :: Lens.Lens' CreateTokenResponse (Prelude.Maybe Prelude.Text)
+createTokenResponse_challengeCode = Lens.lens (\CreateTokenResponse' {challengeCode} -> challengeCode) (\s@CreateTokenResponse' {} a -> s {challengeCode = a} :: CreateTokenResponse)
+
+-- | A unique ID provided when creating a new challenge token.
+createTokenResponse_sessionId :: Lens.Lens' CreateTokenResponse (Prelude.Maybe Prelude.Text)
+createTokenResponse_sessionId = Lens.lens (\CreateTokenResponse' {sessionId} -> sessionId) (\s@CreateTokenResponse' {} a -> s {sessionId = a} :: CreateTokenResponse)
+
+-- | The expiry time for the one-time generated token code.
+createTokenResponse_ttl :: Lens.Lens' CreateTokenResponse (Prelude.Maybe Prelude.Text)
+createTokenResponse_ttl = Lens.lens (\CreateTokenResponse' {ttl} -> ttl) (\s@CreateTokenResponse' {} a -> s {ttl = a} :: CreateTokenResponse)
+
+-- | The response's http status code.
+createTokenResponse_httpStatus :: Lens.Lens' CreateTokenResponse Prelude.Int
+createTokenResponse_httpStatus = Lens.lens (\CreateTokenResponse' {httpStatus} -> httpStatus) (\s@CreateTokenResponse' {} a -> s {httpStatus = a} :: CreateTokenResponse)
+
+instance Prelude.NFData CreateTokenResponse where
+  rnf CreateTokenResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf challengeCode
+      `Prelude.seq` Prelude.rnf sessionId
+      `Prelude.seq` Prelude.rnf ttl
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/DeleteBackend.hs b/gen/Amazonka/AmplifyBackend/DeleteBackend.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/DeleteBackend.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.DeleteBackend
+-- 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 an existing environment from your Amplify project.
+module Amazonka.AmplifyBackend.DeleteBackend
+  ( -- * Creating a Request
+    DeleteBackend (..),
+    newDeleteBackend,
+
+    -- * Request Lenses
+    deleteBackend_appId,
+    deleteBackend_backendEnvironmentName,
+
+    -- * Destructuring the Response
+    DeleteBackendResponse (..),
+    newDeleteBackendResponse,
+
+    -- * Response Lenses
+    deleteBackendResponse_appId,
+    deleteBackendResponse_backendEnvironmentName,
+    deleteBackendResponse_error,
+    deleteBackendResponse_jobId,
+    deleteBackendResponse_operation,
+    deleteBackendResponse_status,
+    deleteBackendResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteBackend' smart constructor.
+data DeleteBackend = DeleteBackend'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteBackend' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'deleteBackend_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'deleteBackend_backendEnvironmentName' - The name of the backend environment.
+newDeleteBackend ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  DeleteBackend
+newDeleteBackend pAppId_ pBackendEnvironmentName_ =
+  DeleteBackend'
+    { appId = pAppId_,
+      backendEnvironmentName = pBackendEnvironmentName_
+    }
+
+-- | The app ID.
+deleteBackend_appId :: Lens.Lens' DeleteBackend Prelude.Text
+deleteBackend_appId = Lens.lens (\DeleteBackend' {appId} -> appId) (\s@DeleteBackend' {} a -> s {appId = a} :: DeleteBackend)
+
+-- | The name of the backend environment.
+deleteBackend_backendEnvironmentName :: Lens.Lens' DeleteBackend Prelude.Text
+deleteBackend_backendEnvironmentName = Lens.lens (\DeleteBackend' {backendEnvironmentName} -> backendEnvironmentName) (\s@DeleteBackend' {} a -> s {backendEnvironmentName = a} :: DeleteBackend)
+
+instance Core.AWSRequest DeleteBackend where
+  type
+    AWSResponse DeleteBackend =
+      DeleteBackendResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteBackendResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteBackend where
+  hashWithSalt _salt DeleteBackend' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+
+instance Prelude.NFData DeleteBackend where
+  rnf DeleteBackend' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+
+instance Data.ToHeaders DeleteBackend where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteBackend where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath DeleteBackend where
+  toPath DeleteBackend' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/environments/",
+        Data.toBS backendEnvironmentName,
+        "/remove"
+      ]
+
+instance Data.ToQuery DeleteBackend where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteBackendResponse' smart constructor.
+data DeleteBackendResponse = DeleteBackendResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'DeleteBackendResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'deleteBackendResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'deleteBackendResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'deleteBackendResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'deleteBackendResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'deleteBackendResponse_operation' - The name of the operation.
+--
+-- 'status', 'deleteBackendResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'deleteBackendResponse_httpStatus' - The response's http status code.
+newDeleteBackendResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteBackendResponse
+newDeleteBackendResponse pHttpStatus_ =
+  DeleteBackendResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+deleteBackendResponse_appId :: Lens.Lens' DeleteBackendResponse (Prelude.Maybe Prelude.Text)
+deleteBackendResponse_appId = Lens.lens (\DeleteBackendResponse' {appId} -> appId) (\s@DeleteBackendResponse' {} a -> s {appId = a} :: DeleteBackendResponse)
+
+-- | The name of the backend environment.
+deleteBackendResponse_backendEnvironmentName :: Lens.Lens' DeleteBackendResponse (Prelude.Maybe Prelude.Text)
+deleteBackendResponse_backendEnvironmentName = Lens.lens (\DeleteBackendResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@DeleteBackendResponse' {} a -> s {backendEnvironmentName = a} :: DeleteBackendResponse)
+
+-- | If the request fails, this error is returned.
+deleteBackendResponse_error :: Lens.Lens' DeleteBackendResponse (Prelude.Maybe Prelude.Text)
+deleteBackendResponse_error = Lens.lens (\DeleteBackendResponse' {error} -> error) (\s@DeleteBackendResponse' {} a -> s {error = a} :: DeleteBackendResponse)
+
+-- | The ID for the job.
+deleteBackendResponse_jobId :: Lens.Lens' DeleteBackendResponse (Prelude.Maybe Prelude.Text)
+deleteBackendResponse_jobId = Lens.lens (\DeleteBackendResponse' {jobId} -> jobId) (\s@DeleteBackendResponse' {} a -> s {jobId = a} :: DeleteBackendResponse)
+
+-- | The name of the operation.
+deleteBackendResponse_operation :: Lens.Lens' DeleteBackendResponse (Prelude.Maybe Prelude.Text)
+deleteBackendResponse_operation = Lens.lens (\DeleteBackendResponse' {operation} -> operation) (\s@DeleteBackendResponse' {} a -> s {operation = a} :: DeleteBackendResponse)
+
+-- | The current status of the request.
+deleteBackendResponse_status :: Lens.Lens' DeleteBackendResponse (Prelude.Maybe Prelude.Text)
+deleteBackendResponse_status = Lens.lens (\DeleteBackendResponse' {status} -> status) (\s@DeleteBackendResponse' {} a -> s {status = a} :: DeleteBackendResponse)
+
+-- | The response's http status code.
+deleteBackendResponse_httpStatus :: Lens.Lens' DeleteBackendResponse Prelude.Int
+deleteBackendResponse_httpStatus = Lens.lens (\DeleteBackendResponse' {httpStatus} -> httpStatus) (\s@DeleteBackendResponse' {} a -> s {httpStatus = a} :: DeleteBackendResponse)
+
+instance Prelude.NFData DeleteBackendResponse where
+  rnf DeleteBackendResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/DeleteBackendAPI.hs b/gen/Amazonka/AmplifyBackend/DeleteBackendAPI.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/DeleteBackendAPI.hs
@@ -0,0 +1,285 @@
+{-# 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.AmplifyBackend.DeleteBackendAPI
+-- 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 existing backend API resource.
+module Amazonka.AmplifyBackend.DeleteBackendAPI
+  ( -- * Creating a Request
+    DeleteBackendAPI (..),
+    newDeleteBackendAPI,
+
+    -- * Request Lenses
+    deleteBackendAPI_resourceConfig,
+    deleteBackendAPI_appId,
+    deleteBackendAPI_backendEnvironmentName,
+    deleteBackendAPI_resourceName,
+
+    -- * Destructuring the Response
+    DeleteBackendAPIResponse (..),
+    newDeleteBackendAPIResponse,
+
+    -- * Response Lenses
+    deleteBackendAPIResponse_appId,
+    deleteBackendAPIResponse_backendEnvironmentName,
+    deleteBackendAPIResponse_error,
+    deleteBackendAPIResponse_jobId,
+    deleteBackendAPIResponse_operation,
+    deleteBackendAPIResponse_status,
+    deleteBackendAPIResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for DeleteBackendAPI.
+--
+-- /See:/ 'newDeleteBackendAPI' smart constructor.
+data DeleteBackendAPI = DeleteBackendAPI'
+  { -- | Defines the resource configuration for the data model in your Amplify
+    -- project.
+    resourceConfig :: Prelude.Maybe BackendAPIResourceConfig,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteBackendAPI' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceConfig', 'deleteBackendAPI_resourceConfig' - Defines the resource configuration for the data model in your Amplify
+-- project.
+--
+-- 'appId', 'deleteBackendAPI_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'deleteBackendAPI_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'deleteBackendAPI_resourceName' - The name of this resource.
+newDeleteBackendAPI ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  DeleteBackendAPI
+newDeleteBackendAPI
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_ =
+    DeleteBackendAPI'
+      { resourceConfig = Prelude.Nothing,
+        appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_
+      }
+
+-- | Defines the resource configuration for the data model in your Amplify
+-- project.
+deleteBackendAPI_resourceConfig :: Lens.Lens' DeleteBackendAPI (Prelude.Maybe BackendAPIResourceConfig)
+deleteBackendAPI_resourceConfig = Lens.lens (\DeleteBackendAPI' {resourceConfig} -> resourceConfig) (\s@DeleteBackendAPI' {} a -> s {resourceConfig = a} :: DeleteBackendAPI)
+
+-- | The app ID.
+deleteBackendAPI_appId :: Lens.Lens' DeleteBackendAPI Prelude.Text
+deleteBackendAPI_appId = Lens.lens (\DeleteBackendAPI' {appId} -> appId) (\s@DeleteBackendAPI' {} a -> s {appId = a} :: DeleteBackendAPI)
+
+-- | The name of the backend environment.
+deleteBackendAPI_backendEnvironmentName :: Lens.Lens' DeleteBackendAPI Prelude.Text
+deleteBackendAPI_backendEnvironmentName = Lens.lens (\DeleteBackendAPI' {backendEnvironmentName} -> backendEnvironmentName) (\s@DeleteBackendAPI' {} a -> s {backendEnvironmentName = a} :: DeleteBackendAPI)
+
+-- | The name of this resource.
+deleteBackendAPI_resourceName :: Lens.Lens' DeleteBackendAPI Prelude.Text
+deleteBackendAPI_resourceName = Lens.lens (\DeleteBackendAPI' {resourceName} -> resourceName) (\s@DeleteBackendAPI' {} a -> s {resourceName = a} :: DeleteBackendAPI)
+
+instance Core.AWSRequest DeleteBackendAPI where
+  type
+    AWSResponse DeleteBackendAPI =
+      DeleteBackendAPIResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteBackendAPIResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteBackendAPI where
+  hashWithSalt _salt DeleteBackendAPI' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceConfig
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData DeleteBackendAPI where
+  rnf DeleteBackendAPI' {..} =
+    Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders DeleteBackendAPI where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteBackendAPI where
+  toJSON DeleteBackendAPI' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("resourceConfig" Data..=)
+              Prelude.<$> resourceConfig,
+            Prelude.Just ("resourceName" Data..= resourceName)
+          ]
+      )
+
+instance Data.ToPath DeleteBackendAPI where
+  toPath DeleteBackendAPI' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/api/",
+        Data.toBS backendEnvironmentName,
+        "/remove"
+      ]
+
+instance Data.ToQuery DeleteBackendAPI where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteBackendAPIResponse' smart constructor.
+data DeleteBackendAPIResponse = DeleteBackendAPIResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'DeleteBackendAPIResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'deleteBackendAPIResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'deleteBackendAPIResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'deleteBackendAPIResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'deleteBackendAPIResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'deleteBackendAPIResponse_operation' - The name of the operation.
+--
+-- 'status', 'deleteBackendAPIResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'deleteBackendAPIResponse_httpStatus' - The response's http status code.
+newDeleteBackendAPIResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteBackendAPIResponse
+newDeleteBackendAPIResponse pHttpStatus_ =
+  DeleteBackendAPIResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+deleteBackendAPIResponse_appId :: Lens.Lens' DeleteBackendAPIResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAPIResponse_appId = Lens.lens (\DeleteBackendAPIResponse' {appId} -> appId) (\s@DeleteBackendAPIResponse' {} a -> s {appId = a} :: DeleteBackendAPIResponse)
+
+-- | The name of the backend environment.
+deleteBackendAPIResponse_backendEnvironmentName :: Lens.Lens' DeleteBackendAPIResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAPIResponse_backendEnvironmentName = Lens.lens (\DeleteBackendAPIResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@DeleteBackendAPIResponse' {} a -> s {backendEnvironmentName = a} :: DeleteBackendAPIResponse)
+
+-- | If the request fails, this error is returned.
+deleteBackendAPIResponse_error :: Lens.Lens' DeleteBackendAPIResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAPIResponse_error = Lens.lens (\DeleteBackendAPIResponse' {error} -> error) (\s@DeleteBackendAPIResponse' {} a -> s {error = a} :: DeleteBackendAPIResponse)
+
+-- | The ID for the job.
+deleteBackendAPIResponse_jobId :: Lens.Lens' DeleteBackendAPIResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAPIResponse_jobId = Lens.lens (\DeleteBackendAPIResponse' {jobId} -> jobId) (\s@DeleteBackendAPIResponse' {} a -> s {jobId = a} :: DeleteBackendAPIResponse)
+
+-- | The name of the operation.
+deleteBackendAPIResponse_operation :: Lens.Lens' DeleteBackendAPIResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAPIResponse_operation = Lens.lens (\DeleteBackendAPIResponse' {operation} -> operation) (\s@DeleteBackendAPIResponse' {} a -> s {operation = a} :: DeleteBackendAPIResponse)
+
+-- | The current status of the request.
+deleteBackendAPIResponse_status :: Lens.Lens' DeleteBackendAPIResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAPIResponse_status = Lens.lens (\DeleteBackendAPIResponse' {status} -> status) (\s@DeleteBackendAPIResponse' {} a -> s {status = a} :: DeleteBackendAPIResponse)
+
+-- | The response's http status code.
+deleteBackendAPIResponse_httpStatus :: Lens.Lens' DeleteBackendAPIResponse Prelude.Int
+deleteBackendAPIResponse_httpStatus = Lens.lens (\DeleteBackendAPIResponse' {httpStatus} -> httpStatus) (\s@DeleteBackendAPIResponse' {} a -> s {httpStatus = a} :: DeleteBackendAPIResponse)
+
+instance Prelude.NFData DeleteBackendAPIResponse where
+  rnf DeleteBackendAPIResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/DeleteBackendAuth.hs b/gen/Amazonka/AmplifyBackend/DeleteBackendAuth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/DeleteBackendAuth.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.AmplifyBackend.DeleteBackendAuth
+-- 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 existing backend authentication resource.
+module Amazonka.AmplifyBackend.DeleteBackendAuth
+  ( -- * Creating a Request
+    DeleteBackendAuth (..),
+    newDeleteBackendAuth,
+
+    -- * Request Lenses
+    deleteBackendAuth_appId,
+    deleteBackendAuth_backendEnvironmentName,
+    deleteBackendAuth_resourceName,
+
+    -- * Destructuring the Response
+    DeleteBackendAuthResponse (..),
+    newDeleteBackendAuthResponse,
+
+    -- * Response Lenses
+    deleteBackendAuthResponse_appId,
+    deleteBackendAuthResponse_backendEnvironmentName,
+    deleteBackendAuthResponse_error,
+    deleteBackendAuthResponse_jobId,
+    deleteBackendAuthResponse_operation,
+    deleteBackendAuthResponse_status,
+    deleteBackendAuthResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for DeleteBackendAuth.
+--
+-- /See:/ 'newDeleteBackendAuth' smart constructor.
+data DeleteBackendAuth = DeleteBackendAuth'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteBackendAuth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'deleteBackendAuth_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'deleteBackendAuth_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'deleteBackendAuth_resourceName' - The name of this resource.
+newDeleteBackendAuth ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  DeleteBackendAuth
+newDeleteBackendAuth
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_ =
+    DeleteBackendAuth'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_
+      }
+
+-- | The app ID.
+deleteBackendAuth_appId :: Lens.Lens' DeleteBackendAuth Prelude.Text
+deleteBackendAuth_appId = Lens.lens (\DeleteBackendAuth' {appId} -> appId) (\s@DeleteBackendAuth' {} a -> s {appId = a} :: DeleteBackendAuth)
+
+-- | The name of the backend environment.
+deleteBackendAuth_backendEnvironmentName :: Lens.Lens' DeleteBackendAuth Prelude.Text
+deleteBackendAuth_backendEnvironmentName = Lens.lens (\DeleteBackendAuth' {backendEnvironmentName} -> backendEnvironmentName) (\s@DeleteBackendAuth' {} a -> s {backendEnvironmentName = a} :: DeleteBackendAuth)
+
+-- | The name of this resource.
+deleteBackendAuth_resourceName :: Lens.Lens' DeleteBackendAuth Prelude.Text
+deleteBackendAuth_resourceName = Lens.lens (\DeleteBackendAuth' {resourceName} -> resourceName) (\s@DeleteBackendAuth' {} a -> s {resourceName = a} :: DeleteBackendAuth)
+
+instance Core.AWSRequest DeleteBackendAuth where
+  type
+    AWSResponse DeleteBackendAuth =
+      DeleteBackendAuthResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteBackendAuthResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteBackendAuth where
+  hashWithSalt _salt DeleteBackendAuth' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData DeleteBackendAuth where
+  rnf DeleteBackendAuth' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders DeleteBackendAuth where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteBackendAuth where
+  toJSON DeleteBackendAuth' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("resourceName" Data..= resourceName)]
+      )
+
+instance Data.ToPath DeleteBackendAuth where
+  toPath DeleteBackendAuth' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/auth/",
+        Data.toBS backendEnvironmentName,
+        "/remove"
+      ]
+
+instance Data.ToQuery DeleteBackendAuth where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteBackendAuthResponse' smart constructor.
+data DeleteBackendAuthResponse = DeleteBackendAuthResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'DeleteBackendAuthResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'deleteBackendAuthResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'deleteBackendAuthResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'deleteBackendAuthResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'deleteBackendAuthResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'deleteBackendAuthResponse_operation' - The name of the operation.
+--
+-- 'status', 'deleteBackendAuthResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'deleteBackendAuthResponse_httpStatus' - The response's http status code.
+newDeleteBackendAuthResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteBackendAuthResponse
+newDeleteBackendAuthResponse pHttpStatus_ =
+  DeleteBackendAuthResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+deleteBackendAuthResponse_appId :: Lens.Lens' DeleteBackendAuthResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAuthResponse_appId = Lens.lens (\DeleteBackendAuthResponse' {appId} -> appId) (\s@DeleteBackendAuthResponse' {} a -> s {appId = a} :: DeleteBackendAuthResponse)
+
+-- | The name of the backend environment.
+deleteBackendAuthResponse_backendEnvironmentName :: Lens.Lens' DeleteBackendAuthResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAuthResponse_backendEnvironmentName = Lens.lens (\DeleteBackendAuthResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@DeleteBackendAuthResponse' {} a -> s {backendEnvironmentName = a} :: DeleteBackendAuthResponse)
+
+-- | If the request fails, this error is returned.
+deleteBackendAuthResponse_error :: Lens.Lens' DeleteBackendAuthResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAuthResponse_error = Lens.lens (\DeleteBackendAuthResponse' {error} -> error) (\s@DeleteBackendAuthResponse' {} a -> s {error = a} :: DeleteBackendAuthResponse)
+
+-- | The ID for the job.
+deleteBackendAuthResponse_jobId :: Lens.Lens' DeleteBackendAuthResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAuthResponse_jobId = Lens.lens (\DeleteBackendAuthResponse' {jobId} -> jobId) (\s@DeleteBackendAuthResponse' {} a -> s {jobId = a} :: DeleteBackendAuthResponse)
+
+-- | The name of the operation.
+deleteBackendAuthResponse_operation :: Lens.Lens' DeleteBackendAuthResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAuthResponse_operation = Lens.lens (\DeleteBackendAuthResponse' {operation} -> operation) (\s@DeleteBackendAuthResponse' {} a -> s {operation = a} :: DeleteBackendAuthResponse)
+
+-- | The current status of the request.
+deleteBackendAuthResponse_status :: Lens.Lens' DeleteBackendAuthResponse (Prelude.Maybe Prelude.Text)
+deleteBackendAuthResponse_status = Lens.lens (\DeleteBackendAuthResponse' {status} -> status) (\s@DeleteBackendAuthResponse' {} a -> s {status = a} :: DeleteBackendAuthResponse)
+
+-- | The response's http status code.
+deleteBackendAuthResponse_httpStatus :: Lens.Lens' DeleteBackendAuthResponse Prelude.Int
+deleteBackendAuthResponse_httpStatus = Lens.lens (\DeleteBackendAuthResponse' {httpStatus} -> httpStatus) (\s@DeleteBackendAuthResponse' {} a -> s {httpStatus = a} :: DeleteBackendAuthResponse)
+
+instance Prelude.NFData DeleteBackendAuthResponse where
+  rnf DeleteBackendAuthResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/DeleteBackendStorage.hs b/gen/Amazonka/AmplifyBackend/DeleteBackendStorage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/DeleteBackendStorage.hs
@@ -0,0 +1,261 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.DeleteBackendStorage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the specified backend storage resource.
+module Amazonka.AmplifyBackend.DeleteBackendStorage
+  ( -- * Creating a Request
+    DeleteBackendStorage (..),
+    newDeleteBackendStorage,
+
+    -- * Request Lenses
+    deleteBackendStorage_appId,
+    deleteBackendStorage_backendEnvironmentName,
+    deleteBackendStorage_serviceName,
+    deleteBackendStorage_resourceName,
+
+    -- * Destructuring the Response
+    DeleteBackendStorageResponse (..),
+    newDeleteBackendStorageResponse,
+
+    -- * Response Lenses
+    deleteBackendStorageResponse_appId,
+    deleteBackendStorageResponse_backendEnvironmentName,
+    deleteBackendStorageResponse_jobId,
+    deleteBackendStorageResponse_status,
+    deleteBackendStorageResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for DeleteBackendStorage.
+--
+-- /See:/ 'newDeleteBackendStorage' smart constructor.
+data DeleteBackendStorage = DeleteBackendStorage'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of the storage service.
+    serviceName :: ServiceName,
+    -- | The name of the storage resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteBackendStorage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'deleteBackendStorage_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'deleteBackendStorage_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'serviceName', 'deleteBackendStorage_serviceName' - The name of the storage service.
+--
+-- 'resourceName', 'deleteBackendStorage_resourceName' - The name of the storage resource.
+newDeleteBackendStorage ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'serviceName'
+  ServiceName ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  DeleteBackendStorage
+newDeleteBackendStorage
+  pAppId_
+  pBackendEnvironmentName_
+  pServiceName_
+  pResourceName_ =
+    DeleteBackendStorage'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        serviceName = pServiceName_,
+        resourceName = pResourceName_
+      }
+
+-- | The app ID.
+deleteBackendStorage_appId :: Lens.Lens' DeleteBackendStorage Prelude.Text
+deleteBackendStorage_appId = Lens.lens (\DeleteBackendStorage' {appId} -> appId) (\s@DeleteBackendStorage' {} a -> s {appId = a} :: DeleteBackendStorage)
+
+-- | The name of the backend environment.
+deleteBackendStorage_backendEnvironmentName :: Lens.Lens' DeleteBackendStorage Prelude.Text
+deleteBackendStorage_backendEnvironmentName = Lens.lens (\DeleteBackendStorage' {backendEnvironmentName} -> backendEnvironmentName) (\s@DeleteBackendStorage' {} a -> s {backendEnvironmentName = a} :: DeleteBackendStorage)
+
+-- | The name of the storage service.
+deleteBackendStorage_serviceName :: Lens.Lens' DeleteBackendStorage ServiceName
+deleteBackendStorage_serviceName = Lens.lens (\DeleteBackendStorage' {serviceName} -> serviceName) (\s@DeleteBackendStorage' {} a -> s {serviceName = a} :: DeleteBackendStorage)
+
+-- | The name of the storage resource.
+deleteBackendStorage_resourceName :: Lens.Lens' DeleteBackendStorage Prelude.Text
+deleteBackendStorage_resourceName = Lens.lens (\DeleteBackendStorage' {resourceName} -> resourceName) (\s@DeleteBackendStorage' {} a -> s {resourceName = a} :: DeleteBackendStorage)
+
+instance Core.AWSRequest DeleteBackendStorage where
+  type
+    AWSResponse DeleteBackendStorage =
+      DeleteBackendStorageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteBackendStorageResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteBackendStorage where
+  hashWithSalt _salt DeleteBackendStorage' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` serviceName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData DeleteBackendStorage where
+  rnf DeleteBackendStorage' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf serviceName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders DeleteBackendStorage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteBackendStorage where
+  toJSON DeleteBackendStorage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("serviceName" Data..= serviceName),
+            Prelude.Just ("resourceName" Data..= resourceName)
+          ]
+      )
+
+instance Data.ToPath DeleteBackendStorage where
+  toPath DeleteBackendStorage' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/storage/",
+        Data.toBS backendEnvironmentName,
+        "/remove"
+      ]
+
+instance Data.ToQuery DeleteBackendStorage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteBackendStorageResponse' smart constructor.
+data DeleteBackendStorageResponse = DeleteBackendStorageResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'DeleteBackendStorageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'deleteBackendStorageResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'deleteBackendStorageResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'jobId', 'deleteBackendStorageResponse_jobId' - The ID for the job.
+--
+-- 'status', 'deleteBackendStorageResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'deleteBackendStorageResponse_httpStatus' - The response's http status code.
+newDeleteBackendStorageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteBackendStorageResponse
+newDeleteBackendStorageResponse pHttpStatus_ =
+  DeleteBackendStorageResponse'
+    { appId =
+        Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+deleteBackendStorageResponse_appId :: Lens.Lens' DeleteBackendStorageResponse (Prelude.Maybe Prelude.Text)
+deleteBackendStorageResponse_appId = Lens.lens (\DeleteBackendStorageResponse' {appId} -> appId) (\s@DeleteBackendStorageResponse' {} a -> s {appId = a} :: DeleteBackendStorageResponse)
+
+-- | The name of the backend environment.
+deleteBackendStorageResponse_backendEnvironmentName :: Lens.Lens' DeleteBackendStorageResponse (Prelude.Maybe Prelude.Text)
+deleteBackendStorageResponse_backendEnvironmentName = Lens.lens (\DeleteBackendStorageResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@DeleteBackendStorageResponse' {} a -> s {backendEnvironmentName = a} :: DeleteBackendStorageResponse)
+
+-- | The ID for the job.
+deleteBackendStorageResponse_jobId :: Lens.Lens' DeleteBackendStorageResponse (Prelude.Maybe Prelude.Text)
+deleteBackendStorageResponse_jobId = Lens.lens (\DeleteBackendStorageResponse' {jobId} -> jobId) (\s@DeleteBackendStorageResponse' {} a -> s {jobId = a} :: DeleteBackendStorageResponse)
+
+-- | The current status of the request.
+deleteBackendStorageResponse_status :: Lens.Lens' DeleteBackendStorageResponse (Prelude.Maybe Prelude.Text)
+deleteBackendStorageResponse_status = Lens.lens (\DeleteBackendStorageResponse' {status} -> status) (\s@DeleteBackendStorageResponse' {} a -> s {status = a} :: DeleteBackendStorageResponse)
+
+-- | The response's http status code.
+deleteBackendStorageResponse_httpStatus :: Lens.Lens' DeleteBackendStorageResponse Prelude.Int
+deleteBackendStorageResponse_httpStatus = Lens.lens (\DeleteBackendStorageResponse' {httpStatus} -> httpStatus) (\s@DeleteBackendStorageResponse' {} a -> s {httpStatus = a} :: DeleteBackendStorageResponse)
+
+instance Prelude.NFData DeleteBackendStorageResponse where
+  rnf DeleteBackendStorageResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/DeleteToken.hs b/gen/Amazonka/AmplifyBackend/DeleteToken.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/DeleteToken.hs
@@ -0,0 +1,182 @@
+{-# 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.AmplifyBackend.DeleteToken
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the challenge token based on the given appId and sessionId.
+module Amazonka.AmplifyBackend.DeleteToken
+  ( -- * Creating a Request
+    DeleteToken (..),
+    newDeleteToken,
+
+    -- * Request Lenses
+    deleteToken_sessionId,
+    deleteToken_appId,
+
+    -- * Destructuring the Response
+    DeleteTokenResponse (..),
+    newDeleteTokenResponse,
+
+    -- * Response Lenses
+    deleteTokenResponse_isSuccess,
+    deleteTokenResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteToken' smart constructor.
+data DeleteToken = DeleteToken'
+  { -- | The session ID.
+    sessionId :: Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteToken' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sessionId', 'deleteToken_sessionId' - The session ID.
+--
+-- 'appId', 'deleteToken_appId' - The app ID.
+newDeleteToken ::
+  -- | 'sessionId'
+  Prelude.Text ->
+  -- | 'appId'
+  Prelude.Text ->
+  DeleteToken
+newDeleteToken pSessionId_ pAppId_ =
+  DeleteToken'
+    { sessionId = pSessionId_,
+      appId = pAppId_
+    }
+
+-- | The session ID.
+deleteToken_sessionId :: Lens.Lens' DeleteToken Prelude.Text
+deleteToken_sessionId = Lens.lens (\DeleteToken' {sessionId} -> sessionId) (\s@DeleteToken' {} a -> s {sessionId = a} :: DeleteToken)
+
+-- | The app ID.
+deleteToken_appId :: Lens.Lens' DeleteToken Prelude.Text
+deleteToken_appId = Lens.lens (\DeleteToken' {appId} -> appId) (\s@DeleteToken' {} a -> s {appId = a} :: DeleteToken)
+
+instance Core.AWSRequest DeleteToken where
+  type AWSResponse DeleteToken = DeleteTokenResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteTokenResponse'
+            Prelude.<$> (x Data..?> "isSuccess")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteToken where
+  hashWithSalt _salt DeleteToken' {..} =
+    _salt
+      `Prelude.hashWithSalt` sessionId
+      `Prelude.hashWithSalt` appId
+
+instance Prelude.NFData DeleteToken where
+  rnf DeleteToken' {..} =
+    Prelude.rnf sessionId
+      `Prelude.seq` Prelude.rnf appId
+
+instance Data.ToHeaders DeleteToken where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteToken where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath DeleteToken where
+  toPath DeleteToken' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/challenge/",
+        Data.toBS sessionId,
+        "/remove"
+      ]
+
+instance Data.ToQuery DeleteToken where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteTokenResponse' smart constructor.
+data DeleteTokenResponse = DeleteTokenResponse'
+  { -- | Indicates whether the request succeeded or failed.
+    isSuccess :: Prelude.Maybe Prelude.Bool,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTokenResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'isSuccess', 'deleteTokenResponse_isSuccess' - Indicates whether the request succeeded or failed.
+--
+-- 'httpStatus', 'deleteTokenResponse_httpStatus' - The response's http status code.
+newDeleteTokenResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteTokenResponse
+newDeleteTokenResponse pHttpStatus_ =
+  DeleteTokenResponse'
+    { isSuccess = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Indicates whether the request succeeded or failed.
+deleteTokenResponse_isSuccess :: Lens.Lens' DeleteTokenResponse (Prelude.Maybe Prelude.Bool)
+deleteTokenResponse_isSuccess = Lens.lens (\DeleteTokenResponse' {isSuccess} -> isSuccess) (\s@DeleteTokenResponse' {} a -> s {isSuccess = a} :: DeleteTokenResponse)
+
+-- | The response's http status code.
+deleteTokenResponse_httpStatus :: Lens.Lens' DeleteTokenResponse Prelude.Int
+deleteTokenResponse_httpStatus = Lens.lens (\DeleteTokenResponse' {httpStatus} -> httpStatus) (\s@DeleteTokenResponse' {} a -> s {httpStatus = a} :: DeleteTokenResponse)
+
+instance Prelude.NFData DeleteTokenResponse where
+  rnf DeleteTokenResponse' {..} =
+    Prelude.rnf isSuccess
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/GenerateBackendAPIModels.hs b/gen/Amazonka/AmplifyBackend/GenerateBackendAPIModels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/GenerateBackendAPIModels.hs
@@ -0,0 +1,271 @@
+{-# 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.AmplifyBackend.GenerateBackendAPIModels
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates a model schema for an existing backend API resource.
+module Amazonka.AmplifyBackend.GenerateBackendAPIModels
+  ( -- * Creating a Request
+    GenerateBackendAPIModels (..),
+    newGenerateBackendAPIModels,
+
+    -- * Request Lenses
+    generateBackendAPIModels_appId,
+    generateBackendAPIModels_backendEnvironmentName,
+    generateBackendAPIModels_resourceName,
+
+    -- * Destructuring the Response
+    GenerateBackendAPIModelsResponse (..),
+    newGenerateBackendAPIModelsResponse,
+
+    -- * Response Lenses
+    generateBackendAPIModelsResponse_appId,
+    generateBackendAPIModelsResponse_backendEnvironmentName,
+    generateBackendAPIModelsResponse_error,
+    generateBackendAPIModelsResponse_jobId,
+    generateBackendAPIModelsResponse_operation,
+    generateBackendAPIModelsResponse_status,
+    generateBackendAPIModelsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for GenerateBackendAPIModels.
+--
+-- /See:/ 'newGenerateBackendAPIModels' smart constructor.
+data GenerateBackendAPIModels = GenerateBackendAPIModels'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GenerateBackendAPIModels' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'generateBackendAPIModels_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'generateBackendAPIModels_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'generateBackendAPIModels_resourceName' - The name of this resource.
+newGenerateBackendAPIModels ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  GenerateBackendAPIModels
+newGenerateBackendAPIModels
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_ =
+    GenerateBackendAPIModels'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_
+      }
+
+-- | The app ID.
+generateBackendAPIModels_appId :: Lens.Lens' GenerateBackendAPIModels Prelude.Text
+generateBackendAPIModels_appId = Lens.lens (\GenerateBackendAPIModels' {appId} -> appId) (\s@GenerateBackendAPIModels' {} a -> s {appId = a} :: GenerateBackendAPIModels)
+
+-- | The name of the backend environment.
+generateBackendAPIModels_backendEnvironmentName :: Lens.Lens' GenerateBackendAPIModels Prelude.Text
+generateBackendAPIModels_backendEnvironmentName = Lens.lens (\GenerateBackendAPIModels' {backendEnvironmentName} -> backendEnvironmentName) (\s@GenerateBackendAPIModels' {} a -> s {backendEnvironmentName = a} :: GenerateBackendAPIModels)
+
+-- | The name of this resource.
+generateBackendAPIModels_resourceName :: Lens.Lens' GenerateBackendAPIModels Prelude.Text
+generateBackendAPIModels_resourceName = Lens.lens (\GenerateBackendAPIModels' {resourceName} -> resourceName) (\s@GenerateBackendAPIModels' {} a -> s {resourceName = a} :: GenerateBackendAPIModels)
+
+instance Core.AWSRequest GenerateBackendAPIModels where
+  type
+    AWSResponse GenerateBackendAPIModels =
+      GenerateBackendAPIModelsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GenerateBackendAPIModelsResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GenerateBackendAPIModels where
+  hashWithSalt _salt GenerateBackendAPIModels' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData GenerateBackendAPIModels where
+  rnf GenerateBackendAPIModels' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders GenerateBackendAPIModels where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GenerateBackendAPIModels where
+  toJSON GenerateBackendAPIModels' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("resourceName" Data..= resourceName)]
+      )
+
+instance Data.ToPath GenerateBackendAPIModels where
+  toPath GenerateBackendAPIModels' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/api/",
+        Data.toBS backendEnvironmentName,
+        "/generateModels"
+      ]
+
+instance Data.ToQuery GenerateBackendAPIModels where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGenerateBackendAPIModelsResponse' smart constructor.
+data GenerateBackendAPIModelsResponse = GenerateBackendAPIModelsResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'GenerateBackendAPIModelsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'generateBackendAPIModelsResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'generateBackendAPIModelsResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'generateBackendAPIModelsResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'generateBackendAPIModelsResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'generateBackendAPIModelsResponse_operation' - The name of the operation.
+--
+-- 'status', 'generateBackendAPIModelsResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'generateBackendAPIModelsResponse_httpStatus' - The response's http status code.
+newGenerateBackendAPIModelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GenerateBackendAPIModelsResponse
+newGenerateBackendAPIModelsResponse pHttpStatus_ =
+  GenerateBackendAPIModelsResponse'
+    { appId =
+        Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+generateBackendAPIModelsResponse_appId :: Lens.Lens' GenerateBackendAPIModelsResponse (Prelude.Maybe Prelude.Text)
+generateBackendAPIModelsResponse_appId = Lens.lens (\GenerateBackendAPIModelsResponse' {appId} -> appId) (\s@GenerateBackendAPIModelsResponse' {} a -> s {appId = a} :: GenerateBackendAPIModelsResponse)
+
+-- | The name of the backend environment.
+generateBackendAPIModelsResponse_backendEnvironmentName :: Lens.Lens' GenerateBackendAPIModelsResponse (Prelude.Maybe Prelude.Text)
+generateBackendAPIModelsResponse_backendEnvironmentName = Lens.lens (\GenerateBackendAPIModelsResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@GenerateBackendAPIModelsResponse' {} a -> s {backendEnvironmentName = a} :: GenerateBackendAPIModelsResponse)
+
+-- | If the request fails, this error is returned.
+generateBackendAPIModelsResponse_error :: Lens.Lens' GenerateBackendAPIModelsResponse (Prelude.Maybe Prelude.Text)
+generateBackendAPIModelsResponse_error = Lens.lens (\GenerateBackendAPIModelsResponse' {error} -> error) (\s@GenerateBackendAPIModelsResponse' {} a -> s {error = a} :: GenerateBackendAPIModelsResponse)
+
+-- | The ID for the job.
+generateBackendAPIModelsResponse_jobId :: Lens.Lens' GenerateBackendAPIModelsResponse (Prelude.Maybe Prelude.Text)
+generateBackendAPIModelsResponse_jobId = Lens.lens (\GenerateBackendAPIModelsResponse' {jobId} -> jobId) (\s@GenerateBackendAPIModelsResponse' {} a -> s {jobId = a} :: GenerateBackendAPIModelsResponse)
+
+-- | The name of the operation.
+generateBackendAPIModelsResponse_operation :: Lens.Lens' GenerateBackendAPIModelsResponse (Prelude.Maybe Prelude.Text)
+generateBackendAPIModelsResponse_operation = Lens.lens (\GenerateBackendAPIModelsResponse' {operation} -> operation) (\s@GenerateBackendAPIModelsResponse' {} a -> s {operation = a} :: GenerateBackendAPIModelsResponse)
+
+-- | The current status of the request.
+generateBackendAPIModelsResponse_status :: Lens.Lens' GenerateBackendAPIModelsResponse (Prelude.Maybe Prelude.Text)
+generateBackendAPIModelsResponse_status = Lens.lens (\GenerateBackendAPIModelsResponse' {status} -> status) (\s@GenerateBackendAPIModelsResponse' {} a -> s {status = a} :: GenerateBackendAPIModelsResponse)
+
+-- | The response's http status code.
+generateBackendAPIModelsResponse_httpStatus :: Lens.Lens' GenerateBackendAPIModelsResponse Prelude.Int
+generateBackendAPIModelsResponse_httpStatus = Lens.lens (\GenerateBackendAPIModelsResponse' {httpStatus} -> httpStatus) (\s@GenerateBackendAPIModelsResponse' {} a -> s {httpStatus = a} :: GenerateBackendAPIModelsResponse)
+
+instance
+  Prelude.NFData
+    GenerateBackendAPIModelsResponse
+  where
+  rnf GenerateBackendAPIModelsResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/GetBackend.hs b/gen/Amazonka/AmplifyBackend/GetBackend.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/GetBackend.hs
@@ -0,0 +1,260 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.GetBackend
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides project-level details for your Amplify UI project.
+module Amazonka.AmplifyBackend.GetBackend
+  ( -- * Creating a Request
+    GetBackend (..),
+    newGetBackend,
+
+    -- * Request Lenses
+    getBackend_backendEnvironmentName,
+    getBackend_appId,
+
+    -- * Destructuring the Response
+    GetBackendResponse (..),
+    newGetBackendResponse,
+
+    -- * Response Lenses
+    getBackendResponse_amplifyFeatureFlags,
+    getBackendResponse_amplifyMetaConfig,
+    getBackendResponse_appId,
+    getBackendResponse_appName,
+    getBackendResponse_backendEnvironmentList,
+    getBackendResponse_backendEnvironmentName,
+    getBackendResponse_error,
+    getBackendResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for GetBackend.
+--
+-- /See:/ 'newGetBackend' smart constructor.
+data GetBackend = GetBackend'
+  { -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBackend' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'backendEnvironmentName', 'getBackend_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'appId', 'getBackend_appId' - The app ID.
+newGetBackend ::
+  -- | 'appId'
+  Prelude.Text ->
+  GetBackend
+newGetBackend pAppId_ =
+  GetBackend'
+    { backendEnvironmentName =
+        Prelude.Nothing,
+      appId = pAppId_
+    }
+
+-- | The name of the backend environment.
+getBackend_backendEnvironmentName :: Lens.Lens' GetBackend (Prelude.Maybe Prelude.Text)
+getBackend_backendEnvironmentName = Lens.lens (\GetBackend' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackend' {} a -> s {backendEnvironmentName = a} :: GetBackend)
+
+-- | The app ID.
+getBackend_appId :: Lens.Lens' GetBackend Prelude.Text
+getBackend_appId = Lens.lens (\GetBackend' {appId} -> appId) (\s@GetBackend' {} a -> s {appId = a} :: GetBackend)
+
+instance Core.AWSRequest GetBackend where
+  type AWSResponse GetBackend = GetBackendResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetBackendResponse'
+            Prelude.<$> (x Data..?> "amplifyFeatureFlags")
+            Prelude.<*> (x Data..?> "amplifyMetaConfig")
+            Prelude.<*> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "appName")
+            Prelude.<*> ( x
+                            Data..?> "backendEnvironmentList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetBackend where
+  hashWithSalt _salt GetBackend' {..} =
+    _salt
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` appId
+
+instance Prelude.NFData GetBackend where
+  rnf GetBackend' {..} =
+    Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf appId
+
+instance Data.ToHeaders GetBackend where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetBackend where
+  toJSON GetBackend' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("backendEnvironmentName" Data..=)
+              Prelude.<$> backendEnvironmentName
+          ]
+      )
+
+instance Data.ToPath GetBackend where
+  toPath GetBackend' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/details"]
+
+instance Data.ToQuery GetBackend where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetBackendResponse' smart constructor.
+data GetBackendResponse = GetBackendResponse'
+  { -- | A stringified version of the cli.json file for your Amplify project.
+    amplifyFeatureFlags :: Prelude.Maybe Prelude.Text,
+    -- | A stringified version of the current configs for your Amplify project.
+    amplifyMetaConfig :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the app.
+    appName :: Prelude.Maybe Prelude.Text,
+    -- | A list of backend environments in an array.
+    backendEnvironmentList :: Prelude.Maybe [Prelude.Text],
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request failed, this is the returned error.
+    error :: 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 'GetBackendResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'amplifyFeatureFlags', 'getBackendResponse_amplifyFeatureFlags' - A stringified version of the cli.json file for your Amplify project.
+--
+-- 'amplifyMetaConfig', 'getBackendResponse_amplifyMetaConfig' - A stringified version of the current configs for your Amplify project.
+--
+-- 'appId', 'getBackendResponse_appId' - The app ID.
+--
+-- 'appName', 'getBackendResponse_appName' - The name of the app.
+--
+-- 'backendEnvironmentList', 'getBackendResponse_backendEnvironmentList' - A list of backend environments in an array.
+--
+-- 'backendEnvironmentName', 'getBackendResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'getBackendResponse_error' - If the request failed, this is the returned error.
+--
+-- 'httpStatus', 'getBackendResponse_httpStatus' - The response's http status code.
+newGetBackendResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetBackendResponse
+newGetBackendResponse pHttpStatus_ =
+  GetBackendResponse'
+    { amplifyFeatureFlags =
+        Prelude.Nothing,
+      amplifyMetaConfig = Prelude.Nothing,
+      appId = Prelude.Nothing,
+      appName = Prelude.Nothing,
+      backendEnvironmentList = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A stringified version of the cli.json file for your Amplify project.
+getBackendResponse_amplifyFeatureFlags :: Lens.Lens' GetBackendResponse (Prelude.Maybe Prelude.Text)
+getBackendResponse_amplifyFeatureFlags = Lens.lens (\GetBackendResponse' {amplifyFeatureFlags} -> amplifyFeatureFlags) (\s@GetBackendResponse' {} a -> s {amplifyFeatureFlags = a} :: GetBackendResponse)
+
+-- | A stringified version of the current configs for your Amplify project.
+getBackendResponse_amplifyMetaConfig :: Lens.Lens' GetBackendResponse (Prelude.Maybe Prelude.Text)
+getBackendResponse_amplifyMetaConfig = Lens.lens (\GetBackendResponse' {amplifyMetaConfig} -> amplifyMetaConfig) (\s@GetBackendResponse' {} a -> s {amplifyMetaConfig = a} :: GetBackendResponse)
+
+-- | The app ID.
+getBackendResponse_appId :: Lens.Lens' GetBackendResponse (Prelude.Maybe Prelude.Text)
+getBackendResponse_appId = Lens.lens (\GetBackendResponse' {appId} -> appId) (\s@GetBackendResponse' {} a -> s {appId = a} :: GetBackendResponse)
+
+-- | The name of the app.
+getBackendResponse_appName :: Lens.Lens' GetBackendResponse (Prelude.Maybe Prelude.Text)
+getBackendResponse_appName = Lens.lens (\GetBackendResponse' {appName} -> appName) (\s@GetBackendResponse' {} a -> s {appName = a} :: GetBackendResponse)
+
+-- | A list of backend environments in an array.
+getBackendResponse_backendEnvironmentList :: Lens.Lens' GetBackendResponse (Prelude.Maybe [Prelude.Text])
+getBackendResponse_backendEnvironmentList = Lens.lens (\GetBackendResponse' {backendEnvironmentList} -> backendEnvironmentList) (\s@GetBackendResponse' {} a -> s {backendEnvironmentList = a} :: GetBackendResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the backend environment.
+getBackendResponse_backendEnvironmentName :: Lens.Lens' GetBackendResponse (Prelude.Maybe Prelude.Text)
+getBackendResponse_backendEnvironmentName = Lens.lens (\GetBackendResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendResponse' {} a -> s {backendEnvironmentName = a} :: GetBackendResponse)
+
+-- | If the request failed, this is the returned error.
+getBackendResponse_error :: Lens.Lens' GetBackendResponse (Prelude.Maybe Prelude.Text)
+getBackendResponse_error = Lens.lens (\GetBackendResponse' {error} -> error) (\s@GetBackendResponse' {} a -> s {error = a} :: GetBackendResponse)
+
+-- | The response's http status code.
+getBackendResponse_httpStatus :: Lens.Lens' GetBackendResponse Prelude.Int
+getBackendResponse_httpStatus = Lens.lens (\GetBackendResponse' {httpStatus} -> httpStatus) (\s@GetBackendResponse' {} a -> s {httpStatus = a} :: GetBackendResponse)
+
+instance Prelude.NFData GetBackendResponse where
+  rnf GetBackendResponse' {..} =
+    Prelude.rnf amplifyFeatureFlags
+      `Prelude.seq` Prelude.rnf amplifyMetaConfig
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf appName
+      `Prelude.seq` Prelude.rnf backendEnvironmentList
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/GetBackendAPI.hs b/gen/Amazonka/AmplifyBackend/GetBackendAPI.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/GetBackendAPI.hs
@@ -0,0 +1,273 @@
+{-# 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.AmplifyBackend.GetBackendAPI
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the details for a backend API.
+module Amazonka.AmplifyBackend.GetBackendAPI
+  ( -- * Creating a Request
+    GetBackendAPI (..),
+    newGetBackendAPI,
+
+    -- * Request Lenses
+    getBackendAPI_resourceConfig,
+    getBackendAPI_appId,
+    getBackendAPI_backendEnvironmentName,
+    getBackendAPI_resourceName,
+
+    -- * Destructuring the Response
+    GetBackendAPIResponse (..),
+    newGetBackendAPIResponse,
+
+    -- * Response Lenses
+    getBackendAPIResponse_appId,
+    getBackendAPIResponse_backendEnvironmentName,
+    getBackendAPIResponse_error,
+    getBackendAPIResponse_resourceConfig,
+    getBackendAPIResponse_resourceName,
+    getBackendAPIResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for GetBackendAPI.
+--
+-- /See:/ 'newGetBackendAPI' smart constructor.
+data GetBackendAPI = GetBackendAPI'
+  { -- | Defines the resource configuration for the data model in your Amplify
+    -- project.
+    resourceConfig :: Prelude.Maybe BackendAPIResourceConfig,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBackendAPI' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceConfig', 'getBackendAPI_resourceConfig' - Defines the resource configuration for the data model in your Amplify
+-- project.
+--
+-- 'appId', 'getBackendAPI_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendAPI_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'getBackendAPI_resourceName' - The name of this resource.
+newGetBackendAPI ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  GetBackendAPI
+newGetBackendAPI
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_ =
+    GetBackendAPI'
+      { resourceConfig = Prelude.Nothing,
+        appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_
+      }
+
+-- | Defines the resource configuration for the data model in your Amplify
+-- project.
+getBackendAPI_resourceConfig :: Lens.Lens' GetBackendAPI (Prelude.Maybe BackendAPIResourceConfig)
+getBackendAPI_resourceConfig = Lens.lens (\GetBackendAPI' {resourceConfig} -> resourceConfig) (\s@GetBackendAPI' {} a -> s {resourceConfig = a} :: GetBackendAPI)
+
+-- | The app ID.
+getBackendAPI_appId :: Lens.Lens' GetBackendAPI Prelude.Text
+getBackendAPI_appId = Lens.lens (\GetBackendAPI' {appId} -> appId) (\s@GetBackendAPI' {} a -> s {appId = a} :: GetBackendAPI)
+
+-- | The name of the backend environment.
+getBackendAPI_backendEnvironmentName :: Lens.Lens' GetBackendAPI Prelude.Text
+getBackendAPI_backendEnvironmentName = Lens.lens (\GetBackendAPI' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendAPI' {} a -> s {backendEnvironmentName = a} :: GetBackendAPI)
+
+-- | The name of this resource.
+getBackendAPI_resourceName :: Lens.Lens' GetBackendAPI Prelude.Text
+getBackendAPI_resourceName = Lens.lens (\GetBackendAPI' {resourceName} -> resourceName) (\s@GetBackendAPI' {} a -> s {resourceName = a} :: GetBackendAPI)
+
+instance Core.AWSRequest GetBackendAPI where
+  type
+    AWSResponse GetBackendAPI =
+      GetBackendAPIResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetBackendAPIResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "resourceConfig")
+            Prelude.<*> (x Data..?> "resourceName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetBackendAPI where
+  hashWithSalt _salt GetBackendAPI' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceConfig
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData GetBackendAPI where
+  rnf GetBackendAPI' {..} =
+    Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders GetBackendAPI where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetBackendAPI where
+  toJSON GetBackendAPI' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("resourceConfig" Data..=)
+              Prelude.<$> resourceConfig,
+            Prelude.Just ("resourceName" Data..= resourceName)
+          ]
+      )
+
+instance Data.ToPath GetBackendAPI where
+  toPath GetBackendAPI' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/api/",
+        Data.toBS backendEnvironmentName,
+        "/details"
+      ]
+
+instance Data.ToQuery GetBackendAPI where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetBackendAPIResponse' smart constructor.
+data GetBackendAPIResponse = GetBackendAPIResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The resource configuration for this response object.
+    resourceConfig :: Prelude.Maybe BackendAPIResourceConfig,
+    -- | The name of this resource.
+    resourceName :: 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 'GetBackendAPIResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getBackendAPIResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendAPIResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'getBackendAPIResponse_error' - If the request fails, this error is returned.
+--
+-- 'resourceConfig', 'getBackendAPIResponse_resourceConfig' - The resource configuration for this response object.
+--
+-- 'resourceName', 'getBackendAPIResponse_resourceName' - The name of this resource.
+--
+-- 'httpStatus', 'getBackendAPIResponse_httpStatus' - The response's http status code.
+newGetBackendAPIResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetBackendAPIResponse
+newGetBackendAPIResponse pHttpStatus_ =
+  GetBackendAPIResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      resourceConfig = Prelude.Nothing,
+      resourceName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+getBackendAPIResponse_appId :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe Prelude.Text)
+getBackendAPIResponse_appId = Lens.lens (\GetBackendAPIResponse' {appId} -> appId) (\s@GetBackendAPIResponse' {} a -> s {appId = a} :: GetBackendAPIResponse)
+
+-- | The name of the backend environment.
+getBackendAPIResponse_backendEnvironmentName :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe Prelude.Text)
+getBackendAPIResponse_backendEnvironmentName = Lens.lens (\GetBackendAPIResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendAPIResponse' {} a -> s {backendEnvironmentName = a} :: GetBackendAPIResponse)
+
+-- | If the request fails, this error is returned.
+getBackendAPIResponse_error :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe Prelude.Text)
+getBackendAPIResponse_error = Lens.lens (\GetBackendAPIResponse' {error} -> error) (\s@GetBackendAPIResponse' {} a -> s {error = a} :: GetBackendAPIResponse)
+
+-- | The resource configuration for this response object.
+getBackendAPIResponse_resourceConfig :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe BackendAPIResourceConfig)
+getBackendAPIResponse_resourceConfig = Lens.lens (\GetBackendAPIResponse' {resourceConfig} -> resourceConfig) (\s@GetBackendAPIResponse' {} a -> s {resourceConfig = a} :: GetBackendAPIResponse)
+
+-- | The name of this resource.
+getBackendAPIResponse_resourceName :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe Prelude.Text)
+getBackendAPIResponse_resourceName = Lens.lens (\GetBackendAPIResponse' {resourceName} -> resourceName) (\s@GetBackendAPIResponse' {} a -> s {resourceName = a} :: GetBackendAPIResponse)
+
+-- | The response's http status code.
+getBackendAPIResponse_httpStatus :: Lens.Lens' GetBackendAPIResponse Prelude.Int
+getBackendAPIResponse_httpStatus = Lens.lens (\GetBackendAPIResponse' {httpStatus} -> httpStatus) (\s@GetBackendAPIResponse' {} a -> s {httpStatus = a} :: GetBackendAPIResponse)
+
+instance Prelude.NFData GetBackendAPIResponse where
+  rnf GetBackendAPIResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/GetBackendAPIModels.hs b/gen/Amazonka/AmplifyBackend/GetBackendAPIModels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/GetBackendAPIModels.hs
@@ -0,0 +1,235 @@
+{-# 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.AmplifyBackend.GetBackendAPIModels
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a model introspection schema for an existing backend API resource.
+module Amazonka.AmplifyBackend.GetBackendAPIModels
+  ( -- * Creating a Request
+    GetBackendAPIModels (..),
+    newGetBackendAPIModels,
+
+    -- * Request Lenses
+    getBackendAPIModels_appId,
+    getBackendAPIModels_backendEnvironmentName,
+    getBackendAPIModels_resourceName,
+
+    -- * Destructuring the Response
+    GetBackendAPIModelsResponse (..),
+    newGetBackendAPIModelsResponse,
+
+    -- * Response Lenses
+    getBackendAPIModelsResponse_modelIntrospectionSchema,
+    getBackendAPIModelsResponse_models,
+    getBackendAPIModelsResponse_status,
+    getBackendAPIModelsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for GetBackendAPIModels.
+--
+-- /See:/ 'newGetBackendAPIModels' smart constructor.
+data GetBackendAPIModels = GetBackendAPIModels'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBackendAPIModels' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getBackendAPIModels_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendAPIModels_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'getBackendAPIModels_resourceName' - The name of this resource.
+newGetBackendAPIModels ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  GetBackendAPIModels
+newGetBackendAPIModels
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_ =
+    GetBackendAPIModels'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_
+      }
+
+-- | The app ID.
+getBackendAPIModels_appId :: Lens.Lens' GetBackendAPIModels Prelude.Text
+getBackendAPIModels_appId = Lens.lens (\GetBackendAPIModels' {appId} -> appId) (\s@GetBackendAPIModels' {} a -> s {appId = a} :: GetBackendAPIModels)
+
+-- | The name of the backend environment.
+getBackendAPIModels_backendEnvironmentName :: Lens.Lens' GetBackendAPIModels Prelude.Text
+getBackendAPIModels_backendEnvironmentName = Lens.lens (\GetBackendAPIModels' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendAPIModels' {} a -> s {backendEnvironmentName = a} :: GetBackendAPIModels)
+
+-- | The name of this resource.
+getBackendAPIModels_resourceName :: Lens.Lens' GetBackendAPIModels Prelude.Text
+getBackendAPIModels_resourceName = Lens.lens (\GetBackendAPIModels' {resourceName} -> resourceName) (\s@GetBackendAPIModels' {} a -> s {resourceName = a} :: GetBackendAPIModels)
+
+instance Core.AWSRequest GetBackendAPIModels where
+  type
+    AWSResponse GetBackendAPIModels =
+      GetBackendAPIModelsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetBackendAPIModelsResponse'
+            Prelude.<$> (x Data..?> "modelIntrospectionSchema")
+            Prelude.<*> (x Data..?> "models")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetBackendAPIModels where
+  hashWithSalt _salt GetBackendAPIModels' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData GetBackendAPIModels where
+  rnf GetBackendAPIModels' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders GetBackendAPIModels where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetBackendAPIModels where
+  toJSON GetBackendAPIModels' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("resourceName" Data..= resourceName)]
+      )
+
+instance Data.ToPath GetBackendAPIModels where
+  toPath GetBackendAPIModels' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/api/",
+        Data.toBS backendEnvironmentName,
+        "/getModels"
+      ]
+
+instance Data.ToQuery GetBackendAPIModels where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetBackendAPIModelsResponse' smart constructor.
+data GetBackendAPIModelsResponse = GetBackendAPIModelsResponse'
+  { -- | Stringified JSON of the model introspection schema for an existing
+    -- backend API resource.
+    modelIntrospectionSchema :: Prelude.Maybe Prelude.Text,
+    -- | Stringified JSON of the datastore model.
+    models :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: Prelude.Maybe Status,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBackendAPIModelsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'modelIntrospectionSchema', 'getBackendAPIModelsResponse_modelIntrospectionSchema' - Stringified JSON of the model introspection schema for an existing
+-- backend API resource.
+--
+-- 'models', 'getBackendAPIModelsResponse_models' - Stringified JSON of the datastore model.
+--
+-- 'status', 'getBackendAPIModelsResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'getBackendAPIModelsResponse_httpStatus' - The response's http status code.
+newGetBackendAPIModelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetBackendAPIModelsResponse
+newGetBackendAPIModelsResponse pHttpStatus_ =
+  GetBackendAPIModelsResponse'
+    { modelIntrospectionSchema =
+        Prelude.Nothing,
+      models = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Stringified JSON of the model introspection schema for an existing
+-- backend API resource.
+getBackendAPIModelsResponse_modelIntrospectionSchema :: Lens.Lens' GetBackendAPIModelsResponse (Prelude.Maybe Prelude.Text)
+getBackendAPIModelsResponse_modelIntrospectionSchema = Lens.lens (\GetBackendAPIModelsResponse' {modelIntrospectionSchema} -> modelIntrospectionSchema) (\s@GetBackendAPIModelsResponse' {} a -> s {modelIntrospectionSchema = a} :: GetBackendAPIModelsResponse)
+
+-- | Stringified JSON of the datastore model.
+getBackendAPIModelsResponse_models :: Lens.Lens' GetBackendAPIModelsResponse (Prelude.Maybe Prelude.Text)
+getBackendAPIModelsResponse_models = Lens.lens (\GetBackendAPIModelsResponse' {models} -> models) (\s@GetBackendAPIModelsResponse' {} a -> s {models = a} :: GetBackendAPIModelsResponse)
+
+-- | The current status of the request.
+getBackendAPIModelsResponse_status :: Lens.Lens' GetBackendAPIModelsResponse (Prelude.Maybe Status)
+getBackendAPIModelsResponse_status = Lens.lens (\GetBackendAPIModelsResponse' {status} -> status) (\s@GetBackendAPIModelsResponse' {} a -> s {status = a} :: GetBackendAPIModelsResponse)
+
+-- | The response's http status code.
+getBackendAPIModelsResponse_httpStatus :: Lens.Lens' GetBackendAPIModelsResponse Prelude.Int
+getBackendAPIModelsResponse_httpStatus = Lens.lens (\GetBackendAPIModelsResponse' {httpStatus} -> httpStatus) (\s@GetBackendAPIModelsResponse' {} a -> s {httpStatus = a} :: GetBackendAPIModelsResponse)
+
+instance Prelude.NFData GetBackendAPIModelsResponse where
+  rnf GetBackendAPIModelsResponse' {..} =
+    Prelude.rnf modelIntrospectionSchema
+      `Prelude.seq` Prelude.rnf models
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/GetBackendAuth.hs b/gen/Amazonka/AmplifyBackend/GetBackendAuth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/GetBackendAuth.hs
@@ -0,0 +1,258 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.GetBackendAuth
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a backend auth details.
+module Amazonka.AmplifyBackend.GetBackendAuth
+  ( -- * Creating a Request
+    GetBackendAuth (..),
+    newGetBackendAuth,
+
+    -- * Request Lenses
+    getBackendAuth_appId,
+    getBackendAuth_backendEnvironmentName,
+    getBackendAuth_resourceName,
+
+    -- * Destructuring the Response
+    GetBackendAuthResponse (..),
+    newGetBackendAuthResponse,
+
+    -- * Response Lenses
+    getBackendAuthResponse_appId,
+    getBackendAuthResponse_backendEnvironmentName,
+    getBackendAuthResponse_error,
+    getBackendAuthResponse_resourceConfig,
+    getBackendAuthResponse_resourceName,
+    getBackendAuthResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for GetBackendAuth.
+--
+-- /See:/ 'newGetBackendAuth' smart constructor.
+data GetBackendAuth = GetBackendAuth'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBackendAuth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getBackendAuth_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendAuth_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'getBackendAuth_resourceName' - The name of this resource.
+newGetBackendAuth ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  GetBackendAuth
+newGetBackendAuth
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_ =
+    GetBackendAuth'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_
+      }
+
+-- | The app ID.
+getBackendAuth_appId :: Lens.Lens' GetBackendAuth Prelude.Text
+getBackendAuth_appId = Lens.lens (\GetBackendAuth' {appId} -> appId) (\s@GetBackendAuth' {} a -> s {appId = a} :: GetBackendAuth)
+
+-- | The name of the backend environment.
+getBackendAuth_backendEnvironmentName :: Lens.Lens' GetBackendAuth Prelude.Text
+getBackendAuth_backendEnvironmentName = Lens.lens (\GetBackendAuth' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendAuth' {} a -> s {backendEnvironmentName = a} :: GetBackendAuth)
+
+-- | The name of this resource.
+getBackendAuth_resourceName :: Lens.Lens' GetBackendAuth Prelude.Text
+getBackendAuth_resourceName = Lens.lens (\GetBackendAuth' {resourceName} -> resourceName) (\s@GetBackendAuth' {} a -> s {resourceName = a} :: GetBackendAuth)
+
+instance Core.AWSRequest GetBackendAuth where
+  type
+    AWSResponse GetBackendAuth =
+      GetBackendAuthResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetBackendAuthResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "resourceConfig")
+            Prelude.<*> (x Data..?> "resourceName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetBackendAuth where
+  hashWithSalt _salt GetBackendAuth' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData GetBackendAuth where
+  rnf GetBackendAuth' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders GetBackendAuth where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetBackendAuth where
+  toJSON GetBackendAuth' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("resourceName" Data..= resourceName)]
+      )
+
+instance Data.ToPath GetBackendAuth where
+  toPath GetBackendAuth' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/auth/",
+        Data.toBS backendEnvironmentName,
+        "/details"
+      ]
+
+instance Data.ToQuery GetBackendAuth where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetBackendAuthResponse' smart constructor.
+data GetBackendAuthResponse = GetBackendAuthResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The resource configuration for authorization requests to the backend of
+    -- your Amplify project.
+    resourceConfig :: Prelude.Maybe CreateBackendAuthResourceConfig,
+    -- | The name of this resource.
+    resourceName :: 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 'GetBackendAuthResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getBackendAuthResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendAuthResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'getBackendAuthResponse_error' - If the request fails, this error is returned.
+--
+-- 'resourceConfig', 'getBackendAuthResponse_resourceConfig' - The resource configuration for authorization requests to the backend of
+-- your Amplify project.
+--
+-- 'resourceName', 'getBackendAuthResponse_resourceName' - The name of this resource.
+--
+-- 'httpStatus', 'getBackendAuthResponse_httpStatus' - The response's http status code.
+newGetBackendAuthResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetBackendAuthResponse
+newGetBackendAuthResponse pHttpStatus_ =
+  GetBackendAuthResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      resourceConfig = Prelude.Nothing,
+      resourceName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+getBackendAuthResponse_appId :: Lens.Lens' GetBackendAuthResponse (Prelude.Maybe Prelude.Text)
+getBackendAuthResponse_appId = Lens.lens (\GetBackendAuthResponse' {appId} -> appId) (\s@GetBackendAuthResponse' {} a -> s {appId = a} :: GetBackendAuthResponse)
+
+-- | The name of the backend environment.
+getBackendAuthResponse_backendEnvironmentName :: Lens.Lens' GetBackendAuthResponse (Prelude.Maybe Prelude.Text)
+getBackendAuthResponse_backendEnvironmentName = Lens.lens (\GetBackendAuthResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendAuthResponse' {} a -> s {backendEnvironmentName = a} :: GetBackendAuthResponse)
+
+-- | If the request fails, this error is returned.
+getBackendAuthResponse_error :: Lens.Lens' GetBackendAuthResponse (Prelude.Maybe Prelude.Text)
+getBackendAuthResponse_error = Lens.lens (\GetBackendAuthResponse' {error} -> error) (\s@GetBackendAuthResponse' {} a -> s {error = a} :: GetBackendAuthResponse)
+
+-- | The resource configuration for authorization requests to the backend of
+-- your Amplify project.
+getBackendAuthResponse_resourceConfig :: Lens.Lens' GetBackendAuthResponse (Prelude.Maybe CreateBackendAuthResourceConfig)
+getBackendAuthResponse_resourceConfig = Lens.lens (\GetBackendAuthResponse' {resourceConfig} -> resourceConfig) (\s@GetBackendAuthResponse' {} a -> s {resourceConfig = a} :: GetBackendAuthResponse)
+
+-- | The name of this resource.
+getBackendAuthResponse_resourceName :: Lens.Lens' GetBackendAuthResponse (Prelude.Maybe Prelude.Text)
+getBackendAuthResponse_resourceName = Lens.lens (\GetBackendAuthResponse' {resourceName} -> resourceName) (\s@GetBackendAuthResponse' {} a -> s {resourceName = a} :: GetBackendAuthResponse)
+
+-- | The response's http status code.
+getBackendAuthResponse_httpStatus :: Lens.Lens' GetBackendAuthResponse Prelude.Int
+getBackendAuthResponse_httpStatus = Lens.lens (\GetBackendAuthResponse' {httpStatus} -> httpStatus) (\s@GetBackendAuthResponse' {} a -> s {httpStatus = a} :: GetBackendAuthResponse)
+
+instance Prelude.NFData GetBackendAuthResponse where
+  rnf GetBackendAuthResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/GetBackendJob.hs b/gen/Amazonka/AmplifyBackend/GetBackendJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/GetBackendJob.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.AmplifyBackend.GetBackendJob
+-- 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 a specific job.
+module Amazonka.AmplifyBackend.GetBackendJob
+  ( -- * Creating a Request
+    GetBackendJob (..),
+    newGetBackendJob,
+
+    -- * Request Lenses
+    getBackendJob_appId,
+    getBackendJob_backendEnvironmentName,
+    getBackendJob_jobId,
+
+    -- * Destructuring the Response
+    GetBackendJobResponse (..),
+    newGetBackendJobResponse,
+
+    -- * Response Lenses
+    getBackendJobResponse_appId,
+    getBackendJobResponse_backendEnvironmentName,
+    getBackendJobResponse_createTime,
+    getBackendJobResponse_error,
+    getBackendJobResponse_jobId,
+    getBackendJobResponse_operation,
+    getBackendJobResponse_status,
+    getBackendJobResponse_updateTime,
+    getBackendJobResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetBackendJob' smart constructor.
+data GetBackendJob = GetBackendJob'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBackendJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getBackendJob_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendJob_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'jobId', 'getBackendJob_jobId' - The ID for the job.
+newGetBackendJob ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'jobId'
+  Prelude.Text ->
+  GetBackendJob
+newGetBackendJob
+  pAppId_
+  pBackendEnvironmentName_
+  pJobId_ =
+    GetBackendJob'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        jobId = pJobId_
+      }
+
+-- | The app ID.
+getBackendJob_appId :: Lens.Lens' GetBackendJob Prelude.Text
+getBackendJob_appId = Lens.lens (\GetBackendJob' {appId} -> appId) (\s@GetBackendJob' {} a -> s {appId = a} :: GetBackendJob)
+
+-- | The name of the backend environment.
+getBackendJob_backendEnvironmentName :: Lens.Lens' GetBackendJob Prelude.Text
+getBackendJob_backendEnvironmentName = Lens.lens (\GetBackendJob' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendJob' {} a -> s {backendEnvironmentName = a} :: GetBackendJob)
+
+-- | The ID for the job.
+getBackendJob_jobId :: Lens.Lens' GetBackendJob Prelude.Text
+getBackendJob_jobId = Lens.lens (\GetBackendJob' {jobId} -> jobId) (\s@GetBackendJob' {} a -> s {jobId = a} :: GetBackendJob)
+
+instance Core.AWSRequest GetBackendJob where
+  type
+    AWSResponse GetBackendJob =
+      GetBackendJobResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetBackendJobResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "createTime")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (x Data..?> "updateTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetBackendJob where
+  hashWithSalt _salt GetBackendJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` jobId
+
+instance Prelude.NFData GetBackendJob where
+  rnf GetBackendJob' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf jobId
+
+instance Data.ToHeaders GetBackendJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetBackendJob where
+  toPath GetBackendJob' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/job/",
+        Data.toBS backendEnvironmentName,
+        "/",
+        Data.toBS jobId
+      ]
+
+instance Data.ToQuery GetBackendJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetBackendJobResponse' smart constructor.
+data GetBackendJobResponse = GetBackendJobResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The time when the job was created.
+    createTime :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | The time when the job was last updated.
+    updateTime :: 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 'GetBackendJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getBackendJobResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendJobResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'createTime', 'getBackendJobResponse_createTime' - The time when the job was created.
+--
+-- 'error', 'getBackendJobResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'getBackendJobResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'getBackendJobResponse_operation' - The name of the operation.
+--
+-- 'status', 'getBackendJobResponse_status' - The current status of the request.
+--
+-- 'updateTime', 'getBackendJobResponse_updateTime' - The time when the job was last updated.
+--
+-- 'httpStatus', 'getBackendJobResponse_httpStatus' - The response's http status code.
+newGetBackendJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetBackendJobResponse
+newGetBackendJobResponse pHttpStatus_ =
+  GetBackendJobResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      createTime = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updateTime = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+getBackendJobResponse_appId :: Lens.Lens' GetBackendJobResponse (Prelude.Maybe Prelude.Text)
+getBackendJobResponse_appId = Lens.lens (\GetBackendJobResponse' {appId} -> appId) (\s@GetBackendJobResponse' {} a -> s {appId = a} :: GetBackendJobResponse)
+
+-- | The name of the backend environment.
+getBackendJobResponse_backendEnvironmentName :: Lens.Lens' GetBackendJobResponse (Prelude.Maybe Prelude.Text)
+getBackendJobResponse_backendEnvironmentName = Lens.lens (\GetBackendJobResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendJobResponse' {} a -> s {backendEnvironmentName = a} :: GetBackendJobResponse)
+
+-- | The time when the job was created.
+getBackendJobResponse_createTime :: Lens.Lens' GetBackendJobResponse (Prelude.Maybe Prelude.Text)
+getBackendJobResponse_createTime = Lens.lens (\GetBackendJobResponse' {createTime} -> createTime) (\s@GetBackendJobResponse' {} a -> s {createTime = a} :: GetBackendJobResponse)
+
+-- | If the request fails, this error is returned.
+getBackendJobResponse_error :: Lens.Lens' GetBackendJobResponse (Prelude.Maybe Prelude.Text)
+getBackendJobResponse_error = Lens.lens (\GetBackendJobResponse' {error} -> error) (\s@GetBackendJobResponse' {} a -> s {error = a} :: GetBackendJobResponse)
+
+-- | The ID for the job.
+getBackendJobResponse_jobId :: Lens.Lens' GetBackendJobResponse (Prelude.Maybe Prelude.Text)
+getBackendJobResponse_jobId = Lens.lens (\GetBackendJobResponse' {jobId} -> jobId) (\s@GetBackendJobResponse' {} a -> s {jobId = a} :: GetBackendJobResponse)
+
+-- | The name of the operation.
+getBackendJobResponse_operation :: Lens.Lens' GetBackendJobResponse (Prelude.Maybe Prelude.Text)
+getBackendJobResponse_operation = Lens.lens (\GetBackendJobResponse' {operation} -> operation) (\s@GetBackendJobResponse' {} a -> s {operation = a} :: GetBackendJobResponse)
+
+-- | The current status of the request.
+getBackendJobResponse_status :: Lens.Lens' GetBackendJobResponse (Prelude.Maybe Prelude.Text)
+getBackendJobResponse_status = Lens.lens (\GetBackendJobResponse' {status} -> status) (\s@GetBackendJobResponse' {} a -> s {status = a} :: GetBackendJobResponse)
+
+-- | The time when the job was last updated.
+getBackendJobResponse_updateTime :: Lens.Lens' GetBackendJobResponse (Prelude.Maybe Prelude.Text)
+getBackendJobResponse_updateTime = Lens.lens (\GetBackendJobResponse' {updateTime} -> updateTime) (\s@GetBackendJobResponse' {} a -> s {updateTime = a} :: GetBackendJobResponse)
+
+-- | The response's http status code.
+getBackendJobResponse_httpStatus :: Lens.Lens' GetBackendJobResponse Prelude.Int
+getBackendJobResponse_httpStatus = Lens.lens (\GetBackendJobResponse' {httpStatus} -> httpStatus) (\s@GetBackendJobResponse' {} a -> s {httpStatus = a} :: GetBackendJobResponse)
+
+instance Prelude.NFData GetBackendJobResponse where
+  rnf GetBackendJobResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf createTime
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updateTime
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/GetBackendStorage.hs b/gen/Amazonka/AmplifyBackend/GetBackendStorage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/GetBackendStorage.hs
@@ -0,0 +1,243 @@
+{-# 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.AmplifyBackend.GetBackendStorage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets details for a backend storage resource.
+module Amazonka.AmplifyBackend.GetBackendStorage
+  ( -- * Creating a Request
+    GetBackendStorage (..),
+    newGetBackendStorage,
+
+    -- * Request Lenses
+    getBackendStorage_appId,
+    getBackendStorage_backendEnvironmentName,
+    getBackendStorage_resourceName,
+
+    -- * Destructuring the Response
+    GetBackendStorageResponse (..),
+    newGetBackendStorageResponse,
+
+    -- * Response Lenses
+    getBackendStorageResponse_appId,
+    getBackendStorageResponse_backendEnvironmentName,
+    getBackendStorageResponse_resourceConfig,
+    getBackendStorageResponse_resourceName,
+    getBackendStorageResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for GetBackendStorage.
+--
+-- /See:/ 'newGetBackendStorage' smart constructor.
+data GetBackendStorage = GetBackendStorage'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of the storage resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBackendStorage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getBackendStorage_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendStorage_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'getBackendStorage_resourceName' - The name of the storage resource.
+newGetBackendStorage ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  GetBackendStorage
+newGetBackendStorage
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_ =
+    GetBackendStorage'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_
+      }
+
+-- | The app ID.
+getBackendStorage_appId :: Lens.Lens' GetBackendStorage Prelude.Text
+getBackendStorage_appId = Lens.lens (\GetBackendStorage' {appId} -> appId) (\s@GetBackendStorage' {} a -> s {appId = a} :: GetBackendStorage)
+
+-- | The name of the backend environment.
+getBackendStorage_backendEnvironmentName :: Lens.Lens' GetBackendStorage Prelude.Text
+getBackendStorage_backendEnvironmentName = Lens.lens (\GetBackendStorage' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendStorage' {} a -> s {backendEnvironmentName = a} :: GetBackendStorage)
+
+-- | The name of the storage resource.
+getBackendStorage_resourceName :: Lens.Lens' GetBackendStorage Prelude.Text
+getBackendStorage_resourceName = Lens.lens (\GetBackendStorage' {resourceName} -> resourceName) (\s@GetBackendStorage' {} a -> s {resourceName = a} :: GetBackendStorage)
+
+instance Core.AWSRequest GetBackendStorage where
+  type
+    AWSResponse GetBackendStorage =
+      GetBackendStorageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetBackendStorageResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "resourceConfig")
+            Prelude.<*> (x Data..?> "resourceName")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetBackendStorage where
+  hashWithSalt _salt GetBackendStorage' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData GetBackendStorage where
+  rnf GetBackendStorage' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders GetBackendStorage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetBackendStorage where
+  toJSON GetBackendStorage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("resourceName" Data..= resourceName)]
+      )
+
+instance Data.ToPath GetBackendStorage where
+  toPath GetBackendStorage' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/storage/",
+        Data.toBS backendEnvironmentName,
+        "/details"
+      ]
+
+instance Data.ToQuery GetBackendStorage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetBackendStorageResponse' smart constructor.
+data GetBackendStorageResponse = GetBackendStorageResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The resource configuration for the backend storage resource.
+    resourceConfig :: Prelude.Maybe GetBackendStorageResourceConfig,
+    -- | The name of the storage resource.
+    resourceName :: 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 'GetBackendStorageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getBackendStorageResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'getBackendStorageResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceConfig', 'getBackendStorageResponse_resourceConfig' - The resource configuration for the backend storage resource.
+--
+-- 'resourceName', 'getBackendStorageResponse_resourceName' - The name of the storage resource.
+--
+-- 'httpStatus', 'getBackendStorageResponse_httpStatus' - The response's http status code.
+newGetBackendStorageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetBackendStorageResponse
+newGetBackendStorageResponse pHttpStatus_ =
+  GetBackendStorageResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      resourceConfig = Prelude.Nothing,
+      resourceName = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+getBackendStorageResponse_appId :: Lens.Lens' GetBackendStorageResponse (Prelude.Maybe Prelude.Text)
+getBackendStorageResponse_appId = Lens.lens (\GetBackendStorageResponse' {appId} -> appId) (\s@GetBackendStorageResponse' {} a -> s {appId = a} :: GetBackendStorageResponse)
+
+-- | The name of the backend environment.
+getBackendStorageResponse_backendEnvironmentName :: Lens.Lens' GetBackendStorageResponse (Prelude.Maybe Prelude.Text)
+getBackendStorageResponse_backendEnvironmentName = Lens.lens (\GetBackendStorageResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendStorageResponse' {} a -> s {backendEnvironmentName = a} :: GetBackendStorageResponse)
+
+-- | The resource configuration for the backend storage resource.
+getBackendStorageResponse_resourceConfig :: Lens.Lens' GetBackendStorageResponse (Prelude.Maybe GetBackendStorageResourceConfig)
+getBackendStorageResponse_resourceConfig = Lens.lens (\GetBackendStorageResponse' {resourceConfig} -> resourceConfig) (\s@GetBackendStorageResponse' {} a -> s {resourceConfig = a} :: GetBackendStorageResponse)
+
+-- | The name of the storage resource.
+getBackendStorageResponse_resourceName :: Lens.Lens' GetBackendStorageResponse (Prelude.Maybe Prelude.Text)
+getBackendStorageResponse_resourceName = Lens.lens (\GetBackendStorageResponse' {resourceName} -> resourceName) (\s@GetBackendStorageResponse' {} a -> s {resourceName = a} :: GetBackendStorageResponse)
+
+-- | The response's http status code.
+getBackendStorageResponse_httpStatus :: Lens.Lens' GetBackendStorageResponse Prelude.Int
+getBackendStorageResponse_httpStatus = Lens.lens (\GetBackendStorageResponse' {httpStatus} -> httpStatus) (\s@GetBackendStorageResponse' {} a -> s {httpStatus = a} :: GetBackendStorageResponse)
+
+instance Prelude.NFData GetBackendStorageResponse where
+  rnf GetBackendStorageResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/GetToken.hs b/gen/Amazonka/AmplifyBackend/GetToken.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/GetToken.hs
@@ -0,0 +1,214 @@
+{-# 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.AmplifyBackend.GetToken
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the challenge token based on the given appId and sessionId.
+module Amazonka.AmplifyBackend.GetToken
+  ( -- * Creating a Request
+    GetToken (..),
+    newGetToken,
+
+    -- * Request Lenses
+    getToken_sessionId,
+    getToken_appId,
+
+    -- * Destructuring the Response
+    GetTokenResponse (..),
+    newGetTokenResponse,
+
+    -- * Response Lenses
+    getTokenResponse_appId,
+    getTokenResponse_challengeCode,
+    getTokenResponse_sessionId,
+    getTokenResponse_ttl,
+    getTokenResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetToken' smart constructor.
+data GetToken = GetToken'
+  { -- | The session ID.
+    sessionId :: Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetToken' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sessionId', 'getToken_sessionId' - The session ID.
+--
+-- 'appId', 'getToken_appId' - The app ID.
+newGetToken ::
+  -- | 'sessionId'
+  Prelude.Text ->
+  -- | 'appId'
+  Prelude.Text ->
+  GetToken
+newGetToken pSessionId_ pAppId_ =
+  GetToken' {sessionId = pSessionId_, appId = pAppId_}
+
+-- | The session ID.
+getToken_sessionId :: Lens.Lens' GetToken Prelude.Text
+getToken_sessionId = Lens.lens (\GetToken' {sessionId} -> sessionId) (\s@GetToken' {} a -> s {sessionId = a} :: GetToken)
+
+-- | The app ID.
+getToken_appId :: Lens.Lens' GetToken Prelude.Text
+getToken_appId = Lens.lens (\GetToken' {appId} -> appId) (\s@GetToken' {} a -> s {appId = a} :: GetToken)
+
+instance Core.AWSRequest GetToken where
+  type AWSResponse GetToken = GetTokenResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetTokenResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "challengeCode")
+            Prelude.<*> (x Data..?> "sessionId")
+            Prelude.<*> (x Data..?> "ttl")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetToken where
+  hashWithSalt _salt GetToken' {..} =
+    _salt
+      `Prelude.hashWithSalt` sessionId
+      `Prelude.hashWithSalt` appId
+
+instance Prelude.NFData GetToken where
+  rnf GetToken' {..} =
+    Prelude.rnf sessionId
+      `Prelude.seq` Prelude.rnf appId
+
+instance Data.ToHeaders GetToken where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetToken where
+  toPath GetToken' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/challenge/",
+        Data.toBS sessionId
+      ]
+
+instance Data.ToQuery GetToken where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetTokenResponse' smart constructor.
+data GetTokenResponse = GetTokenResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The one-time challenge code for authenticating into the Amplify Admin
+    -- UI.
+    challengeCode :: Prelude.Maybe Prelude.Text,
+    -- | A unique ID provided when creating a new challenge token.
+    sessionId :: Prelude.Maybe Prelude.Text,
+    -- | The expiry time for the one-time generated token code.
+    ttl :: 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 'GetTokenResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'getTokenResponse_appId' - The app ID.
+--
+-- 'challengeCode', 'getTokenResponse_challengeCode' - The one-time challenge code for authenticating into the Amplify Admin
+-- UI.
+--
+-- 'sessionId', 'getTokenResponse_sessionId' - A unique ID provided when creating a new challenge token.
+--
+-- 'ttl', 'getTokenResponse_ttl' - The expiry time for the one-time generated token code.
+--
+-- 'httpStatus', 'getTokenResponse_httpStatus' - The response's http status code.
+newGetTokenResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetTokenResponse
+newGetTokenResponse pHttpStatus_ =
+  GetTokenResponse'
+    { appId = Prelude.Nothing,
+      challengeCode = Prelude.Nothing,
+      sessionId = Prelude.Nothing,
+      ttl = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+getTokenResponse_appId :: Lens.Lens' GetTokenResponse (Prelude.Maybe Prelude.Text)
+getTokenResponse_appId = Lens.lens (\GetTokenResponse' {appId} -> appId) (\s@GetTokenResponse' {} a -> s {appId = a} :: GetTokenResponse)
+
+-- | The one-time challenge code for authenticating into the Amplify Admin
+-- UI.
+getTokenResponse_challengeCode :: Lens.Lens' GetTokenResponse (Prelude.Maybe Prelude.Text)
+getTokenResponse_challengeCode = Lens.lens (\GetTokenResponse' {challengeCode} -> challengeCode) (\s@GetTokenResponse' {} a -> s {challengeCode = a} :: GetTokenResponse)
+
+-- | A unique ID provided when creating a new challenge token.
+getTokenResponse_sessionId :: Lens.Lens' GetTokenResponse (Prelude.Maybe Prelude.Text)
+getTokenResponse_sessionId = Lens.lens (\GetTokenResponse' {sessionId} -> sessionId) (\s@GetTokenResponse' {} a -> s {sessionId = a} :: GetTokenResponse)
+
+-- | The expiry time for the one-time generated token code.
+getTokenResponse_ttl :: Lens.Lens' GetTokenResponse (Prelude.Maybe Prelude.Text)
+getTokenResponse_ttl = Lens.lens (\GetTokenResponse' {ttl} -> ttl) (\s@GetTokenResponse' {} a -> s {ttl = a} :: GetTokenResponse)
+
+-- | The response's http status code.
+getTokenResponse_httpStatus :: Lens.Lens' GetTokenResponse Prelude.Int
+getTokenResponse_httpStatus = Lens.lens (\GetTokenResponse' {httpStatus} -> httpStatus) (\s@GetTokenResponse' {} a -> s {httpStatus = a} :: GetTokenResponse)
+
+instance Prelude.NFData GetTokenResponse where
+  rnf GetTokenResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf challengeCode
+      `Prelude.seq` Prelude.rnf sessionId
+      `Prelude.seq` Prelude.rnf ttl
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/ImportBackendAuth.hs b/gen/Amazonka/AmplifyBackend/ImportBackendAuth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/ImportBackendAuth.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.AmplifyBackend.ImportBackendAuth
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Imports an existing backend authentication resource.
+module Amazonka.AmplifyBackend.ImportBackendAuth
+  ( -- * Creating a Request
+    ImportBackendAuth (..),
+    newImportBackendAuth,
+
+    -- * Request Lenses
+    importBackendAuth_identityPoolId,
+    importBackendAuth_appId,
+    importBackendAuth_backendEnvironmentName,
+    importBackendAuth_userPoolId,
+    importBackendAuth_nativeClientId,
+    importBackendAuth_webClientId,
+
+    -- * Destructuring the Response
+    ImportBackendAuthResponse (..),
+    newImportBackendAuthResponse,
+
+    -- * Response Lenses
+    importBackendAuthResponse_appId,
+    importBackendAuthResponse_backendEnvironmentName,
+    importBackendAuthResponse_error,
+    importBackendAuthResponse_jobId,
+    importBackendAuthResponse_operation,
+    importBackendAuthResponse_status,
+    importBackendAuthResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for ImportBackendAuth.
+--
+-- /See:/ 'newImportBackendAuth' smart constructor.
+data ImportBackendAuth = ImportBackendAuth'
+  { -- | The ID of the Amazon Cognito identity pool.
+    identityPoolId :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The ID of the Amazon Cognito user pool.
+    userPoolId :: Prelude.Text,
+    -- | The ID of the Amazon Cognito native client.
+    nativeClientId :: Prelude.Text,
+    -- | The ID of the Amazon Cognito web client.
+    webClientId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportBackendAuth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'importBackendAuth_identityPoolId' - The ID of the Amazon Cognito identity pool.
+--
+-- 'appId', 'importBackendAuth_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'importBackendAuth_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'userPoolId', 'importBackendAuth_userPoolId' - The ID of the Amazon Cognito user pool.
+--
+-- 'nativeClientId', 'importBackendAuth_nativeClientId' - The ID of the Amazon Cognito native client.
+--
+-- 'webClientId', 'importBackendAuth_webClientId' - The ID of the Amazon Cognito web client.
+newImportBackendAuth ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'userPoolId'
+  Prelude.Text ->
+  -- | 'nativeClientId'
+  Prelude.Text ->
+  -- | 'webClientId'
+  Prelude.Text ->
+  ImportBackendAuth
+newImportBackendAuth
+  pAppId_
+  pBackendEnvironmentName_
+  pUserPoolId_
+  pNativeClientId_
+  pWebClientId_ =
+    ImportBackendAuth'
+      { identityPoolId =
+          Prelude.Nothing,
+        appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        userPoolId = pUserPoolId_,
+        nativeClientId = pNativeClientId_,
+        webClientId = pWebClientId_
+      }
+
+-- | The ID of the Amazon Cognito identity pool.
+importBackendAuth_identityPoolId :: Lens.Lens' ImportBackendAuth (Prelude.Maybe Prelude.Text)
+importBackendAuth_identityPoolId = Lens.lens (\ImportBackendAuth' {identityPoolId} -> identityPoolId) (\s@ImportBackendAuth' {} a -> s {identityPoolId = a} :: ImportBackendAuth)
+
+-- | The app ID.
+importBackendAuth_appId :: Lens.Lens' ImportBackendAuth Prelude.Text
+importBackendAuth_appId = Lens.lens (\ImportBackendAuth' {appId} -> appId) (\s@ImportBackendAuth' {} a -> s {appId = a} :: ImportBackendAuth)
+
+-- | The name of the backend environment.
+importBackendAuth_backendEnvironmentName :: Lens.Lens' ImportBackendAuth Prelude.Text
+importBackendAuth_backendEnvironmentName = Lens.lens (\ImportBackendAuth' {backendEnvironmentName} -> backendEnvironmentName) (\s@ImportBackendAuth' {} a -> s {backendEnvironmentName = a} :: ImportBackendAuth)
+
+-- | The ID of the Amazon Cognito user pool.
+importBackendAuth_userPoolId :: Lens.Lens' ImportBackendAuth Prelude.Text
+importBackendAuth_userPoolId = Lens.lens (\ImportBackendAuth' {userPoolId} -> userPoolId) (\s@ImportBackendAuth' {} a -> s {userPoolId = a} :: ImportBackendAuth)
+
+-- | The ID of the Amazon Cognito native client.
+importBackendAuth_nativeClientId :: Lens.Lens' ImportBackendAuth Prelude.Text
+importBackendAuth_nativeClientId = Lens.lens (\ImportBackendAuth' {nativeClientId} -> nativeClientId) (\s@ImportBackendAuth' {} a -> s {nativeClientId = a} :: ImportBackendAuth)
+
+-- | The ID of the Amazon Cognito web client.
+importBackendAuth_webClientId :: Lens.Lens' ImportBackendAuth Prelude.Text
+importBackendAuth_webClientId = Lens.lens (\ImportBackendAuth' {webClientId} -> webClientId) (\s@ImportBackendAuth' {} a -> s {webClientId = a} :: ImportBackendAuth)
+
+instance Core.AWSRequest ImportBackendAuth where
+  type
+    AWSResponse ImportBackendAuth =
+      ImportBackendAuthResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ImportBackendAuthResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ImportBackendAuth where
+  hashWithSalt _salt ImportBackendAuth' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` userPoolId
+      `Prelude.hashWithSalt` nativeClientId
+      `Prelude.hashWithSalt` webClientId
+
+instance Prelude.NFData ImportBackendAuth where
+  rnf ImportBackendAuth' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf userPoolId
+      `Prelude.seq` Prelude.rnf nativeClientId
+      `Prelude.seq` Prelude.rnf webClientId
+
+instance Data.ToHeaders ImportBackendAuth where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ImportBackendAuth where
+  toJSON ImportBackendAuth' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("identityPoolId" Data..=)
+              Prelude.<$> identityPoolId,
+            Prelude.Just ("userPoolId" Data..= userPoolId),
+            Prelude.Just
+              ("nativeClientId" Data..= nativeClientId),
+            Prelude.Just ("webClientId" Data..= webClientId)
+          ]
+      )
+
+instance Data.ToPath ImportBackendAuth where
+  toPath ImportBackendAuth' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/auth/",
+        Data.toBS backendEnvironmentName,
+        "/import"
+      ]
+
+instance Data.ToQuery ImportBackendAuth where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newImportBackendAuthResponse' smart constructor.
+data ImportBackendAuthResponse = ImportBackendAuthResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'ImportBackendAuthResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'importBackendAuthResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'importBackendAuthResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'importBackendAuthResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'importBackendAuthResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'importBackendAuthResponse_operation' - The name of the operation.
+--
+-- 'status', 'importBackendAuthResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'importBackendAuthResponse_httpStatus' - The response's http status code.
+newImportBackendAuthResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ImportBackendAuthResponse
+newImportBackendAuthResponse pHttpStatus_ =
+  ImportBackendAuthResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+importBackendAuthResponse_appId :: Lens.Lens' ImportBackendAuthResponse (Prelude.Maybe Prelude.Text)
+importBackendAuthResponse_appId = Lens.lens (\ImportBackendAuthResponse' {appId} -> appId) (\s@ImportBackendAuthResponse' {} a -> s {appId = a} :: ImportBackendAuthResponse)
+
+-- | The name of the backend environment.
+importBackendAuthResponse_backendEnvironmentName :: Lens.Lens' ImportBackendAuthResponse (Prelude.Maybe Prelude.Text)
+importBackendAuthResponse_backendEnvironmentName = Lens.lens (\ImportBackendAuthResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@ImportBackendAuthResponse' {} a -> s {backendEnvironmentName = a} :: ImportBackendAuthResponse)
+
+-- | If the request fails, this error is returned.
+importBackendAuthResponse_error :: Lens.Lens' ImportBackendAuthResponse (Prelude.Maybe Prelude.Text)
+importBackendAuthResponse_error = Lens.lens (\ImportBackendAuthResponse' {error} -> error) (\s@ImportBackendAuthResponse' {} a -> s {error = a} :: ImportBackendAuthResponse)
+
+-- | The ID for the job.
+importBackendAuthResponse_jobId :: Lens.Lens' ImportBackendAuthResponse (Prelude.Maybe Prelude.Text)
+importBackendAuthResponse_jobId = Lens.lens (\ImportBackendAuthResponse' {jobId} -> jobId) (\s@ImportBackendAuthResponse' {} a -> s {jobId = a} :: ImportBackendAuthResponse)
+
+-- | The name of the operation.
+importBackendAuthResponse_operation :: Lens.Lens' ImportBackendAuthResponse (Prelude.Maybe Prelude.Text)
+importBackendAuthResponse_operation = Lens.lens (\ImportBackendAuthResponse' {operation} -> operation) (\s@ImportBackendAuthResponse' {} a -> s {operation = a} :: ImportBackendAuthResponse)
+
+-- | The current status of the request.
+importBackendAuthResponse_status :: Lens.Lens' ImportBackendAuthResponse (Prelude.Maybe Prelude.Text)
+importBackendAuthResponse_status = Lens.lens (\ImportBackendAuthResponse' {status} -> status) (\s@ImportBackendAuthResponse' {} a -> s {status = a} :: ImportBackendAuthResponse)
+
+-- | The response's http status code.
+importBackendAuthResponse_httpStatus :: Lens.Lens' ImportBackendAuthResponse Prelude.Int
+importBackendAuthResponse_httpStatus = Lens.lens (\ImportBackendAuthResponse' {httpStatus} -> httpStatus) (\s@ImportBackendAuthResponse' {} a -> s {httpStatus = a} :: ImportBackendAuthResponse)
+
+instance Prelude.NFData ImportBackendAuthResponse where
+  rnf ImportBackendAuthResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/ImportBackendStorage.hs b/gen/Amazonka/AmplifyBackend/ImportBackendStorage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/ImportBackendStorage.hs
@@ -0,0 +1,258 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.ImportBackendStorage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Imports an existing backend storage resource.
+module Amazonka.AmplifyBackend.ImportBackendStorage
+  ( -- * Creating a Request
+    ImportBackendStorage (..),
+    newImportBackendStorage,
+
+    -- * Request Lenses
+    importBackendStorage_bucketName,
+    importBackendStorage_appId,
+    importBackendStorage_backendEnvironmentName,
+    importBackendStorage_serviceName,
+
+    -- * Destructuring the Response
+    ImportBackendStorageResponse (..),
+    newImportBackendStorageResponse,
+
+    -- * Response Lenses
+    importBackendStorageResponse_appId,
+    importBackendStorageResponse_backendEnvironmentName,
+    importBackendStorageResponse_jobId,
+    importBackendStorageResponse_status,
+    importBackendStorageResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for ImportBackendStorage.
+--
+-- /See:/ 'newImportBackendStorage' smart constructor.
+data ImportBackendStorage = ImportBackendStorage'
+  { -- | The name of the S3 bucket.
+    bucketName :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of the storage service.
+    serviceName :: ServiceName
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportBackendStorage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketName', 'importBackendStorage_bucketName' - The name of the S3 bucket.
+--
+-- 'appId', 'importBackendStorage_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'importBackendStorage_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'serviceName', 'importBackendStorage_serviceName' - The name of the storage service.
+newImportBackendStorage ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'serviceName'
+  ServiceName ->
+  ImportBackendStorage
+newImportBackendStorage
+  pAppId_
+  pBackendEnvironmentName_
+  pServiceName_ =
+    ImportBackendStorage'
+      { bucketName = Prelude.Nothing,
+        appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        serviceName = pServiceName_
+      }
+
+-- | The name of the S3 bucket.
+importBackendStorage_bucketName :: Lens.Lens' ImportBackendStorage (Prelude.Maybe Prelude.Text)
+importBackendStorage_bucketName = Lens.lens (\ImportBackendStorage' {bucketName} -> bucketName) (\s@ImportBackendStorage' {} a -> s {bucketName = a} :: ImportBackendStorage)
+
+-- | The app ID.
+importBackendStorage_appId :: Lens.Lens' ImportBackendStorage Prelude.Text
+importBackendStorage_appId = Lens.lens (\ImportBackendStorage' {appId} -> appId) (\s@ImportBackendStorage' {} a -> s {appId = a} :: ImportBackendStorage)
+
+-- | The name of the backend environment.
+importBackendStorage_backendEnvironmentName :: Lens.Lens' ImportBackendStorage Prelude.Text
+importBackendStorage_backendEnvironmentName = Lens.lens (\ImportBackendStorage' {backendEnvironmentName} -> backendEnvironmentName) (\s@ImportBackendStorage' {} a -> s {backendEnvironmentName = a} :: ImportBackendStorage)
+
+-- | The name of the storage service.
+importBackendStorage_serviceName :: Lens.Lens' ImportBackendStorage ServiceName
+importBackendStorage_serviceName = Lens.lens (\ImportBackendStorage' {serviceName} -> serviceName) (\s@ImportBackendStorage' {} a -> s {serviceName = a} :: ImportBackendStorage)
+
+instance Core.AWSRequest ImportBackendStorage where
+  type
+    AWSResponse ImportBackendStorage =
+      ImportBackendStorageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ImportBackendStorageResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ImportBackendStorage where
+  hashWithSalt _salt ImportBackendStorage' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketName
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` serviceName
+
+instance Prelude.NFData ImportBackendStorage where
+  rnf ImportBackendStorage' {..} =
+    Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf serviceName
+
+instance Data.ToHeaders ImportBackendStorage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ImportBackendStorage where
+  toJSON ImportBackendStorage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketName" Data..=) Prelude.<$> bucketName,
+            Prelude.Just ("serviceName" Data..= serviceName)
+          ]
+      )
+
+instance Data.ToPath ImportBackendStorage where
+  toPath ImportBackendStorage' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/storage/",
+        Data.toBS backendEnvironmentName,
+        "/import"
+      ]
+
+instance Data.ToQuery ImportBackendStorage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newImportBackendStorageResponse' smart constructor.
+data ImportBackendStorageResponse = ImportBackendStorageResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'ImportBackendStorageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'importBackendStorageResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'importBackendStorageResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'jobId', 'importBackendStorageResponse_jobId' - The ID for the job.
+--
+-- 'status', 'importBackendStorageResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'importBackendStorageResponse_httpStatus' - The response's http status code.
+newImportBackendStorageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ImportBackendStorageResponse
+newImportBackendStorageResponse pHttpStatus_ =
+  ImportBackendStorageResponse'
+    { appId =
+        Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+importBackendStorageResponse_appId :: Lens.Lens' ImportBackendStorageResponse (Prelude.Maybe Prelude.Text)
+importBackendStorageResponse_appId = Lens.lens (\ImportBackendStorageResponse' {appId} -> appId) (\s@ImportBackendStorageResponse' {} a -> s {appId = a} :: ImportBackendStorageResponse)
+
+-- | The name of the backend environment.
+importBackendStorageResponse_backendEnvironmentName :: Lens.Lens' ImportBackendStorageResponse (Prelude.Maybe Prelude.Text)
+importBackendStorageResponse_backendEnvironmentName = Lens.lens (\ImportBackendStorageResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@ImportBackendStorageResponse' {} a -> s {backendEnvironmentName = a} :: ImportBackendStorageResponse)
+
+-- | The ID for the job.
+importBackendStorageResponse_jobId :: Lens.Lens' ImportBackendStorageResponse (Prelude.Maybe Prelude.Text)
+importBackendStorageResponse_jobId = Lens.lens (\ImportBackendStorageResponse' {jobId} -> jobId) (\s@ImportBackendStorageResponse' {} a -> s {jobId = a} :: ImportBackendStorageResponse)
+
+-- | The current status of the request.
+importBackendStorageResponse_status :: Lens.Lens' ImportBackendStorageResponse (Prelude.Maybe Prelude.Text)
+importBackendStorageResponse_status = Lens.lens (\ImportBackendStorageResponse' {status} -> status) (\s@ImportBackendStorageResponse' {} a -> s {status = a} :: ImportBackendStorageResponse)
+
+-- | The response's http status code.
+importBackendStorageResponse_httpStatus :: Lens.Lens' ImportBackendStorageResponse Prelude.Int
+importBackendStorageResponse_httpStatus = Lens.lens (\ImportBackendStorageResponse' {httpStatus} -> httpStatus) (\s@ImportBackendStorageResponse' {} a -> s {httpStatus = a} :: ImportBackendStorageResponse)
+
+instance Prelude.NFData ImportBackendStorageResponse where
+  rnf ImportBackendStorageResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/Lens.hs b/gen/Amazonka/AmplifyBackend/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Lens.hs
@@ -0,0 +1,609 @@
+{-# 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.AmplifyBackend.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.AmplifyBackend.Lens
+  ( -- * Operations
+
+    -- ** CloneBackend
+    cloneBackend_appId,
+    cloneBackend_backendEnvironmentName,
+    cloneBackend_targetEnvironmentName,
+    cloneBackendResponse_appId,
+    cloneBackendResponse_backendEnvironmentName,
+    cloneBackendResponse_error,
+    cloneBackendResponse_jobId,
+    cloneBackendResponse_operation,
+    cloneBackendResponse_status,
+    cloneBackendResponse_httpStatus,
+
+    -- ** CreateBackend
+    createBackend_resourceConfig,
+    createBackend_resourceName,
+    createBackend_appId,
+    createBackend_backendEnvironmentName,
+    createBackend_appName,
+    createBackendResponse_appId,
+    createBackendResponse_backendEnvironmentName,
+    createBackendResponse_error,
+    createBackendResponse_jobId,
+    createBackendResponse_operation,
+    createBackendResponse_status,
+    createBackendResponse_httpStatus,
+
+    -- ** CreateBackendAPI
+    createBackendAPI_appId,
+    createBackendAPI_resourceName,
+    createBackendAPI_backendEnvironmentName,
+    createBackendAPI_resourceConfig,
+    createBackendAPIResponse_appId,
+    createBackendAPIResponse_backendEnvironmentName,
+    createBackendAPIResponse_error,
+    createBackendAPIResponse_jobId,
+    createBackendAPIResponse_operation,
+    createBackendAPIResponse_status,
+    createBackendAPIResponse_httpStatus,
+
+    -- ** CreateBackendAuth
+    createBackendAuth_appId,
+    createBackendAuth_resourceName,
+    createBackendAuth_backendEnvironmentName,
+    createBackendAuth_resourceConfig,
+    createBackendAuthResponse_appId,
+    createBackendAuthResponse_backendEnvironmentName,
+    createBackendAuthResponse_error,
+    createBackendAuthResponse_jobId,
+    createBackendAuthResponse_operation,
+    createBackendAuthResponse_status,
+    createBackendAuthResponse_httpStatus,
+
+    -- ** CreateBackendConfig
+    createBackendConfig_backendManagerAppId,
+    createBackendConfig_appId,
+    createBackendConfigResponse_appId,
+    createBackendConfigResponse_backendEnvironmentName,
+    createBackendConfigResponse_jobId,
+    createBackendConfigResponse_status,
+    createBackendConfigResponse_httpStatus,
+
+    -- ** CreateBackendStorage
+    createBackendStorage_appId,
+    createBackendStorage_resourceName,
+    createBackendStorage_backendEnvironmentName,
+    createBackendStorage_resourceConfig,
+    createBackendStorageResponse_appId,
+    createBackendStorageResponse_backendEnvironmentName,
+    createBackendStorageResponse_jobId,
+    createBackendStorageResponse_status,
+    createBackendStorageResponse_httpStatus,
+
+    -- ** CreateToken
+    createToken_appId,
+    createTokenResponse_appId,
+    createTokenResponse_challengeCode,
+    createTokenResponse_sessionId,
+    createTokenResponse_ttl,
+    createTokenResponse_httpStatus,
+
+    -- ** DeleteBackend
+    deleteBackend_appId,
+    deleteBackend_backendEnvironmentName,
+    deleteBackendResponse_appId,
+    deleteBackendResponse_backendEnvironmentName,
+    deleteBackendResponse_error,
+    deleteBackendResponse_jobId,
+    deleteBackendResponse_operation,
+    deleteBackendResponse_status,
+    deleteBackendResponse_httpStatus,
+
+    -- ** DeleteBackendAPI
+    deleteBackendAPI_resourceConfig,
+    deleteBackendAPI_appId,
+    deleteBackendAPI_backendEnvironmentName,
+    deleteBackendAPI_resourceName,
+    deleteBackendAPIResponse_appId,
+    deleteBackendAPIResponse_backendEnvironmentName,
+    deleteBackendAPIResponse_error,
+    deleteBackendAPIResponse_jobId,
+    deleteBackendAPIResponse_operation,
+    deleteBackendAPIResponse_status,
+    deleteBackendAPIResponse_httpStatus,
+
+    -- ** DeleteBackendAuth
+    deleteBackendAuth_appId,
+    deleteBackendAuth_backendEnvironmentName,
+    deleteBackendAuth_resourceName,
+    deleteBackendAuthResponse_appId,
+    deleteBackendAuthResponse_backendEnvironmentName,
+    deleteBackendAuthResponse_error,
+    deleteBackendAuthResponse_jobId,
+    deleteBackendAuthResponse_operation,
+    deleteBackendAuthResponse_status,
+    deleteBackendAuthResponse_httpStatus,
+
+    -- ** DeleteBackendStorage
+    deleteBackendStorage_appId,
+    deleteBackendStorage_backendEnvironmentName,
+    deleteBackendStorage_serviceName,
+    deleteBackendStorage_resourceName,
+    deleteBackendStorageResponse_appId,
+    deleteBackendStorageResponse_backendEnvironmentName,
+    deleteBackendStorageResponse_jobId,
+    deleteBackendStorageResponse_status,
+    deleteBackendStorageResponse_httpStatus,
+
+    -- ** DeleteToken
+    deleteToken_sessionId,
+    deleteToken_appId,
+    deleteTokenResponse_isSuccess,
+    deleteTokenResponse_httpStatus,
+
+    -- ** GenerateBackendAPIModels
+    generateBackendAPIModels_appId,
+    generateBackendAPIModels_backendEnvironmentName,
+    generateBackendAPIModels_resourceName,
+    generateBackendAPIModelsResponse_appId,
+    generateBackendAPIModelsResponse_backendEnvironmentName,
+    generateBackendAPIModelsResponse_error,
+    generateBackendAPIModelsResponse_jobId,
+    generateBackendAPIModelsResponse_operation,
+    generateBackendAPIModelsResponse_status,
+    generateBackendAPIModelsResponse_httpStatus,
+
+    -- ** GetBackend
+    getBackend_backendEnvironmentName,
+    getBackend_appId,
+    getBackendResponse_amplifyFeatureFlags,
+    getBackendResponse_amplifyMetaConfig,
+    getBackendResponse_appId,
+    getBackendResponse_appName,
+    getBackendResponse_backendEnvironmentList,
+    getBackendResponse_backendEnvironmentName,
+    getBackendResponse_error,
+    getBackendResponse_httpStatus,
+
+    -- ** GetBackendAPI
+    getBackendAPI_resourceConfig,
+    getBackendAPI_appId,
+    getBackendAPI_backendEnvironmentName,
+    getBackendAPI_resourceName,
+    getBackendAPIResponse_appId,
+    getBackendAPIResponse_backendEnvironmentName,
+    getBackendAPIResponse_error,
+    getBackendAPIResponse_resourceConfig,
+    getBackendAPIResponse_resourceName,
+    getBackendAPIResponse_httpStatus,
+
+    -- ** GetBackendAPIModels
+    getBackendAPIModels_appId,
+    getBackendAPIModels_backendEnvironmentName,
+    getBackendAPIModels_resourceName,
+    getBackendAPIModelsResponse_modelIntrospectionSchema,
+    getBackendAPIModelsResponse_models,
+    getBackendAPIModelsResponse_status,
+    getBackendAPIModelsResponse_httpStatus,
+
+    -- ** GetBackendAuth
+    getBackendAuth_appId,
+    getBackendAuth_backendEnvironmentName,
+    getBackendAuth_resourceName,
+    getBackendAuthResponse_appId,
+    getBackendAuthResponse_backendEnvironmentName,
+    getBackendAuthResponse_error,
+    getBackendAuthResponse_resourceConfig,
+    getBackendAuthResponse_resourceName,
+    getBackendAuthResponse_httpStatus,
+
+    -- ** GetBackendJob
+    getBackendJob_appId,
+    getBackendJob_backendEnvironmentName,
+    getBackendJob_jobId,
+    getBackendJobResponse_appId,
+    getBackendJobResponse_backendEnvironmentName,
+    getBackendJobResponse_createTime,
+    getBackendJobResponse_error,
+    getBackendJobResponse_jobId,
+    getBackendJobResponse_operation,
+    getBackendJobResponse_status,
+    getBackendJobResponse_updateTime,
+    getBackendJobResponse_httpStatus,
+
+    -- ** GetBackendStorage
+    getBackendStorage_appId,
+    getBackendStorage_backendEnvironmentName,
+    getBackendStorage_resourceName,
+    getBackendStorageResponse_appId,
+    getBackendStorageResponse_backendEnvironmentName,
+    getBackendStorageResponse_resourceConfig,
+    getBackendStorageResponse_resourceName,
+    getBackendStorageResponse_httpStatus,
+
+    -- ** GetToken
+    getToken_sessionId,
+    getToken_appId,
+    getTokenResponse_appId,
+    getTokenResponse_challengeCode,
+    getTokenResponse_sessionId,
+    getTokenResponse_ttl,
+    getTokenResponse_httpStatus,
+
+    -- ** ImportBackendAuth
+    importBackendAuth_identityPoolId,
+    importBackendAuth_appId,
+    importBackendAuth_backendEnvironmentName,
+    importBackendAuth_userPoolId,
+    importBackendAuth_nativeClientId,
+    importBackendAuth_webClientId,
+    importBackendAuthResponse_appId,
+    importBackendAuthResponse_backendEnvironmentName,
+    importBackendAuthResponse_error,
+    importBackendAuthResponse_jobId,
+    importBackendAuthResponse_operation,
+    importBackendAuthResponse_status,
+    importBackendAuthResponse_httpStatus,
+
+    -- ** ImportBackendStorage
+    importBackendStorage_bucketName,
+    importBackendStorage_appId,
+    importBackendStorage_backendEnvironmentName,
+    importBackendStorage_serviceName,
+    importBackendStorageResponse_appId,
+    importBackendStorageResponse_backendEnvironmentName,
+    importBackendStorageResponse_jobId,
+    importBackendStorageResponse_status,
+    importBackendStorageResponse_httpStatus,
+
+    -- ** ListBackendJobs
+    listBackendJobs_jobId,
+    listBackendJobs_maxResults,
+    listBackendJobs_nextToken,
+    listBackendJobs_operation,
+    listBackendJobs_status,
+    listBackendJobs_appId,
+    listBackendJobs_backendEnvironmentName,
+    listBackendJobsResponse_jobs,
+    listBackendJobsResponse_nextToken,
+    listBackendJobsResponse_httpStatus,
+
+    -- ** ListS3Buckets
+    listS3Buckets_nextToken,
+    listS3BucketsResponse_buckets,
+    listS3BucketsResponse_nextToken,
+    listS3BucketsResponse_httpStatus,
+
+    -- ** RemoveAllBackends
+    removeAllBackends_cleanAmplifyApp,
+    removeAllBackends_appId,
+    removeAllBackendsResponse_appId,
+    removeAllBackendsResponse_error,
+    removeAllBackendsResponse_jobId,
+    removeAllBackendsResponse_operation,
+    removeAllBackendsResponse_status,
+    removeAllBackendsResponse_httpStatus,
+
+    -- ** RemoveBackendConfig
+    removeBackendConfig_appId,
+    removeBackendConfigResponse_error,
+    removeBackendConfigResponse_httpStatus,
+
+    -- ** UpdateBackendAPI
+    updateBackendAPI_resourceConfig,
+    updateBackendAPI_appId,
+    updateBackendAPI_backendEnvironmentName,
+    updateBackendAPI_resourceName,
+    updateBackendAPIResponse_appId,
+    updateBackendAPIResponse_backendEnvironmentName,
+    updateBackendAPIResponse_error,
+    updateBackendAPIResponse_jobId,
+    updateBackendAPIResponse_operation,
+    updateBackendAPIResponse_status,
+    updateBackendAPIResponse_httpStatus,
+
+    -- ** UpdateBackendAuth
+    updateBackendAuth_appId,
+    updateBackendAuth_backendEnvironmentName,
+    updateBackendAuth_resourceName,
+    updateBackendAuth_resourceConfig,
+    updateBackendAuthResponse_appId,
+    updateBackendAuthResponse_backendEnvironmentName,
+    updateBackendAuthResponse_error,
+    updateBackendAuthResponse_jobId,
+    updateBackendAuthResponse_operation,
+    updateBackendAuthResponse_status,
+    updateBackendAuthResponse_httpStatus,
+
+    -- ** UpdateBackendConfig
+    updateBackendConfig_loginAuthConfig,
+    updateBackendConfig_appId,
+    updateBackendConfigResponse_appId,
+    updateBackendConfigResponse_backendManagerAppId,
+    updateBackendConfigResponse_error,
+    updateBackendConfigResponse_loginAuthConfig,
+    updateBackendConfigResponse_httpStatus,
+
+    -- ** UpdateBackendJob
+    updateBackendJob_operation,
+    updateBackendJob_status,
+    updateBackendJob_appId,
+    updateBackendJob_backendEnvironmentName,
+    updateBackendJob_jobId,
+    updateBackendJobResponse_appId,
+    updateBackendJobResponse_backendEnvironmentName,
+    updateBackendJobResponse_createTime,
+    updateBackendJobResponse_error,
+    updateBackendJobResponse_jobId,
+    updateBackendJobResponse_operation,
+    updateBackendJobResponse_status,
+    updateBackendJobResponse_updateTime,
+    updateBackendJobResponse_httpStatus,
+
+    -- ** UpdateBackendStorage
+    updateBackendStorage_appId,
+    updateBackendStorage_backendEnvironmentName,
+    updateBackendStorage_resourceName,
+    updateBackendStorage_resourceConfig,
+    updateBackendStorageResponse_appId,
+    updateBackendStorageResponse_backendEnvironmentName,
+    updateBackendStorageResponse_jobId,
+    updateBackendStorageResponse_status,
+    updateBackendStorageResponse_httpStatus,
+
+    -- * Types
+
+    -- ** BackendAPIAppSyncAuthSettings
+    backendAPIAppSyncAuthSettings_cognitoUserPoolId,
+    backendAPIAppSyncAuthSettings_description,
+    backendAPIAppSyncAuthSettings_expirationTime,
+    backendAPIAppSyncAuthSettings_openIDAuthTTL,
+    backendAPIAppSyncAuthSettings_openIDClientId,
+    backendAPIAppSyncAuthSettings_openIDIatTTL,
+    backendAPIAppSyncAuthSettings_openIDIssueURL,
+    backendAPIAppSyncAuthSettings_openIDProviderName,
+
+    -- ** BackendAPIAuthType
+    backendAPIAuthType_mode,
+    backendAPIAuthType_settings,
+
+    -- ** BackendAPIConflictResolution
+    backendAPIConflictResolution_resolutionStrategy,
+
+    -- ** BackendAPIResourceConfig
+    backendAPIResourceConfig_additionalAuthTypes,
+    backendAPIResourceConfig_apiName,
+    backendAPIResourceConfig_conflictResolution,
+    backendAPIResourceConfig_defaultAuthType,
+    backendAPIResourceConfig_service,
+    backendAPIResourceConfig_transformSchema,
+
+    -- ** BackendAuthAppleProviderConfig
+    backendAuthAppleProviderConfig_clientId,
+    backendAuthAppleProviderConfig_keyId,
+    backendAuthAppleProviderConfig_privateKey,
+    backendAuthAppleProviderConfig_teamId,
+
+    -- ** BackendAuthSocialProviderConfig
+    backendAuthSocialProviderConfig_clientId,
+    backendAuthSocialProviderConfig_clientSecret,
+
+    -- ** BackendJobRespObj
+    backendJobRespObj_createTime,
+    backendJobRespObj_error,
+    backendJobRespObj_jobId,
+    backendJobRespObj_operation,
+    backendJobRespObj_status,
+    backendJobRespObj_updateTime,
+    backendJobRespObj_appId,
+    backendJobRespObj_backendEnvironmentName,
+
+    -- ** BackendStoragePermissions
+    backendStoragePermissions_unAuthenticated,
+    backendStoragePermissions_authenticated,
+
+    -- ** CreateBackendAuthForgotPasswordConfig
+    createBackendAuthForgotPasswordConfig_emailSettings,
+    createBackendAuthForgotPasswordConfig_smsSettings,
+    createBackendAuthForgotPasswordConfig_deliveryMethod,
+
+    -- ** CreateBackendAuthIdentityPoolConfig
+    createBackendAuthIdentityPoolConfig_unauthenticatedLogin,
+    createBackendAuthIdentityPoolConfig_identityPoolName,
+
+    -- ** CreateBackendAuthMFAConfig
+    createBackendAuthMFAConfig_settings,
+    createBackendAuthMFAConfig_mfaMode,
+
+    -- ** CreateBackendAuthOAuthConfig
+    createBackendAuthOAuthConfig_domainPrefix,
+    createBackendAuthOAuthConfig_socialProviderSettings,
+    createBackendAuthOAuthConfig_redirectSignOutURIs,
+    createBackendAuthOAuthConfig_redirectSignInURIs,
+    createBackendAuthOAuthConfig_oAuthGrantType,
+    createBackendAuthOAuthConfig_oAuthScopes,
+
+    -- ** CreateBackendAuthPasswordPolicyConfig
+    createBackendAuthPasswordPolicyConfig_additionalConstraints,
+    createBackendAuthPasswordPolicyConfig_minimumLength,
+
+    -- ** CreateBackendAuthResourceConfig
+    createBackendAuthResourceConfig_identityPoolConfigs,
+    createBackendAuthResourceConfig_authResources,
+    createBackendAuthResourceConfig_userPoolConfigs,
+    createBackendAuthResourceConfig_service,
+
+    -- ** CreateBackendAuthUserPoolConfig
+    createBackendAuthUserPoolConfig_forgotPassword,
+    createBackendAuthUserPoolConfig_mfa,
+    createBackendAuthUserPoolConfig_oAuth,
+    createBackendAuthUserPoolConfig_passwordPolicy,
+    createBackendAuthUserPoolConfig_verificationMessage,
+    createBackendAuthUserPoolConfig_requiredSignUpAttributes,
+    createBackendAuthUserPoolConfig_signInMethod,
+    createBackendAuthUserPoolConfig_userPoolName,
+
+    -- ** CreateBackendAuthVerificationMessageConfig
+    createBackendAuthVerificationMessageConfig_emailSettings,
+    createBackendAuthVerificationMessageConfig_smsSettings,
+    createBackendAuthVerificationMessageConfig_deliveryMethod,
+
+    -- ** CreateBackendStorageResourceConfig
+    createBackendStorageResourceConfig_bucketName,
+    createBackendStorageResourceConfig_serviceName,
+    createBackendStorageResourceConfig_permissions,
+
+    -- ** EmailSettings
+    emailSettings_emailMessage,
+    emailSettings_emailSubject,
+
+    -- ** GetBackendStorageResourceConfig
+    getBackendStorageResourceConfig_bucketName,
+    getBackendStorageResourceConfig_permissions,
+    getBackendStorageResourceConfig_serviceName,
+    getBackendStorageResourceConfig_imported,
+
+    -- ** LoginAuthConfigReqObj
+    loginAuthConfigReqObj_awsCognitoIdentityPoolId,
+    loginAuthConfigReqObj_awsCognitoRegion,
+    loginAuthConfigReqObj_awsUserPoolsId,
+    loginAuthConfigReqObj_awsUserPoolsWebClientId,
+
+    -- ** ResourceConfig
+
+    -- ** S3BucketInfo
+    s3BucketInfo_creationDate,
+    s3BucketInfo_name,
+
+    -- ** Settings
+    settings_mfaTypes,
+    settings_smsMessage,
+
+    -- ** SmsSettings
+    smsSettings_smsMessage,
+
+    -- ** SocialProviderSettings
+    socialProviderSettings_facebook,
+    socialProviderSettings_google,
+    socialProviderSettings_loginWithAmazon,
+    socialProviderSettings_signInWithApple,
+
+    -- ** UpdateBackendAuthForgotPasswordConfig
+    updateBackendAuthForgotPasswordConfig_deliveryMethod,
+    updateBackendAuthForgotPasswordConfig_emailSettings,
+    updateBackendAuthForgotPasswordConfig_smsSettings,
+
+    -- ** UpdateBackendAuthIdentityPoolConfig
+    updateBackendAuthIdentityPoolConfig_unauthenticatedLogin,
+
+    -- ** UpdateBackendAuthMFAConfig
+    updateBackendAuthMFAConfig_mfaMode,
+    updateBackendAuthMFAConfig_settings,
+
+    -- ** UpdateBackendAuthOAuthConfig
+    updateBackendAuthOAuthConfig_domainPrefix,
+    updateBackendAuthOAuthConfig_oAuthGrantType,
+    updateBackendAuthOAuthConfig_oAuthScopes,
+    updateBackendAuthOAuthConfig_redirectSignInURIs,
+    updateBackendAuthOAuthConfig_redirectSignOutURIs,
+    updateBackendAuthOAuthConfig_socialProviderSettings,
+
+    -- ** UpdateBackendAuthPasswordPolicyConfig
+    updateBackendAuthPasswordPolicyConfig_additionalConstraints,
+    updateBackendAuthPasswordPolicyConfig_minimumLength,
+
+    -- ** UpdateBackendAuthResourceConfig
+    updateBackendAuthResourceConfig_identityPoolConfigs,
+    updateBackendAuthResourceConfig_authResources,
+    updateBackendAuthResourceConfig_userPoolConfigs,
+    updateBackendAuthResourceConfig_service,
+
+    -- ** UpdateBackendAuthUserPoolConfig
+    updateBackendAuthUserPoolConfig_forgotPassword,
+    updateBackendAuthUserPoolConfig_mfa,
+    updateBackendAuthUserPoolConfig_oAuth,
+    updateBackendAuthUserPoolConfig_passwordPolicy,
+    updateBackendAuthUserPoolConfig_verificationMessage,
+
+    -- ** UpdateBackendAuthVerificationMessageConfig
+    updateBackendAuthVerificationMessageConfig_emailSettings,
+    updateBackendAuthVerificationMessageConfig_smsSettings,
+    updateBackendAuthVerificationMessageConfig_deliveryMethod,
+
+    -- ** UpdateBackendStorageResourceConfig
+    updateBackendStorageResourceConfig_serviceName,
+    updateBackendStorageResourceConfig_permissions,
+  )
+where
+
+import Amazonka.AmplifyBackend.CloneBackend
+import Amazonka.AmplifyBackend.CreateBackend
+import Amazonka.AmplifyBackend.CreateBackendAPI
+import Amazonka.AmplifyBackend.CreateBackendAuth
+import Amazonka.AmplifyBackend.CreateBackendConfig
+import Amazonka.AmplifyBackend.CreateBackendStorage
+import Amazonka.AmplifyBackend.CreateToken
+import Amazonka.AmplifyBackend.DeleteBackend
+import Amazonka.AmplifyBackend.DeleteBackendAPI
+import Amazonka.AmplifyBackend.DeleteBackendAuth
+import Amazonka.AmplifyBackend.DeleteBackendStorage
+import Amazonka.AmplifyBackend.DeleteToken
+import Amazonka.AmplifyBackend.GenerateBackendAPIModels
+import Amazonka.AmplifyBackend.GetBackend
+import Amazonka.AmplifyBackend.GetBackendAPI
+import Amazonka.AmplifyBackend.GetBackendAPIModels
+import Amazonka.AmplifyBackend.GetBackendAuth
+import Amazonka.AmplifyBackend.GetBackendJob
+import Amazonka.AmplifyBackend.GetBackendStorage
+import Amazonka.AmplifyBackend.GetToken
+import Amazonka.AmplifyBackend.ImportBackendAuth
+import Amazonka.AmplifyBackend.ImportBackendStorage
+import Amazonka.AmplifyBackend.ListBackendJobs
+import Amazonka.AmplifyBackend.ListS3Buckets
+import Amazonka.AmplifyBackend.RemoveAllBackends
+import Amazonka.AmplifyBackend.RemoveBackendConfig
+import Amazonka.AmplifyBackend.Types.BackendAPIAppSyncAuthSettings
+import Amazonka.AmplifyBackend.Types.BackendAPIAuthType
+import Amazonka.AmplifyBackend.Types.BackendAPIConflictResolution
+import Amazonka.AmplifyBackend.Types.BackendAPIResourceConfig
+import Amazonka.AmplifyBackend.Types.BackendAuthAppleProviderConfig
+import Amazonka.AmplifyBackend.Types.BackendAuthSocialProviderConfig
+import Amazonka.AmplifyBackend.Types.BackendJobRespObj
+import Amazonka.AmplifyBackend.Types.BackendStoragePermissions
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthForgotPasswordConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthIdentityPoolConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthMFAConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthOAuthConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthPasswordPolicyConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthResourceConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthUserPoolConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthVerificationMessageConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendStorageResourceConfig
+import Amazonka.AmplifyBackend.Types.EmailSettings
+import Amazonka.AmplifyBackend.Types.GetBackendStorageResourceConfig
+import Amazonka.AmplifyBackend.Types.LoginAuthConfigReqObj
+import Amazonka.AmplifyBackend.Types.ResourceConfig
+import Amazonka.AmplifyBackend.Types.S3BucketInfo
+import Amazonka.AmplifyBackend.Types.Settings
+import Amazonka.AmplifyBackend.Types.SmsSettings
+import Amazonka.AmplifyBackend.Types.SocialProviderSettings
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthForgotPasswordConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthIdentityPoolConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthMFAConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthOAuthConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthPasswordPolicyConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthResourceConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthUserPoolConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthVerificationMessageConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendStorageResourceConfig
+import Amazonka.AmplifyBackend.UpdateBackendAPI
+import Amazonka.AmplifyBackend.UpdateBackendAuth
+import Amazonka.AmplifyBackend.UpdateBackendConfig
+import Amazonka.AmplifyBackend.UpdateBackendJob
+import Amazonka.AmplifyBackend.UpdateBackendStorage
diff --git a/gen/Amazonka/AmplifyBackend/ListBackendJobs.hs b/gen/Amazonka/AmplifyBackend/ListBackendJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/ListBackendJobs.hs
@@ -0,0 +1,296 @@
+{-# 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.AmplifyBackend.ListBackendJobs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the jobs for the backend of an Amplify app.
+--
+-- This operation returns paginated results.
+module Amazonka.AmplifyBackend.ListBackendJobs
+  ( -- * Creating a Request
+    ListBackendJobs (..),
+    newListBackendJobs,
+
+    -- * Request Lenses
+    listBackendJobs_jobId,
+    listBackendJobs_maxResults,
+    listBackendJobs_nextToken,
+    listBackendJobs_operation,
+    listBackendJobs_status,
+    listBackendJobs_appId,
+    listBackendJobs_backendEnvironmentName,
+
+    -- * Destructuring the Response
+    ListBackendJobsResponse (..),
+    newListBackendJobsResponse,
+
+    -- * Response Lenses
+    listBackendJobsResponse_jobs,
+    listBackendJobsResponse_nextToken,
+    listBackendJobsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for ListBackendJobs.
+--
+-- /See:/ 'newListBackendJobs' smart constructor.
+data ListBackendJobs = ListBackendJobs'
+  { -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results that you want in the response.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Filters the list of response objects to include only those with the
+    -- specified operation name.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | Filters the list of response objects to include only those with the
+    -- specified status.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBackendJobs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'jobId', 'listBackendJobs_jobId' - The ID for the job.
+--
+-- 'maxResults', 'listBackendJobs_maxResults' - The maximum number of results that you want in the response.
+--
+-- 'nextToken', 'listBackendJobs_nextToken' - The token for the next set of results.
+--
+-- 'operation', 'listBackendJobs_operation' - Filters the list of response objects to include only those with the
+-- specified operation name.
+--
+-- 'status', 'listBackendJobs_status' - Filters the list of response objects to include only those with the
+-- specified status.
+--
+-- 'appId', 'listBackendJobs_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'listBackendJobs_backendEnvironmentName' - The name of the backend environment.
+newListBackendJobs ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  ListBackendJobs
+newListBackendJobs pAppId_ pBackendEnvironmentName_ =
+  ListBackendJobs'
+    { jobId = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      appId = pAppId_,
+      backendEnvironmentName = pBackendEnvironmentName_
+    }
+
+-- | The ID for the job.
+listBackendJobs_jobId :: Lens.Lens' ListBackendJobs (Prelude.Maybe Prelude.Text)
+listBackendJobs_jobId = Lens.lens (\ListBackendJobs' {jobId} -> jobId) (\s@ListBackendJobs' {} a -> s {jobId = a} :: ListBackendJobs)
+
+-- | The maximum number of results that you want in the response.
+listBackendJobs_maxResults :: Lens.Lens' ListBackendJobs (Prelude.Maybe Prelude.Natural)
+listBackendJobs_maxResults = Lens.lens (\ListBackendJobs' {maxResults} -> maxResults) (\s@ListBackendJobs' {} a -> s {maxResults = a} :: ListBackendJobs)
+
+-- | The token for the next set of results.
+listBackendJobs_nextToken :: Lens.Lens' ListBackendJobs (Prelude.Maybe Prelude.Text)
+listBackendJobs_nextToken = Lens.lens (\ListBackendJobs' {nextToken} -> nextToken) (\s@ListBackendJobs' {} a -> s {nextToken = a} :: ListBackendJobs)
+
+-- | Filters the list of response objects to include only those with the
+-- specified operation name.
+listBackendJobs_operation :: Lens.Lens' ListBackendJobs (Prelude.Maybe Prelude.Text)
+listBackendJobs_operation = Lens.lens (\ListBackendJobs' {operation} -> operation) (\s@ListBackendJobs' {} a -> s {operation = a} :: ListBackendJobs)
+
+-- | Filters the list of response objects to include only those with the
+-- specified status.
+listBackendJobs_status :: Lens.Lens' ListBackendJobs (Prelude.Maybe Prelude.Text)
+listBackendJobs_status = Lens.lens (\ListBackendJobs' {status} -> status) (\s@ListBackendJobs' {} a -> s {status = a} :: ListBackendJobs)
+
+-- | The app ID.
+listBackendJobs_appId :: Lens.Lens' ListBackendJobs Prelude.Text
+listBackendJobs_appId = Lens.lens (\ListBackendJobs' {appId} -> appId) (\s@ListBackendJobs' {} a -> s {appId = a} :: ListBackendJobs)
+
+-- | The name of the backend environment.
+listBackendJobs_backendEnvironmentName :: Lens.Lens' ListBackendJobs Prelude.Text
+listBackendJobs_backendEnvironmentName = Lens.lens (\ListBackendJobs' {backendEnvironmentName} -> backendEnvironmentName) (\s@ListBackendJobs' {} a -> s {backendEnvironmentName = a} :: ListBackendJobs)
+
+instance Core.AWSPager ListBackendJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listBackendJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listBackendJobsResponse_jobs
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listBackendJobs_nextToken
+          Lens..~ rs
+          Lens.^? listBackendJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListBackendJobs where
+  type
+    AWSResponse ListBackendJobs =
+      ListBackendJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListBackendJobsResponse'
+            Prelude.<$> (x Data..?> "jobs" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListBackendJobs where
+  hashWithSalt _salt ListBackendJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` jobId
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` operation
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+
+instance Prelude.NFData ListBackendJobs where
+  rnf ListBackendJobs' {..} =
+    Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+
+instance Data.ToHeaders ListBackendJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListBackendJobs where
+  toJSON ListBackendJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("jobId" Data..=) Prelude.<$> jobId,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            ("operation" Data..=) Prelude.<$> operation,
+            ("status" Data..=) Prelude.<$> status
+          ]
+      )
+
+instance Data.ToPath ListBackendJobs where
+  toPath ListBackendJobs' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/job/",
+        Data.toBS backendEnvironmentName
+      ]
+
+instance Data.ToQuery ListBackendJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListBackendJobsResponse' smart constructor.
+data ListBackendJobsResponse = ListBackendJobsResponse'
+  { -- | An array of jobs and their properties.
+    jobs :: Prelude.Maybe [BackendJobRespObj],
+    -- | The token for the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListBackendJobsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'jobs', 'listBackendJobsResponse_jobs' - An array of jobs and their properties.
+--
+-- 'nextToken', 'listBackendJobsResponse_nextToken' - The token for the next set of results.
+--
+-- 'httpStatus', 'listBackendJobsResponse_httpStatus' - The response's http status code.
+newListBackendJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListBackendJobsResponse
+newListBackendJobsResponse pHttpStatus_ =
+  ListBackendJobsResponse'
+    { jobs = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of jobs and their properties.
+listBackendJobsResponse_jobs :: Lens.Lens' ListBackendJobsResponse (Prelude.Maybe [BackendJobRespObj])
+listBackendJobsResponse_jobs = Lens.lens (\ListBackendJobsResponse' {jobs} -> jobs) (\s@ListBackendJobsResponse' {} a -> s {jobs = a} :: ListBackendJobsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token for the next set of results.
+listBackendJobsResponse_nextToken :: Lens.Lens' ListBackendJobsResponse (Prelude.Maybe Prelude.Text)
+listBackendJobsResponse_nextToken = Lens.lens (\ListBackendJobsResponse' {nextToken} -> nextToken) (\s@ListBackendJobsResponse' {} a -> s {nextToken = a} :: ListBackendJobsResponse)
+
+-- | The response's http status code.
+listBackendJobsResponse_httpStatus :: Lens.Lens' ListBackendJobsResponse Prelude.Int
+listBackendJobsResponse_httpStatus = Lens.lens (\ListBackendJobsResponse' {httpStatus} -> httpStatus) (\s@ListBackendJobsResponse' {} a -> s {httpStatus = a} :: ListBackendJobsResponse)
+
+instance Prelude.NFData ListBackendJobsResponse where
+  rnf ListBackendJobsResponse' {..} =
+    Prelude.rnf jobs
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/ListS3Buckets.hs b/gen/Amazonka/AmplifyBackend/ListS3Buckets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/ListS3Buckets.hs
@@ -0,0 +1,175 @@
+{-# 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.AmplifyBackend.ListS3Buckets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- The list of S3 buckets in your account.
+module Amazonka.AmplifyBackend.ListS3Buckets
+  ( -- * Creating a Request
+    ListS3Buckets (..),
+    newListS3Buckets,
+
+    -- * Request Lenses
+    listS3Buckets_nextToken,
+
+    -- * Destructuring the Response
+    ListS3BucketsResponse (..),
+    newListS3BucketsResponse,
+
+    -- * Response Lenses
+    listS3BucketsResponse_buckets,
+    listS3BucketsResponse_nextToken,
+    listS3BucketsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for S3Buckets.
+--
+-- /See:/ 'newListS3Buckets' smart constructor.
+data ListS3Buckets = ListS3Buckets'
+  { -- | Reserved for future use.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListS3Buckets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listS3Buckets_nextToken' - Reserved for future use.
+newListS3Buckets ::
+  ListS3Buckets
+newListS3Buckets =
+  ListS3Buckets' {nextToken = Prelude.Nothing}
+
+-- | Reserved for future use.
+listS3Buckets_nextToken :: Lens.Lens' ListS3Buckets (Prelude.Maybe Prelude.Text)
+listS3Buckets_nextToken = Lens.lens (\ListS3Buckets' {nextToken} -> nextToken) (\s@ListS3Buckets' {} a -> s {nextToken = a} :: ListS3Buckets)
+
+instance Core.AWSRequest ListS3Buckets where
+  type
+    AWSResponse ListS3Buckets =
+      ListS3BucketsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListS3BucketsResponse'
+            Prelude.<$> (x Data..?> "buckets" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListS3Buckets where
+  hashWithSalt _salt ListS3Buckets' {..} =
+    _salt `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListS3Buckets where
+  rnf ListS3Buckets' {..} = Prelude.rnf nextToken
+
+instance Data.ToHeaders ListS3Buckets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListS3Buckets where
+  toJSON ListS3Buckets' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("nextToken" Data..=) Prelude.<$> nextToken]
+      )
+
+instance Data.ToPath ListS3Buckets where
+  toPath = Prelude.const "/s3Buckets"
+
+instance Data.ToQuery ListS3Buckets where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListS3BucketsResponse' smart constructor.
+data ListS3BucketsResponse = ListS3BucketsResponse'
+  { -- | The list of S3 buckets.
+    buckets :: Prelude.Maybe [S3BucketInfo],
+    -- | Reserved for future use.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListS3BucketsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'buckets', 'listS3BucketsResponse_buckets' - The list of S3 buckets.
+--
+-- 'nextToken', 'listS3BucketsResponse_nextToken' - Reserved for future use.
+--
+-- 'httpStatus', 'listS3BucketsResponse_httpStatus' - The response's http status code.
+newListS3BucketsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListS3BucketsResponse
+newListS3BucketsResponse pHttpStatus_ =
+  ListS3BucketsResponse'
+    { buckets = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of S3 buckets.
+listS3BucketsResponse_buckets :: Lens.Lens' ListS3BucketsResponse (Prelude.Maybe [S3BucketInfo])
+listS3BucketsResponse_buckets = Lens.lens (\ListS3BucketsResponse' {buckets} -> buckets) (\s@ListS3BucketsResponse' {} a -> s {buckets = a} :: ListS3BucketsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Reserved for future use.
+listS3BucketsResponse_nextToken :: Lens.Lens' ListS3BucketsResponse (Prelude.Maybe Prelude.Text)
+listS3BucketsResponse_nextToken = Lens.lens (\ListS3BucketsResponse' {nextToken} -> nextToken) (\s@ListS3BucketsResponse' {} a -> s {nextToken = a} :: ListS3BucketsResponse)
+
+-- | The response's http status code.
+listS3BucketsResponse_httpStatus :: Lens.Lens' ListS3BucketsResponse Prelude.Int
+listS3BucketsResponse_httpStatus = Lens.lens (\ListS3BucketsResponse' {httpStatus} -> httpStatus) (\s@ListS3BucketsResponse' {} a -> s {httpStatus = a} :: ListS3BucketsResponse)
+
+instance Prelude.NFData ListS3BucketsResponse where
+  rnf ListS3BucketsResponse' {..} =
+    Prelude.rnf buckets
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/RemoveAllBackends.hs b/gen/Amazonka/AmplifyBackend/RemoveAllBackends.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/RemoveAllBackends.hs
@@ -0,0 +1,234 @@
+{-# 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.AmplifyBackend.RemoveAllBackends
+-- 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 all backend environments from your Amplify project.
+module Amazonka.AmplifyBackend.RemoveAllBackends
+  ( -- * Creating a Request
+    RemoveAllBackends (..),
+    newRemoveAllBackends,
+
+    -- * Request Lenses
+    removeAllBackends_cleanAmplifyApp,
+    removeAllBackends_appId,
+
+    -- * Destructuring the Response
+    RemoveAllBackendsResponse (..),
+    newRemoveAllBackendsResponse,
+
+    -- * Response Lenses
+    removeAllBackendsResponse_appId,
+    removeAllBackendsResponse_error,
+    removeAllBackendsResponse_jobId,
+    removeAllBackendsResponse_operation,
+    removeAllBackendsResponse_status,
+    removeAllBackendsResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for RemoveAllBackends.
+--
+-- /See:/ 'newRemoveAllBackends' smart constructor.
+data RemoveAllBackends = RemoveAllBackends'
+  { -- | Cleans up the Amplify Console app if this value is set to true.
+    cleanAmplifyApp :: Prelude.Maybe Prelude.Bool,
+    -- | The app ID.
+    appId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveAllBackends' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cleanAmplifyApp', 'removeAllBackends_cleanAmplifyApp' - Cleans up the Amplify Console app if this value is set to true.
+--
+-- 'appId', 'removeAllBackends_appId' - The app ID.
+newRemoveAllBackends ::
+  -- | 'appId'
+  Prelude.Text ->
+  RemoveAllBackends
+newRemoveAllBackends pAppId_ =
+  RemoveAllBackends'
+    { cleanAmplifyApp =
+        Prelude.Nothing,
+      appId = pAppId_
+    }
+
+-- | Cleans up the Amplify Console app if this value is set to true.
+removeAllBackends_cleanAmplifyApp :: Lens.Lens' RemoveAllBackends (Prelude.Maybe Prelude.Bool)
+removeAllBackends_cleanAmplifyApp = Lens.lens (\RemoveAllBackends' {cleanAmplifyApp} -> cleanAmplifyApp) (\s@RemoveAllBackends' {} a -> s {cleanAmplifyApp = a} :: RemoveAllBackends)
+
+-- | The app ID.
+removeAllBackends_appId :: Lens.Lens' RemoveAllBackends Prelude.Text
+removeAllBackends_appId = Lens.lens (\RemoveAllBackends' {appId} -> appId) (\s@RemoveAllBackends' {} a -> s {appId = a} :: RemoveAllBackends)
+
+instance Core.AWSRequest RemoveAllBackends where
+  type
+    AWSResponse RemoveAllBackends =
+      RemoveAllBackendsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RemoveAllBackendsResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RemoveAllBackends where
+  hashWithSalt _salt RemoveAllBackends' {..} =
+    _salt
+      `Prelude.hashWithSalt` cleanAmplifyApp
+      `Prelude.hashWithSalt` appId
+
+instance Prelude.NFData RemoveAllBackends where
+  rnf RemoveAllBackends' {..} =
+    Prelude.rnf cleanAmplifyApp
+      `Prelude.seq` Prelude.rnf appId
+
+instance Data.ToHeaders RemoveAllBackends where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RemoveAllBackends where
+  toJSON RemoveAllBackends' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("cleanAmplifyApp" Data..=)
+              Prelude.<$> cleanAmplifyApp
+          ]
+      )
+
+instance Data.ToPath RemoveAllBackends where
+  toPath RemoveAllBackends' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/remove"]
+
+instance Data.ToQuery RemoveAllBackends where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRemoveAllBackendsResponse' smart constructor.
+data RemoveAllBackendsResponse = RemoveAllBackendsResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'RemoveAllBackendsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'removeAllBackendsResponse_appId' - The app ID.
+--
+-- 'error', 'removeAllBackendsResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'removeAllBackendsResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'removeAllBackendsResponse_operation' - The name of the operation.
+--
+-- 'status', 'removeAllBackendsResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'removeAllBackendsResponse_httpStatus' - The response's http status code.
+newRemoveAllBackendsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RemoveAllBackendsResponse
+newRemoveAllBackendsResponse pHttpStatus_ =
+  RemoveAllBackendsResponse'
+    { appId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+removeAllBackendsResponse_appId :: Lens.Lens' RemoveAllBackendsResponse (Prelude.Maybe Prelude.Text)
+removeAllBackendsResponse_appId = Lens.lens (\RemoveAllBackendsResponse' {appId} -> appId) (\s@RemoveAllBackendsResponse' {} a -> s {appId = a} :: RemoveAllBackendsResponse)
+
+-- | If the request fails, this error is returned.
+removeAllBackendsResponse_error :: Lens.Lens' RemoveAllBackendsResponse (Prelude.Maybe Prelude.Text)
+removeAllBackendsResponse_error = Lens.lens (\RemoveAllBackendsResponse' {error} -> error) (\s@RemoveAllBackendsResponse' {} a -> s {error = a} :: RemoveAllBackendsResponse)
+
+-- | The ID for the job.
+removeAllBackendsResponse_jobId :: Lens.Lens' RemoveAllBackendsResponse (Prelude.Maybe Prelude.Text)
+removeAllBackendsResponse_jobId = Lens.lens (\RemoveAllBackendsResponse' {jobId} -> jobId) (\s@RemoveAllBackendsResponse' {} a -> s {jobId = a} :: RemoveAllBackendsResponse)
+
+-- | The name of the operation.
+removeAllBackendsResponse_operation :: Lens.Lens' RemoveAllBackendsResponse (Prelude.Maybe Prelude.Text)
+removeAllBackendsResponse_operation = Lens.lens (\RemoveAllBackendsResponse' {operation} -> operation) (\s@RemoveAllBackendsResponse' {} a -> s {operation = a} :: RemoveAllBackendsResponse)
+
+-- | The current status of the request.
+removeAllBackendsResponse_status :: Lens.Lens' RemoveAllBackendsResponse (Prelude.Maybe Prelude.Text)
+removeAllBackendsResponse_status = Lens.lens (\RemoveAllBackendsResponse' {status} -> status) (\s@RemoveAllBackendsResponse' {} a -> s {status = a} :: RemoveAllBackendsResponse)
+
+-- | The response's http status code.
+removeAllBackendsResponse_httpStatus :: Lens.Lens' RemoveAllBackendsResponse Prelude.Int
+removeAllBackendsResponse_httpStatus = Lens.lens (\RemoveAllBackendsResponse' {httpStatus} -> httpStatus) (\s@RemoveAllBackendsResponse' {} a -> s {httpStatus = a} :: RemoveAllBackendsResponse)
+
+instance Prelude.NFData RemoveAllBackendsResponse where
+  rnf RemoveAllBackendsResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/RemoveBackendConfig.hs b/gen/Amazonka/AmplifyBackend/RemoveBackendConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/RemoveBackendConfig.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.RemoveBackendConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the AWS resources required to access the Amplify Admin UI.
+module Amazonka.AmplifyBackend.RemoveBackendConfig
+  ( -- * Creating a Request
+    RemoveBackendConfig (..),
+    newRemoveBackendConfig,
+
+    -- * Request Lenses
+    removeBackendConfig_appId,
+
+    -- * Destructuring the Response
+    RemoveBackendConfigResponse (..),
+    newRemoveBackendConfigResponse,
+
+    -- * Response Lenses
+    removeBackendConfigResponse_error,
+    removeBackendConfigResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRemoveBackendConfig' smart constructor.
+data RemoveBackendConfig = RemoveBackendConfig'
+  { -- | The app ID.
+    appId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveBackendConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'removeBackendConfig_appId' - The app ID.
+newRemoveBackendConfig ::
+  -- | 'appId'
+  Prelude.Text ->
+  RemoveBackendConfig
+newRemoveBackendConfig pAppId_ =
+  RemoveBackendConfig' {appId = pAppId_}
+
+-- | The app ID.
+removeBackendConfig_appId :: Lens.Lens' RemoveBackendConfig Prelude.Text
+removeBackendConfig_appId = Lens.lens (\RemoveBackendConfig' {appId} -> appId) (\s@RemoveBackendConfig' {} a -> s {appId = a} :: RemoveBackendConfig)
+
+instance Core.AWSRequest RemoveBackendConfig where
+  type
+    AWSResponse RemoveBackendConfig =
+      RemoveBackendConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RemoveBackendConfigResponse'
+            Prelude.<$> (x Data..?> "error")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RemoveBackendConfig where
+  hashWithSalt _salt RemoveBackendConfig' {..} =
+    _salt `Prelude.hashWithSalt` appId
+
+instance Prelude.NFData RemoveBackendConfig where
+  rnf RemoveBackendConfig' {..} = Prelude.rnf appId
+
+instance Data.ToHeaders RemoveBackendConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RemoveBackendConfig where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RemoveBackendConfig where
+  toPath RemoveBackendConfig' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/config/remove"]
+
+instance Data.ToQuery RemoveBackendConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRemoveBackendConfigResponse' smart constructor.
+data RemoveBackendConfigResponse = RemoveBackendConfigResponse'
+  { -- | If the request fails, this error is returned.
+    error :: 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 'RemoveBackendConfigResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'error', 'removeBackendConfigResponse_error' - If the request fails, this error is returned.
+--
+-- 'httpStatus', 'removeBackendConfigResponse_httpStatus' - The response's http status code.
+newRemoveBackendConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RemoveBackendConfigResponse
+newRemoveBackendConfigResponse pHttpStatus_ =
+  RemoveBackendConfigResponse'
+    { error =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If the request fails, this error is returned.
+removeBackendConfigResponse_error :: Lens.Lens' RemoveBackendConfigResponse (Prelude.Maybe Prelude.Text)
+removeBackendConfigResponse_error = Lens.lens (\RemoveBackendConfigResponse' {error} -> error) (\s@RemoveBackendConfigResponse' {} a -> s {error = a} :: RemoveBackendConfigResponse)
+
+-- | The response's http status code.
+removeBackendConfigResponse_httpStatus :: Lens.Lens' RemoveBackendConfigResponse Prelude.Int
+removeBackendConfigResponse_httpStatus = Lens.lens (\RemoveBackendConfigResponse' {httpStatus} -> httpStatus) (\s@RemoveBackendConfigResponse' {} a -> s {httpStatus = a} :: RemoveBackendConfigResponse)
+
+instance Prelude.NFData RemoveBackendConfigResponse where
+  rnf RemoveBackendConfigResponse' {..} =
+    Prelude.rnf error
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/Types.hs b/gen/Amazonka/AmplifyBackend/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types.hs
@@ -0,0 +1,481 @@
+{-# 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.AmplifyBackend.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.AmplifyBackend.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _BadRequestException,
+    _GatewayTimeoutException,
+    _NotFoundException,
+    _TooManyRequestsException,
+
+    -- * AdditionalConstraintsElement
+    AdditionalConstraintsElement (..),
+
+    -- * AuthResources
+    AuthResources (..),
+
+    -- * AuthenticatedElement
+    AuthenticatedElement (..),
+
+    -- * DeliveryMethod
+    DeliveryMethod (..),
+
+    -- * MFAMode
+    MFAMode (..),
+
+    -- * MfaTypesElement
+    MfaTypesElement (..),
+
+    -- * Mode
+    Mode (..),
+
+    -- * OAuthGrantType
+    OAuthGrantType (..),
+
+    -- * OAuthScopesElement
+    OAuthScopesElement (..),
+
+    -- * RequiredSignUpAttributesElement
+    RequiredSignUpAttributesElement (..),
+
+    -- * ResolutionStrategy
+    ResolutionStrategy (..),
+
+    -- * Service
+    Service (..),
+
+    -- * ServiceName
+    ServiceName (..),
+
+    -- * SignInMethod
+    SignInMethod (..),
+
+    -- * Status
+    Status (..),
+
+    -- * UnAuthenticatedElement
+    UnAuthenticatedElement (..),
+
+    -- * BackendAPIAppSyncAuthSettings
+    BackendAPIAppSyncAuthSettings (..),
+    newBackendAPIAppSyncAuthSettings,
+    backendAPIAppSyncAuthSettings_cognitoUserPoolId,
+    backendAPIAppSyncAuthSettings_description,
+    backendAPIAppSyncAuthSettings_expirationTime,
+    backendAPIAppSyncAuthSettings_openIDAuthTTL,
+    backendAPIAppSyncAuthSettings_openIDClientId,
+    backendAPIAppSyncAuthSettings_openIDIatTTL,
+    backendAPIAppSyncAuthSettings_openIDIssueURL,
+    backendAPIAppSyncAuthSettings_openIDProviderName,
+
+    -- * BackendAPIAuthType
+    BackendAPIAuthType (..),
+    newBackendAPIAuthType,
+    backendAPIAuthType_mode,
+    backendAPIAuthType_settings,
+
+    -- * BackendAPIConflictResolution
+    BackendAPIConflictResolution (..),
+    newBackendAPIConflictResolution,
+    backendAPIConflictResolution_resolutionStrategy,
+
+    -- * BackendAPIResourceConfig
+    BackendAPIResourceConfig (..),
+    newBackendAPIResourceConfig,
+    backendAPIResourceConfig_additionalAuthTypes,
+    backendAPIResourceConfig_apiName,
+    backendAPIResourceConfig_conflictResolution,
+    backendAPIResourceConfig_defaultAuthType,
+    backendAPIResourceConfig_service,
+    backendAPIResourceConfig_transformSchema,
+
+    -- * BackendAuthAppleProviderConfig
+    BackendAuthAppleProviderConfig (..),
+    newBackendAuthAppleProviderConfig,
+    backendAuthAppleProviderConfig_clientId,
+    backendAuthAppleProviderConfig_keyId,
+    backendAuthAppleProviderConfig_privateKey,
+    backendAuthAppleProviderConfig_teamId,
+
+    -- * BackendAuthSocialProviderConfig
+    BackendAuthSocialProviderConfig (..),
+    newBackendAuthSocialProviderConfig,
+    backendAuthSocialProviderConfig_clientId,
+    backendAuthSocialProviderConfig_clientSecret,
+
+    -- * BackendJobRespObj
+    BackendJobRespObj (..),
+    newBackendJobRespObj,
+    backendJobRespObj_createTime,
+    backendJobRespObj_error,
+    backendJobRespObj_jobId,
+    backendJobRespObj_operation,
+    backendJobRespObj_status,
+    backendJobRespObj_updateTime,
+    backendJobRespObj_appId,
+    backendJobRespObj_backendEnvironmentName,
+
+    -- * BackendStoragePermissions
+    BackendStoragePermissions (..),
+    newBackendStoragePermissions,
+    backendStoragePermissions_unAuthenticated,
+    backendStoragePermissions_authenticated,
+
+    -- * CreateBackendAuthForgotPasswordConfig
+    CreateBackendAuthForgotPasswordConfig (..),
+    newCreateBackendAuthForgotPasswordConfig,
+    createBackendAuthForgotPasswordConfig_emailSettings,
+    createBackendAuthForgotPasswordConfig_smsSettings,
+    createBackendAuthForgotPasswordConfig_deliveryMethod,
+
+    -- * CreateBackendAuthIdentityPoolConfig
+    CreateBackendAuthIdentityPoolConfig (..),
+    newCreateBackendAuthIdentityPoolConfig,
+    createBackendAuthIdentityPoolConfig_unauthenticatedLogin,
+    createBackendAuthIdentityPoolConfig_identityPoolName,
+
+    -- * CreateBackendAuthMFAConfig
+    CreateBackendAuthMFAConfig (..),
+    newCreateBackendAuthMFAConfig,
+    createBackendAuthMFAConfig_settings,
+    createBackendAuthMFAConfig_mfaMode,
+
+    -- * CreateBackendAuthOAuthConfig
+    CreateBackendAuthOAuthConfig (..),
+    newCreateBackendAuthOAuthConfig,
+    createBackendAuthOAuthConfig_domainPrefix,
+    createBackendAuthOAuthConfig_socialProviderSettings,
+    createBackendAuthOAuthConfig_redirectSignOutURIs,
+    createBackendAuthOAuthConfig_redirectSignInURIs,
+    createBackendAuthOAuthConfig_oAuthGrantType,
+    createBackendAuthOAuthConfig_oAuthScopes,
+
+    -- * CreateBackendAuthPasswordPolicyConfig
+    CreateBackendAuthPasswordPolicyConfig (..),
+    newCreateBackendAuthPasswordPolicyConfig,
+    createBackendAuthPasswordPolicyConfig_additionalConstraints,
+    createBackendAuthPasswordPolicyConfig_minimumLength,
+
+    -- * CreateBackendAuthResourceConfig
+    CreateBackendAuthResourceConfig (..),
+    newCreateBackendAuthResourceConfig,
+    createBackendAuthResourceConfig_identityPoolConfigs,
+    createBackendAuthResourceConfig_authResources,
+    createBackendAuthResourceConfig_userPoolConfigs,
+    createBackendAuthResourceConfig_service,
+
+    -- * CreateBackendAuthUserPoolConfig
+    CreateBackendAuthUserPoolConfig (..),
+    newCreateBackendAuthUserPoolConfig,
+    createBackendAuthUserPoolConfig_forgotPassword,
+    createBackendAuthUserPoolConfig_mfa,
+    createBackendAuthUserPoolConfig_oAuth,
+    createBackendAuthUserPoolConfig_passwordPolicy,
+    createBackendAuthUserPoolConfig_verificationMessage,
+    createBackendAuthUserPoolConfig_requiredSignUpAttributes,
+    createBackendAuthUserPoolConfig_signInMethod,
+    createBackendAuthUserPoolConfig_userPoolName,
+
+    -- * CreateBackendAuthVerificationMessageConfig
+    CreateBackendAuthVerificationMessageConfig (..),
+    newCreateBackendAuthVerificationMessageConfig,
+    createBackendAuthVerificationMessageConfig_emailSettings,
+    createBackendAuthVerificationMessageConfig_smsSettings,
+    createBackendAuthVerificationMessageConfig_deliveryMethod,
+
+    -- * CreateBackendStorageResourceConfig
+    CreateBackendStorageResourceConfig (..),
+    newCreateBackendStorageResourceConfig,
+    createBackendStorageResourceConfig_bucketName,
+    createBackendStorageResourceConfig_serviceName,
+    createBackendStorageResourceConfig_permissions,
+
+    -- * EmailSettings
+    EmailSettings (..),
+    newEmailSettings,
+    emailSettings_emailMessage,
+    emailSettings_emailSubject,
+
+    -- * GetBackendStorageResourceConfig
+    GetBackendStorageResourceConfig (..),
+    newGetBackendStorageResourceConfig,
+    getBackendStorageResourceConfig_bucketName,
+    getBackendStorageResourceConfig_permissions,
+    getBackendStorageResourceConfig_serviceName,
+    getBackendStorageResourceConfig_imported,
+
+    -- * LoginAuthConfigReqObj
+    LoginAuthConfigReqObj (..),
+    newLoginAuthConfigReqObj,
+    loginAuthConfigReqObj_awsCognitoIdentityPoolId,
+    loginAuthConfigReqObj_awsCognitoRegion,
+    loginAuthConfigReqObj_awsUserPoolsId,
+    loginAuthConfigReqObj_awsUserPoolsWebClientId,
+
+    -- * ResourceConfig
+    ResourceConfig (..),
+    newResourceConfig,
+
+    -- * S3BucketInfo
+    S3BucketInfo (..),
+    newS3BucketInfo,
+    s3BucketInfo_creationDate,
+    s3BucketInfo_name,
+
+    -- * Settings
+    Settings (..),
+    newSettings,
+    settings_mfaTypes,
+    settings_smsMessage,
+
+    -- * SmsSettings
+    SmsSettings (..),
+    newSmsSettings,
+    smsSettings_smsMessage,
+
+    -- * SocialProviderSettings
+    SocialProviderSettings (..),
+    newSocialProviderSettings,
+    socialProviderSettings_facebook,
+    socialProviderSettings_google,
+    socialProviderSettings_loginWithAmazon,
+    socialProviderSettings_signInWithApple,
+
+    -- * UpdateBackendAuthForgotPasswordConfig
+    UpdateBackendAuthForgotPasswordConfig (..),
+    newUpdateBackendAuthForgotPasswordConfig,
+    updateBackendAuthForgotPasswordConfig_deliveryMethod,
+    updateBackendAuthForgotPasswordConfig_emailSettings,
+    updateBackendAuthForgotPasswordConfig_smsSettings,
+
+    -- * UpdateBackendAuthIdentityPoolConfig
+    UpdateBackendAuthIdentityPoolConfig (..),
+    newUpdateBackendAuthIdentityPoolConfig,
+    updateBackendAuthIdentityPoolConfig_unauthenticatedLogin,
+
+    -- * UpdateBackendAuthMFAConfig
+    UpdateBackendAuthMFAConfig (..),
+    newUpdateBackendAuthMFAConfig,
+    updateBackendAuthMFAConfig_mfaMode,
+    updateBackendAuthMFAConfig_settings,
+
+    -- * UpdateBackendAuthOAuthConfig
+    UpdateBackendAuthOAuthConfig (..),
+    newUpdateBackendAuthOAuthConfig,
+    updateBackendAuthOAuthConfig_domainPrefix,
+    updateBackendAuthOAuthConfig_oAuthGrantType,
+    updateBackendAuthOAuthConfig_oAuthScopes,
+    updateBackendAuthOAuthConfig_redirectSignInURIs,
+    updateBackendAuthOAuthConfig_redirectSignOutURIs,
+    updateBackendAuthOAuthConfig_socialProviderSettings,
+
+    -- * UpdateBackendAuthPasswordPolicyConfig
+    UpdateBackendAuthPasswordPolicyConfig (..),
+    newUpdateBackendAuthPasswordPolicyConfig,
+    updateBackendAuthPasswordPolicyConfig_additionalConstraints,
+    updateBackendAuthPasswordPolicyConfig_minimumLength,
+
+    -- * UpdateBackendAuthResourceConfig
+    UpdateBackendAuthResourceConfig (..),
+    newUpdateBackendAuthResourceConfig,
+    updateBackendAuthResourceConfig_identityPoolConfigs,
+    updateBackendAuthResourceConfig_authResources,
+    updateBackendAuthResourceConfig_userPoolConfigs,
+    updateBackendAuthResourceConfig_service,
+
+    -- * UpdateBackendAuthUserPoolConfig
+    UpdateBackendAuthUserPoolConfig (..),
+    newUpdateBackendAuthUserPoolConfig,
+    updateBackendAuthUserPoolConfig_forgotPassword,
+    updateBackendAuthUserPoolConfig_mfa,
+    updateBackendAuthUserPoolConfig_oAuth,
+    updateBackendAuthUserPoolConfig_passwordPolicy,
+    updateBackendAuthUserPoolConfig_verificationMessage,
+
+    -- * UpdateBackendAuthVerificationMessageConfig
+    UpdateBackendAuthVerificationMessageConfig (..),
+    newUpdateBackendAuthVerificationMessageConfig,
+    updateBackendAuthVerificationMessageConfig_emailSettings,
+    updateBackendAuthVerificationMessageConfig_smsSettings,
+    updateBackendAuthVerificationMessageConfig_deliveryMethod,
+
+    -- * UpdateBackendStorageResourceConfig
+    UpdateBackendStorageResourceConfig (..),
+    newUpdateBackendStorageResourceConfig,
+    updateBackendStorageResourceConfig_serviceName,
+    updateBackendStorageResourceConfig_permissions,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types.AdditionalConstraintsElement
+import Amazonka.AmplifyBackend.Types.AuthResources
+import Amazonka.AmplifyBackend.Types.AuthenticatedElement
+import Amazonka.AmplifyBackend.Types.BackendAPIAppSyncAuthSettings
+import Amazonka.AmplifyBackend.Types.BackendAPIAuthType
+import Amazonka.AmplifyBackend.Types.BackendAPIConflictResolution
+import Amazonka.AmplifyBackend.Types.BackendAPIResourceConfig
+import Amazonka.AmplifyBackend.Types.BackendAuthAppleProviderConfig
+import Amazonka.AmplifyBackend.Types.BackendAuthSocialProviderConfig
+import Amazonka.AmplifyBackend.Types.BackendJobRespObj
+import Amazonka.AmplifyBackend.Types.BackendStoragePermissions
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthForgotPasswordConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthIdentityPoolConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthMFAConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthOAuthConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthPasswordPolicyConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthResourceConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthUserPoolConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthVerificationMessageConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendStorageResourceConfig
+import Amazonka.AmplifyBackend.Types.DeliveryMethod
+import Amazonka.AmplifyBackend.Types.EmailSettings
+import Amazonka.AmplifyBackend.Types.GetBackendStorageResourceConfig
+import Amazonka.AmplifyBackend.Types.LoginAuthConfigReqObj
+import Amazonka.AmplifyBackend.Types.MFAMode
+import Amazonka.AmplifyBackend.Types.MfaTypesElement
+import Amazonka.AmplifyBackend.Types.Mode
+import Amazonka.AmplifyBackend.Types.OAuthGrantType
+import Amazonka.AmplifyBackend.Types.OAuthScopesElement
+import Amazonka.AmplifyBackend.Types.RequiredSignUpAttributesElement
+import Amazonka.AmplifyBackend.Types.ResolutionStrategy
+import Amazonka.AmplifyBackend.Types.ResourceConfig
+import Amazonka.AmplifyBackend.Types.S3BucketInfo
+import Amazonka.AmplifyBackend.Types.Service
+import Amazonka.AmplifyBackend.Types.ServiceName
+import Amazonka.AmplifyBackend.Types.Settings
+import Amazonka.AmplifyBackend.Types.SignInMethod
+import Amazonka.AmplifyBackend.Types.SmsSettings
+import Amazonka.AmplifyBackend.Types.SocialProviderSettings
+import Amazonka.AmplifyBackend.Types.Status
+import Amazonka.AmplifyBackend.Types.UnAuthenticatedElement
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthForgotPasswordConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthIdentityPoolConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthMFAConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthOAuthConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthPasswordPolicyConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthResourceConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthUserPoolConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthVerificationMessageConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendStorageResourceConfig
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2020-08-11@ of the Amazon AmplifyBackend SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "AmplifyBackend",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "amplifybackend",
+      Core.signingName = "amplifybackend",
+      Core.version = "2020-08-11",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "AmplifyBackend",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | An error returned if a request is not formed properly.
+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BadRequestException =
+  Core._MatchServiceError
+    defaultService
+    "BadRequestException"
+    Prelude.. Core.hasStatus 400
+
+-- | An error returned if there\'s a temporary issue with the service.
+_GatewayTimeoutException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_GatewayTimeoutException =
+  Core._MatchServiceError
+    defaultService
+    "GatewayTimeoutException"
+    Prelude.. Core.hasStatus 504
+
+-- | An error returned when a specific resource type is not found.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | An error that is returned when a limit of a specific type has been
+-- exceeded.
+_TooManyRequestsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyRequestsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyRequestsException"
+    Prelude.. Core.hasStatus 429
diff --git a/gen/Amazonka/AmplifyBackend/Types/AdditionalConstraintsElement.hs b/gen/Amazonka/AmplifyBackend/Types/AdditionalConstraintsElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/AdditionalConstraintsElement.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.AdditionalConstraintsElement
+-- 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.AmplifyBackend.Types.AdditionalConstraintsElement
+  ( AdditionalConstraintsElement
+      ( ..,
+        AdditionalConstraintsElement_REQUIRE_DIGIT,
+        AdditionalConstraintsElement_REQUIRE_LOWERCASE,
+        AdditionalConstraintsElement_REQUIRE_SYMBOL,
+        AdditionalConstraintsElement_REQUIRE_UPPERCASE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AdditionalConstraintsElement = AdditionalConstraintsElement'
+  { fromAdditionalConstraintsElement ::
+      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 AdditionalConstraintsElement_REQUIRE_DIGIT :: AdditionalConstraintsElement
+pattern AdditionalConstraintsElement_REQUIRE_DIGIT = AdditionalConstraintsElement' "REQUIRE_DIGIT"
+
+pattern AdditionalConstraintsElement_REQUIRE_LOWERCASE :: AdditionalConstraintsElement
+pattern AdditionalConstraintsElement_REQUIRE_LOWERCASE = AdditionalConstraintsElement' "REQUIRE_LOWERCASE"
+
+pattern AdditionalConstraintsElement_REQUIRE_SYMBOL :: AdditionalConstraintsElement
+pattern AdditionalConstraintsElement_REQUIRE_SYMBOL = AdditionalConstraintsElement' "REQUIRE_SYMBOL"
+
+pattern AdditionalConstraintsElement_REQUIRE_UPPERCASE :: AdditionalConstraintsElement
+pattern AdditionalConstraintsElement_REQUIRE_UPPERCASE = AdditionalConstraintsElement' "REQUIRE_UPPERCASE"
+
+{-# COMPLETE
+  AdditionalConstraintsElement_REQUIRE_DIGIT,
+  AdditionalConstraintsElement_REQUIRE_LOWERCASE,
+  AdditionalConstraintsElement_REQUIRE_SYMBOL,
+  AdditionalConstraintsElement_REQUIRE_UPPERCASE,
+  AdditionalConstraintsElement'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/AuthResources.hs b/gen/Amazonka/AmplifyBackend/Types/AuthResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/AuthResources.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.AmplifyBackend.Types.AuthResources
+-- 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.AmplifyBackend.Types.AuthResources
+  ( AuthResources
+      ( ..,
+        AuthResources_IDENTITY_POOL_AND_USER_POOL,
+        AuthResources_USER_POOL_ONLY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AuthResources = AuthResources'
+  { fromAuthResources ::
+      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 AuthResources_IDENTITY_POOL_AND_USER_POOL :: AuthResources
+pattern AuthResources_IDENTITY_POOL_AND_USER_POOL = AuthResources' "IDENTITY_POOL_AND_USER_POOL"
+
+pattern AuthResources_USER_POOL_ONLY :: AuthResources
+pattern AuthResources_USER_POOL_ONLY = AuthResources' "USER_POOL_ONLY"
+
+{-# COMPLETE
+  AuthResources_IDENTITY_POOL_AND_USER_POOL,
+  AuthResources_USER_POOL_ONLY,
+  AuthResources'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/AuthenticatedElement.hs b/gen/Amazonka/AmplifyBackend/Types/AuthenticatedElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/AuthenticatedElement.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.AuthenticatedElement
+-- 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.AmplifyBackend.Types.AuthenticatedElement
+  ( AuthenticatedElement
+      ( ..,
+        AuthenticatedElement_CREATE_AND_UPDATE,
+        AuthenticatedElement_DELETE,
+        AuthenticatedElement_READ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AuthenticatedElement = AuthenticatedElement'
+  { fromAuthenticatedElement ::
+      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 AuthenticatedElement_CREATE_AND_UPDATE :: AuthenticatedElement
+pattern AuthenticatedElement_CREATE_AND_UPDATE = AuthenticatedElement' "CREATE_AND_UPDATE"
+
+pattern AuthenticatedElement_DELETE :: AuthenticatedElement
+pattern AuthenticatedElement_DELETE = AuthenticatedElement' "DELETE"
+
+pattern AuthenticatedElement_READ :: AuthenticatedElement
+pattern AuthenticatedElement_READ = AuthenticatedElement' "READ"
+
+{-# COMPLETE
+  AuthenticatedElement_CREATE_AND_UPDATE,
+  AuthenticatedElement_DELETE,
+  AuthenticatedElement_READ,
+  AuthenticatedElement'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/BackendAPIAppSyncAuthSettings.hs b/gen/Amazonka/AmplifyBackend/Types/BackendAPIAppSyncAuthSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/BackendAPIAppSyncAuthSettings.hs
@@ -0,0 +1,199 @@
+{-# 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.AmplifyBackend.Types.BackendAPIAppSyncAuthSettings
+-- 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.AmplifyBackend.Types.BackendAPIAppSyncAuthSettings 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 authentication settings for accessing provisioned data models in
+-- your Amplify project.
+--
+-- /See:/ 'newBackendAPIAppSyncAuthSettings' smart constructor.
+data BackendAPIAppSyncAuthSettings = BackendAPIAppSyncAuthSettings'
+  { -- | The Amazon Cognito user pool ID, if Amazon Cognito was used as an
+    -- authentication setting to access your data models.
+    cognitoUserPoolId :: Prelude.Maybe Prelude.Text,
+    -- | The API key description for API_KEY, if it was used as an authentication
+    -- mechanism to access your data models.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The API key expiration time for API_KEY, if it was used as an
+    -- authentication mechanism to access your data models.
+    expirationTime :: Prelude.Maybe Prelude.Double,
+    -- | The expiry time for the OpenID authentication mechanism.
+    openIDAuthTTL :: Prelude.Maybe Prelude.Text,
+    -- | The clientID for openID, if openID was used as an authentication setting
+    -- to access your data models.
+    openIDClientId :: Prelude.Maybe Prelude.Text,
+    -- | The expiry time for the OpenID authentication mechanism.
+    openIDIatTTL :: Prelude.Maybe Prelude.Text,
+    -- | The openID issuer URL, if openID was used as an authentication setting
+    -- to access your data models.
+    openIDIssueURL :: Prelude.Maybe Prelude.Text,
+    -- | The OpenID provider name, if OpenID was used as an authentication
+    -- mechanism to access your data models.
+    openIDProviderName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackendAPIAppSyncAuthSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cognitoUserPoolId', 'backendAPIAppSyncAuthSettings_cognitoUserPoolId' - The Amazon Cognito user pool ID, if Amazon Cognito was used as an
+-- authentication setting to access your data models.
+--
+-- 'description', 'backendAPIAppSyncAuthSettings_description' - The API key description for API_KEY, if it was used as an authentication
+-- mechanism to access your data models.
+--
+-- 'expirationTime', 'backendAPIAppSyncAuthSettings_expirationTime' - The API key expiration time for API_KEY, if it was used as an
+-- authentication mechanism to access your data models.
+--
+-- 'openIDAuthTTL', 'backendAPIAppSyncAuthSettings_openIDAuthTTL' - The expiry time for the OpenID authentication mechanism.
+--
+-- 'openIDClientId', 'backendAPIAppSyncAuthSettings_openIDClientId' - The clientID for openID, if openID was used as an authentication setting
+-- to access your data models.
+--
+-- 'openIDIatTTL', 'backendAPIAppSyncAuthSettings_openIDIatTTL' - The expiry time for the OpenID authentication mechanism.
+--
+-- 'openIDIssueURL', 'backendAPIAppSyncAuthSettings_openIDIssueURL' - The openID issuer URL, if openID was used as an authentication setting
+-- to access your data models.
+--
+-- 'openIDProviderName', 'backendAPIAppSyncAuthSettings_openIDProviderName' - The OpenID provider name, if OpenID was used as an authentication
+-- mechanism to access your data models.
+newBackendAPIAppSyncAuthSettings ::
+  BackendAPIAppSyncAuthSettings
+newBackendAPIAppSyncAuthSettings =
+  BackendAPIAppSyncAuthSettings'
+    { cognitoUserPoolId =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      expirationTime = Prelude.Nothing,
+      openIDAuthTTL = Prelude.Nothing,
+      openIDClientId = Prelude.Nothing,
+      openIDIatTTL = Prelude.Nothing,
+      openIDIssueURL = Prelude.Nothing,
+      openIDProviderName = Prelude.Nothing
+    }
+
+-- | The Amazon Cognito user pool ID, if Amazon Cognito was used as an
+-- authentication setting to access your data models.
+backendAPIAppSyncAuthSettings_cognitoUserPoolId :: Lens.Lens' BackendAPIAppSyncAuthSettings (Prelude.Maybe Prelude.Text)
+backendAPIAppSyncAuthSettings_cognitoUserPoolId = Lens.lens (\BackendAPIAppSyncAuthSettings' {cognitoUserPoolId} -> cognitoUserPoolId) (\s@BackendAPIAppSyncAuthSettings' {} a -> s {cognitoUserPoolId = a} :: BackendAPIAppSyncAuthSettings)
+
+-- | The API key description for API_KEY, if it was used as an authentication
+-- mechanism to access your data models.
+backendAPIAppSyncAuthSettings_description :: Lens.Lens' BackendAPIAppSyncAuthSettings (Prelude.Maybe Prelude.Text)
+backendAPIAppSyncAuthSettings_description = Lens.lens (\BackendAPIAppSyncAuthSettings' {description} -> description) (\s@BackendAPIAppSyncAuthSettings' {} a -> s {description = a} :: BackendAPIAppSyncAuthSettings)
+
+-- | The API key expiration time for API_KEY, if it was used as an
+-- authentication mechanism to access your data models.
+backendAPIAppSyncAuthSettings_expirationTime :: Lens.Lens' BackendAPIAppSyncAuthSettings (Prelude.Maybe Prelude.Double)
+backendAPIAppSyncAuthSettings_expirationTime = Lens.lens (\BackendAPIAppSyncAuthSettings' {expirationTime} -> expirationTime) (\s@BackendAPIAppSyncAuthSettings' {} a -> s {expirationTime = a} :: BackendAPIAppSyncAuthSettings)
+
+-- | The expiry time for the OpenID authentication mechanism.
+backendAPIAppSyncAuthSettings_openIDAuthTTL :: Lens.Lens' BackendAPIAppSyncAuthSettings (Prelude.Maybe Prelude.Text)
+backendAPIAppSyncAuthSettings_openIDAuthTTL = Lens.lens (\BackendAPIAppSyncAuthSettings' {openIDAuthTTL} -> openIDAuthTTL) (\s@BackendAPIAppSyncAuthSettings' {} a -> s {openIDAuthTTL = a} :: BackendAPIAppSyncAuthSettings)
+
+-- | The clientID for openID, if openID was used as an authentication setting
+-- to access your data models.
+backendAPIAppSyncAuthSettings_openIDClientId :: Lens.Lens' BackendAPIAppSyncAuthSettings (Prelude.Maybe Prelude.Text)
+backendAPIAppSyncAuthSettings_openIDClientId = Lens.lens (\BackendAPIAppSyncAuthSettings' {openIDClientId} -> openIDClientId) (\s@BackendAPIAppSyncAuthSettings' {} a -> s {openIDClientId = a} :: BackendAPIAppSyncAuthSettings)
+
+-- | The expiry time for the OpenID authentication mechanism.
+backendAPIAppSyncAuthSettings_openIDIatTTL :: Lens.Lens' BackendAPIAppSyncAuthSettings (Prelude.Maybe Prelude.Text)
+backendAPIAppSyncAuthSettings_openIDIatTTL = Lens.lens (\BackendAPIAppSyncAuthSettings' {openIDIatTTL} -> openIDIatTTL) (\s@BackendAPIAppSyncAuthSettings' {} a -> s {openIDIatTTL = a} :: BackendAPIAppSyncAuthSettings)
+
+-- | The openID issuer URL, if openID was used as an authentication setting
+-- to access your data models.
+backendAPIAppSyncAuthSettings_openIDIssueURL :: Lens.Lens' BackendAPIAppSyncAuthSettings (Prelude.Maybe Prelude.Text)
+backendAPIAppSyncAuthSettings_openIDIssueURL = Lens.lens (\BackendAPIAppSyncAuthSettings' {openIDIssueURL} -> openIDIssueURL) (\s@BackendAPIAppSyncAuthSettings' {} a -> s {openIDIssueURL = a} :: BackendAPIAppSyncAuthSettings)
+
+-- | The OpenID provider name, if OpenID was used as an authentication
+-- mechanism to access your data models.
+backendAPIAppSyncAuthSettings_openIDProviderName :: Lens.Lens' BackendAPIAppSyncAuthSettings (Prelude.Maybe Prelude.Text)
+backendAPIAppSyncAuthSettings_openIDProviderName = Lens.lens (\BackendAPIAppSyncAuthSettings' {openIDProviderName} -> openIDProviderName) (\s@BackendAPIAppSyncAuthSettings' {} a -> s {openIDProviderName = a} :: BackendAPIAppSyncAuthSettings)
+
+instance Data.FromJSON BackendAPIAppSyncAuthSettings where
+  parseJSON =
+    Data.withObject
+      "BackendAPIAppSyncAuthSettings"
+      ( \x ->
+          BackendAPIAppSyncAuthSettings'
+            Prelude.<$> (x Data..:? "cognitoUserPoolId")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "expirationTime")
+            Prelude.<*> (x Data..:? "openIDAuthTTL")
+            Prelude.<*> (x Data..:? "openIDClientId")
+            Prelude.<*> (x Data..:? "openIDIatTTL")
+            Prelude.<*> (x Data..:? "openIDIssueURL")
+            Prelude.<*> (x Data..:? "openIDProviderName")
+      )
+
+instance
+  Prelude.Hashable
+    BackendAPIAppSyncAuthSettings
+  where
+  hashWithSalt _salt BackendAPIAppSyncAuthSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` cognitoUserPoolId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` expirationTime
+      `Prelude.hashWithSalt` openIDAuthTTL
+      `Prelude.hashWithSalt` openIDClientId
+      `Prelude.hashWithSalt` openIDIatTTL
+      `Prelude.hashWithSalt` openIDIssueURL
+      `Prelude.hashWithSalt` openIDProviderName
+
+instance Prelude.NFData BackendAPIAppSyncAuthSettings where
+  rnf BackendAPIAppSyncAuthSettings' {..} =
+    Prelude.rnf cognitoUserPoolId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf expirationTime
+      `Prelude.seq` Prelude.rnf openIDAuthTTL
+      `Prelude.seq` Prelude.rnf openIDClientId
+      `Prelude.seq` Prelude.rnf openIDIatTTL
+      `Prelude.seq` Prelude.rnf openIDIssueURL
+      `Prelude.seq` Prelude.rnf openIDProviderName
+
+instance Data.ToJSON BackendAPIAppSyncAuthSettings where
+  toJSON BackendAPIAppSyncAuthSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("cognitoUserPoolId" Data..=)
+              Prelude.<$> cognitoUserPoolId,
+            ("description" Data..=) Prelude.<$> description,
+            ("expirationTime" Data..=)
+              Prelude.<$> expirationTime,
+            ("openIDAuthTTL" Data..=) Prelude.<$> openIDAuthTTL,
+            ("openIDClientId" Data..=)
+              Prelude.<$> openIDClientId,
+            ("openIDIatTTL" Data..=) Prelude.<$> openIDIatTTL,
+            ("openIDIssueURL" Data..=)
+              Prelude.<$> openIDIssueURL,
+            ("openIDProviderName" Data..=)
+              Prelude.<$> openIDProviderName
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/BackendAPIAuthType.hs b/gen/Amazonka/AmplifyBackend/Types/BackendAPIAuthType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/BackendAPIAuthType.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.BackendAPIAuthType
+-- 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.AmplifyBackend.Types.BackendAPIAuthType where
+
+import Amazonka.AmplifyBackend.Types.BackendAPIAppSyncAuthSettings
+import Amazonka.AmplifyBackend.Types.Mode
+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 the auth types for your configured data models.
+--
+-- /See:/ 'newBackendAPIAuthType' smart constructor.
+data BackendAPIAuthType = BackendAPIAuthType'
+  { -- | Describes the authentication mode.
+    mode :: Prelude.Maybe Mode,
+    -- | Describes settings for the authentication mode.
+    settings :: Prelude.Maybe BackendAPIAppSyncAuthSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackendAPIAuthType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mode', 'backendAPIAuthType_mode' - Describes the authentication mode.
+--
+-- 'settings', 'backendAPIAuthType_settings' - Describes settings for the authentication mode.
+newBackendAPIAuthType ::
+  BackendAPIAuthType
+newBackendAPIAuthType =
+  BackendAPIAuthType'
+    { mode = Prelude.Nothing,
+      settings = Prelude.Nothing
+    }
+
+-- | Describes the authentication mode.
+backendAPIAuthType_mode :: Lens.Lens' BackendAPIAuthType (Prelude.Maybe Mode)
+backendAPIAuthType_mode = Lens.lens (\BackendAPIAuthType' {mode} -> mode) (\s@BackendAPIAuthType' {} a -> s {mode = a} :: BackendAPIAuthType)
+
+-- | Describes settings for the authentication mode.
+backendAPIAuthType_settings :: Lens.Lens' BackendAPIAuthType (Prelude.Maybe BackendAPIAppSyncAuthSettings)
+backendAPIAuthType_settings = Lens.lens (\BackendAPIAuthType' {settings} -> settings) (\s@BackendAPIAuthType' {} a -> s {settings = a} :: BackendAPIAuthType)
+
+instance Data.FromJSON BackendAPIAuthType where
+  parseJSON =
+    Data.withObject
+      "BackendAPIAuthType"
+      ( \x ->
+          BackendAPIAuthType'
+            Prelude.<$> (x Data..:? "mode")
+            Prelude.<*> (x Data..:? "settings")
+      )
+
+instance Prelude.Hashable BackendAPIAuthType where
+  hashWithSalt _salt BackendAPIAuthType' {..} =
+    _salt
+      `Prelude.hashWithSalt` mode
+      `Prelude.hashWithSalt` settings
+
+instance Prelude.NFData BackendAPIAuthType where
+  rnf BackendAPIAuthType' {..} =
+    Prelude.rnf mode `Prelude.seq` Prelude.rnf settings
+
+instance Data.ToJSON BackendAPIAuthType where
+  toJSON BackendAPIAuthType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("mode" Data..=) Prelude.<$> mode,
+            ("settings" Data..=) Prelude.<$> settings
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/BackendAPIConflictResolution.hs b/gen/Amazonka/AmplifyBackend/Types/BackendAPIConflictResolution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/BackendAPIConflictResolution.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.BackendAPIConflictResolution
+-- 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.AmplifyBackend.Types.BackendAPIConflictResolution where
+
+import Amazonka.AmplifyBackend.Types.ResolutionStrategy
+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 the conflict resolution configuration for your data model
+-- configured in your Amplify project.
+--
+-- /See:/ 'newBackendAPIConflictResolution' smart constructor.
+data BackendAPIConflictResolution = BackendAPIConflictResolution'
+  { -- | The strategy for conflict resolution.
+    resolutionStrategy :: Prelude.Maybe ResolutionStrategy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackendAPIConflictResolution' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resolutionStrategy', 'backendAPIConflictResolution_resolutionStrategy' - The strategy for conflict resolution.
+newBackendAPIConflictResolution ::
+  BackendAPIConflictResolution
+newBackendAPIConflictResolution =
+  BackendAPIConflictResolution'
+    { resolutionStrategy =
+        Prelude.Nothing
+    }
+
+-- | The strategy for conflict resolution.
+backendAPIConflictResolution_resolutionStrategy :: Lens.Lens' BackendAPIConflictResolution (Prelude.Maybe ResolutionStrategy)
+backendAPIConflictResolution_resolutionStrategy = Lens.lens (\BackendAPIConflictResolution' {resolutionStrategy} -> resolutionStrategy) (\s@BackendAPIConflictResolution' {} a -> s {resolutionStrategy = a} :: BackendAPIConflictResolution)
+
+instance Data.FromJSON BackendAPIConflictResolution where
+  parseJSON =
+    Data.withObject
+      "BackendAPIConflictResolution"
+      ( \x ->
+          BackendAPIConflictResolution'
+            Prelude.<$> (x Data..:? "resolutionStrategy")
+      )
+
+instance
+  Prelude.Hashable
+    BackendAPIConflictResolution
+  where
+  hashWithSalt _salt BackendAPIConflictResolution' {..} =
+    _salt `Prelude.hashWithSalt` resolutionStrategy
+
+instance Prelude.NFData BackendAPIConflictResolution where
+  rnf BackendAPIConflictResolution' {..} =
+    Prelude.rnf resolutionStrategy
+
+instance Data.ToJSON BackendAPIConflictResolution where
+  toJSON BackendAPIConflictResolution' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("resolutionStrategy" Data..=)
+              Prelude.<$> resolutionStrategy
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/BackendAPIResourceConfig.hs b/gen/Amazonka/AmplifyBackend/Types/BackendAPIResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/BackendAPIResourceConfig.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.AmplifyBackend.Types.BackendAPIResourceConfig
+-- 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.AmplifyBackend.Types.BackendAPIResourceConfig where
+
+import Amazonka.AmplifyBackend.Types.BackendAPIAuthType
+import Amazonka.AmplifyBackend.Types.BackendAPIConflictResolution
+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 resource config for the data model, configured as a part of the
+-- Amplify project.
+--
+-- /See:/ 'newBackendAPIResourceConfig' smart constructor.
+data BackendAPIResourceConfig = BackendAPIResourceConfig'
+  { -- | Additional authentication methods used to interact with your data
+    -- models.
+    additionalAuthTypes :: Prelude.Maybe [BackendAPIAuthType],
+    -- | The API name used to interact with the data model, configured as a part
+    -- of your Amplify project.
+    apiName :: Prelude.Maybe Prelude.Text,
+    -- | The conflict resolution strategy for your data stored in the data
+    -- models.
+    conflictResolution :: Prelude.Maybe BackendAPIConflictResolution,
+    -- | The default authentication type for interacting with the configured data
+    -- models in your Amplify project.
+    defaultAuthType :: Prelude.Maybe BackendAPIAuthType,
+    -- | The service used to provision and interact with the data model.
+    service :: Prelude.Maybe Prelude.Text,
+    -- | The definition of the data model in the annotated transform of the
+    -- GraphQL schema.
+    transformSchema :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackendAPIResourceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'additionalAuthTypes', 'backendAPIResourceConfig_additionalAuthTypes' - Additional authentication methods used to interact with your data
+-- models.
+--
+-- 'apiName', 'backendAPIResourceConfig_apiName' - The API name used to interact with the data model, configured as a part
+-- of your Amplify project.
+--
+-- 'conflictResolution', 'backendAPIResourceConfig_conflictResolution' - The conflict resolution strategy for your data stored in the data
+-- models.
+--
+-- 'defaultAuthType', 'backendAPIResourceConfig_defaultAuthType' - The default authentication type for interacting with the configured data
+-- models in your Amplify project.
+--
+-- 'service', 'backendAPIResourceConfig_service' - The service used to provision and interact with the data model.
+--
+-- 'transformSchema', 'backendAPIResourceConfig_transformSchema' - The definition of the data model in the annotated transform of the
+-- GraphQL schema.
+newBackendAPIResourceConfig ::
+  BackendAPIResourceConfig
+newBackendAPIResourceConfig =
+  BackendAPIResourceConfig'
+    { additionalAuthTypes =
+        Prelude.Nothing,
+      apiName = Prelude.Nothing,
+      conflictResolution = Prelude.Nothing,
+      defaultAuthType = Prelude.Nothing,
+      service = Prelude.Nothing,
+      transformSchema = Prelude.Nothing
+    }
+
+-- | Additional authentication methods used to interact with your data
+-- models.
+backendAPIResourceConfig_additionalAuthTypes :: Lens.Lens' BackendAPIResourceConfig (Prelude.Maybe [BackendAPIAuthType])
+backendAPIResourceConfig_additionalAuthTypes = Lens.lens (\BackendAPIResourceConfig' {additionalAuthTypes} -> additionalAuthTypes) (\s@BackendAPIResourceConfig' {} a -> s {additionalAuthTypes = a} :: BackendAPIResourceConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The API name used to interact with the data model, configured as a part
+-- of your Amplify project.
+backendAPIResourceConfig_apiName :: Lens.Lens' BackendAPIResourceConfig (Prelude.Maybe Prelude.Text)
+backendAPIResourceConfig_apiName = Lens.lens (\BackendAPIResourceConfig' {apiName} -> apiName) (\s@BackendAPIResourceConfig' {} a -> s {apiName = a} :: BackendAPIResourceConfig)
+
+-- | The conflict resolution strategy for your data stored in the data
+-- models.
+backendAPIResourceConfig_conflictResolution :: Lens.Lens' BackendAPIResourceConfig (Prelude.Maybe BackendAPIConflictResolution)
+backendAPIResourceConfig_conflictResolution = Lens.lens (\BackendAPIResourceConfig' {conflictResolution} -> conflictResolution) (\s@BackendAPIResourceConfig' {} a -> s {conflictResolution = a} :: BackendAPIResourceConfig)
+
+-- | The default authentication type for interacting with the configured data
+-- models in your Amplify project.
+backendAPIResourceConfig_defaultAuthType :: Lens.Lens' BackendAPIResourceConfig (Prelude.Maybe BackendAPIAuthType)
+backendAPIResourceConfig_defaultAuthType = Lens.lens (\BackendAPIResourceConfig' {defaultAuthType} -> defaultAuthType) (\s@BackendAPIResourceConfig' {} a -> s {defaultAuthType = a} :: BackendAPIResourceConfig)
+
+-- | The service used to provision and interact with the data model.
+backendAPIResourceConfig_service :: Lens.Lens' BackendAPIResourceConfig (Prelude.Maybe Prelude.Text)
+backendAPIResourceConfig_service = Lens.lens (\BackendAPIResourceConfig' {service} -> service) (\s@BackendAPIResourceConfig' {} a -> s {service = a} :: BackendAPIResourceConfig)
+
+-- | The definition of the data model in the annotated transform of the
+-- GraphQL schema.
+backendAPIResourceConfig_transformSchema :: Lens.Lens' BackendAPIResourceConfig (Prelude.Maybe Prelude.Text)
+backendAPIResourceConfig_transformSchema = Lens.lens (\BackendAPIResourceConfig' {transformSchema} -> transformSchema) (\s@BackendAPIResourceConfig' {} a -> s {transformSchema = a} :: BackendAPIResourceConfig)
+
+instance Data.FromJSON BackendAPIResourceConfig where
+  parseJSON =
+    Data.withObject
+      "BackendAPIResourceConfig"
+      ( \x ->
+          BackendAPIResourceConfig'
+            Prelude.<$> ( x
+                            Data..:? "additionalAuthTypes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "apiName")
+            Prelude.<*> (x Data..:? "conflictResolution")
+            Prelude.<*> (x Data..:? "defaultAuthType")
+            Prelude.<*> (x Data..:? "service")
+            Prelude.<*> (x Data..:? "transformSchema")
+      )
+
+instance Prelude.Hashable BackendAPIResourceConfig where
+  hashWithSalt _salt BackendAPIResourceConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` additionalAuthTypes
+      `Prelude.hashWithSalt` apiName
+      `Prelude.hashWithSalt` conflictResolution
+      `Prelude.hashWithSalt` defaultAuthType
+      `Prelude.hashWithSalt` service
+      `Prelude.hashWithSalt` transformSchema
+
+instance Prelude.NFData BackendAPIResourceConfig where
+  rnf BackendAPIResourceConfig' {..} =
+    Prelude.rnf additionalAuthTypes
+      `Prelude.seq` Prelude.rnf apiName
+      `Prelude.seq` Prelude.rnf conflictResolution
+      `Prelude.seq` Prelude.rnf defaultAuthType
+      `Prelude.seq` Prelude.rnf service
+      `Prelude.seq` Prelude.rnf transformSchema
+
+instance Data.ToJSON BackendAPIResourceConfig where
+  toJSON BackendAPIResourceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("additionalAuthTypes" Data..=)
+              Prelude.<$> additionalAuthTypes,
+            ("apiName" Data..=) Prelude.<$> apiName,
+            ("conflictResolution" Data..=)
+              Prelude.<$> conflictResolution,
+            ("defaultAuthType" Data..=)
+              Prelude.<$> defaultAuthType,
+            ("service" Data..=) Prelude.<$> service,
+            ("transformSchema" Data..=)
+              Prelude.<$> transformSchema
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/BackendAuthAppleProviderConfig.hs b/gen/Amazonka/AmplifyBackend/Types/BackendAuthAppleProviderConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/BackendAuthAppleProviderConfig.hs
@@ -0,0 +1,129 @@
+{-# 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.AmplifyBackend.Types.BackendAuthAppleProviderConfig
+-- 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.AmplifyBackend.Types.BackendAuthAppleProviderConfig 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 Apple social federation configurations for allowing your app
+-- users to sign in using OAuth.
+--
+-- /See:/ 'newBackendAuthAppleProviderConfig' smart constructor.
+data BackendAuthAppleProviderConfig = BackendAuthAppleProviderConfig'
+  { -- | Describes the client_id (also called Services ID) that comes from Apple.
+    clientId :: Prelude.Maybe Prelude.Text,
+    -- | Describes the key_id that comes from Apple.
+    keyId :: Prelude.Maybe Prelude.Text,
+    -- | Describes the private_key that comes from Apple.
+    privateKey :: Prelude.Maybe Prelude.Text,
+    -- | Describes the team_id that comes from Apple.
+    teamId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackendAuthAppleProviderConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientId', 'backendAuthAppleProviderConfig_clientId' - Describes the client_id (also called Services ID) that comes from Apple.
+--
+-- 'keyId', 'backendAuthAppleProviderConfig_keyId' - Describes the key_id that comes from Apple.
+--
+-- 'privateKey', 'backendAuthAppleProviderConfig_privateKey' - Describes the private_key that comes from Apple.
+--
+-- 'teamId', 'backendAuthAppleProviderConfig_teamId' - Describes the team_id that comes from Apple.
+newBackendAuthAppleProviderConfig ::
+  BackendAuthAppleProviderConfig
+newBackendAuthAppleProviderConfig =
+  BackendAuthAppleProviderConfig'
+    { clientId =
+        Prelude.Nothing,
+      keyId = Prelude.Nothing,
+      privateKey = Prelude.Nothing,
+      teamId = Prelude.Nothing
+    }
+
+-- | Describes the client_id (also called Services ID) that comes from Apple.
+backendAuthAppleProviderConfig_clientId :: Lens.Lens' BackendAuthAppleProviderConfig (Prelude.Maybe Prelude.Text)
+backendAuthAppleProviderConfig_clientId = Lens.lens (\BackendAuthAppleProviderConfig' {clientId} -> clientId) (\s@BackendAuthAppleProviderConfig' {} a -> s {clientId = a} :: BackendAuthAppleProviderConfig)
+
+-- | Describes the key_id that comes from Apple.
+backendAuthAppleProviderConfig_keyId :: Lens.Lens' BackendAuthAppleProviderConfig (Prelude.Maybe Prelude.Text)
+backendAuthAppleProviderConfig_keyId = Lens.lens (\BackendAuthAppleProviderConfig' {keyId} -> keyId) (\s@BackendAuthAppleProviderConfig' {} a -> s {keyId = a} :: BackendAuthAppleProviderConfig)
+
+-- | Describes the private_key that comes from Apple.
+backendAuthAppleProviderConfig_privateKey :: Lens.Lens' BackendAuthAppleProviderConfig (Prelude.Maybe Prelude.Text)
+backendAuthAppleProviderConfig_privateKey = Lens.lens (\BackendAuthAppleProviderConfig' {privateKey} -> privateKey) (\s@BackendAuthAppleProviderConfig' {} a -> s {privateKey = a} :: BackendAuthAppleProviderConfig)
+
+-- | Describes the team_id that comes from Apple.
+backendAuthAppleProviderConfig_teamId :: Lens.Lens' BackendAuthAppleProviderConfig (Prelude.Maybe Prelude.Text)
+backendAuthAppleProviderConfig_teamId = Lens.lens (\BackendAuthAppleProviderConfig' {teamId} -> teamId) (\s@BackendAuthAppleProviderConfig' {} a -> s {teamId = a} :: BackendAuthAppleProviderConfig)
+
+instance Data.FromJSON BackendAuthAppleProviderConfig where
+  parseJSON =
+    Data.withObject
+      "BackendAuthAppleProviderConfig"
+      ( \x ->
+          BackendAuthAppleProviderConfig'
+            Prelude.<$> (x Data..:? "client_id")
+            Prelude.<*> (x Data..:? "key_id")
+            Prelude.<*> (x Data..:? "private_key")
+            Prelude.<*> (x Data..:? "team_id")
+      )
+
+instance
+  Prelude.Hashable
+    BackendAuthAppleProviderConfig
+  where
+  hashWithSalt
+    _salt
+    BackendAuthAppleProviderConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientId
+        `Prelude.hashWithSalt` keyId
+        `Prelude.hashWithSalt` privateKey
+        `Prelude.hashWithSalt` teamId
+
+instance
+  Prelude.NFData
+    BackendAuthAppleProviderConfig
+  where
+  rnf BackendAuthAppleProviderConfig' {..} =
+    Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf keyId
+      `Prelude.seq` Prelude.rnf privateKey
+      `Prelude.seq` Prelude.rnf teamId
+
+instance Data.ToJSON BackendAuthAppleProviderConfig where
+  toJSON BackendAuthAppleProviderConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("client_id" Data..=) Prelude.<$> clientId,
+            ("key_id" Data..=) Prelude.<$> keyId,
+            ("private_key" Data..=) Prelude.<$> privateKey,
+            ("team_id" Data..=) Prelude.<$> teamId
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/BackendAuthSocialProviderConfig.hs b/gen/Amazonka/AmplifyBackend/Types/BackendAuthSocialProviderConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/BackendAuthSocialProviderConfig.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.BackendAuthSocialProviderConfig
+-- 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.AmplifyBackend.Types.BackendAuthSocialProviderConfig 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 third-party social federation configurations for allowing your
+-- app users to sign in using OAuth.
+--
+-- /See:/ 'newBackendAuthSocialProviderConfig' smart constructor.
+data BackendAuthSocialProviderConfig = BackendAuthSocialProviderConfig'
+  { -- | Describes the client_id, which can be obtained from the third-party
+    -- social federation provider.
+    clientId :: Prelude.Maybe Prelude.Text,
+    -- | Describes the client_secret, which can be obtained from third-party
+    -- social federation providers.
+    clientSecret :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackendAuthSocialProviderConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientId', 'backendAuthSocialProviderConfig_clientId' - Describes the client_id, which can be obtained from the third-party
+-- social federation provider.
+--
+-- 'clientSecret', 'backendAuthSocialProviderConfig_clientSecret' - Describes the client_secret, which can be obtained from third-party
+-- social federation providers.
+newBackendAuthSocialProviderConfig ::
+  BackendAuthSocialProviderConfig
+newBackendAuthSocialProviderConfig =
+  BackendAuthSocialProviderConfig'
+    { clientId =
+        Prelude.Nothing,
+      clientSecret = Prelude.Nothing
+    }
+
+-- | Describes the client_id, which can be obtained from the third-party
+-- social federation provider.
+backendAuthSocialProviderConfig_clientId :: Lens.Lens' BackendAuthSocialProviderConfig (Prelude.Maybe Prelude.Text)
+backendAuthSocialProviderConfig_clientId = Lens.lens (\BackendAuthSocialProviderConfig' {clientId} -> clientId) (\s@BackendAuthSocialProviderConfig' {} a -> s {clientId = a} :: BackendAuthSocialProviderConfig)
+
+-- | Describes the client_secret, which can be obtained from third-party
+-- social federation providers.
+backendAuthSocialProviderConfig_clientSecret :: Lens.Lens' BackendAuthSocialProviderConfig (Prelude.Maybe Prelude.Text)
+backendAuthSocialProviderConfig_clientSecret = Lens.lens (\BackendAuthSocialProviderConfig' {clientSecret} -> clientSecret) (\s@BackendAuthSocialProviderConfig' {} a -> s {clientSecret = a} :: BackendAuthSocialProviderConfig)
+
+instance
+  Data.FromJSON
+    BackendAuthSocialProviderConfig
+  where
+  parseJSON =
+    Data.withObject
+      "BackendAuthSocialProviderConfig"
+      ( \x ->
+          BackendAuthSocialProviderConfig'
+            Prelude.<$> (x Data..:? "client_id")
+            Prelude.<*> (x Data..:? "client_secret")
+      )
+
+instance
+  Prelude.Hashable
+    BackendAuthSocialProviderConfig
+  where
+  hashWithSalt
+    _salt
+    BackendAuthSocialProviderConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientId
+        `Prelude.hashWithSalt` clientSecret
+
+instance
+  Prelude.NFData
+    BackendAuthSocialProviderConfig
+  where
+  rnf BackendAuthSocialProviderConfig' {..} =
+    Prelude.rnf clientId
+      `Prelude.seq` Prelude.rnf clientSecret
+
+instance Data.ToJSON BackendAuthSocialProviderConfig where
+  toJSON BackendAuthSocialProviderConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("client_id" Data..=) Prelude.<$> clientId,
+            ("client_secret" Data..=) Prelude.<$> clientSecret
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/BackendJobRespObj.hs b/gen/Amazonka/AmplifyBackend/Types/BackendJobRespObj.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/BackendJobRespObj.hs
@@ -0,0 +1,160 @@
+{-# 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.AmplifyBackend.Types.BackendJobRespObj
+-- 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.AmplifyBackend.Types.BackendJobRespObj 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 response object for this operation.
+--
+-- /See:/ 'newBackendJobRespObj' smart constructor.
+data BackendJobRespObj = BackendJobRespObj'
+  { -- | The time when the job was created.
+    createTime :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | The time when the job was last updated.
+    updateTime :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackendJobRespObj' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createTime', 'backendJobRespObj_createTime' - The time when the job was created.
+--
+-- 'error', 'backendJobRespObj_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'backendJobRespObj_jobId' - The ID for the job.
+--
+-- 'operation', 'backendJobRespObj_operation' - The name of the operation.
+--
+-- 'status', 'backendJobRespObj_status' - The current status of the request.
+--
+-- 'updateTime', 'backendJobRespObj_updateTime' - The time when the job was last updated.
+--
+-- 'appId', 'backendJobRespObj_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'backendJobRespObj_backendEnvironmentName' - The name of the backend environment.
+newBackendJobRespObj ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  BackendJobRespObj
+newBackendJobRespObj pAppId_ pBackendEnvironmentName_ =
+  BackendJobRespObj'
+    { createTime = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updateTime = Prelude.Nothing,
+      appId = pAppId_,
+      backendEnvironmentName = pBackendEnvironmentName_
+    }
+
+-- | The time when the job was created.
+backendJobRespObj_createTime :: Lens.Lens' BackendJobRespObj (Prelude.Maybe Prelude.Text)
+backendJobRespObj_createTime = Lens.lens (\BackendJobRespObj' {createTime} -> createTime) (\s@BackendJobRespObj' {} a -> s {createTime = a} :: BackendJobRespObj)
+
+-- | If the request fails, this error is returned.
+backendJobRespObj_error :: Lens.Lens' BackendJobRespObj (Prelude.Maybe Prelude.Text)
+backendJobRespObj_error = Lens.lens (\BackendJobRespObj' {error} -> error) (\s@BackendJobRespObj' {} a -> s {error = a} :: BackendJobRespObj)
+
+-- | The ID for the job.
+backendJobRespObj_jobId :: Lens.Lens' BackendJobRespObj (Prelude.Maybe Prelude.Text)
+backendJobRespObj_jobId = Lens.lens (\BackendJobRespObj' {jobId} -> jobId) (\s@BackendJobRespObj' {} a -> s {jobId = a} :: BackendJobRespObj)
+
+-- | The name of the operation.
+backendJobRespObj_operation :: Lens.Lens' BackendJobRespObj (Prelude.Maybe Prelude.Text)
+backendJobRespObj_operation = Lens.lens (\BackendJobRespObj' {operation} -> operation) (\s@BackendJobRespObj' {} a -> s {operation = a} :: BackendJobRespObj)
+
+-- | The current status of the request.
+backendJobRespObj_status :: Lens.Lens' BackendJobRespObj (Prelude.Maybe Prelude.Text)
+backendJobRespObj_status = Lens.lens (\BackendJobRespObj' {status} -> status) (\s@BackendJobRespObj' {} a -> s {status = a} :: BackendJobRespObj)
+
+-- | The time when the job was last updated.
+backendJobRespObj_updateTime :: Lens.Lens' BackendJobRespObj (Prelude.Maybe Prelude.Text)
+backendJobRespObj_updateTime = Lens.lens (\BackendJobRespObj' {updateTime} -> updateTime) (\s@BackendJobRespObj' {} a -> s {updateTime = a} :: BackendJobRespObj)
+
+-- | The app ID.
+backendJobRespObj_appId :: Lens.Lens' BackendJobRespObj Prelude.Text
+backendJobRespObj_appId = Lens.lens (\BackendJobRespObj' {appId} -> appId) (\s@BackendJobRespObj' {} a -> s {appId = a} :: BackendJobRespObj)
+
+-- | The name of the backend environment.
+backendJobRespObj_backendEnvironmentName :: Lens.Lens' BackendJobRespObj Prelude.Text
+backendJobRespObj_backendEnvironmentName = Lens.lens (\BackendJobRespObj' {backendEnvironmentName} -> backendEnvironmentName) (\s@BackendJobRespObj' {} a -> s {backendEnvironmentName = a} :: BackendJobRespObj)
+
+instance Data.FromJSON BackendJobRespObj where
+  parseJSON =
+    Data.withObject
+      "BackendJobRespObj"
+      ( \x ->
+          BackendJobRespObj'
+            Prelude.<$> (x Data..:? "createTime")
+            Prelude.<*> (x Data..:? "error")
+            Prelude.<*> (x Data..:? "jobId")
+            Prelude.<*> (x Data..:? "operation")
+            Prelude.<*> (x Data..:? "status")
+            Prelude.<*> (x Data..:? "updateTime")
+            Prelude.<*> (x Data..: "appId")
+            Prelude.<*> (x Data..: "backendEnvironmentName")
+      )
+
+instance Prelude.Hashable BackendJobRespObj where
+  hashWithSalt _salt BackendJobRespObj' {..} =
+    _salt
+      `Prelude.hashWithSalt` createTime
+      `Prelude.hashWithSalt` error
+      `Prelude.hashWithSalt` jobId
+      `Prelude.hashWithSalt` operation
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updateTime
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+
+instance Prelude.NFData BackendJobRespObj where
+  rnf BackendJobRespObj' {..} =
+    Prelude.rnf createTime
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updateTime
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
diff --git a/gen/Amazonka/AmplifyBackend/Types/BackendStoragePermissions.hs b/gen/Amazonka/AmplifyBackend/Types/BackendStoragePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/BackendStoragePermissions.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.AmplifyBackend.Types.BackendStoragePermissions
+-- 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.AmplifyBackend.Types.BackendStoragePermissions where
+
+import Amazonka.AmplifyBackend.Types.AuthenticatedElement
+import Amazonka.AmplifyBackend.Types.UnAuthenticatedElement
+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 the read, write, and delete permissions users have against
+-- your storage S3 bucket.
+--
+-- /See:/ 'newBackendStoragePermissions' smart constructor.
+data BackendStoragePermissions = BackendStoragePermissions'
+  { -- | Lists all unauthenticated user read, write, and delete permissions for
+    -- your S3 bucket.
+    unAuthenticated :: Prelude.Maybe [UnAuthenticatedElement],
+    -- | Lists all authenticated user read, write, and delete permissions for
+    -- your S3 bucket.
+    authenticated :: [AuthenticatedElement]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BackendStoragePermissions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'unAuthenticated', 'backendStoragePermissions_unAuthenticated' - Lists all unauthenticated user read, write, and delete permissions for
+-- your S3 bucket.
+--
+-- 'authenticated', 'backendStoragePermissions_authenticated' - Lists all authenticated user read, write, and delete permissions for
+-- your S3 bucket.
+newBackendStoragePermissions ::
+  BackendStoragePermissions
+newBackendStoragePermissions =
+  BackendStoragePermissions'
+    { unAuthenticated =
+        Prelude.Nothing,
+      authenticated = Prelude.mempty
+    }
+
+-- | Lists all unauthenticated user read, write, and delete permissions for
+-- your S3 bucket.
+backendStoragePermissions_unAuthenticated :: Lens.Lens' BackendStoragePermissions (Prelude.Maybe [UnAuthenticatedElement])
+backendStoragePermissions_unAuthenticated = Lens.lens (\BackendStoragePermissions' {unAuthenticated} -> unAuthenticated) (\s@BackendStoragePermissions' {} a -> s {unAuthenticated = a} :: BackendStoragePermissions) Prelude.. Lens.mapping Lens.coerced
+
+-- | Lists all authenticated user read, write, and delete permissions for
+-- your S3 bucket.
+backendStoragePermissions_authenticated :: Lens.Lens' BackendStoragePermissions [AuthenticatedElement]
+backendStoragePermissions_authenticated = Lens.lens (\BackendStoragePermissions' {authenticated} -> authenticated) (\s@BackendStoragePermissions' {} a -> s {authenticated = a} :: BackendStoragePermissions) Prelude.. Lens.coerced
+
+instance Data.FromJSON BackendStoragePermissions where
+  parseJSON =
+    Data.withObject
+      "BackendStoragePermissions"
+      ( \x ->
+          BackendStoragePermissions'
+            Prelude.<$> ( x
+                            Data..:? "unAuthenticated"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "authenticated" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable BackendStoragePermissions where
+  hashWithSalt _salt BackendStoragePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` unAuthenticated
+      `Prelude.hashWithSalt` authenticated
+
+instance Prelude.NFData BackendStoragePermissions where
+  rnf BackendStoragePermissions' {..} =
+    Prelude.rnf unAuthenticated
+      `Prelude.seq` Prelude.rnf authenticated
+
+instance Data.ToJSON BackendStoragePermissions where
+  toJSON BackendStoragePermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("unAuthenticated" Data..=)
+              Prelude.<$> unAuthenticated,
+            Prelude.Just
+              ("authenticated" Data..= authenticated)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthForgotPasswordConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthForgotPasswordConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthForgotPasswordConfig.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.CreateBackendAuthForgotPasswordConfig
+-- 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.AmplifyBackend.Types.CreateBackendAuthForgotPasswordConfig where
+
+import Amazonka.AmplifyBackend.Types.DeliveryMethod
+import Amazonka.AmplifyBackend.Types.EmailSettings
+import Amazonka.AmplifyBackend.Types.SmsSettings
+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
+
+-- | __(DEPRECATED)__ Describes the forgot password policy for authenticating
+-- into the Amplify app.
+--
+-- /See:/ 'newCreateBackendAuthForgotPasswordConfig' smart constructor.
+data CreateBackendAuthForgotPasswordConfig = CreateBackendAuthForgotPasswordConfig'
+  { -- | __(DEPRECATED)__ The configuration for the email sent when an app user
+    -- forgets their password.
+    emailSettings :: Prelude.Maybe EmailSettings,
+    -- | __(DEPRECATED)__ The configuration for the SMS message sent when an app
+    -- user forgets their password.
+    smsSettings :: Prelude.Maybe SmsSettings,
+    -- | __(DEPRECATED)__ Describes which mode to use (either SMS or email) to
+    -- deliver messages to app users who want to recover their password.
+    deliveryMethod :: DeliveryMethod
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuthForgotPasswordConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emailSettings', 'createBackendAuthForgotPasswordConfig_emailSettings' - __(DEPRECATED)__ The configuration for the email sent when an app user
+-- forgets their password.
+--
+-- 'smsSettings', 'createBackendAuthForgotPasswordConfig_smsSettings' - __(DEPRECATED)__ The configuration for the SMS message sent when an app
+-- user forgets their password.
+--
+-- 'deliveryMethod', 'createBackendAuthForgotPasswordConfig_deliveryMethod' - __(DEPRECATED)__ Describes which mode to use (either SMS or email) to
+-- deliver messages to app users who want to recover their password.
+newCreateBackendAuthForgotPasswordConfig ::
+  -- | 'deliveryMethod'
+  DeliveryMethod ->
+  CreateBackendAuthForgotPasswordConfig
+newCreateBackendAuthForgotPasswordConfig
+  pDeliveryMethod_ =
+    CreateBackendAuthForgotPasswordConfig'
+      { emailSettings =
+          Prelude.Nothing,
+        smsSettings = Prelude.Nothing,
+        deliveryMethod = pDeliveryMethod_
+      }
+
+-- | __(DEPRECATED)__ The configuration for the email sent when an app user
+-- forgets their password.
+createBackendAuthForgotPasswordConfig_emailSettings :: Lens.Lens' CreateBackendAuthForgotPasswordConfig (Prelude.Maybe EmailSettings)
+createBackendAuthForgotPasswordConfig_emailSettings = Lens.lens (\CreateBackendAuthForgotPasswordConfig' {emailSettings} -> emailSettings) (\s@CreateBackendAuthForgotPasswordConfig' {} a -> s {emailSettings = a} :: CreateBackendAuthForgotPasswordConfig)
+
+-- | __(DEPRECATED)__ The configuration for the SMS message sent when an app
+-- user forgets their password.
+createBackendAuthForgotPasswordConfig_smsSettings :: Lens.Lens' CreateBackendAuthForgotPasswordConfig (Prelude.Maybe SmsSettings)
+createBackendAuthForgotPasswordConfig_smsSettings = Lens.lens (\CreateBackendAuthForgotPasswordConfig' {smsSettings} -> smsSettings) (\s@CreateBackendAuthForgotPasswordConfig' {} a -> s {smsSettings = a} :: CreateBackendAuthForgotPasswordConfig)
+
+-- | __(DEPRECATED)__ Describes which mode to use (either SMS or email) to
+-- deliver messages to app users who want to recover their password.
+createBackendAuthForgotPasswordConfig_deliveryMethod :: Lens.Lens' CreateBackendAuthForgotPasswordConfig DeliveryMethod
+createBackendAuthForgotPasswordConfig_deliveryMethod = Lens.lens (\CreateBackendAuthForgotPasswordConfig' {deliveryMethod} -> deliveryMethod) (\s@CreateBackendAuthForgotPasswordConfig' {} a -> s {deliveryMethod = a} :: CreateBackendAuthForgotPasswordConfig)
+
+instance
+  Data.FromJSON
+    CreateBackendAuthForgotPasswordConfig
+  where
+  parseJSON =
+    Data.withObject
+      "CreateBackendAuthForgotPasswordConfig"
+      ( \x ->
+          CreateBackendAuthForgotPasswordConfig'
+            Prelude.<$> (x Data..:? "emailSettings")
+            Prelude.<*> (x Data..:? "smsSettings")
+            Prelude.<*> (x Data..: "deliveryMethod")
+      )
+
+instance
+  Prelude.Hashable
+    CreateBackendAuthForgotPasswordConfig
+  where
+  hashWithSalt
+    _salt
+    CreateBackendAuthForgotPasswordConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` emailSettings
+        `Prelude.hashWithSalt` smsSettings
+        `Prelude.hashWithSalt` deliveryMethod
+
+instance
+  Prelude.NFData
+    CreateBackendAuthForgotPasswordConfig
+  where
+  rnf CreateBackendAuthForgotPasswordConfig' {..} =
+    Prelude.rnf emailSettings
+      `Prelude.seq` Prelude.rnf smsSettings
+      `Prelude.seq` Prelude.rnf deliveryMethod
+
+instance
+  Data.ToJSON
+    CreateBackendAuthForgotPasswordConfig
+  where
+  toJSON CreateBackendAuthForgotPasswordConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("emailSettings" Data..=) Prelude.<$> emailSettings,
+            ("smsSettings" Data..=) Prelude.<$> smsSettings,
+            Prelude.Just
+              ("deliveryMethod" Data..= deliveryMethod)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthIdentityPoolConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthIdentityPoolConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthIdentityPoolConfig.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.AmplifyBackend.Types.CreateBackendAuthIdentityPoolConfig
+-- 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.AmplifyBackend.Types.CreateBackendAuthIdentityPoolConfig 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 authorization configurations for the auth resources,
+-- configured as a part of your Amplify project.
+--
+-- /See:/ 'newCreateBackendAuthIdentityPoolConfig' smart constructor.
+data CreateBackendAuthIdentityPoolConfig = CreateBackendAuthIdentityPoolConfig'
+  { -- | Set to true or false based on whether you want to enable guest
+    -- authorization to your Amplify app.
+    unauthenticatedLogin :: Prelude.Bool,
+    -- | Name of the Amazon Cognito identity pool used for authorization.
+    identityPoolName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuthIdentityPoolConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'unauthenticatedLogin', 'createBackendAuthIdentityPoolConfig_unauthenticatedLogin' - Set to true or false based on whether you want to enable guest
+-- authorization to your Amplify app.
+--
+-- 'identityPoolName', 'createBackendAuthIdentityPoolConfig_identityPoolName' - Name of the Amazon Cognito identity pool used for authorization.
+newCreateBackendAuthIdentityPoolConfig ::
+  -- | 'unauthenticatedLogin'
+  Prelude.Bool ->
+  -- | 'identityPoolName'
+  Prelude.Text ->
+  CreateBackendAuthIdentityPoolConfig
+newCreateBackendAuthIdentityPoolConfig
+  pUnauthenticatedLogin_
+  pIdentityPoolName_ =
+    CreateBackendAuthIdentityPoolConfig'
+      { unauthenticatedLogin =
+          pUnauthenticatedLogin_,
+        identityPoolName = pIdentityPoolName_
+      }
+
+-- | Set to true or false based on whether you want to enable guest
+-- authorization to your Amplify app.
+createBackendAuthIdentityPoolConfig_unauthenticatedLogin :: Lens.Lens' CreateBackendAuthIdentityPoolConfig Prelude.Bool
+createBackendAuthIdentityPoolConfig_unauthenticatedLogin = Lens.lens (\CreateBackendAuthIdentityPoolConfig' {unauthenticatedLogin} -> unauthenticatedLogin) (\s@CreateBackendAuthIdentityPoolConfig' {} a -> s {unauthenticatedLogin = a} :: CreateBackendAuthIdentityPoolConfig)
+
+-- | Name of the Amazon Cognito identity pool used for authorization.
+createBackendAuthIdentityPoolConfig_identityPoolName :: Lens.Lens' CreateBackendAuthIdentityPoolConfig Prelude.Text
+createBackendAuthIdentityPoolConfig_identityPoolName = Lens.lens (\CreateBackendAuthIdentityPoolConfig' {identityPoolName} -> identityPoolName) (\s@CreateBackendAuthIdentityPoolConfig' {} a -> s {identityPoolName = a} :: CreateBackendAuthIdentityPoolConfig)
+
+instance
+  Data.FromJSON
+    CreateBackendAuthIdentityPoolConfig
+  where
+  parseJSON =
+    Data.withObject
+      "CreateBackendAuthIdentityPoolConfig"
+      ( \x ->
+          CreateBackendAuthIdentityPoolConfig'
+            Prelude.<$> (x Data..: "unauthenticatedLogin")
+            Prelude.<*> (x Data..: "identityPoolName")
+      )
+
+instance
+  Prelude.Hashable
+    CreateBackendAuthIdentityPoolConfig
+  where
+  hashWithSalt
+    _salt
+    CreateBackendAuthIdentityPoolConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` unauthenticatedLogin
+        `Prelude.hashWithSalt` identityPoolName
+
+instance
+  Prelude.NFData
+    CreateBackendAuthIdentityPoolConfig
+  where
+  rnf CreateBackendAuthIdentityPoolConfig' {..} =
+    Prelude.rnf unauthenticatedLogin
+      `Prelude.seq` Prelude.rnf identityPoolName
+
+instance
+  Data.ToJSON
+    CreateBackendAuthIdentityPoolConfig
+  where
+  toJSON CreateBackendAuthIdentityPoolConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "unauthenticatedLogin"
+                  Data..= unauthenticatedLogin
+              ),
+            Prelude.Just
+              ("identityPoolName" Data..= identityPoolName)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthMFAConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthMFAConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthMFAConfig.hs
@@ -0,0 +1,105 @@
+{-# 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.AmplifyBackend.Types.CreateBackendAuthMFAConfig
+-- 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.AmplifyBackend.Types.CreateBackendAuthMFAConfig where
+
+import Amazonka.AmplifyBackend.Types.MFAMode
+import Amazonka.AmplifyBackend.Types.Settings
+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 whether to apply multi-factor authentication policies for your
+-- Amazon Cognito user pool configured as a part of your Amplify project.
+--
+-- /See:/ 'newCreateBackendAuthMFAConfig' smart constructor.
+data CreateBackendAuthMFAConfig = CreateBackendAuthMFAConfig'
+  { -- | Describes the configuration settings and methods for your Amplify app
+    -- users to use MFA.
+    settings :: Prelude.Maybe Settings,
+    -- | Describes whether MFA should be [ON, OFF, or OPTIONAL] for
+    -- authentication in your Amplify project.
+    mfaMode :: MFAMode
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuthMFAConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'settings', 'createBackendAuthMFAConfig_settings' - Describes the configuration settings and methods for your Amplify app
+-- users to use MFA.
+--
+-- 'mfaMode', 'createBackendAuthMFAConfig_mfaMode' - Describes whether MFA should be [ON, OFF, or OPTIONAL] for
+-- authentication in your Amplify project.
+newCreateBackendAuthMFAConfig ::
+  -- | 'mfaMode'
+  MFAMode ->
+  CreateBackendAuthMFAConfig
+newCreateBackendAuthMFAConfig pMFAMode_ =
+  CreateBackendAuthMFAConfig'
+    { settings =
+        Prelude.Nothing,
+      mfaMode = pMFAMode_
+    }
+
+-- | Describes the configuration settings and methods for your Amplify app
+-- users to use MFA.
+createBackendAuthMFAConfig_settings :: Lens.Lens' CreateBackendAuthMFAConfig (Prelude.Maybe Settings)
+createBackendAuthMFAConfig_settings = Lens.lens (\CreateBackendAuthMFAConfig' {settings} -> settings) (\s@CreateBackendAuthMFAConfig' {} a -> s {settings = a} :: CreateBackendAuthMFAConfig)
+
+-- | Describes whether MFA should be [ON, OFF, or OPTIONAL] for
+-- authentication in your Amplify project.
+createBackendAuthMFAConfig_mfaMode :: Lens.Lens' CreateBackendAuthMFAConfig MFAMode
+createBackendAuthMFAConfig_mfaMode = Lens.lens (\CreateBackendAuthMFAConfig' {mfaMode} -> mfaMode) (\s@CreateBackendAuthMFAConfig' {} a -> s {mfaMode = a} :: CreateBackendAuthMFAConfig)
+
+instance Data.FromJSON CreateBackendAuthMFAConfig where
+  parseJSON =
+    Data.withObject
+      "CreateBackendAuthMFAConfig"
+      ( \x ->
+          CreateBackendAuthMFAConfig'
+            Prelude.<$> (x Data..:? "settings")
+            Prelude.<*> (x Data..: "MFAMode")
+      )
+
+instance Prelude.Hashable CreateBackendAuthMFAConfig where
+  hashWithSalt _salt CreateBackendAuthMFAConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` settings
+      `Prelude.hashWithSalt` mfaMode
+
+instance Prelude.NFData CreateBackendAuthMFAConfig where
+  rnf CreateBackendAuthMFAConfig' {..} =
+    Prelude.rnf settings
+      `Prelude.seq` Prelude.rnf mfaMode
+
+instance Data.ToJSON CreateBackendAuthMFAConfig where
+  toJSON CreateBackendAuthMFAConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("settings" Data..=) Prelude.<$> settings,
+            Prelude.Just ("MFAMode" Data..= mfaMode)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthOAuthConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthOAuthConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthOAuthConfig.hs
@@ -0,0 +1,170 @@
+{-# 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.AmplifyBackend.Types.CreateBackendAuthOAuthConfig
+-- 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.AmplifyBackend.Types.CreateBackendAuthOAuthConfig where
+
+import Amazonka.AmplifyBackend.Types.OAuthGrantType
+import Amazonka.AmplifyBackend.Types.OAuthScopesElement
+import Amazonka.AmplifyBackend.Types.SocialProviderSettings
+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
+
+-- | Creates the OAuth configuration for your Amplify project.
+--
+-- /See:/ 'newCreateBackendAuthOAuthConfig' smart constructor.
+data CreateBackendAuthOAuthConfig = CreateBackendAuthOAuthConfig'
+  { -- | The domain prefix for your Amplify app.
+    domainPrefix :: Prelude.Maybe Prelude.Text,
+    -- | The settings for using social providers to access your Amplify app.
+    socialProviderSettings :: Prelude.Maybe SocialProviderSettings,
+    -- | Redirect URLs that OAuth uses when a user signs out of an Amplify app.
+    redirectSignOutURIs :: [Prelude.Text],
+    -- | The redirected URI for signing in to your Amplify app.
+    redirectSignInURIs :: [Prelude.Text],
+    -- | The OAuth grant type that you use to allow app users to authenticate
+    -- from your Amplify app.
+    oAuthGrantType :: OAuthGrantType,
+    -- | List of OAuth-related flows used to allow your app users to authenticate
+    -- from your Amplify app.
+    oAuthScopes :: [OAuthScopesElement]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuthOAuthConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domainPrefix', 'createBackendAuthOAuthConfig_domainPrefix' - The domain prefix for your Amplify app.
+--
+-- 'socialProviderSettings', 'createBackendAuthOAuthConfig_socialProviderSettings' - The settings for using social providers to access your Amplify app.
+--
+-- 'redirectSignOutURIs', 'createBackendAuthOAuthConfig_redirectSignOutURIs' - Redirect URLs that OAuth uses when a user signs out of an Amplify app.
+--
+-- 'redirectSignInURIs', 'createBackendAuthOAuthConfig_redirectSignInURIs' - The redirected URI for signing in to your Amplify app.
+--
+-- 'oAuthGrantType', 'createBackendAuthOAuthConfig_oAuthGrantType' - The OAuth grant type that you use to allow app users to authenticate
+-- from your Amplify app.
+--
+-- 'oAuthScopes', 'createBackendAuthOAuthConfig_oAuthScopes' - List of OAuth-related flows used to allow your app users to authenticate
+-- from your Amplify app.
+newCreateBackendAuthOAuthConfig ::
+  -- | 'oAuthGrantType'
+  OAuthGrantType ->
+  CreateBackendAuthOAuthConfig
+newCreateBackendAuthOAuthConfig pOAuthGrantType_ =
+  CreateBackendAuthOAuthConfig'
+    { domainPrefix =
+        Prelude.Nothing,
+      socialProviderSettings = Prelude.Nothing,
+      redirectSignOutURIs = Prelude.mempty,
+      redirectSignInURIs = Prelude.mempty,
+      oAuthGrantType = pOAuthGrantType_,
+      oAuthScopes = Prelude.mempty
+    }
+
+-- | The domain prefix for your Amplify app.
+createBackendAuthOAuthConfig_domainPrefix :: Lens.Lens' CreateBackendAuthOAuthConfig (Prelude.Maybe Prelude.Text)
+createBackendAuthOAuthConfig_domainPrefix = Lens.lens (\CreateBackendAuthOAuthConfig' {domainPrefix} -> domainPrefix) (\s@CreateBackendAuthOAuthConfig' {} a -> s {domainPrefix = a} :: CreateBackendAuthOAuthConfig)
+
+-- | The settings for using social providers to access your Amplify app.
+createBackendAuthOAuthConfig_socialProviderSettings :: Lens.Lens' CreateBackendAuthOAuthConfig (Prelude.Maybe SocialProviderSettings)
+createBackendAuthOAuthConfig_socialProviderSettings = Lens.lens (\CreateBackendAuthOAuthConfig' {socialProviderSettings} -> socialProviderSettings) (\s@CreateBackendAuthOAuthConfig' {} a -> s {socialProviderSettings = a} :: CreateBackendAuthOAuthConfig)
+
+-- | Redirect URLs that OAuth uses when a user signs out of an Amplify app.
+createBackendAuthOAuthConfig_redirectSignOutURIs :: Lens.Lens' CreateBackendAuthOAuthConfig [Prelude.Text]
+createBackendAuthOAuthConfig_redirectSignOutURIs = Lens.lens (\CreateBackendAuthOAuthConfig' {redirectSignOutURIs} -> redirectSignOutURIs) (\s@CreateBackendAuthOAuthConfig' {} a -> s {redirectSignOutURIs = a} :: CreateBackendAuthOAuthConfig) Prelude.. Lens.coerced
+
+-- | The redirected URI for signing in to your Amplify app.
+createBackendAuthOAuthConfig_redirectSignInURIs :: Lens.Lens' CreateBackendAuthOAuthConfig [Prelude.Text]
+createBackendAuthOAuthConfig_redirectSignInURIs = Lens.lens (\CreateBackendAuthOAuthConfig' {redirectSignInURIs} -> redirectSignInURIs) (\s@CreateBackendAuthOAuthConfig' {} a -> s {redirectSignInURIs = a} :: CreateBackendAuthOAuthConfig) Prelude.. Lens.coerced
+
+-- | The OAuth grant type that you use to allow app users to authenticate
+-- from your Amplify app.
+createBackendAuthOAuthConfig_oAuthGrantType :: Lens.Lens' CreateBackendAuthOAuthConfig OAuthGrantType
+createBackendAuthOAuthConfig_oAuthGrantType = Lens.lens (\CreateBackendAuthOAuthConfig' {oAuthGrantType} -> oAuthGrantType) (\s@CreateBackendAuthOAuthConfig' {} a -> s {oAuthGrantType = a} :: CreateBackendAuthOAuthConfig)
+
+-- | List of OAuth-related flows used to allow your app users to authenticate
+-- from your Amplify app.
+createBackendAuthOAuthConfig_oAuthScopes :: Lens.Lens' CreateBackendAuthOAuthConfig [OAuthScopesElement]
+createBackendAuthOAuthConfig_oAuthScopes = Lens.lens (\CreateBackendAuthOAuthConfig' {oAuthScopes} -> oAuthScopes) (\s@CreateBackendAuthOAuthConfig' {} a -> s {oAuthScopes = a} :: CreateBackendAuthOAuthConfig) Prelude.. Lens.coerced
+
+instance Data.FromJSON CreateBackendAuthOAuthConfig where
+  parseJSON =
+    Data.withObject
+      "CreateBackendAuthOAuthConfig"
+      ( \x ->
+          CreateBackendAuthOAuthConfig'
+            Prelude.<$> (x Data..:? "domainPrefix")
+            Prelude.<*> (x Data..:? "socialProviderSettings")
+            Prelude.<*> ( x
+                            Data..:? "redirectSignOutURIs"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "redirectSignInURIs"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "oAuthGrantType")
+            Prelude.<*> (x Data..:? "oAuthScopes" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    CreateBackendAuthOAuthConfig
+  where
+  hashWithSalt _salt CreateBackendAuthOAuthConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainPrefix
+      `Prelude.hashWithSalt` socialProviderSettings
+      `Prelude.hashWithSalt` redirectSignOutURIs
+      `Prelude.hashWithSalt` redirectSignInURIs
+      `Prelude.hashWithSalt` oAuthGrantType
+      `Prelude.hashWithSalt` oAuthScopes
+
+instance Prelude.NFData CreateBackendAuthOAuthConfig where
+  rnf CreateBackendAuthOAuthConfig' {..} =
+    Prelude.rnf domainPrefix
+      `Prelude.seq` Prelude.rnf socialProviderSettings
+      `Prelude.seq` Prelude.rnf redirectSignOutURIs
+      `Prelude.seq` Prelude.rnf redirectSignInURIs
+      `Prelude.seq` Prelude.rnf oAuthGrantType
+      `Prelude.seq` Prelude.rnf oAuthScopes
+
+instance Data.ToJSON CreateBackendAuthOAuthConfig where
+  toJSON CreateBackendAuthOAuthConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("domainPrefix" Data..=) Prelude.<$> domainPrefix,
+            ("socialProviderSettings" Data..=)
+              Prelude.<$> socialProviderSettings,
+            Prelude.Just
+              ("redirectSignOutURIs" Data..= redirectSignOutURIs),
+            Prelude.Just
+              ("redirectSignInURIs" Data..= redirectSignInURIs),
+            Prelude.Just
+              ("oAuthGrantType" Data..= oAuthGrantType),
+            Prelude.Just ("oAuthScopes" Data..= oAuthScopes)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthPasswordPolicyConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthPasswordPolicyConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthPasswordPolicyConfig.hs
@@ -0,0 +1,124 @@
+{-# 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.AmplifyBackend.Types.CreateBackendAuthPasswordPolicyConfig
+-- 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.AmplifyBackend.Types.CreateBackendAuthPasswordPolicyConfig where
+
+import Amazonka.AmplifyBackend.Types.AdditionalConstraintsElement
+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 password policy configuration for the backend to your Amplify
+-- project.
+--
+-- /See:/ 'newCreateBackendAuthPasswordPolicyConfig' smart constructor.
+data CreateBackendAuthPasswordPolicyConfig = CreateBackendAuthPasswordPolicyConfig'
+  { -- | Additional constraints for the password used to access the backend of
+    -- your Amplify project.
+    additionalConstraints :: Prelude.Maybe [AdditionalConstraintsElement],
+    -- | The minimum length of the password used to access the backend of your
+    -- Amplify project.
+    minimumLength :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuthPasswordPolicyConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'additionalConstraints', 'createBackendAuthPasswordPolicyConfig_additionalConstraints' - Additional constraints for the password used to access the backend of
+-- your Amplify project.
+--
+-- 'minimumLength', 'createBackendAuthPasswordPolicyConfig_minimumLength' - The minimum length of the password used to access the backend of your
+-- Amplify project.
+newCreateBackendAuthPasswordPolicyConfig ::
+  -- | 'minimumLength'
+  Prelude.Double ->
+  CreateBackendAuthPasswordPolicyConfig
+newCreateBackendAuthPasswordPolicyConfig
+  pMinimumLength_ =
+    CreateBackendAuthPasswordPolicyConfig'
+      { additionalConstraints =
+          Prelude.Nothing,
+        minimumLength = pMinimumLength_
+      }
+
+-- | Additional constraints for the password used to access the backend of
+-- your Amplify project.
+createBackendAuthPasswordPolicyConfig_additionalConstraints :: Lens.Lens' CreateBackendAuthPasswordPolicyConfig (Prelude.Maybe [AdditionalConstraintsElement])
+createBackendAuthPasswordPolicyConfig_additionalConstraints = Lens.lens (\CreateBackendAuthPasswordPolicyConfig' {additionalConstraints} -> additionalConstraints) (\s@CreateBackendAuthPasswordPolicyConfig' {} a -> s {additionalConstraints = a} :: CreateBackendAuthPasswordPolicyConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | The minimum length of the password used to access the backend of your
+-- Amplify project.
+createBackendAuthPasswordPolicyConfig_minimumLength :: Lens.Lens' CreateBackendAuthPasswordPolicyConfig Prelude.Double
+createBackendAuthPasswordPolicyConfig_minimumLength = Lens.lens (\CreateBackendAuthPasswordPolicyConfig' {minimumLength} -> minimumLength) (\s@CreateBackendAuthPasswordPolicyConfig' {} a -> s {minimumLength = a} :: CreateBackendAuthPasswordPolicyConfig)
+
+instance
+  Data.FromJSON
+    CreateBackendAuthPasswordPolicyConfig
+  where
+  parseJSON =
+    Data.withObject
+      "CreateBackendAuthPasswordPolicyConfig"
+      ( \x ->
+          CreateBackendAuthPasswordPolicyConfig'
+            Prelude.<$> ( x
+                            Data..:? "additionalConstraints"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "minimumLength")
+      )
+
+instance
+  Prelude.Hashable
+    CreateBackendAuthPasswordPolicyConfig
+  where
+  hashWithSalt
+    _salt
+    CreateBackendAuthPasswordPolicyConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` additionalConstraints
+        `Prelude.hashWithSalt` minimumLength
+
+instance
+  Prelude.NFData
+    CreateBackendAuthPasswordPolicyConfig
+  where
+  rnf CreateBackendAuthPasswordPolicyConfig' {..} =
+    Prelude.rnf additionalConstraints
+      `Prelude.seq` Prelude.rnf minimumLength
+
+instance
+  Data.ToJSON
+    CreateBackendAuthPasswordPolicyConfig
+  where
+  toJSON CreateBackendAuthPasswordPolicyConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("additionalConstraints" Data..=)
+              Prelude.<$> additionalConstraints,
+            Prelude.Just
+              ("minimumLength" Data..= minimumLength)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthResourceConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthResourceConfig.hs
@@ -0,0 +1,162 @@
+{-# 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.AmplifyBackend.Types.CreateBackendAuthResourceConfig
+-- 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.AmplifyBackend.Types.CreateBackendAuthResourceConfig where
+
+import Amazonka.AmplifyBackend.Types.AuthResources
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthIdentityPoolConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthUserPoolConfig
+import Amazonka.AmplifyBackend.Types.Service
+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
+
+-- | Defines the resource configuration when creating an auth resource in
+-- your Amplify project.
+--
+-- /See:/ 'newCreateBackendAuthResourceConfig' smart constructor.
+data CreateBackendAuthResourceConfig = CreateBackendAuthResourceConfig'
+  { -- | Describes the authorization configuration for the Amazon Cognito
+    -- identity pool, provisioned as a part of your auth resource in the
+    -- Amplify project.
+    identityPoolConfigs :: Prelude.Maybe CreateBackendAuthIdentityPoolConfig,
+    -- | Defines whether you want to configure only authentication or both
+    -- authentication and authorization settings.
+    authResources :: AuthResources,
+    -- | Describes authentication configuration for the Amazon Cognito user pool,
+    -- provisioned as a part of your auth resource in the Amplify project.
+    userPoolConfigs :: CreateBackendAuthUserPoolConfig,
+    -- | Defines the service name to use when configuring an authentication
+    -- resource in your Amplify project.
+    service :: Service
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuthResourceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolConfigs', 'createBackendAuthResourceConfig_identityPoolConfigs' - Describes the authorization configuration for the Amazon Cognito
+-- identity pool, provisioned as a part of your auth resource in the
+-- Amplify project.
+--
+-- 'authResources', 'createBackendAuthResourceConfig_authResources' - Defines whether you want to configure only authentication or both
+-- authentication and authorization settings.
+--
+-- 'userPoolConfigs', 'createBackendAuthResourceConfig_userPoolConfigs' - Describes authentication configuration for the Amazon Cognito user pool,
+-- provisioned as a part of your auth resource in the Amplify project.
+--
+-- 'service', 'createBackendAuthResourceConfig_service' - Defines the service name to use when configuring an authentication
+-- resource in your Amplify project.
+newCreateBackendAuthResourceConfig ::
+  -- | 'authResources'
+  AuthResources ->
+  -- | 'userPoolConfigs'
+  CreateBackendAuthUserPoolConfig ->
+  -- | 'service'
+  Service ->
+  CreateBackendAuthResourceConfig
+newCreateBackendAuthResourceConfig
+  pAuthResources_
+  pUserPoolConfigs_
+  pService_ =
+    CreateBackendAuthResourceConfig'
+      { identityPoolConfigs =
+          Prelude.Nothing,
+        authResources = pAuthResources_,
+        userPoolConfigs = pUserPoolConfigs_,
+        service = pService_
+      }
+
+-- | Describes the authorization configuration for the Amazon Cognito
+-- identity pool, provisioned as a part of your auth resource in the
+-- Amplify project.
+createBackendAuthResourceConfig_identityPoolConfigs :: Lens.Lens' CreateBackendAuthResourceConfig (Prelude.Maybe CreateBackendAuthIdentityPoolConfig)
+createBackendAuthResourceConfig_identityPoolConfigs = Lens.lens (\CreateBackendAuthResourceConfig' {identityPoolConfigs} -> identityPoolConfigs) (\s@CreateBackendAuthResourceConfig' {} a -> s {identityPoolConfigs = a} :: CreateBackendAuthResourceConfig)
+
+-- | Defines whether you want to configure only authentication or both
+-- authentication and authorization settings.
+createBackendAuthResourceConfig_authResources :: Lens.Lens' CreateBackendAuthResourceConfig AuthResources
+createBackendAuthResourceConfig_authResources = Lens.lens (\CreateBackendAuthResourceConfig' {authResources} -> authResources) (\s@CreateBackendAuthResourceConfig' {} a -> s {authResources = a} :: CreateBackendAuthResourceConfig)
+
+-- | Describes authentication configuration for the Amazon Cognito user pool,
+-- provisioned as a part of your auth resource in the Amplify project.
+createBackendAuthResourceConfig_userPoolConfigs :: Lens.Lens' CreateBackendAuthResourceConfig CreateBackendAuthUserPoolConfig
+createBackendAuthResourceConfig_userPoolConfigs = Lens.lens (\CreateBackendAuthResourceConfig' {userPoolConfigs} -> userPoolConfigs) (\s@CreateBackendAuthResourceConfig' {} a -> s {userPoolConfigs = a} :: CreateBackendAuthResourceConfig)
+
+-- | Defines the service name to use when configuring an authentication
+-- resource in your Amplify project.
+createBackendAuthResourceConfig_service :: Lens.Lens' CreateBackendAuthResourceConfig Service
+createBackendAuthResourceConfig_service = Lens.lens (\CreateBackendAuthResourceConfig' {service} -> service) (\s@CreateBackendAuthResourceConfig' {} a -> s {service = a} :: CreateBackendAuthResourceConfig)
+
+instance
+  Data.FromJSON
+    CreateBackendAuthResourceConfig
+  where
+  parseJSON =
+    Data.withObject
+      "CreateBackendAuthResourceConfig"
+      ( \x ->
+          CreateBackendAuthResourceConfig'
+            Prelude.<$> (x Data..:? "identityPoolConfigs")
+            Prelude.<*> (x Data..: "authResources")
+            Prelude.<*> (x Data..: "userPoolConfigs")
+            Prelude.<*> (x Data..: "service")
+      )
+
+instance
+  Prelude.Hashable
+    CreateBackendAuthResourceConfig
+  where
+  hashWithSalt
+    _salt
+    CreateBackendAuthResourceConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` identityPoolConfigs
+        `Prelude.hashWithSalt` authResources
+        `Prelude.hashWithSalt` userPoolConfigs
+        `Prelude.hashWithSalt` service
+
+instance
+  Prelude.NFData
+    CreateBackendAuthResourceConfig
+  where
+  rnf CreateBackendAuthResourceConfig' {..} =
+    Prelude.rnf identityPoolConfigs
+      `Prelude.seq` Prelude.rnf authResources
+      `Prelude.seq` Prelude.rnf userPoolConfigs
+      `Prelude.seq` Prelude.rnf service
+
+instance Data.ToJSON CreateBackendAuthResourceConfig where
+  toJSON CreateBackendAuthResourceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("identityPoolConfigs" Data..=)
+              Prelude.<$> identityPoolConfigs,
+            Prelude.Just ("authResources" Data..= authResources),
+            Prelude.Just
+              ("userPoolConfigs" Data..= userPoolConfigs),
+            Prelude.Just ("service" Data..= service)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthUserPoolConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthUserPoolConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthUserPoolConfig.hs
@@ -0,0 +1,227 @@
+{-# 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.AmplifyBackend.Types.CreateBackendAuthUserPoolConfig
+-- 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.AmplifyBackend.Types.CreateBackendAuthUserPoolConfig where
+
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthForgotPasswordConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthMFAConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthOAuthConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthPasswordPolicyConfig
+import Amazonka.AmplifyBackend.Types.CreateBackendAuthVerificationMessageConfig
+import Amazonka.AmplifyBackend.Types.RequiredSignUpAttributesElement
+import Amazonka.AmplifyBackend.Types.SignInMethod
+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 the Amazon Cognito user pool configuration for the auth
+-- resource to be configured for your Amplify project.
+--
+-- /See:/ 'newCreateBackendAuthUserPoolConfig' smart constructor.
+data CreateBackendAuthUserPoolConfig = CreateBackendAuthUserPoolConfig'
+  { -- | __(DEPRECATED)__ Describes the forgotten password policy for your Amazon
+    -- Cognito user pool, configured as a part of your Amplify project.
+    forgotPassword :: Prelude.Maybe CreateBackendAuthForgotPasswordConfig,
+    -- | Describes whether to apply multi-factor authentication policies for your
+    -- Amazon Cognito user pool configured as a part of your Amplify project.
+    mfa :: Prelude.Maybe CreateBackendAuthMFAConfig,
+    -- | Describes the OAuth policy and rules for your Amazon Cognito user pool,
+    -- configured as a part of your Amplify project.
+    oAuth :: Prelude.Maybe CreateBackendAuthOAuthConfig,
+    -- | Describes the password policy for your Amazon Cognito user pool,
+    -- configured as a part of your Amplify project.
+    passwordPolicy :: Prelude.Maybe CreateBackendAuthPasswordPolicyConfig,
+    -- | Describes the email or SMS verification message for your Amazon Cognito
+    -- user pool, configured as a part of your Amplify project.
+    verificationMessage :: Prelude.Maybe CreateBackendAuthVerificationMessageConfig,
+    -- | The required attributes to sign up new users in the user pool.
+    requiredSignUpAttributes :: [RequiredSignUpAttributesElement],
+    -- | Describes the sign-in methods that your Amplify app users use to log in
+    -- using the Amazon Cognito user pool, configured as a part of your Amplify
+    -- project.
+    signInMethod :: SignInMethod,
+    -- | The Amazon Cognito user pool name.
+    userPoolName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuthUserPoolConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forgotPassword', 'createBackendAuthUserPoolConfig_forgotPassword' - __(DEPRECATED)__ Describes the forgotten password policy for your Amazon
+-- Cognito user pool, configured as a part of your Amplify project.
+--
+-- 'mfa', 'createBackendAuthUserPoolConfig_mfa' - Describes whether to apply multi-factor authentication policies for your
+-- Amazon Cognito user pool configured as a part of your Amplify project.
+--
+-- 'oAuth', 'createBackendAuthUserPoolConfig_oAuth' - Describes the OAuth policy and rules for your Amazon Cognito user pool,
+-- configured as a part of your Amplify project.
+--
+-- 'passwordPolicy', 'createBackendAuthUserPoolConfig_passwordPolicy' - Describes the password policy for your Amazon Cognito user pool,
+-- configured as a part of your Amplify project.
+--
+-- 'verificationMessage', 'createBackendAuthUserPoolConfig_verificationMessage' - Describes the email or SMS verification message for your Amazon Cognito
+-- user pool, configured as a part of your Amplify project.
+--
+-- 'requiredSignUpAttributes', 'createBackendAuthUserPoolConfig_requiredSignUpAttributes' - The required attributes to sign up new users in the user pool.
+--
+-- 'signInMethod', 'createBackendAuthUserPoolConfig_signInMethod' - Describes the sign-in methods that your Amplify app users use to log in
+-- using the Amazon Cognito user pool, configured as a part of your Amplify
+-- project.
+--
+-- 'userPoolName', 'createBackendAuthUserPoolConfig_userPoolName' - The Amazon Cognito user pool name.
+newCreateBackendAuthUserPoolConfig ::
+  -- | 'signInMethod'
+  SignInMethod ->
+  -- | 'userPoolName'
+  Prelude.Text ->
+  CreateBackendAuthUserPoolConfig
+newCreateBackendAuthUserPoolConfig
+  pSignInMethod_
+  pUserPoolName_ =
+    CreateBackendAuthUserPoolConfig'
+      { forgotPassword =
+          Prelude.Nothing,
+        mfa = Prelude.Nothing,
+        oAuth = Prelude.Nothing,
+        passwordPolicy = Prelude.Nothing,
+        verificationMessage = Prelude.Nothing,
+        requiredSignUpAttributes = Prelude.mempty,
+        signInMethod = pSignInMethod_,
+        userPoolName = pUserPoolName_
+      }
+
+-- | __(DEPRECATED)__ Describes the forgotten password policy for your Amazon
+-- Cognito user pool, configured as a part of your Amplify project.
+createBackendAuthUserPoolConfig_forgotPassword :: Lens.Lens' CreateBackendAuthUserPoolConfig (Prelude.Maybe CreateBackendAuthForgotPasswordConfig)
+createBackendAuthUserPoolConfig_forgotPassword = Lens.lens (\CreateBackendAuthUserPoolConfig' {forgotPassword} -> forgotPassword) (\s@CreateBackendAuthUserPoolConfig' {} a -> s {forgotPassword = a} :: CreateBackendAuthUserPoolConfig)
+
+-- | Describes whether to apply multi-factor authentication policies for your
+-- Amazon Cognito user pool configured as a part of your Amplify project.
+createBackendAuthUserPoolConfig_mfa :: Lens.Lens' CreateBackendAuthUserPoolConfig (Prelude.Maybe CreateBackendAuthMFAConfig)
+createBackendAuthUserPoolConfig_mfa = Lens.lens (\CreateBackendAuthUserPoolConfig' {mfa} -> mfa) (\s@CreateBackendAuthUserPoolConfig' {} a -> s {mfa = a} :: CreateBackendAuthUserPoolConfig)
+
+-- | Describes the OAuth policy and rules for your Amazon Cognito user pool,
+-- configured as a part of your Amplify project.
+createBackendAuthUserPoolConfig_oAuth :: Lens.Lens' CreateBackendAuthUserPoolConfig (Prelude.Maybe CreateBackendAuthOAuthConfig)
+createBackendAuthUserPoolConfig_oAuth = Lens.lens (\CreateBackendAuthUserPoolConfig' {oAuth} -> oAuth) (\s@CreateBackendAuthUserPoolConfig' {} a -> s {oAuth = a} :: CreateBackendAuthUserPoolConfig)
+
+-- | Describes the password policy for your Amazon Cognito user pool,
+-- configured as a part of your Amplify project.
+createBackendAuthUserPoolConfig_passwordPolicy :: Lens.Lens' CreateBackendAuthUserPoolConfig (Prelude.Maybe CreateBackendAuthPasswordPolicyConfig)
+createBackendAuthUserPoolConfig_passwordPolicy = Lens.lens (\CreateBackendAuthUserPoolConfig' {passwordPolicy} -> passwordPolicy) (\s@CreateBackendAuthUserPoolConfig' {} a -> s {passwordPolicy = a} :: CreateBackendAuthUserPoolConfig)
+
+-- | Describes the email or SMS verification message for your Amazon Cognito
+-- user pool, configured as a part of your Amplify project.
+createBackendAuthUserPoolConfig_verificationMessage :: Lens.Lens' CreateBackendAuthUserPoolConfig (Prelude.Maybe CreateBackendAuthVerificationMessageConfig)
+createBackendAuthUserPoolConfig_verificationMessage = Lens.lens (\CreateBackendAuthUserPoolConfig' {verificationMessage} -> verificationMessage) (\s@CreateBackendAuthUserPoolConfig' {} a -> s {verificationMessage = a} :: CreateBackendAuthUserPoolConfig)
+
+-- | The required attributes to sign up new users in the user pool.
+createBackendAuthUserPoolConfig_requiredSignUpAttributes :: Lens.Lens' CreateBackendAuthUserPoolConfig [RequiredSignUpAttributesElement]
+createBackendAuthUserPoolConfig_requiredSignUpAttributes = Lens.lens (\CreateBackendAuthUserPoolConfig' {requiredSignUpAttributes} -> requiredSignUpAttributes) (\s@CreateBackendAuthUserPoolConfig' {} a -> s {requiredSignUpAttributes = a} :: CreateBackendAuthUserPoolConfig) Prelude.. Lens.coerced
+
+-- | Describes the sign-in methods that your Amplify app users use to log in
+-- using the Amazon Cognito user pool, configured as a part of your Amplify
+-- project.
+createBackendAuthUserPoolConfig_signInMethod :: Lens.Lens' CreateBackendAuthUserPoolConfig SignInMethod
+createBackendAuthUserPoolConfig_signInMethod = Lens.lens (\CreateBackendAuthUserPoolConfig' {signInMethod} -> signInMethod) (\s@CreateBackendAuthUserPoolConfig' {} a -> s {signInMethod = a} :: CreateBackendAuthUserPoolConfig)
+
+-- | The Amazon Cognito user pool name.
+createBackendAuthUserPoolConfig_userPoolName :: Lens.Lens' CreateBackendAuthUserPoolConfig Prelude.Text
+createBackendAuthUserPoolConfig_userPoolName = Lens.lens (\CreateBackendAuthUserPoolConfig' {userPoolName} -> userPoolName) (\s@CreateBackendAuthUserPoolConfig' {} a -> s {userPoolName = a} :: CreateBackendAuthUserPoolConfig)
+
+instance
+  Data.FromJSON
+    CreateBackendAuthUserPoolConfig
+  where
+  parseJSON =
+    Data.withObject
+      "CreateBackendAuthUserPoolConfig"
+      ( \x ->
+          CreateBackendAuthUserPoolConfig'
+            Prelude.<$> (x Data..:? "forgotPassword")
+            Prelude.<*> (x Data..:? "mfa")
+            Prelude.<*> (x Data..:? "oAuth")
+            Prelude.<*> (x Data..:? "passwordPolicy")
+            Prelude.<*> (x Data..:? "verificationMessage")
+            Prelude.<*> ( x
+                            Data..:? "requiredSignUpAttributes"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..: "signInMethod")
+            Prelude.<*> (x Data..: "userPoolName")
+      )
+
+instance
+  Prelude.Hashable
+    CreateBackendAuthUserPoolConfig
+  where
+  hashWithSalt
+    _salt
+    CreateBackendAuthUserPoolConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` forgotPassword
+        `Prelude.hashWithSalt` mfa
+        `Prelude.hashWithSalt` oAuth
+        `Prelude.hashWithSalt` passwordPolicy
+        `Prelude.hashWithSalt` verificationMessage
+        `Prelude.hashWithSalt` requiredSignUpAttributes
+        `Prelude.hashWithSalt` signInMethod
+        `Prelude.hashWithSalt` userPoolName
+
+instance
+  Prelude.NFData
+    CreateBackendAuthUserPoolConfig
+  where
+  rnf CreateBackendAuthUserPoolConfig' {..} =
+    Prelude.rnf forgotPassword
+      `Prelude.seq` Prelude.rnf mfa
+      `Prelude.seq` Prelude.rnf oAuth
+      `Prelude.seq` Prelude.rnf passwordPolicy
+      `Prelude.seq` Prelude.rnf verificationMessage
+      `Prelude.seq` Prelude.rnf requiredSignUpAttributes
+      `Prelude.seq` Prelude.rnf signInMethod
+      `Prelude.seq` Prelude.rnf userPoolName
+
+instance Data.ToJSON CreateBackendAuthUserPoolConfig where
+  toJSON CreateBackendAuthUserPoolConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("forgotPassword" Data..=)
+              Prelude.<$> forgotPassword,
+            ("mfa" Data..=) Prelude.<$> mfa,
+            ("oAuth" Data..=) Prelude.<$> oAuth,
+            ("passwordPolicy" Data..=)
+              Prelude.<$> passwordPolicy,
+            ("verificationMessage" Data..=)
+              Prelude.<$> verificationMessage,
+            Prelude.Just
+              ( "requiredSignUpAttributes"
+                  Data..= requiredSignUpAttributes
+              ),
+            Prelude.Just ("signInMethod" Data..= signInMethod),
+            Prelude.Just ("userPoolName" Data..= userPoolName)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthVerificationMessageConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthVerificationMessageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendAuthVerificationMessageConfig.hs
@@ -0,0 +1,131 @@
+{-# 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.AmplifyBackend.Types.CreateBackendAuthVerificationMessageConfig
+-- 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.AmplifyBackend.Types.CreateBackendAuthVerificationMessageConfig where
+
+import Amazonka.AmplifyBackend.Types.DeliveryMethod
+import Amazonka.AmplifyBackend.Types.EmailSettings
+import Amazonka.AmplifyBackend.Types.SmsSettings
+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
+
+-- | Creates an email or SMS verification message for the auth resource
+-- configured for your Amplify project.
+--
+-- /See:/ 'newCreateBackendAuthVerificationMessageConfig' smart constructor.
+data CreateBackendAuthVerificationMessageConfig = CreateBackendAuthVerificationMessageConfig'
+  { -- | The settings for the email message.
+    emailSettings :: Prelude.Maybe EmailSettings,
+    -- | The settings for the SMS message.
+    smsSettings :: Prelude.Maybe SmsSettings,
+    -- | The type of verification message to send.
+    deliveryMethod :: DeliveryMethod
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendAuthVerificationMessageConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emailSettings', 'createBackendAuthVerificationMessageConfig_emailSettings' - The settings for the email message.
+--
+-- 'smsSettings', 'createBackendAuthVerificationMessageConfig_smsSettings' - The settings for the SMS message.
+--
+-- 'deliveryMethod', 'createBackendAuthVerificationMessageConfig_deliveryMethod' - The type of verification message to send.
+newCreateBackendAuthVerificationMessageConfig ::
+  -- | 'deliveryMethod'
+  DeliveryMethod ->
+  CreateBackendAuthVerificationMessageConfig
+newCreateBackendAuthVerificationMessageConfig
+  pDeliveryMethod_ =
+    CreateBackendAuthVerificationMessageConfig'
+      { emailSettings =
+          Prelude.Nothing,
+        smsSettings = Prelude.Nothing,
+        deliveryMethod =
+          pDeliveryMethod_
+      }
+
+-- | The settings for the email message.
+createBackendAuthVerificationMessageConfig_emailSettings :: Lens.Lens' CreateBackendAuthVerificationMessageConfig (Prelude.Maybe EmailSettings)
+createBackendAuthVerificationMessageConfig_emailSettings = Lens.lens (\CreateBackendAuthVerificationMessageConfig' {emailSettings} -> emailSettings) (\s@CreateBackendAuthVerificationMessageConfig' {} a -> s {emailSettings = a} :: CreateBackendAuthVerificationMessageConfig)
+
+-- | The settings for the SMS message.
+createBackendAuthVerificationMessageConfig_smsSettings :: Lens.Lens' CreateBackendAuthVerificationMessageConfig (Prelude.Maybe SmsSettings)
+createBackendAuthVerificationMessageConfig_smsSettings = Lens.lens (\CreateBackendAuthVerificationMessageConfig' {smsSettings} -> smsSettings) (\s@CreateBackendAuthVerificationMessageConfig' {} a -> s {smsSettings = a} :: CreateBackendAuthVerificationMessageConfig)
+
+-- | The type of verification message to send.
+createBackendAuthVerificationMessageConfig_deliveryMethod :: Lens.Lens' CreateBackendAuthVerificationMessageConfig DeliveryMethod
+createBackendAuthVerificationMessageConfig_deliveryMethod = Lens.lens (\CreateBackendAuthVerificationMessageConfig' {deliveryMethod} -> deliveryMethod) (\s@CreateBackendAuthVerificationMessageConfig' {} a -> s {deliveryMethod = a} :: CreateBackendAuthVerificationMessageConfig)
+
+instance
+  Data.FromJSON
+    CreateBackendAuthVerificationMessageConfig
+  where
+  parseJSON =
+    Data.withObject
+      "CreateBackendAuthVerificationMessageConfig"
+      ( \x ->
+          CreateBackendAuthVerificationMessageConfig'
+            Prelude.<$> (x Data..:? "emailSettings")
+            Prelude.<*> (x Data..:? "smsSettings")
+            Prelude.<*> (x Data..: "deliveryMethod")
+      )
+
+instance
+  Prelude.Hashable
+    CreateBackendAuthVerificationMessageConfig
+  where
+  hashWithSalt
+    _salt
+    CreateBackendAuthVerificationMessageConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` emailSettings
+        `Prelude.hashWithSalt` smsSettings
+        `Prelude.hashWithSalt` deliveryMethod
+
+instance
+  Prelude.NFData
+    CreateBackendAuthVerificationMessageConfig
+  where
+  rnf CreateBackendAuthVerificationMessageConfig' {..} =
+    Prelude.rnf emailSettings
+      `Prelude.seq` Prelude.rnf smsSettings
+      `Prelude.seq` Prelude.rnf deliveryMethod
+
+instance
+  Data.ToJSON
+    CreateBackendAuthVerificationMessageConfig
+  where
+  toJSON
+    CreateBackendAuthVerificationMessageConfig' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("emailSettings" Data..=) Prelude.<$> emailSettings,
+              ("smsSettings" Data..=) Prelude.<$> smsSettings,
+              Prelude.Just
+                ("deliveryMethod" Data..= deliveryMethod)
+            ]
+        )
diff --git a/gen/Amazonka/AmplifyBackend/Types/CreateBackendStorageResourceConfig.hs b/gen/Amazonka/AmplifyBackend/Types/CreateBackendStorageResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/CreateBackendStorageResourceConfig.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.CreateBackendStorageResourceConfig
+-- 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.AmplifyBackend.Types.CreateBackendStorageResourceConfig where
+
+import Amazonka.AmplifyBackend.Types.BackendStoragePermissions
+import Amazonka.AmplifyBackend.Types.ServiceName
+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 resource configuration for creating backend storage.
+--
+-- /See:/ 'newCreateBackendStorageResourceConfig' smart constructor.
+data CreateBackendStorageResourceConfig = CreateBackendStorageResourceConfig'
+  { -- | The name of the S3 bucket.
+    bucketName :: Prelude.Maybe Prelude.Text,
+    -- | The name of the storage service.
+    serviceName :: ServiceName,
+    -- | The authorization configuration for the storage S3 bucket.
+    permissions :: BackendStoragePermissions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateBackendStorageResourceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketName', 'createBackendStorageResourceConfig_bucketName' - The name of the S3 bucket.
+--
+-- 'serviceName', 'createBackendStorageResourceConfig_serviceName' - The name of the storage service.
+--
+-- 'permissions', 'createBackendStorageResourceConfig_permissions' - The authorization configuration for the storage S3 bucket.
+newCreateBackendStorageResourceConfig ::
+  -- | 'serviceName'
+  ServiceName ->
+  -- | 'permissions'
+  BackendStoragePermissions ->
+  CreateBackendStorageResourceConfig
+newCreateBackendStorageResourceConfig
+  pServiceName_
+  pPermissions_ =
+    CreateBackendStorageResourceConfig'
+      { bucketName =
+          Prelude.Nothing,
+        serviceName = pServiceName_,
+        permissions = pPermissions_
+      }
+
+-- | The name of the S3 bucket.
+createBackendStorageResourceConfig_bucketName :: Lens.Lens' CreateBackendStorageResourceConfig (Prelude.Maybe Prelude.Text)
+createBackendStorageResourceConfig_bucketName = Lens.lens (\CreateBackendStorageResourceConfig' {bucketName} -> bucketName) (\s@CreateBackendStorageResourceConfig' {} a -> s {bucketName = a} :: CreateBackendStorageResourceConfig)
+
+-- | The name of the storage service.
+createBackendStorageResourceConfig_serviceName :: Lens.Lens' CreateBackendStorageResourceConfig ServiceName
+createBackendStorageResourceConfig_serviceName = Lens.lens (\CreateBackendStorageResourceConfig' {serviceName} -> serviceName) (\s@CreateBackendStorageResourceConfig' {} a -> s {serviceName = a} :: CreateBackendStorageResourceConfig)
+
+-- | The authorization configuration for the storage S3 bucket.
+createBackendStorageResourceConfig_permissions :: Lens.Lens' CreateBackendStorageResourceConfig BackendStoragePermissions
+createBackendStorageResourceConfig_permissions = Lens.lens (\CreateBackendStorageResourceConfig' {permissions} -> permissions) (\s@CreateBackendStorageResourceConfig' {} a -> s {permissions = a} :: CreateBackendStorageResourceConfig)
+
+instance
+  Prelude.Hashable
+    CreateBackendStorageResourceConfig
+  where
+  hashWithSalt
+    _salt
+    CreateBackendStorageResourceConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` bucketName
+        `Prelude.hashWithSalt` serviceName
+        `Prelude.hashWithSalt` permissions
+
+instance
+  Prelude.NFData
+    CreateBackendStorageResourceConfig
+  where
+  rnf CreateBackendStorageResourceConfig' {..} =
+    Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf serviceName
+      `Prelude.seq` Prelude.rnf permissions
+
+instance
+  Data.ToJSON
+    CreateBackendStorageResourceConfig
+  where
+  toJSON CreateBackendStorageResourceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("bucketName" Data..=) Prelude.<$> bucketName,
+            Prelude.Just ("serviceName" Data..= serviceName),
+            Prelude.Just ("permissions" Data..= permissions)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/DeliveryMethod.hs b/gen/Amazonka/AmplifyBackend/Types/DeliveryMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/DeliveryMethod.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.DeliveryMethod
+-- 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.AmplifyBackend.Types.DeliveryMethod
+  ( DeliveryMethod
+      ( ..,
+        DeliveryMethod_EMAIL,
+        DeliveryMethod_SMS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The type of verification message to send.
+newtype DeliveryMethod = DeliveryMethod'
+  { fromDeliveryMethod ::
+      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 DeliveryMethod_EMAIL :: DeliveryMethod
+pattern DeliveryMethod_EMAIL = DeliveryMethod' "EMAIL"
+
+pattern DeliveryMethod_SMS :: DeliveryMethod
+pattern DeliveryMethod_SMS = DeliveryMethod' "SMS"
+
+{-# COMPLETE
+  DeliveryMethod_EMAIL,
+  DeliveryMethod_SMS,
+  DeliveryMethod'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/EmailSettings.hs b/gen/Amazonka/AmplifyBackend/Types/EmailSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/EmailSettings.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.EmailSettings
+-- 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.AmplifyBackend.Types.EmailSettings 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 for the email sent when an app user forgets their
+-- password.
+--
+-- /See:/ 'newEmailSettings' smart constructor.
+data EmailSettings = EmailSettings'
+  { -- | The contents of the email message.
+    emailMessage :: Prelude.Maybe Prelude.Text,
+    -- | The contents of the subject line of the email message.
+    emailSubject :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EmailSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emailMessage', 'emailSettings_emailMessage' - The contents of the email message.
+--
+-- 'emailSubject', 'emailSettings_emailSubject' - The contents of the subject line of the email message.
+newEmailSettings ::
+  EmailSettings
+newEmailSettings =
+  EmailSettings'
+    { emailMessage = Prelude.Nothing,
+      emailSubject = Prelude.Nothing
+    }
+
+-- | The contents of the email message.
+emailSettings_emailMessage :: Lens.Lens' EmailSettings (Prelude.Maybe Prelude.Text)
+emailSettings_emailMessage = Lens.lens (\EmailSettings' {emailMessage} -> emailMessage) (\s@EmailSettings' {} a -> s {emailMessage = a} :: EmailSettings)
+
+-- | The contents of the subject line of the email message.
+emailSettings_emailSubject :: Lens.Lens' EmailSettings (Prelude.Maybe Prelude.Text)
+emailSettings_emailSubject = Lens.lens (\EmailSettings' {emailSubject} -> emailSubject) (\s@EmailSettings' {} a -> s {emailSubject = a} :: EmailSettings)
+
+instance Data.FromJSON EmailSettings where
+  parseJSON =
+    Data.withObject
+      "EmailSettings"
+      ( \x ->
+          EmailSettings'
+            Prelude.<$> (x Data..:? "emailMessage")
+            Prelude.<*> (x Data..:? "emailSubject")
+      )
+
+instance Prelude.Hashable EmailSettings where
+  hashWithSalt _salt EmailSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` emailMessage
+      `Prelude.hashWithSalt` emailSubject
+
+instance Prelude.NFData EmailSettings where
+  rnf EmailSettings' {..} =
+    Prelude.rnf emailMessage
+      `Prelude.seq` Prelude.rnf emailSubject
+
+instance Data.ToJSON EmailSettings where
+  toJSON EmailSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("emailMessage" Data..=) Prelude.<$> emailMessage,
+            ("emailSubject" Data..=) Prelude.<$> emailSubject
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/GetBackendStorageResourceConfig.hs b/gen/Amazonka/AmplifyBackend/Types/GetBackendStorageResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/GetBackendStorageResourceConfig.hs
@@ -0,0 +1,128 @@
+{-# 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.AmplifyBackend.Types.GetBackendStorageResourceConfig
+-- 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.AmplifyBackend.Types.GetBackendStorageResourceConfig where
+
+import Amazonka.AmplifyBackend.Types.BackendStoragePermissions
+import Amazonka.AmplifyBackend.Types.ServiceName
+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 details for a backend storage resource.
+--
+-- /See:/ 'newGetBackendStorageResourceConfig' smart constructor.
+data GetBackendStorageResourceConfig = GetBackendStorageResourceConfig'
+  { -- | The name of the S3 bucket.
+    bucketName :: Prelude.Maybe Prelude.Text,
+    -- | The authorization configuration for the storage S3 bucket.
+    permissions :: Prelude.Maybe BackendStoragePermissions,
+    -- | The name of the storage service.
+    serviceName :: ServiceName,
+    -- | Returns True if the storage resource has been imported.
+    imported :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBackendStorageResourceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketName', 'getBackendStorageResourceConfig_bucketName' - The name of the S3 bucket.
+--
+-- 'permissions', 'getBackendStorageResourceConfig_permissions' - The authorization configuration for the storage S3 bucket.
+--
+-- 'serviceName', 'getBackendStorageResourceConfig_serviceName' - The name of the storage service.
+--
+-- 'imported', 'getBackendStorageResourceConfig_imported' - Returns True if the storage resource has been imported.
+newGetBackendStorageResourceConfig ::
+  -- | 'serviceName'
+  ServiceName ->
+  -- | 'imported'
+  Prelude.Bool ->
+  GetBackendStorageResourceConfig
+newGetBackendStorageResourceConfig
+  pServiceName_
+  pImported_ =
+    GetBackendStorageResourceConfig'
+      { bucketName =
+          Prelude.Nothing,
+        permissions = Prelude.Nothing,
+        serviceName = pServiceName_,
+        imported = pImported_
+      }
+
+-- | The name of the S3 bucket.
+getBackendStorageResourceConfig_bucketName :: Lens.Lens' GetBackendStorageResourceConfig (Prelude.Maybe Prelude.Text)
+getBackendStorageResourceConfig_bucketName = Lens.lens (\GetBackendStorageResourceConfig' {bucketName} -> bucketName) (\s@GetBackendStorageResourceConfig' {} a -> s {bucketName = a} :: GetBackendStorageResourceConfig)
+
+-- | The authorization configuration for the storage S3 bucket.
+getBackendStorageResourceConfig_permissions :: Lens.Lens' GetBackendStorageResourceConfig (Prelude.Maybe BackendStoragePermissions)
+getBackendStorageResourceConfig_permissions = Lens.lens (\GetBackendStorageResourceConfig' {permissions} -> permissions) (\s@GetBackendStorageResourceConfig' {} a -> s {permissions = a} :: GetBackendStorageResourceConfig)
+
+-- | The name of the storage service.
+getBackendStorageResourceConfig_serviceName :: Lens.Lens' GetBackendStorageResourceConfig ServiceName
+getBackendStorageResourceConfig_serviceName = Lens.lens (\GetBackendStorageResourceConfig' {serviceName} -> serviceName) (\s@GetBackendStorageResourceConfig' {} a -> s {serviceName = a} :: GetBackendStorageResourceConfig)
+
+-- | Returns True if the storage resource has been imported.
+getBackendStorageResourceConfig_imported :: Lens.Lens' GetBackendStorageResourceConfig Prelude.Bool
+getBackendStorageResourceConfig_imported = Lens.lens (\GetBackendStorageResourceConfig' {imported} -> imported) (\s@GetBackendStorageResourceConfig' {} a -> s {imported = a} :: GetBackendStorageResourceConfig)
+
+instance
+  Data.FromJSON
+    GetBackendStorageResourceConfig
+  where
+  parseJSON =
+    Data.withObject
+      "GetBackendStorageResourceConfig"
+      ( \x ->
+          GetBackendStorageResourceConfig'
+            Prelude.<$> (x Data..:? "bucketName")
+            Prelude.<*> (x Data..:? "permissions")
+            Prelude.<*> (x Data..: "serviceName")
+            Prelude.<*> (x Data..: "imported")
+      )
+
+instance
+  Prelude.Hashable
+    GetBackendStorageResourceConfig
+  where
+  hashWithSalt
+    _salt
+    GetBackendStorageResourceConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` bucketName
+        `Prelude.hashWithSalt` permissions
+        `Prelude.hashWithSalt` serviceName
+        `Prelude.hashWithSalt` imported
+
+instance
+  Prelude.NFData
+    GetBackendStorageResourceConfig
+  where
+  rnf GetBackendStorageResourceConfig' {..} =
+    Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf permissions
+      `Prelude.seq` Prelude.rnf serviceName
+      `Prelude.seq` Prelude.rnf imported
diff --git a/gen/Amazonka/AmplifyBackend/Types/LoginAuthConfigReqObj.hs b/gen/Amazonka/AmplifyBackend/Types/LoginAuthConfigReqObj.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/LoginAuthConfigReqObj.hs
@@ -0,0 +1,130 @@
+{-# 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.AmplifyBackend.Types.LoginAuthConfigReqObj
+-- 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.AmplifyBackend.Types.LoginAuthConfigReqObj 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 request object for this operation.
+--
+-- /See:/ 'newLoginAuthConfigReqObj' smart constructor.
+data LoginAuthConfigReqObj = LoginAuthConfigReqObj'
+  { -- | The Amazon Cognito identity pool ID used for the Amplify Admin UI login
+    -- authorization.
+    awsCognitoIdentityPoolId :: Prelude.Maybe Prelude.Text,
+    -- | The AWS Region for the Amplify Admin UI login.
+    awsCognitoRegion :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Cognito user pool ID used for Amplify Admin UI login
+    -- authentication.
+    awsUserPoolsId :: Prelude.Maybe Prelude.Text,
+    -- | The web client ID for the Amazon Cognito user pools.
+    awsUserPoolsWebClientId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LoginAuthConfigReqObj' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsCognitoIdentityPoolId', 'loginAuthConfigReqObj_awsCognitoIdentityPoolId' - The Amazon Cognito identity pool ID used for the Amplify Admin UI login
+-- authorization.
+--
+-- 'awsCognitoRegion', 'loginAuthConfigReqObj_awsCognitoRegion' - The AWS Region for the Amplify Admin UI login.
+--
+-- 'awsUserPoolsId', 'loginAuthConfigReqObj_awsUserPoolsId' - The Amazon Cognito user pool ID used for Amplify Admin UI login
+-- authentication.
+--
+-- 'awsUserPoolsWebClientId', 'loginAuthConfigReqObj_awsUserPoolsWebClientId' - The web client ID for the Amazon Cognito user pools.
+newLoginAuthConfigReqObj ::
+  LoginAuthConfigReqObj
+newLoginAuthConfigReqObj =
+  LoginAuthConfigReqObj'
+    { awsCognitoIdentityPoolId =
+        Prelude.Nothing,
+      awsCognitoRegion = Prelude.Nothing,
+      awsUserPoolsId = Prelude.Nothing,
+      awsUserPoolsWebClientId = Prelude.Nothing
+    }
+
+-- | The Amazon Cognito identity pool ID used for the Amplify Admin UI login
+-- authorization.
+loginAuthConfigReqObj_awsCognitoIdentityPoolId :: Lens.Lens' LoginAuthConfigReqObj (Prelude.Maybe Prelude.Text)
+loginAuthConfigReqObj_awsCognitoIdentityPoolId = Lens.lens (\LoginAuthConfigReqObj' {awsCognitoIdentityPoolId} -> awsCognitoIdentityPoolId) (\s@LoginAuthConfigReqObj' {} a -> s {awsCognitoIdentityPoolId = a} :: LoginAuthConfigReqObj)
+
+-- | The AWS Region for the Amplify Admin UI login.
+loginAuthConfigReqObj_awsCognitoRegion :: Lens.Lens' LoginAuthConfigReqObj (Prelude.Maybe Prelude.Text)
+loginAuthConfigReqObj_awsCognitoRegion = Lens.lens (\LoginAuthConfigReqObj' {awsCognitoRegion} -> awsCognitoRegion) (\s@LoginAuthConfigReqObj' {} a -> s {awsCognitoRegion = a} :: LoginAuthConfigReqObj)
+
+-- | The Amazon Cognito user pool ID used for Amplify Admin UI login
+-- authentication.
+loginAuthConfigReqObj_awsUserPoolsId :: Lens.Lens' LoginAuthConfigReqObj (Prelude.Maybe Prelude.Text)
+loginAuthConfigReqObj_awsUserPoolsId = Lens.lens (\LoginAuthConfigReqObj' {awsUserPoolsId} -> awsUserPoolsId) (\s@LoginAuthConfigReqObj' {} a -> s {awsUserPoolsId = a} :: LoginAuthConfigReqObj)
+
+-- | The web client ID for the Amazon Cognito user pools.
+loginAuthConfigReqObj_awsUserPoolsWebClientId :: Lens.Lens' LoginAuthConfigReqObj (Prelude.Maybe Prelude.Text)
+loginAuthConfigReqObj_awsUserPoolsWebClientId = Lens.lens (\LoginAuthConfigReqObj' {awsUserPoolsWebClientId} -> awsUserPoolsWebClientId) (\s@LoginAuthConfigReqObj' {} a -> s {awsUserPoolsWebClientId = a} :: LoginAuthConfigReqObj)
+
+instance Data.FromJSON LoginAuthConfigReqObj where
+  parseJSON =
+    Data.withObject
+      "LoginAuthConfigReqObj"
+      ( \x ->
+          LoginAuthConfigReqObj'
+            Prelude.<$> (x Data..:? "aws_cognito_identity_pool_id")
+            Prelude.<*> (x Data..:? "aws_cognito_region")
+            Prelude.<*> (x Data..:? "aws_user_pools_id")
+            Prelude.<*> (x Data..:? "aws_user_pools_web_client_id")
+      )
+
+instance Prelude.Hashable LoginAuthConfigReqObj where
+  hashWithSalt _salt LoginAuthConfigReqObj' {..} =
+    _salt
+      `Prelude.hashWithSalt` awsCognitoIdentityPoolId
+      `Prelude.hashWithSalt` awsCognitoRegion
+      `Prelude.hashWithSalt` awsUserPoolsId
+      `Prelude.hashWithSalt` awsUserPoolsWebClientId
+
+instance Prelude.NFData LoginAuthConfigReqObj where
+  rnf LoginAuthConfigReqObj' {..} =
+    Prelude.rnf awsCognitoIdentityPoolId
+      `Prelude.seq` Prelude.rnf awsCognitoRegion
+      `Prelude.seq` Prelude.rnf awsUserPoolsId
+      `Prelude.seq` Prelude.rnf awsUserPoolsWebClientId
+
+instance Data.ToJSON LoginAuthConfigReqObj where
+  toJSON LoginAuthConfigReqObj' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("aws_cognito_identity_pool_id" Data..=)
+              Prelude.<$> awsCognitoIdentityPoolId,
+            ("aws_cognito_region" Data..=)
+              Prelude.<$> awsCognitoRegion,
+            ("aws_user_pools_id" Data..=)
+              Prelude.<$> awsUserPoolsId,
+            ("aws_user_pools_web_client_id" Data..=)
+              Prelude.<$> awsUserPoolsWebClientId
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/MFAMode.hs b/gen/Amazonka/AmplifyBackend/Types/MFAMode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/MFAMode.hs
@@ -0,0 +1,73 @@
+{-# 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.AmplifyBackend.Types.MFAMode
+-- 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.AmplifyBackend.Types.MFAMode
+  ( MFAMode
+      ( ..,
+        MFAMode_OFF,
+        MFAMode_ON,
+        MFAMode_OPTIONAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MFAMode = MFAMode' {fromMFAMode :: 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 MFAMode_OFF :: MFAMode
+pattern MFAMode_OFF = MFAMode' "OFF"
+
+pattern MFAMode_ON :: MFAMode
+pattern MFAMode_ON = MFAMode' "ON"
+
+pattern MFAMode_OPTIONAL :: MFAMode
+pattern MFAMode_OPTIONAL = MFAMode' "OPTIONAL"
+
+{-# COMPLETE
+  MFAMode_OFF,
+  MFAMode_ON,
+  MFAMode_OPTIONAL,
+  MFAMode'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/MfaTypesElement.hs b/gen/Amazonka/AmplifyBackend/Types/MfaTypesElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/MfaTypesElement.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.AmplifyBackend.Types.MfaTypesElement
+-- 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.AmplifyBackend.Types.MfaTypesElement
+  ( MfaTypesElement
+      ( ..,
+        MfaTypesElement_SMS,
+        MfaTypesElement_TOTP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MfaTypesElement = MfaTypesElement'
+  { fromMfaTypesElement ::
+      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 MfaTypesElement_SMS :: MfaTypesElement
+pattern MfaTypesElement_SMS = MfaTypesElement' "SMS"
+
+pattern MfaTypesElement_TOTP :: MfaTypesElement
+pattern MfaTypesElement_TOTP = MfaTypesElement' "TOTP"
+
+{-# COMPLETE
+  MfaTypesElement_SMS,
+  MfaTypesElement_TOTP,
+  MfaTypesElement'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/Mode.hs b/gen/Amazonka/AmplifyBackend/Types/Mode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/Mode.hs
@@ -0,0 +1,78 @@
+{-# 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.AmplifyBackend.Types.Mode
+-- 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.AmplifyBackend.Types.Mode
+  ( Mode
+      ( ..,
+        Mode_AMAZON_COGNITO_USER_POOLS,
+        Mode_API_KEY,
+        Mode_AWS_IAM,
+        Mode_OPENID_CONNECT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Mode = Mode' {fromMode :: 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 Mode_AMAZON_COGNITO_USER_POOLS :: Mode
+pattern Mode_AMAZON_COGNITO_USER_POOLS = Mode' "AMAZON_COGNITO_USER_POOLS"
+
+pattern Mode_API_KEY :: Mode
+pattern Mode_API_KEY = Mode' "API_KEY"
+
+pattern Mode_AWS_IAM :: Mode
+pattern Mode_AWS_IAM = Mode' "AWS_IAM"
+
+pattern Mode_OPENID_CONNECT :: Mode
+pattern Mode_OPENID_CONNECT = Mode' "OPENID_CONNECT"
+
+{-# COMPLETE
+  Mode_AMAZON_COGNITO_USER_POOLS,
+  Mode_API_KEY,
+  Mode_AWS_IAM,
+  Mode_OPENID_CONNECT,
+  Mode'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/OAuthGrantType.hs b/gen/Amazonka/AmplifyBackend/Types/OAuthGrantType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/OAuthGrantType.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.AmplifyBackend.Types.OAuthGrantType
+-- 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.AmplifyBackend.Types.OAuthGrantType
+  ( OAuthGrantType
+      ( ..,
+        OAuthGrantType_CODE,
+        OAuthGrantType_IMPLICIT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OAuthGrantType = OAuthGrantType'
+  { fromOAuthGrantType ::
+      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 OAuthGrantType_CODE :: OAuthGrantType
+pattern OAuthGrantType_CODE = OAuthGrantType' "CODE"
+
+pattern OAuthGrantType_IMPLICIT :: OAuthGrantType
+pattern OAuthGrantType_IMPLICIT = OAuthGrantType' "IMPLICIT"
+
+{-# COMPLETE
+  OAuthGrantType_CODE,
+  OAuthGrantType_IMPLICIT,
+  OAuthGrantType'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/OAuthScopesElement.hs b/gen/Amazonka/AmplifyBackend/Types/OAuthScopesElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/OAuthScopesElement.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.OAuthScopesElement
+-- 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.AmplifyBackend.Types.OAuthScopesElement
+  ( OAuthScopesElement
+      ( ..,
+        OAuthScopesElement_AWS_COGNITO_SIGNIN_USER_ADMIN,
+        OAuthScopesElement_EMAIL,
+        OAuthScopesElement_OPENID,
+        OAuthScopesElement_PHONE,
+        OAuthScopesElement_PROFILE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OAuthScopesElement = OAuthScopesElement'
+  { fromOAuthScopesElement ::
+      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 OAuthScopesElement_AWS_COGNITO_SIGNIN_USER_ADMIN :: OAuthScopesElement
+pattern OAuthScopesElement_AWS_COGNITO_SIGNIN_USER_ADMIN = OAuthScopesElement' "AWS_COGNITO_SIGNIN_USER_ADMIN"
+
+pattern OAuthScopesElement_EMAIL :: OAuthScopesElement
+pattern OAuthScopesElement_EMAIL = OAuthScopesElement' "EMAIL"
+
+pattern OAuthScopesElement_OPENID :: OAuthScopesElement
+pattern OAuthScopesElement_OPENID = OAuthScopesElement' "OPENID"
+
+pattern OAuthScopesElement_PHONE :: OAuthScopesElement
+pattern OAuthScopesElement_PHONE = OAuthScopesElement' "PHONE"
+
+pattern OAuthScopesElement_PROFILE :: OAuthScopesElement
+pattern OAuthScopesElement_PROFILE = OAuthScopesElement' "PROFILE"
+
+{-# COMPLETE
+  OAuthScopesElement_AWS_COGNITO_SIGNIN_USER_ADMIN,
+  OAuthScopesElement_EMAIL,
+  OAuthScopesElement_OPENID,
+  OAuthScopesElement_PHONE,
+  OAuthScopesElement_PROFILE,
+  OAuthScopesElement'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/RequiredSignUpAttributesElement.hs b/gen/Amazonka/AmplifyBackend/Types/RequiredSignUpAttributesElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/RequiredSignUpAttributesElement.hs
@@ -0,0 +1,146 @@
+{-# 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.AmplifyBackend.Types.RequiredSignUpAttributesElement
+-- 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.AmplifyBackend.Types.RequiredSignUpAttributesElement
+  ( RequiredSignUpAttributesElement
+      ( ..,
+        RequiredSignUpAttributesElement_ADDRESS,
+        RequiredSignUpAttributesElement_BIRTHDATE,
+        RequiredSignUpAttributesElement_EMAIL,
+        RequiredSignUpAttributesElement_FAMILY_NAME,
+        RequiredSignUpAttributesElement_GENDER,
+        RequiredSignUpAttributesElement_GIVEN_NAME,
+        RequiredSignUpAttributesElement_LOCALE,
+        RequiredSignUpAttributesElement_MIDDLE_NAME,
+        RequiredSignUpAttributesElement_NAME,
+        RequiredSignUpAttributesElement_NICKNAME,
+        RequiredSignUpAttributesElement_PHONE_NUMBER,
+        RequiredSignUpAttributesElement_PICTURE,
+        RequiredSignUpAttributesElement_PREFERRED_USERNAME,
+        RequiredSignUpAttributesElement_PROFILE,
+        RequiredSignUpAttributesElement_UPDATED_AT,
+        RequiredSignUpAttributesElement_WEBSITE,
+        RequiredSignUpAttributesElement_ZONE_INFO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RequiredSignUpAttributesElement = RequiredSignUpAttributesElement'
+  { fromRequiredSignUpAttributesElement ::
+      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 RequiredSignUpAttributesElement_ADDRESS :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_ADDRESS = RequiredSignUpAttributesElement' "ADDRESS"
+
+pattern RequiredSignUpAttributesElement_BIRTHDATE :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_BIRTHDATE = RequiredSignUpAttributesElement' "BIRTHDATE"
+
+pattern RequiredSignUpAttributesElement_EMAIL :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_EMAIL = RequiredSignUpAttributesElement' "EMAIL"
+
+pattern RequiredSignUpAttributesElement_FAMILY_NAME :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_FAMILY_NAME = RequiredSignUpAttributesElement' "FAMILY_NAME"
+
+pattern RequiredSignUpAttributesElement_GENDER :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_GENDER = RequiredSignUpAttributesElement' "GENDER"
+
+pattern RequiredSignUpAttributesElement_GIVEN_NAME :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_GIVEN_NAME = RequiredSignUpAttributesElement' "GIVEN_NAME"
+
+pattern RequiredSignUpAttributesElement_LOCALE :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_LOCALE = RequiredSignUpAttributesElement' "LOCALE"
+
+pattern RequiredSignUpAttributesElement_MIDDLE_NAME :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_MIDDLE_NAME = RequiredSignUpAttributesElement' "MIDDLE_NAME"
+
+pattern RequiredSignUpAttributesElement_NAME :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_NAME = RequiredSignUpAttributesElement' "NAME"
+
+pattern RequiredSignUpAttributesElement_NICKNAME :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_NICKNAME = RequiredSignUpAttributesElement' "NICKNAME"
+
+pattern RequiredSignUpAttributesElement_PHONE_NUMBER :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_PHONE_NUMBER = RequiredSignUpAttributesElement' "PHONE_NUMBER"
+
+pattern RequiredSignUpAttributesElement_PICTURE :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_PICTURE = RequiredSignUpAttributesElement' "PICTURE"
+
+pattern RequiredSignUpAttributesElement_PREFERRED_USERNAME :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_PREFERRED_USERNAME = RequiredSignUpAttributesElement' "PREFERRED_USERNAME"
+
+pattern RequiredSignUpAttributesElement_PROFILE :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_PROFILE = RequiredSignUpAttributesElement' "PROFILE"
+
+pattern RequiredSignUpAttributesElement_UPDATED_AT :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_UPDATED_AT = RequiredSignUpAttributesElement' "UPDATED_AT"
+
+pattern RequiredSignUpAttributesElement_WEBSITE :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_WEBSITE = RequiredSignUpAttributesElement' "WEBSITE"
+
+pattern RequiredSignUpAttributesElement_ZONE_INFO :: RequiredSignUpAttributesElement
+pattern RequiredSignUpAttributesElement_ZONE_INFO = RequiredSignUpAttributesElement' "ZONE_INFO"
+
+{-# COMPLETE
+  RequiredSignUpAttributesElement_ADDRESS,
+  RequiredSignUpAttributesElement_BIRTHDATE,
+  RequiredSignUpAttributesElement_EMAIL,
+  RequiredSignUpAttributesElement_FAMILY_NAME,
+  RequiredSignUpAttributesElement_GENDER,
+  RequiredSignUpAttributesElement_GIVEN_NAME,
+  RequiredSignUpAttributesElement_LOCALE,
+  RequiredSignUpAttributesElement_MIDDLE_NAME,
+  RequiredSignUpAttributesElement_NAME,
+  RequiredSignUpAttributesElement_NICKNAME,
+  RequiredSignUpAttributesElement_PHONE_NUMBER,
+  RequiredSignUpAttributesElement_PICTURE,
+  RequiredSignUpAttributesElement_PREFERRED_USERNAME,
+  RequiredSignUpAttributesElement_PROFILE,
+  RequiredSignUpAttributesElement_UPDATED_AT,
+  RequiredSignUpAttributesElement_WEBSITE,
+  RequiredSignUpAttributesElement_ZONE_INFO,
+  RequiredSignUpAttributesElement'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/ResolutionStrategy.hs b/gen/Amazonka/AmplifyBackend/Types/ResolutionStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/ResolutionStrategy.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.ResolutionStrategy
+-- 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.AmplifyBackend.Types.ResolutionStrategy
+  ( ResolutionStrategy
+      ( ..,
+        ResolutionStrategy_AUTOMERGE,
+        ResolutionStrategy_LAMBDA,
+        ResolutionStrategy_NONE,
+        ResolutionStrategy_OPTIMISTIC_CONCURRENCY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResolutionStrategy = ResolutionStrategy'
+  { fromResolutionStrategy ::
+      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 ResolutionStrategy_AUTOMERGE :: ResolutionStrategy
+pattern ResolutionStrategy_AUTOMERGE = ResolutionStrategy' "AUTOMERGE"
+
+pattern ResolutionStrategy_LAMBDA :: ResolutionStrategy
+pattern ResolutionStrategy_LAMBDA = ResolutionStrategy' "LAMBDA"
+
+pattern ResolutionStrategy_NONE :: ResolutionStrategy
+pattern ResolutionStrategy_NONE = ResolutionStrategy' "NONE"
+
+pattern ResolutionStrategy_OPTIMISTIC_CONCURRENCY :: ResolutionStrategy
+pattern ResolutionStrategy_OPTIMISTIC_CONCURRENCY = ResolutionStrategy' "OPTIMISTIC_CONCURRENCY"
+
+{-# COMPLETE
+  ResolutionStrategy_AUTOMERGE,
+  ResolutionStrategy_LAMBDA,
+  ResolutionStrategy_NONE,
+  ResolutionStrategy_OPTIMISTIC_CONCURRENCY,
+  ResolutionStrategy'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/ResourceConfig.hs b/gen/Amazonka/AmplifyBackend/Types/ResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/ResourceConfig.hs
@@ -0,0 +1,52 @@
+{-# 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.AmplifyBackend.Types.ResourceConfig
+-- 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.AmplifyBackend.Types.ResourceConfig 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
+
+-- | Defines the resource configuration for the data model in your Amplify
+-- project.
+--
+-- /See:/ 'newResourceConfig' smart constructor.
+data ResourceConfig = ResourceConfig'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newResourceConfig ::
+  ResourceConfig
+newResourceConfig = ResourceConfig'
+
+instance Prelude.Hashable ResourceConfig where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData ResourceConfig where
+  rnf _ = ()
+
+instance Data.ToJSON ResourceConfig where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
diff --git a/gen/Amazonka/AmplifyBackend/Types/S3BucketInfo.hs b/gen/Amazonka/AmplifyBackend/Types/S3BucketInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/S3BucketInfo.hs
@@ -0,0 +1,84 @@
+{-# 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.AmplifyBackend.Types.S3BucketInfo
+-- 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.AmplifyBackend.Types.S3BucketInfo 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 the metadata of the S3 bucket.
+--
+-- /See:/ 'newS3BucketInfo' smart constructor.
+data S3BucketInfo = S3BucketInfo'
+  { -- | The creation date of the S3 bucket.
+    creationDate :: Prelude.Maybe Prelude.Text,
+    -- | The name of the S3 bucket.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3BucketInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'creationDate', 's3BucketInfo_creationDate' - The creation date of the S3 bucket.
+--
+-- 'name', 's3BucketInfo_name' - The name of the S3 bucket.
+newS3BucketInfo ::
+  S3BucketInfo
+newS3BucketInfo =
+  S3BucketInfo'
+    { creationDate = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The creation date of the S3 bucket.
+s3BucketInfo_creationDate :: Lens.Lens' S3BucketInfo (Prelude.Maybe Prelude.Text)
+s3BucketInfo_creationDate = Lens.lens (\S3BucketInfo' {creationDate} -> creationDate) (\s@S3BucketInfo' {} a -> s {creationDate = a} :: S3BucketInfo)
+
+-- | The name of the S3 bucket.
+s3BucketInfo_name :: Lens.Lens' S3BucketInfo (Prelude.Maybe Prelude.Text)
+s3BucketInfo_name = Lens.lens (\S3BucketInfo' {name} -> name) (\s@S3BucketInfo' {} a -> s {name = a} :: S3BucketInfo)
+
+instance Data.FromJSON S3BucketInfo where
+  parseJSON =
+    Data.withObject
+      "S3BucketInfo"
+      ( \x ->
+          S3BucketInfo'
+            Prelude.<$> (x Data..:? "creationDate")
+            Prelude.<*> (x Data..:? "name")
+      )
+
+instance Prelude.Hashable S3BucketInfo where
+  hashWithSalt _salt S3BucketInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationDate
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData S3BucketInfo where
+  rnf S3BucketInfo' {..} =
+    Prelude.rnf creationDate
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/AmplifyBackend/Types/Service.hs b/gen/Amazonka/AmplifyBackend/Types/Service.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/Service.hs
@@ -0,0 +1,63 @@
+{-# 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.AmplifyBackend.Types.Service
+-- 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.AmplifyBackend.Types.Service
+  ( Service
+      ( ..,
+        Service_COGNITO
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Service = Service' {fromService :: 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 Service_COGNITO :: Service
+pattern Service_COGNITO = Service' "COGNITO"
+
+{-# COMPLETE
+  Service_COGNITO,
+  Service'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/ServiceName.hs b/gen/Amazonka/AmplifyBackend/Types/ServiceName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/ServiceName.hs
@@ -0,0 +1,66 @@
+{-# 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.AmplifyBackend.Types.ServiceName
+-- 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.AmplifyBackend.Types.ServiceName
+  ( ServiceName
+      ( ..,
+        ServiceName_S3
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ServiceName = ServiceName'
+  { fromServiceName ::
+      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 ServiceName_S3 :: ServiceName
+pattern ServiceName_S3 = ServiceName' "S3"
+
+{-# COMPLETE
+  ServiceName_S3,
+  ServiceName'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/Settings.hs b/gen/Amazonka/AmplifyBackend/Types/Settings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/Settings.hs
@@ -0,0 +1,95 @@
+{-# 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.AmplifyBackend.Types.Settings
+-- 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.AmplifyBackend.Types.Settings where
+
+import Amazonka.AmplifyBackend.Types.MfaTypesElement
+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 settings of your MFA configuration for the backend of your Amplify
+-- project.
+--
+-- /See:/ 'newSettings' smart constructor.
+data Settings = Settings'
+  { -- | The supported MFA types.
+    mfaTypes :: Prelude.Maybe [MfaTypesElement],
+    -- | The body of the SMS message.
+    smsMessage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Settings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mfaTypes', 'settings_mfaTypes' - The supported MFA types.
+--
+-- 'smsMessage', 'settings_smsMessage' - The body of the SMS message.
+newSettings ::
+  Settings
+newSettings =
+  Settings'
+    { mfaTypes = Prelude.Nothing,
+      smsMessage = Prelude.Nothing
+    }
+
+-- | The supported MFA types.
+settings_mfaTypes :: Lens.Lens' Settings (Prelude.Maybe [MfaTypesElement])
+settings_mfaTypes = Lens.lens (\Settings' {mfaTypes} -> mfaTypes) (\s@Settings' {} a -> s {mfaTypes = a} :: Settings) Prelude.. Lens.mapping Lens.coerced
+
+-- | The body of the SMS message.
+settings_smsMessage :: Lens.Lens' Settings (Prelude.Maybe Prelude.Text)
+settings_smsMessage = Lens.lens (\Settings' {smsMessage} -> smsMessage) (\s@Settings' {} a -> s {smsMessage = a} :: Settings)
+
+instance Data.FromJSON Settings where
+  parseJSON =
+    Data.withObject
+      "Settings"
+      ( \x ->
+          Settings'
+            Prelude.<$> (x Data..:? "mfaTypes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "smsMessage")
+      )
+
+instance Prelude.Hashable Settings where
+  hashWithSalt _salt Settings' {..} =
+    _salt
+      `Prelude.hashWithSalt` mfaTypes
+      `Prelude.hashWithSalt` smsMessage
+
+instance Prelude.NFData Settings where
+  rnf Settings' {..} =
+    Prelude.rnf mfaTypes
+      `Prelude.seq` Prelude.rnf smsMessage
+
+instance Data.ToJSON Settings where
+  toJSON Settings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("mfaTypes" Data..=) Prelude.<$> mfaTypes,
+            ("smsMessage" Data..=) Prelude.<$> smsMessage
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/SignInMethod.hs b/gen/Amazonka/AmplifyBackend/Types/SignInMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/SignInMethod.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.SignInMethod
+-- 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.AmplifyBackend.Types.SignInMethod
+  ( SignInMethod
+      ( ..,
+        SignInMethod_EMAIL,
+        SignInMethod_EMAIL_AND_PHONE_NUMBER,
+        SignInMethod_PHONE_NUMBER,
+        SignInMethod_USERNAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SignInMethod = SignInMethod'
+  { fromSignInMethod ::
+      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 SignInMethod_EMAIL :: SignInMethod
+pattern SignInMethod_EMAIL = SignInMethod' "EMAIL"
+
+pattern SignInMethod_EMAIL_AND_PHONE_NUMBER :: SignInMethod
+pattern SignInMethod_EMAIL_AND_PHONE_NUMBER = SignInMethod' "EMAIL_AND_PHONE_NUMBER"
+
+pattern SignInMethod_PHONE_NUMBER :: SignInMethod
+pattern SignInMethod_PHONE_NUMBER = SignInMethod' "PHONE_NUMBER"
+
+pattern SignInMethod_USERNAME :: SignInMethod
+pattern SignInMethod_USERNAME = SignInMethod' "USERNAME"
+
+{-# COMPLETE
+  SignInMethod_EMAIL,
+  SignInMethod_EMAIL_AND_PHONE_NUMBER,
+  SignInMethod_PHONE_NUMBER,
+  SignInMethod_USERNAME,
+  SignInMethod'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/SmsSettings.hs b/gen/Amazonka/AmplifyBackend/Types/SmsSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/SmsSettings.hs
@@ -0,0 +1,74 @@
+{-# 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.AmplifyBackend.Types.SmsSettings
+-- 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.AmplifyBackend.Types.SmsSettings 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
+
+-- | SMS settings for authentication.
+--
+-- /See:/ 'newSmsSettings' smart constructor.
+data SmsSettings = SmsSettings'
+  { -- | The contents of the SMS message.
+    smsMessage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SmsSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'smsMessage', 'smsSettings_smsMessage' - The contents of the SMS message.
+newSmsSettings ::
+  SmsSettings
+newSmsSettings =
+  SmsSettings' {smsMessage = Prelude.Nothing}
+
+-- | The contents of the SMS message.
+smsSettings_smsMessage :: Lens.Lens' SmsSettings (Prelude.Maybe Prelude.Text)
+smsSettings_smsMessage = Lens.lens (\SmsSettings' {smsMessage} -> smsMessage) (\s@SmsSettings' {} a -> s {smsMessage = a} :: SmsSettings)
+
+instance Data.FromJSON SmsSettings where
+  parseJSON =
+    Data.withObject
+      "SmsSettings"
+      ( \x ->
+          SmsSettings' Prelude.<$> (x Data..:? "smsMessage")
+      )
+
+instance Prelude.Hashable SmsSettings where
+  hashWithSalt _salt SmsSettings' {..} =
+    _salt `Prelude.hashWithSalt` smsMessage
+
+instance Prelude.NFData SmsSettings where
+  rnf SmsSettings' {..} = Prelude.rnf smsMessage
+
+instance Data.ToJSON SmsSettings where
+  toJSON SmsSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("smsMessage" Data..=) Prelude.<$> smsMessage]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/SocialProviderSettings.hs b/gen/Amazonka/AmplifyBackend/Types/SocialProviderSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/SocialProviderSettings.hs
@@ -0,0 +1,120 @@
+{-# 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.AmplifyBackend.Types.SocialProviderSettings
+-- 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.AmplifyBackend.Types.SocialProviderSettings where
+
+import Amazonka.AmplifyBackend.Types.BackendAuthAppleProviderConfig
+import Amazonka.AmplifyBackend.Types.BackendAuthSocialProviderConfig
+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 settings for using the social identity providers for access to your
+-- Amplify app.
+--
+-- /See:/ 'newSocialProviderSettings' smart constructor.
+data SocialProviderSettings = SocialProviderSettings'
+  { facebook :: Prelude.Maybe BackendAuthSocialProviderConfig,
+    google :: Prelude.Maybe BackendAuthSocialProviderConfig,
+    loginWithAmazon :: Prelude.Maybe BackendAuthSocialProviderConfig,
+    signInWithApple :: Prelude.Maybe BackendAuthAppleProviderConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SocialProviderSettings' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'facebook', 'socialProviderSettings_facebook' - Undocumented member.
+--
+-- 'google', 'socialProviderSettings_google' - Undocumented member.
+--
+-- 'loginWithAmazon', 'socialProviderSettings_loginWithAmazon' - Undocumented member.
+--
+-- 'signInWithApple', 'socialProviderSettings_signInWithApple' - Undocumented member.
+newSocialProviderSettings ::
+  SocialProviderSettings
+newSocialProviderSettings =
+  SocialProviderSettings'
+    { facebook = Prelude.Nothing,
+      google = Prelude.Nothing,
+      loginWithAmazon = Prelude.Nothing,
+      signInWithApple = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+socialProviderSettings_facebook :: Lens.Lens' SocialProviderSettings (Prelude.Maybe BackendAuthSocialProviderConfig)
+socialProviderSettings_facebook = Lens.lens (\SocialProviderSettings' {facebook} -> facebook) (\s@SocialProviderSettings' {} a -> s {facebook = a} :: SocialProviderSettings)
+
+-- | Undocumented member.
+socialProviderSettings_google :: Lens.Lens' SocialProviderSettings (Prelude.Maybe BackendAuthSocialProviderConfig)
+socialProviderSettings_google = Lens.lens (\SocialProviderSettings' {google} -> google) (\s@SocialProviderSettings' {} a -> s {google = a} :: SocialProviderSettings)
+
+-- | Undocumented member.
+socialProviderSettings_loginWithAmazon :: Lens.Lens' SocialProviderSettings (Prelude.Maybe BackendAuthSocialProviderConfig)
+socialProviderSettings_loginWithAmazon = Lens.lens (\SocialProviderSettings' {loginWithAmazon} -> loginWithAmazon) (\s@SocialProviderSettings' {} a -> s {loginWithAmazon = a} :: SocialProviderSettings)
+
+-- | Undocumented member.
+socialProviderSettings_signInWithApple :: Lens.Lens' SocialProviderSettings (Prelude.Maybe BackendAuthAppleProviderConfig)
+socialProviderSettings_signInWithApple = Lens.lens (\SocialProviderSettings' {signInWithApple} -> signInWithApple) (\s@SocialProviderSettings' {} a -> s {signInWithApple = a} :: SocialProviderSettings)
+
+instance Data.FromJSON SocialProviderSettings where
+  parseJSON =
+    Data.withObject
+      "SocialProviderSettings"
+      ( \x ->
+          SocialProviderSettings'
+            Prelude.<$> (x Data..:? "Facebook")
+            Prelude.<*> (x Data..:? "Google")
+            Prelude.<*> (x Data..:? "LoginWithAmazon")
+            Prelude.<*> (x Data..:? "SignInWithApple")
+      )
+
+instance Prelude.Hashable SocialProviderSettings where
+  hashWithSalt _salt SocialProviderSettings' {..} =
+    _salt
+      `Prelude.hashWithSalt` facebook
+      `Prelude.hashWithSalt` google
+      `Prelude.hashWithSalt` loginWithAmazon
+      `Prelude.hashWithSalt` signInWithApple
+
+instance Prelude.NFData SocialProviderSettings where
+  rnf SocialProviderSettings' {..} =
+    Prelude.rnf facebook
+      `Prelude.seq` Prelude.rnf google
+      `Prelude.seq` Prelude.rnf loginWithAmazon
+      `Prelude.seq` Prelude.rnf signInWithApple
+
+instance Data.ToJSON SocialProviderSettings where
+  toJSON SocialProviderSettings' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Facebook" Data..=) Prelude.<$> facebook,
+            ("Google" Data..=) Prelude.<$> google,
+            ("LoginWithAmazon" Data..=)
+              Prelude.<$> loginWithAmazon,
+            ("SignInWithApple" Data..=)
+              Prelude.<$> signInWithApple
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/Status.hs b/gen/Amazonka/AmplifyBackend/Types/Status.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/Status.hs
@@ -0,0 +1,68 @@
+{-# 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.AmplifyBackend.Types.Status
+-- 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.AmplifyBackend.Types.Status
+  ( Status
+      ( ..,
+        Status_LATEST,
+        Status_STALE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Status = Status' {fromStatus :: 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 Status_LATEST :: Status
+pattern Status_LATEST = Status' "LATEST"
+
+pattern Status_STALE :: Status
+pattern Status_STALE = Status' "STALE"
+
+{-# COMPLETE
+  Status_LATEST,
+  Status_STALE,
+  Status'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/UnAuthenticatedElement.hs b/gen/Amazonka/AmplifyBackend/Types/UnAuthenticatedElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UnAuthenticatedElement.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.UnAuthenticatedElement
+-- 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.AmplifyBackend.Types.UnAuthenticatedElement
+  ( UnAuthenticatedElement
+      ( ..,
+        UnAuthenticatedElement_CREATE_AND_UPDATE,
+        UnAuthenticatedElement_DELETE,
+        UnAuthenticatedElement_READ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UnAuthenticatedElement = UnAuthenticatedElement'
+  { fromUnAuthenticatedElement ::
+      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 UnAuthenticatedElement_CREATE_AND_UPDATE :: UnAuthenticatedElement
+pattern UnAuthenticatedElement_CREATE_AND_UPDATE = UnAuthenticatedElement' "CREATE_AND_UPDATE"
+
+pattern UnAuthenticatedElement_DELETE :: UnAuthenticatedElement
+pattern UnAuthenticatedElement_DELETE = UnAuthenticatedElement' "DELETE"
+
+pattern UnAuthenticatedElement_READ :: UnAuthenticatedElement
+pattern UnAuthenticatedElement_READ = UnAuthenticatedElement' "READ"
+
+{-# COMPLETE
+  UnAuthenticatedElement_CREATE_AND_UPDATE,
+  UnAuthenticatedElement_DELETE,
+  UnAuthenticatedElement_READ,
+  UnAuthenticatedElement'
+  #-}
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthForgotPasswordConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthForgotPasswordConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthForgotPasswordConfig.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.UpdateBackendAuthForgotPasswordConfig
+-- 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.AmplifyBackend.Types.UpdateBackendAuthForgotPasswordConfig where
+
+import Amazonka.AmplifyBackend.Types.DeliveryMethod
+import Amazonka.AmplifyBackend.Types.EmailSettings
+import Amazonka.AmplifyBackend.Types.SmsSettings
+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
+
+-- | __(DEPRECATED)__ Describes the forgot password policy for authenticating
+-- into the Amplify app.
+--
+-- /See:/ 'newUpdateBackendAuthForgotPasswordConfig' smart constructor.
+data UpdateBackendAuthForgotPasswordConfig = UpdateBackendAuthForgotPasswordConfig'
+  { -- | __(DEPRECATED)__ Describes which mode to use (either SMS or email) to
+    -- deliver messages to app users that want to recover their password.
+    deliveryMethod :: Prelude.Maybe DeliveryMethod,
+    -- | __(DEPRECATED)__ The configuration for the email sent when an app user
+    -- forgets their password.
+    emailSettings :: Prelude.Maybe EmailSettings,
+    -- | __(DEPRECATED)__ The configuration for the SMS message sent when an
+    -- Amplify app user forgets their password.
+    smsSettings :: Prelude.Maybe SmsSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuthForgotPasswordConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deliveryMethod', 'updateBackendAuthForgotPasswordConfig_deliveryMethod' - __(DEPRECATED)__ Describes which mode to use (either SMS or email) to
+-- deliver messages to app users that want to recover their password.
+--
+-- 'emailSettings', 'updateBackendAuthForgotPasswordConfig_emailSettings' - __(DEPRECATED)__ The configuration for the email sent when an app user
+-- forgets their password.
+--
+-- 'smsSettings', 'updateBackendAuthForgotPasswordConfig_smsSettings' - __(DEPRECATED)__ The configuration for the SMS message sent when an
+-- Amplify app user forgets their password.
+newUpdateBackendAuthForgotPasswordConfig ::
+  UpdateBackendAuthForgotPasswordConfig
+newUpdateBackendAuthForgotPasswordConfig =
+  UpdateBackendAuthForgotPasswordConfig'
+    { deliveryMethod =
+        Prelude.Nothing,
+      emailSettings = Prelude.Nothing,
+      smsSettings = Prelude.Nothing
+    }
+
+-- | __(DEPRECATED)__ Describes which mode to use (either SMS or email) to
+-- deliver messages to app users that want to recover their password.
+updateBackendAuthForgotPasswordConfig_deliveryMethod :: Lens.Lens' UpdateBackendAuthForgotPasswordConfig (Prelude.Maybe DeliveryMethod)
+updateBackendAuthForgotPasswordConfig_deliveryMethod = Lens.lens (\UpdateBackendAuthForgotPasswordConfig' {deliveryMethod} -> deliveryMethod) (\s@UpdateBackendAuthForgotPasswordConfig' {} a -> s {deliveryMethod = a} :: UpdateBackendAuthForgotPasswordConfig)
+
+-- | __(DEPRECATED)__ The configuration for the email sent when an app user
+-- forgets their password.
+updateBackendAuthForgotPasswordConfig_emailSettings :: Lens.Lens' UpdateBackendAuthForgotPasswordConfig (Prelude.Maybe EmailSettings)
+updateBackendAuthForgotPasswordConfig_emailSettings = Lens.lens (\UpdateBackendAuthForgotPasswordConfig' {emailSettings} -> emailSettings) (\s@UpdateBackendAuthForgotPasswordConfig' {} a -> s {emailSettings = a} :: UpdateBackendAuthForgotPasswordConfig)
+
+-- | __(DEPRECATED)__ The configuration for the SMS message sent when an
+-- Amplify app user forgets their password.
+updateBackendAuthForgotPasswordConfig_smsSettings :: Lens.Lens' UpdateBackendAuthForgotPasswordConfig (Prelude.Maybe SmsSettings)
+updateBackendAuthForgotPasswordConfig_smsSettings = Lens.lens (\UpdateBackendAuthForgotPasswordConfig' {smsSettings} -> smsSettings) (\s@UpdateBackendAuthForgotPasswordConfig' {} a -> s {smsSettings = a} :: UpdateBackendAuthForgotPasswordConfig)
+
+instance
+  Prelude.Hashable
+    UpdateBackendAuthForgotPasswordConfig
+  where
+  hashWithSalt
+    _salt
+    UpdateBackendAuthForgotPasswordConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` deliveryMethod
+        `Prelude.hashWithSalt` emailSettings
+        `Prelude.hashWithSalt` smsSettings
+
+instance
+  Prelude.NFData
+    UpdateBackendAuthForgotPasswordConfig
+  where
+  rnf UpdateBackendAuthForgotPasswordConfig' {..} =
+    Prelude.rnf deliveryMethod
+      `Prelude.seq` Prelude.rnf emailSettings
+      `Prelude.seq` Prelude.rnf smsSettings
+
+instance
+  Data.ToJSON
+    UpdateBackendAuthForgotPasswordConfig
+  where
+  toJSON UpdateBackendAuthForgotPasswordConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("deliveryMethod" Data..=)
+              Prelude.<$> deliveryMethod,
+            ("emailSettings" Data..=) Prelude.<$> emailSettings,
+            ("smsSettings" Data..=) Prelude.<$> smsSettings
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthIdentityPoolConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthIdentityPoolConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthIdentityPoolConfig.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.Types.UpdateBackendAuthIdentityPoolConfig
+-- 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.AmplifyBackend.Types.UpdateBackendAuthIdentityPoolConfig 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 the authorization configuration for the Amazon Cognito
+-- identity pool, provisioned as a part of your auth resource in the
+-- Amplify project.
+--
+-- /See:/ 'newUpdateBackendAuthIdentityPoolConfig' smart constructor.
+data UpdateBackendAuthIdentityPoolConfig = UpdateBackendAuthIdentityPoolConfig'
+  { -- | A boolean value that can be set to allow or disallow guest-level
+    -- authorization into your Amplify app.
+    unauthenticatedLogin :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuthIdentityPoolConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'unauthenticatedLogin', 'updateBackendAuthIdentityPoolConfig_unauthenticatedLogin' - A boolean value that can be set to allow or disallow guest-level
+-- authorization into your Amplify app.
+newUpdateBackendAuthIdentityPoolConfig ::
+  UpdateBackendAuthIdentityPoolConfig
+newUpdateBackendAuthIdentityPoolConfig =
+  UpdateBackendAuthIdentityPoolConfig'
+    { unauthenticatedLogin =
+        Prelude.Nothing
+    }
+
+-- | A boolean value that can be set to allow or disallow guest-level
+-- authorization into your Amplify app.
+updateBackendAuthIdentityPoolConfig_unauthenticatedLogin :: Lens.Lens' UpdateBackendAuthIdentityPoolConfig (Prelude.Maybe Prelude.Bool)
+updateBackendAuthIdentityPoolConfig_unauthenticatedLogin = Lens.lens (\UpdateBackendAuthIdentityPoolConfig' {unauthenticatedLogin} -> unauthenticatedLogin) (\s@UpdateBackendAuthIdentityPoolConfig' {} a -> s {unauthenticatedLogin = a} :: UpdateBackendAuthIdentityPoolConfig)
+
+instance
+  Prelude.Hashable
+    UpdateBackendAuthIdentityPoolConfig
+  where
+  hashWithSalt
+    _salt
+    UpdateBackendAuthIdentityPoolConfig' {..} =
+      _salt `Prelude.hashWithSalt` unauthenticatedLogin
+
+instance
+  Prelude.NFData
+    UpdateBackendAuthIdentityPoolConfig
+  where
+  rnf UpdateBackendAuthIdentityPoolConfig' {..} =
+    Prelude.rnf unauthenticatedLogin
+
+instance
+  Data.ToJSON
+    UpdateBackendAuthIdentityPoolConfig
+  where
+  toJSON UpdateBackendAuthIdentityPoolConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("unauthenticatedLogin" Data..=)
+              Prelude.<$> unauthenticatedLogin
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthMFAConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthMFAConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthMFAConfig.hs
@@ -0,0 +1,90 @@
+{-# 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.AmplifyBackend.Types.UpdateBackendAuthMFAConfig
+-- 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.AmplifyBackend.Types.UpdateBackendAuthMFAConfig where
+
+import Amazonka.AmplifyBackend.Types.MFAMode
+import Amazonka.AmplifyBackend.Types.Settings
+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
+
+-- | Updates the multi-factor authentication (MFA) configuration for the
+-- backend of your Amplify project.
+--
+-- /See:/ 'newUpdateBackendAuthMFAConfig' smart constructor.
+data UpdateBackendAuthMFAConfig = UpdateBackendAuthMFAConfig'
+  { -- | The MFA mode for the backend of your Amplify project.
+    mfaMode :: Prelude.Maybe MFAMode,
+    -- | The settings of your MFA configuration for the backend of your Amplify
+    -- project.
+    settings :: Prelude.Maybe Settings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuthMFAConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mfaMode', 'updateBackendAuthMFAConfig_mfaMode' - The MFA mode for the backend of your Amplify project.
+--
+-- 'settings', 'updateBackendAuthMFAConfig_settings' - The settings of your MFA configuration for the backend of your Amplify
+-- project.
+newUpdateBackendAuthMFAConfig ::
+  UpdateBackendAuthMFAConfig
+newUpdateBackendAuthMFAConfig =
+  UpdateBackendAuthMFAConfig'
+    { mfaMode =
+        Prelude.Nothing,
+      settings = Prelude.Nothing
+    }
+
+-- | The MFA mode for the backend of your Amplify project.
+updateBackendAuthMFAConfig_mfaMode :: Lens.Lens' UpdateBackendAuthMFAConfig (Prelude.Maybe MFAMode)
+updateBackendAuthMFAConfig_mfaMode = Lens.lens (\UpdateBackendAuthMFAConfig' {mfaMode} -> mfaMode) (\s@UpdateBackendAuthMFAConfig' {} a -> s {mfaMode = a} :: UpdateBackendAuthMFAConfig)
+
+-- | The settings of your MFA configuration for the backend of your Amplify
+-- project.
+updateBackendAuthMFAConfig_settings :: Lens.Lens' UpdateBackendAuthMFAConfig (Prelude.Maybe Settings)
+updateBackendAuthMFAConfig_settings = Lens.lens (\UpdateBackendAuthMFAConfig' {settings} -> settings) (\s@UpdateBackendAuthMFAConfig' {} a -> s {settings = a} :: UpdateBackendAuthMFAConfig)
+
+instance Prelude.Hashable UpdateBackendAuthMFAConfig where
+  hashWithSalt _salt UpdateBackendAuthMFAConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` mfaMode
+      `Prelude.hashWithSalt` settings
+
+instance Prelude.NFData UpdateBackendAuthMFAConfig where
+  rnf UpdateBackendAuthMFAConfig' {..} =
+    Prelude.rnf mfaMode
+      `Prelude.seq` Prelude.rnf settings
+
+instance Data.ToJSON UpdateBackendAuthMFAConfig where
+  toJSON UpdateBackendAuthMFAConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MFAMode" Data..=) Prelude.<$> mfaMode,
+            ("settings" Data..=) Prelude.<$> settings
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthOAuthConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthOAuthConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthOAuthConfig.hs
@@ -0,0 +1,154 @@
+{-# 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.AmplifyBackend.Types.UpdateBackendAuthOAuthConfig
+-- 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.AmplifyBackend.Types.UpdateBackendAuthOAuthConfig where
+
+import Amazonka.AmplifyBackend.Types.OAuthGrantType
+import Amazonka.AmplifyBackend.Types.OAuthScopesElement
+import Amazonka.AmplifyBackend.Types.SocialProviderSettings
+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 OAuth configurations for authenticating users into your Amplify app.
+--
+-- /See:/ 'newUpdateBackendAuthOAuthConfig' smart constructor.
+data UpdateBackendAuthOAuthConfig = UpdateBackendAuthOAuthConfig'
+  { -- | The Amazon Cognito domain prefix used to create a hosted UI for
+    -- authentication.
+    domainPrefix :: Prelude.Maybe Prelude.Text,
+    -- | The OAuth grant type to allow app users to authenticate from your
+    -- Amplify app.
+    oAuthGrantType :: Prelude.Maybe OAuthGrantType,
+    -- | The list of OAuth-related flows that can allow users to authenticate
+    -- from your Amplify app.
+    oAuthScopes :: Prelude.Maybe [OAuthScopesElement],
+    -- | Redirect URLs that OAuth uses when a user signs in to an Amplify app.
+    redirectSignInURIs :: Prelude.Maybe [Prelude.Text],
+    -- | Redirect URLs that OAuth uses when a user signs out of an Amplify app.
+    redirectSignOutURIs :: Prelude.Maybe [Prelude.Text],
+    -- | Describes third-party social federation configurations for allowing your
+    -- users to sign in with OAuth.
+    socialProviderSettings :: Prelude.Maybe SocialProviderSettings
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuthOAuthConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domainPrefix', 'updateBackendAuthOAuthConfig_domainPrefix' - The Amazon Cognito domain prefix used to create a hosted UI for
+-- authentication.
+--
+-- 'oAuthGrantType', 'updateBackendAuthOAuthConfig_oAuthGrantType' - The OAuth grant type to allow app users to authenticate from your
+-- Amplify app.
+--
+-- 'oAuthScopes', 'updateBackendAuthOAuthConfig_oAuthScopes' - The list of OAuth-related flows that can allow users to authenticate
+-- from your Amplify app.
+--
+-- 'redirectSignInURIs', 'updateBackendAuthOAuthConfig_redirectSignInURIs' - Redirect URLs that OAuth uses when a user signs in to an Amplify app.
+--
+-- 'redirectSignOutURIs', 'updateBackendAuthOAuthConfig_redirectSignOutURIs' - Redirect URLs that OAuth uses when a user signs out of an Amplify app.
+--
+-- 'socialProviderSettings', 'updateBackendAuthOAuthConfig_socialProviderSettings' - Describes third-party social federation configurations for allowing your
+-- users to sign in with OAuth.
+newUpdateBackendAuthOAuthConfig ::
+  UpdateBackendAuthOAuthConfig
+newUpdateBackendAuthOAuthConfig =
+  UpdateBackendAuthOAuthConfig'
+    { domainPrefix =
+        Prelude.Nothing,
+      oAuthGrantType = Prelude.Nothing,
+      oAuthScopes = Prelude.Nothing,
+      redirectSignInURIs = Prelude.Nothing,
+      redirectSignOutURIs = Prelude.Nothing,
+      socialProviderSettings = Prelude.Nothing
+    }
+
+-- | The Amazon Cognito domain prefix used to create a hosted UI for
+-- authentication.
+updateBackendAuthOAuthConfig_domainPrefix :: Lens.Lens' UpdateBackendAuthOAuthConfig (Prelude.Maybe Prelude.Text)
+updateBackendAuthOAuthConfig_domainPrefix = Lens.lens (\UpdateBackendAuthOAuthConfig' {domainPrefix} -> domainPrefix) (\s@UpdateBackendAuthOAuthConfig' {} a -> s {domainPrefix = a} :: UpdateBackendAuthOAuthConfig)
+
+-- | The OAuth grant type to allow app users to authenticate from your
+-- Amplify app.
+updateBackendAuthOAuthConfig_oAuthGrantType :: Lens.Lens' UpdateBackendAuthOAuthConfig (Prelude.Maybe OAuthGrantType)
+updateBackendAuthOAuthConfig_oAuthGrantType = Lens.lens (\UpdateBackendAuthOAuthConfig' {oAuthGrantType} -> oAuthGrantType) (\s@UpdateBackendAuthOAuthConfig' {} a -> s {oAuthGrantType = a} :: UpdateBackendAuthOAuthConfig)
+
+-- | The list of OAuth-related flows that can allow users to authenticate
+-- from your Amplify app.
+updateBackendAuthOAuthConfig_oAuthScopes :: Lens.Lens' UpdateBackendAuthOAuthConfig (Prelude.Maybe [OAuthScopesElement])
+updateBackendAuthOAuthConfig_oAuthScopes = Lens.lens (\UpdateBackendAuthOAuthConfig' {oAuthScopes} -> oAuthScopes) (\s@UpdateBackendAuthOAuthConfig' {} a -> s {oAuthScopes = a} :: UpdateBackendAuthOAuthConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Redirect URLs that OAuth uses when a user signs in to an Amplify app.
+updateBackendAuthOAuthConfig_redirectSignInURIs :: Lens.Lens' UpdateBackendAuthOAuthConfig (Prelude.Maybe [Prelude.Text])
+updateBackendAuthOAuthConfig_redirectSignInURIs = Lens.lens (\UpdateBackendAuthOAuthConfig' {redirectSignInURIs} -> redirectSignInURIs) (\s@UpdateBackendAuthOAuthConfig' {} a -> s {redirectSignInURIs = a} :: UpdateBackendAuthOAuthConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Redirect URLs that OAuth uses when a user signs out of an Amplify app.
+updateBackendAuthOAuthConfig_redirectSignOutURIs :: Lens.Lens' UpdateBackendAuthOAuthConfig (Prelude.Maybe [Prelude.Text])
+updateBackendAuthOAuthConfig_redirectSignOutURIs = Lens.lens (\UpdateBackendAuthOAuthConfig' {redirectSignOutURIs} -> redirectSignOutURIs) (\s@UpdateBackendAuthOAuthConfig' {} a -> s {redirectSignOutURIs = a} :: UpdateBackendAuthOAuthConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Describes third-party social federation configurations for allowing your
+-- users to sign in with OAuth.
+updateBackendAuthOAuthConfig_socialProviderSettings :: Lens.Lens' UpdateBackendAuthOAuthConfig (Prelude.Maybe SocialProviderSettings)
+updateBackendAuthOAuthConfig_socialProviderSettings = Lens.lens (\UpdateBackendAuthOAuthConfig' {socialProviderSettings} -> socialProviderSettings) (\s@UpdateBackendAuthOAuthConfig' {} a -> s {socialProviderSettings = a} :: UpdateBackendAuthOAuthConfig)
+
+instance
+  Prelude.Hashable
+    UpdateBackendAuthOAuthConfig
+  where
+  hashWithSalt _salt UpdateBackendAuthOAuthConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` domainPrefix
+      `Prelude.hashWithSalt` oAuthGrantType
+      `Prelude.hashWithSalt` oAuthScopes
+      `Prelude.hashWithSalt` redirectSignInURIs
+      `Prelude.hashWithSalt` redirectSignOutURIs
+      `Prelude.hashWithSalt` socialProviderSettings
+
+instance Prelude.NFData UpdateBackendAuthOAuthConfig where
+  rnf UpdateBackendAuthOAuthConfig' {..} =
+    Prelude.rnf domainPrefix
+      `Prelude.seq` Prelude.rnf oAuthGrantType
+      `Prelude.seq` Prelude.rnf oAuthScopes
+      `Prelude.seq` Prelude.rnf redirectSignInURIs
+      `Prelude.seq` Prelude.rnf redirectSignOutURIs
+      `Prelude.seq` Prelude.rnf socialProviderSettings
+
+instance Data.ToJSON UpdateBackendAuthOAuthConfig where
+  toJSON UpdateBackendAuthOAuthConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("domainPrefix" Data..=) Prelude.<$> domainPrefix,
+            ("oAuthGrantType" Data..=)
+              Prelude.<$> oAuthGrantType,
+            ("oAuthScopes" Data..=) Prelude.<$> oAuthScopes,
+            ("redirectSignInURIs" Data..=)
+              Prelude.<$> redirectSignInURIs,
+            ("redirectSignOutURIs" Data..=)
+              Prelude.<$> redirectSignOutURIs,
+            ("socialProviderSettings" Data..=)
+              Prelude.<$> socialProviderSettings
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthPasswordPolicyConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthPasswordPolicyConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthPasswordPolicyConfig.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.AmplifyBackend.Types.UpdateBackendAuthPasswordPolicyConfig
+-- 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.AmplifyBackend.Types.UpdateBackendAuthPasswordPolicyConfig where
+
+import Amazonka.AmplifyBackend.Types.AdditionalConstraintsElement
+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 the password policy for your Amazon Cognito user pool
+-- configured as a part of your Amplify project.
+--
+-- /See:/ 'newUpdateBackendAuthPasswordPolicyConfig' smart constructor.
+data UpdateBackendAuthPasswordPolicyConfig = UpdateBackendAuthPasswordPolicyConfig'
+  { -- | Describes additional constraints on password requirements to sign in to
+    -- the auth resource, configured as a part of your Amplify project.
+    additionalConstraints :: Prelude.Maybe [AdditionalConstraintsElement],
+    -- | Describes the minimum length of the password required to sign in to the
+    -- auth resource, configured as a part of your Amplify project.
+    minimumLength :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuthPasswordPolicyConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'additionalConstraints', 'updateBackendAuthPasswordPolicyConfig_additionalConstraints' - Describes additional constraints on password requirements to sign in to
+-- the auth resource, configured as a part of your Amplify project.
+--
+-- 'minimumLength', 'updateBackendAuthPasswordPolicyConfig_minimumLength' - Describes the minimum length of the password required to sign in to the
+-- auth resource, configured as a part of your Amplify project.
+newUpdateBackendAuthPasswordPolicyConfig ::
+  UpdateBackendAuthPasswordPolicyConfig
+newUpdateBackendAuthPasswordPolicyConfig =
+  UpdateBackendAuthPasswordPolicyConfig'
+    { additionalConstraints =
+        Prelude.Nothing,
+      minimumLength = Prelude.Nothing
+    }
+
+-- | Describes additional constraints on password requirements to sign in to
+-- the auth resource, configured as a part of your Amplify project.
+updateBackendAuthPasswordPolicyConfig_additionalConstraints :: Lens.Lens' UpdateBackendAuthPasswordPolicyConfig (Prelude.Maybe [AdditionalConstraintsElement])
+updateBackendAuthPasswordPolicyConfig_additionalConstraints = Lens.lens (\UpdateBackendAuthPasswordPolicyConfig' {additionalConstraints} -> additionalConstraints) (\s@UpdateBackendAuthPasswordPolicyConfig' {} a -> s {additionalConstraints = a} :: UpdateBackendAuthPasswordPolicyConfig) Prelude.. Lens.mapping Lens.coerced
+
+-- | Describes the minimum length of the password required to sign in to the
+-- auth resource, configured as a part of your Amplify project.
+updateBackendAuthPasswordPolicyConfig_minimumLength :: Lens.Lens' UpdateBackendAuthPasswordPolicyConfig (Prelude.Maybe Prelude.Double)
+updateBackendAuthPasswordPolicyConfig_minimumLength = Lens.lens (\UpdateBackendAuthPasswordPolicyConfig' {minimumLength} -> minimumLength) (\s@UpdateBackendAuthPasswordPolicyConfig' {} a -> s {minimumLength = a} :: UpdateBackendAuthPasswordPolicyConfig)
+
+instance
+  Prelude.Hashable
+    UpdateBackendAuthPasswordPolicyConfig
+  where
+  hashWithSalt
+    _salt
+    UpdateBackendAuthPasswordPolicyConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` additionalConstraints
+        `Prelude.hashWithSalt` minimumLength
+
+instance
+  Prelude.NFData
+    UpdateBackendAuthPasswordPolicyConfig
+  where
+  rnf UpdateBackendAuthPasswordPolicyConfig' {..} =
+    Prelude.rnf additionalConstraints
+      `Prelude.seq` Prelude.rnf minimumLength
+
+instance
+  Data.ToJSON
+    UpdateBackendAuthPasswordPolicyConfig
+  where
+  toJSON UpdateBackendAuthPasswordPolicyConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("additionalConstraints" Data..=)
+              Prelude.<$> additionalConstraints,
+            ("minimumLength" Data..=) Prelude.<$> minimumLength
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthResourceConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthResourceConfig.hs
@@ -0,0 +1,150 @@
+{-# 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.AmplifyBackend.Types.UpdateBackendAuthResourceConfig
+-- 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.AmplifyBackend.Types.UpdateBackendAuthResourceConfig where
+
+import Amazonka.AmplifyBackend.Types.AuthResources
+import Amazonka.AmplifyBackend.Types.Service
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthIdentityPoolConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthUserPoolConfig
+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
+
+-- | Defines the resource configuration when updating an authentication
+-- resource in your Amplify project.
+--
+-- /See:/ 'newUpdateBackendAuthResourceConfig' smart constructor.
+data UpdateBackendAuthResourceConfig = UpdateBackendAuthResourceConfig'
+  { -- | Describes the authorization configuration for the Amazon Cognito
+    -- identity pool, provisioned as a part of your auth resource in the
+    -- Amplify project.
+    identityPoolConfigs :: Prelude.Maybe UpdateBackendAuthIdentityPoolConfig,
+    -- | Defines the service name to use when configuring an authentication
+    -- resource in your Amplify project.
+    authResources :: AuthResources,
+    -- | Describes the authentication configuration for the Amazon Cognito user
+    -- pool, provisioned as a part of your auth resource in the Amplify
+    -- project.
+    userPoolConfigs :: UpdateBackendAuthUserPoolConfig,
+    -- | Defines the service name to use when configuring an authentication
+    -- resource in your Amplify project.
+    service :: Service
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuthResourceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolConfigs', 'updateBackendAuthResourceConfig_identityPoolConfigs' - Describes the authorization configuration for the Amazon Cognito
+-- identity pool, provisioned as a part of your auth resource in the
+-- Amplify project.
+--
+-- 'authResources', 'updateBackendAuthResourceConfig_authResources' - Defines the service name to use when configuring an authentication
+-- resource in your Amplify project.
+--
+-- 'userPoolConfigs', 'updateBackendAuthResourceConfig_userPoolConfigs' - Describes the authentication configuration for the Amazon Cognito user
+-- pool, provisioned as a part of your auth resource in the Amplify
+-- project.
+--
+-- 'service', 'updateBackendAuthResourceConfig_service' - Defines the service name to use when configuring an authentication
+-- resource in your Amplify project.
+newUpdateBackendAuthResourceConfig ::
+  -- | 'authResources'
+  AuthResources ->
+  -- | 'userPoolConfigs'
+  UpdateBackendAuthUserPoolConfig ->
+  -- | 'service'
+  Service ->
+  UpdateBackendAuthResourceConfig
+newUpdateBackendAuthResourceConfig
+  pAuthResources_
+  pUserPoolConfigs_
+  pService_ =
+    UpdateBackendAuthResourceConfig'
+      { identityPoolConfigs =
+          Prelude.Nothing,
+        authResources = pAuthResources_,
+        userPoolConfigs = pUserPoolConfigs_,
+        service = pService_
+      }
+
+-- | Describes the authorization configuration for the Amazon Cognito
+-- identity pool, provisioned as a part of your auth resource in the
+-- Amplify project.
+updateBackendAuthResourceConfig_identityPoolConfigs :: Lens.Lens' UpdateBackendAuthResourceConfig (Prelude.Maybe UpdateBackendAuthIdentityPoolConfig)
+updateBackendAuthResourceConfig_identityPoolConfigs = Lens.lens (\UpdateBackendAuthResourceConfig' {identityPoolConfigs} -> identityPoolConfigs) (\s@UpdateBackendAuthResourceConfig' {} a -> s {identityPoolConfigs = a} :: UpdateBackendAuthResourceConfig)
+
+-- | Defines the service name to use when configuring an authentication
+-- resource in your Amplify project.
+updateBackendAuthResourceConfig_authResources :: Lens.Lens' UpdateBackendAuthResourceConfig AuthResources
+updateBackendAuthResourceConfig_authResources = Lens.lens (\UpdateBackendAuthResourceConfig' {authResources} -> authResources) (\s@UpdateBackendAuthResourceConfig' {} a -> s {authResources = a} :: UpdateBackendAuthResourceConfig)
+
+-- | Describes the authentication configuration for the Amazon Cognito user
+-- pool, provisioned as a part of your auth resource in the Amplify
+-- project.
+updateBackendAuthResourceConfig_userPoolConfigs :: Lens.Lens' UpdateBackendAuthResourceConfig UpdateBackendAuthUserPoolConfig
+updateBackendAuthResourceConfig_userPoolConfigs = Lens.lens (\UpdateBackendAuthResourceConfig' {userPoolConfigs} -> userPoolConfigs) (\s@UpdateBackendAuthResourceConfig' {} a -> s {userPoolConfigs = a} :: UpdateBackendAuthResourceConfig)
+
+-- | Defines the service name to use when configuring an authentication
+-- resource in your Amplify project.
+updateBackendAuthResourceConfig_service :: Lens.Lens' UpdateBackendAuthResourceConfig Service
+updateBackendAuthResourceConfig_service = Lens.lens (\UpdateBackendAuthResourceConfig' {service} -> service) (\s@UpdateBackendAuthResourceConfig' {} a -> s {service = a} :: UpdateBackendAuthResourceConfig)
+
+instance
+  Prelude.Hashable
+    UpdateBackendAuthResourceConfig
+  where
+  hashWithSalt
+    _salt
+    UpdateBackendAuthResourceConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` identityPoolConfigs
+        `Prelude.hashWithSalt` authResources
+        `Prelude.hashWithSalt` userPoolConfigs
+        `Prelude.hashWithSalt` service
+
+instance
+  Prelude.NFData
+    UpdateBackendAuthResourceConfig
+  where
+  rnf UpdateBackendAuthResourceConfig' {..} =
+    Prelude.rnf identityPoolConfigs
+      `Prelude.seq` Prelude.rnf authResources
+      `Prelude.seq` Prelude.rnf userPoolConfigs
+      `Prelude.seq` Prelude.rnf service
+
+instance Data.ToJSON UpdateBackendAuthResourceConfig where
+  toJSON UpdateBackendAuthResourceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("identityPoolConfigs" Data..=)
+              Prelude.<$> identityPoolConfigs,
+            Prelude.Just ("authResources" Data..= authResources),
+            Prelude.Just
+              ("userPoolConfigs" Data..= userPoolConfigs),
+            Prelude.Just ("service" Data..= service)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthUserPoolConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthUserPoolConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthUserPoolConfig.hs
@@ -0,0 +1,153 @@
+{-# 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.AmplifyBackend.Types.UpdateBackendAuthUserPoolConfig
+-- 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.AmplifyBackend.Types.UpdateBackendAuthUserPoolConfig where
+
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthForgotPasswordConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthMFAConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthOAuthConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthPasswordPolicyConfig
+import Amazonka.AmplifyBackend.Types.UpdateBackendAuthVerificationMessageConfig
+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 the Amazon Cognito user pool configuration for the
+-- authorization resource to be configured for your Amplify project on an
+-- update.
+--
+-- /See:/ 'newUpdateBackendAuthUserPoolConfig' smart constructor.
+data UpdateBackendAuthUserPoolConfig = UpdateBackendAuthUserPoolConfig'
+  { -- | __(DEPRECATED)__ Describes the forgot password policy for your Amazon
+    -- Cognito user pool, configured as a part of your Amplify project.
+    forgotPassword :: Prelude.Maybe UpdateBackendAuthForgotPasswordConfig,
+    -- | Describes whether to apply multi-factor authentication policies for your
+    -- Amazon Cognito user pool configured as a part of your Amplify project.
+    mfa :: Prelude.Maybe UpdateBackendAuthMFAConfig,
+    -- | Describes the OAuth policy and rules for your Amazon Cognito user pool,
+    -- configured as a part of your Amplify project.
+    oAuth :: Prelude.Maybe UpdateBackendAuthOAuthConfig,
+    -- | Describes the password policy for your Amazon Cognito user pool,
+    -- configured as a part of your Amplify project.
+    passwordPolicy :: Prelude.Maybe UpdateBackendAuthPasswordPolicyConfig,
+    -- | Describes the email or SMS verification message for your Amazon Cognito
+    -- user pool, configured as a part of your Amplify project.
+    verificationMessage :: Prelude.Maybe UpdateBackendAuthVerificationMessageConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuthUserPoolConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'forgotPassword', 'updateBackendAuthUserPoolConfig_forgotPassword' - __(DEPRECATED)__ Describes the forgot password policy for your Amazon
+-- Cognito user pool, configured as a part of your Amplify project.
+--
+-- 'mfa', 'updateBackendAuthUserPoolConfig_mfa' - Describes whether to apply multi-factor authentication policies for your
+-- Amazon Cognito user pool configured as a part of your Amplify project.
+--
+-- 'oAuth', 'updateBackendAuthUserPoolConfig_oAuth' - Describes the OAuth policy and rules for your Amazon Cognito user pool,
+-- configured as a part of your Amplify project.
+--
+-- 'passwordPolicy', 'updateBackendAuthUserPoolConfig_passwordPolicy' - Describes the password policy for your Amazon Cognito user pool,
+-- configured as a part of your Amplify project.
+--
+-- 'verificationMessage', 'updateBackendAuthUserPoolConfig_verificationMessage' - Describes the email or SMS verification message for your Amazon Cognito
+-- user pool, configured as a part of your Amplify project.
+newUpdateBackendAuthUserPoolConfig ::
+  UpdateBackendAuthUserPoolConfig
+newUpdateBackendAuthUserPoolConfig =
+  UpdateBackendAuthUserPoolConfig'
+    { forgotPassword =
+        Prelude.Nothing,
+      mfa = Prelude.Nothing,
+      oAuth = Prelude.Nothing,
+      passwordPolicy = Prelude.Nothing,
+      verificationMessage = Prelude.Nothing
+    }
+
+-- | __(DEPRECATED)__ Describes the forgot password policy for your Amazon
+-- Cognito user pool, configured as a part of your Amplify project.
+updateBackendAuthUserPoolConfig_forgotPassword :: Lens.Lens' UpdateBackendAuthUserPoolConfig (Prelude.Maybe UpdateBackendAuthForgotPasswordConfig)
+updateBackendAuthUserPoolConfig_forgotPassword = Lens.lens (\UpdateBackendAuthUserPoolConfig' {forgotPassword} -> forgotPassword) (\s@UpdateBackendAuthUserPoolConfig' {} a -> s {forgotPassword = a} :: UpdateBackendAuthUserPoolConfig)
+
+-- | Describes whether to apply multi-factor authentication policies for your
+-- Amazon Cognito user pool configured as a part of your Amplify project.
+updateBackendAuthUserPoolConfig_mfa :: Lens.Lens' UpdateBackendAuthUserPoolConfig (Prelude.Maybe UpdateBackendAuthMFAConfig)
+updateBackendAuthUserPoolConfig_mfa = Lens.lens (\UpdateBackendAuthUserPoolConfig' {mfa} -> mfa) (\s@UpdateBackendAuthUserPoolConfig' {} a -> s {mfa = a} :: UpdateBackendAuthUserPoolConfig)
+
+-- | Describes the OAuth policy and rules for your Amazon Cognito user pool,
+-- configured as a part of your Amplify project.
+updateBackendAuthUserPoolConfig_oAuth :: Lens.Lens' UpdateBackendAuthUserPoolConfig (Prelude.Maybe UpdateBackendAuthOAuthConfig)
+updateBackendAuthUserPoolConfig_oAuth = Lens.lens (\UpdateBackendAuthUserPoolConfig' {oAuth} -> oAuth) (\s@UpdateBackendAuthUserPoolConfig' {} a -> s {oAuth = a} :: UpdateBackendAuthUserPoolConfig)
+
+-- | Describes the password policy for your Amazon Cognito user pool,
+-- configured as a part of your Amplify project.
+updateBackendAuthUserPoolConfig_passwordPolicy :: Lens.Lens' UpdateBackendAuthUserPoolConfig (Prelude.Maybe UpdateBackendAuthPasswordPolicyConfig)
+updateBackendAuthUserPoolConfig_passwordPolicy = Lens.lens (\UpdateBackendAuthUserPoolConfig' {passwordPolicy} -> passwordPolicy) (\s@UpdateBackendAuthUserPoolConfig' {} a -> s {passwordPolicy = a} :: UpdateBackendAuthUserPoolConfig)
+
+-- | Describes the email or SMS verification message for your Amazon Cognito
+-- user pool, configured as a part of your Amplify project.
+updateBackendAuthUserPoolConfig_verificationMessage :: Lens.Lens' UpdateBackendAuthUserPoolConfig (Prelude.Maybe UpdateBackendAuthVerificationMessageConfig)
+updateBackendAuthUserPoolConfig_verificationMessage = Lens.lens (\UpdateBackendAuthUserPoolConfig' {verificationMessage} -> verificationMessage) (\s@UpdateBackendAuthUserPoolConfig' {} a -> s {verificationMessage = a} :: UpdateBackendAuthUserPoolConfig)
+
+instance
+  Prelude.Hashable
+    UpdateBackendAuthUserPoolConfig
+  where
+  hashWithSalt
+    _salt
+    UpdateBackendAuthUserPoolConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` forgotPassword
+        `Prelude.hashWithSalt` mfa
+        `Prelude.hashWithSalt` oAuth
+        `Prelude.hashWithSalt` passwordPolicy
+        `Prelude.hashWithSalt` verificationMessage
+
+instance
+  Prelude.NFData
+    UpdateBackendAuthUserPoolConfig
+  where
+  rnf UpdateBackendAuthUserPoolConfig' {..} =
+    Prelude.rnf forgotPassword
+      `Prelude.seq` Prelude.rnf mfa
+      `Prelude.seq` Prelude.rnf oAuth
+      `Prelude.seq` Prelude.rnf passwordPolicy
+      `Prelude.seq` Prelude.rnf verificationMessage
+
+instance Data.ToJSON UpdateBackendAuthUserPoolConfig where
+  toJSON UpdateBackendAuthUserPoolConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("forgotPassword" Data..=)
+              Prelude.<$> forgotPassword,
+            ("mfa" Data..=) Prelude.<$> mfa,
+            ("oAuth" Data..=) Prelude.<$> oAuth,
+            ("passwordPolicy" Data..=)
+              Prelude.<$> passwordPolicy,
+            ("verificationMessage" Data..=)
+              Prelude.<$> verificationMessage
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthVerificationMessageConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthVerificationMessageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendAuthVerificationMessageConfig.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.AmplifyBackend.Types.UpdateBackendAuthVerificationMessageConfig
+-- 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.AmplifyBackend.Types.UpdateBackendAuthVerificationMessageConfig where
+
+import Amazonka.AmplifyBackend.Types.DeliveryMethod
+import Amazonka.AmplifyBackend.Types.EmailSettings
+import Amazonka.AmplifyBackend.Types.SmsSettings
+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
+
+-- | Updates the configuration of the email or SMS message for the auth
+-- resource configured for your Amplify project.
+--
+-- /See:/ 'newUpdateBackendAuthVerificationMessageConfig' smart constructor.
+data UpdateBackendAuthVerificationMessageConfig = UpdateBackendAuthVerificationMessageConfig'
+  { -- | The settings for the email message.
+    emailSettings :: Prelude.Maybe EmailSettings,
+    -- | The settings for the SMS message.
+    smsSettings :: Prelude.Maybe SmsSettings,
+    -- | The type of verification message to send.
+    deliveryMethod :: DeliveryMethod
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuthVerificationMessageConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emailSettings', 'updateBackendAuthVerificationMessageConfig_emailSettings' - The settings for the email message.
+--
+-- 'smsSettings', 'updateBackendAuthVerificationMessageConfig_smsSettings' - The settings for the SMS message.
+--
+-- 'deliveryMethod', 'updateBackendAuthVerificationMessageConfig_deliveryMethod' - The type of verification message to send.
+newUpdateBackendAuthVerificationMessageConfig ::
+  -- | 'deliveryMethod'
+  DeliveryMethod ->
+  UpdateBackendAuthVerificationMessageConfig
+newUpdateBackendAuthVerificationMessageConfig
+  pDeliveryMethod_ =
+    UpdateBackendAuthVerificationMessageConfig'
+      { emailSettings =
+          Prelude.Nothing,
+        smsSettings = Prelude.Nothing,
+        deliveryMethod =
+          pDeliveryMethod_
+      }
+
+-- | The settings for the email message.
+updateBackendAuthVerificationMessageConfig_emailSettings :: Lens.Lens' UpdateBackendAuthVerificationMessageConfig (Prelude.Maybe EmailSettings)
+updateBackendAuthVerificationMessageConfig_emailSettings = Lens.lens (\UpdateBackendAuthVerificationMessageConfig' {emailSettings} -> emailSettings) (\s@UpdateBackendAuthVerificationMessageConfig' {} a -> s {emailSettings = a} :: UpdateBackendAuthVerificationMessageConfig)
+
+-- | The settings for the SMS message.
+updateBackendAuthVerificationMessageConfig_smsSettings :: Lens.Lens' UpdateBackendAuthVerificationMessageConfig (Prelude.Maybe SmsSettings)
+updateBackendAuthVerificationMessageConfig_smsSettings = Lens.lens (\UpdateBackendAuthVerificationMessageConfig' {smsSettings} -> smsSettings) (\s@UpdateBackendAuthVerificationMessageConfig' {} a -> s {smsSettings = a} :: UpdateBackendAuthVerificationMessageConfig)
+
+-- | The type of verification message to send.
+updateBackendAuthVerificationMessageConfig_deliveryMethod :: Lens.Lens' UpdateBackendAuthVerificationMessageConfig DeliveryMethod
+updateBackendAuthVerificationMessageConfig_deliveryMethod = Lens.lens (\UpdateBackendAuthVerificationMessageConfig' {deliveryMethod} -> deliveryMethod) (\s@UpdateBackendAuthVerificationMessageConfig' {} a -> s {deliveryMethod = a} :: UpdateBackendAuthVerificationMessageConfig)
+
+instance
+  Prelude.Hashable
+    UpdateBackendAuthVerificationMessageConfig
+  where
+  hashWithSalt
+    _salt
+    UpdateBackendAuthVerificationMessageConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` emailSettings
+        `Prelude.hashWithSalt` smsSettings
+        `Prelude.hashWithSalt` deliveryMethod
+
+instance
+  Prelude.NFData
+    UpdateBackendAuthVerificationMessageConfig
+  where
+  rnf UpdateBackendAuthVerificationMessageConfig' {..} =
+    Prelude.rnf emailSettings
+      `Prelude.seq` Prelude.rnf smsSettings
+      `Prelude.seq` Prelude.rnf deliveryMethod
+
+instance
+  Data.ToJSON
+    UpdateBackendAuthVerificationMessageConfig
+  where
+  toJSON
+    UpdateBackendAuthVerificationMessageConfig' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("emailSettings" Data..=) Prelude.<$> emailSettings,
+              ("smsSettings" Data..=) Prelude.<$> smsSettings,
+              Prelude.Just
+                ("deliveryMethod" Data..= deliveryMethod)
+            ]
+        )
diff --git a/gen/Amazonka/AmplifyBackend/Types/UpdateBackendStorageResourceConfig.hs b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendStorageResourceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Types/UpdateBackendStorageResourceConfig.hs
@@ -0,0 +1,103 @@
+{-# 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.AmplifyBackend.Types.UpdateBackendStorageResourceConfig
+-- 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.AmplifyBackend.Types.UpdateBackendStorageResourceConfig where
+
+import Amazonka.AmplifyBackend.Types.BackendStoragePermissions
+import Amazonka.AmplifyBackend.Types.ServiceName
+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 resource configuration for updating backend storage.
+--
+-- /See:/ 'newUpdateBackendStorageResourceConfig' smart constructor.
+data UpdateBackendStorageResourceConfig = UpdateBackendStorageResourceConfig'
+  { -- | The name of the storage service.
+    serviceName :: ServiceName,
+    -- | The authorization configuration for the storage S3 bucket.
+    permissions :: BackendStoragePermissions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendStorageResourceConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceName', 'updateBackendStorageResourceConfig_serviceName' - The name of the storage service.
+--
+-- 'permissions', 'updateBackendStorageResourceConfig_permissions' - The authorization configuration for the storage S3 bucket.
+newUpdateBackendStorageResourceConfig ::
+  -- | 'serviceName'
+  ServiceName ->
+  -- | 'permissions'
+  BackendStoragePermissions ->
+  UpdateBackendStorageResourceConfig
+newUpdateBackendStorageResourceConfig
+  pServiceName_
+  pPermissions_ =
+    UpdateBackendStorageResourceConfig'
+      { serviceName =
+          pServiceName_,
+        permissions = pPermissions_
+      }
+
+-- | The name of the storage service.
+updateBackendStorageResourceConfig_serviceName :: Lens.Lens' UpdateBackendStorageResourceConfig ServiceName
+updateBackendStorageResourceConfig_serviceName = Lens.lens (\UpdateBackendStorageResourceConfig' {serviceName} -> serviceName) (\s@UpdateBackendStorageResourceConfig' {} a -> s {serviceName = a} :: UpdateBackendStorageResourceConfig)
+
+-- | The authorization configuration for the storage S3 bucket.
+updateBackendStorageResourceConfig_permissions :: Lens.Lens' UpdateBackendStorageResourceConfig BackendStoragePermissions
+updateBackendStorageResourceConfig_permissions = Lens.lens (\UpdateBackendStorageResourceConfig' {permissions} -> permissions) (\s@UpdateBackendStorageResourceConfig' {} a -> s {permissions = a} :: UpdateBackendStorageResourceConfig)
+
+instance
+  Prelude.Hashable
+    UpdateBackendStorageResourceConfig
+  where
+  hashWithSalt
+    _salt
+    UpdateBackendStorageResourceConfig' {..} =
+      _salt
+        `Prelude.hashWithSalt` serviceName
+        `Prelude.hashWithSalt` permissions
+
+instance
+  Prelude.NFData
+    UpdateBackendStorageResourceConfig
+  where
+  rnf UpdateBackendStorageResourceConfig' {..} =
+    Prelude.rnf serviceName
+      `Prelude.seq` Prelude.rnf permissions
+
+instance
+  Data.ToJSON
+    UpdateBackendStorageResourceConfig
+  where
+  toJSON UpdateBackendStorageResourceConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("serviceName" Data..= serviceName),
+            Prelude.Just ("permissions" Data..= permissions)
+          ]
+      )
diff --git a/gen/Amazonka/AmplifyBackend/UpdateBackendAPI.hs b/gen/Amazonka/AmplifyBackend/UpdateBackendAPI.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/UpdateBackendAPI.hs
@@ -0,0 +1,284 @@
+{-# 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.AmplifyBackend.UpdateBackendAPI
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing backend API resource.
+module Amazonka.AmplifyBackend.UpdateBackendAPI
+  ( -- * Creating a Request
+    UpdateBackendAPI (..),
+    newUpdateBackendAPI,
+
+    -- * Request Lenses
+    updateBackendAPI_resourceConfig,
+    updateBackendAPI_appId,
+    updateBackendAPI_backendEnvironmentName,
+    updateBackendAPI_resourceName,
+
+    -- * Destructuring the Response
+    UpdateBackendAPIResponse (..),
+    newUpdateBackendAPIResponse,
+
+    -- * Response Lenses
+    updateBackendAPIResponse_appId,
+    updateBackendAPIResponse_backendEnvironmentName,
+    updateBackendAPIResponse_error,
+    updateBackendAPIResponse_jobId,
+    updateBackendAPIResponse_operation,
+    updateBackendAPIResponse_status,
+    updateBackendAPIResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for UpdateBackendAPI.
+--
+-- /See:/ 'newUpdateBackendAPI' smart constructor.
+data UpdateBackendAPI = UpdateBackendAPI'
+  { -- | Defines the resource configuration for the data model in your Amplify
+    -- project.
+    resourceConfig :: Prelude.Maybe BackendAPIResourceConfig,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAPI' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceConfig', 'updateBackendAPI_resourceConfig' - Defines the resource configuration for the data model in your Amplify
+-- project.
+--
+-- 'appId', 'updateBackendAPI_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'updateBackendAPI_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'updateBackendAPI_resourceName' - The name of this resource.
+newUpdateBackendAPI ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  UpdateBackendAPI
+newUpdateBackendAPI
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_ =
+    UpdateBackendAPI'
+      { resourceConfig = Prelude.Nothing,
+        appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_
+      }
+
+-- | Defines the resource configuration for the data model in your Amplify
+-- project.
+updateBackendAPI_resourceConfig :: Lens.Lens' UpdateBackendAPI (Prelude.Maybe BackendAPIResourceConfig)
+updateBackendAPI_resourceConfig = Lens.lens (\UpdateBackendAPI' {resourceConfig} -> resourceConfig) (\s@UpdateBackendAPI' {} a -> s {resourceConfig = a} :: UpdateBackendAPI)
+
+-- | The app ID.
+updateBackendAPI_appId :: Lens.Lens' UpdateBackendAPI Prelude.Text
+updateBackendAPI_appId = Lens.lens (\UpdateBackendAPI' {appId} -> appId) (\s@UpdateBackendAPI' {} a -> s {appId = a} :: UpdateBackendAPI)
+
+-- | The name of the backend environment.
+updateBackendAPI_backendEnvironmentName :: Lens.Lens' UpdateBackendAPI Prelude.Text
+updateBackendAPI_backendEnvironmentName = Lens.lens (\UpdateBackendAPI' {backendEnvironmentName} -> backendEnvironmentName) (\s@UpdateBackendAPI' {} a -> s {backendEnvironmentName = a} :: UpdateBackendAPI)
+
+-- | The name of this resource.
+updateBackendAPI_resourceName :: Lens.Lens' UpdateBackendAPI Prelude.Text
+updateBackendAPI_resourceName = Lens.lens (\UpdateBackendAPI' {resourceName} -> resourceName) (\s@UpdateBackendAPI' {} a -> s {resourceName = a} :: UpdateBackendAPI)
+
+instance Core.AWSRequest UpdateBackendAPI where
+  type
+    AWSResponse UpdateBackendAPI =
+      UpdateBackendAPIResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateBackendAPIResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateBackendAPI where
+  hashWithSalt _salt UpdateBackendAPI' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceConfig
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+
+instance Prelude.NFData UpdateBackendAPI where
+  rnf UpdateBackendAPI' {..} =
+    Prelude.rnf resourceConfig
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+
+instance Data.ToHeaders UpdateBackendAPI where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateBackendAPI where
+  toJSON UpdateBackendAPI' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("resourceConfig" Data..=)
+              Prelude.<$> resourceConfig,
+            Prelude.Just ("resourceName" Data..= resourceName)
+          ]
+      )
+
+instance Data.ToPath UpdateBackendAPI where
+  toPath UpdateBackendAPI' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/api/",
+        Data.toBS backendEnvironmentName
+      ]
+
+instance Data.ToQuery UpdateBackendAPI where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateBackendAPIResponse' smart constructor.
+data UpdateBackendAPIResponse = UpdateBackendAPIResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'UpdateBackendAPIResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'updateBackendAPIResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'updateBackendAPIResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'updateBackendAPIResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'updateBackendAPIResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'updateBackendAPIResponse_operation' - The name of the operation.
+--
+-- 'status', 'updateBackendAPIResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'updateBackendAPIResponse_httpStatus' - The response's http status code.
+newUpdateBackendAPIResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateBackendAPIResponse
+newUpdateBackendAPIResponse pHttpStatus_ =
+  UpdateBackendAPIResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+updateBackendAPIResponse_appId :: Lens.Lens' UpdateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+updateBackendAPIResponse_appId = Lens.lens (\UpdateBackendAPIResponse' {appId} -> appId) (\s@UpdateBackendAPIResponse' {} a -> s {appId = a} :: UpdateBackendAPIResponse)
+
+-- | The name of the backend environment.
+updateBackendAPIResponse_backendEnvironmentName :: Lens.Lens' UpdateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+updateBackendAPIResponse_backendEnvironmentName = Lens.lens (\UpdateBackendAPIResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@UpdateBackendAPIResponse' {} a -> s {backendEnvironmentName = a} :: UpdateBackendAPIResponse)
+
+-- | If the request fails, this error is returned.
+updateBackendAPIResponse_error :: Lens.Lens' UpdateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+updateBackendAPIResponse_error = Lens.lens (\UpdateBackendAPIResponse' {error} -> error) (\s@UpdateBackendAPIResponse' {} a -> s {error = a} :: UpdateBackendAPIResponse)
+
+-- | The ID for the job.
+updateBackendAPIResponse_jobId :: Lens.Lens' UpdateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+updateBackendAPIResponse_jobId = Lens.lens (\UpdateBackendAPIResponse' {jobId} -> jobId) (\s@UpdateBackendAPIResponse' {} a -> s {jobId = a} :: UpdateBackendAPIResponse)
+
+-- | The name of the operation.
+updateBackendAPIResponse_operation :: Lens.Lens' UpdateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+updateBackendAPIResponse_operation = Lens.lens (\UpdateBackendAPIResponse' {operation} -> operation) (\s@UpdateBackendAPIResponse' {} a -> s {operation = a} :: UpdateBackendAPIResponse)
+
+-- | The current status of the request.
+updateBackendAPIResponse_status :: Lens.Lens' UpdateBackendAPIResponse (Prelude.Maybe Prelude.Text)
+updateBackendAPIResponse_status = Lens.lens (\UpdateBackendAPIResponse' {status} -> status) (\s@UpdateBackendAPIResponse' {} a -> s {status = a} :: UpdateBackendAPIResponse)
+
+-- | The response's http status code.
+updateBackendAPIResponse_httpStatus :: Lens.Lens' UpdateBackendAPIResponse Prelude.Int
+updateBackendAPIResponse_httpStatus = Lens.lens (\UpdateBackendAPIResponse' {httpStatus} -> httpStatus) (\s@UpdateBackendAPIResponse' {} a -> s {httpStatus = a} :: UpdateBackendAPIResponse)
+
+instance Prelude.NFData UpdateBackendAPIResponse where
+  rnf UpdateBackendAPIResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/UpdateBackendAuth.hs b/gen/Amazonka/AmplifyBackend/UpdateBackendAuth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/UpdateBackendAuth.hs
@@ -0,0 +1,284 @@
+{-# 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.AmplifyBackend.UpdateBackendAuth
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing backend authentication resource.
+module Amazonka.AmplifyBackend.UpdateBackendAuth
+  ( -- * Creating a Request
+    UpdateBackendAuth (..),
+    newUpdateBackendAuth,
+
+    -- * Request Lenses
+    updateBackendAuth_appId,
+    updateBackendAuth_backendEnvironmentName,
+    updateBackendAuth_resourceName,
+    updateBackendAuth_resourceConfig,
+
+    -- * Destructuring the Response
+    UpdateBackendAuthResponse (..),
+    newUpdateBackendAuthResponse,
+
+    -- * Response Lenses
+    updateBackendAuthResponse_appId,
+    updateBackendAuthResponse_backendEnvironmentName,
+    updateBackendAuthResponse_error,
+    updateBackendAuthResponse_jobId,
+    updateBackendAuthResponse_operation,
+    updateBackendAuthResponse_status,
+    updateBackendAuthResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for UpdateBackendAuth.
+--
+-- /See:/ 'newUpdateBackendAuth' smart constructor.
+data UpdateBackendAuth = UpdateBackendAuth'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of this resource.
+    resourceName :: Prelude.Text,
+    -- | The resource configuration for this request object.
+    resourceConfig :: UpdateBackendAuthResourceConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendAuth' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'updateBackendAuth_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'updateBackendAuth_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'updateBackendAuth_resourceName' - The name of this resource.
+--
+-- 'resourceConfig', 'updateBackendAuth_resourceConfig' - The resource configuration for this request object.
+newUpdateBackendAuth ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  -- | 'resourceConfig'
+  UpdateBackendAuthResourceConfig ->
+  UpdateBackendAuth
+newUpdateBackendAuth
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_
+  pResourceConfig_ =
+    UpdateBackendAuth'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_,
+        resourceConfig = pResourceConfig_
+      }
+
+-- | The app ID.
+updateBackendAuth_appId :: Lens.Lens' UpdateBackendAuth Prelude.Text
+updateBackendAuth_appId = Lens.lens (\UpdateBackendAuth' {appId} -> appId) (\s@UpdateBackendAuth' {} a -> s {appId = a} :: UpdateBackendAuth)
+
+-- | The name of the backend environment.
+updateBackendAuth_backendEnvironmentName :: Lens.Lens' UpdateBackendAuth Prelude.Text
+updateBackendAuth_backendEnvironmentName = Lens.lens (\UpdateBackendAuth' {backendEnvironmentName} -> backendEnvironmentName) (\s@UpdateBackendAuth' {} a -> s {backendEnvironmentName = a} :: UpdateBackendAuth)
+
+-- | The name of this resource.
+updateBackendAuth_resourceName :: Lens.Lens' UpdateBackendAuth Prelude.Text
+updateBackendAuth_resourceName = Lens.lens (\UpdateBackendAuth' {resourceName} -> resourceName) (\s@UpdateBackendAuth' {} a -> s {resourceName = a} :: UpdateBackendAuth)
+
+-- | The resource configuration for this request object.
+updateBackendAuth_resourceConfig :: Lens.Lens' UpdateBackendAuth UpdateBackendAuthResourceConfig
+updateBackendAuth_resourceConfig = Lens.lens (\UpdateBackendAuth' {resourceConfig} -> resourceConfig) (\s@UpdateBackendAuth' {} a -> s {resourceConfig = a} :: UpdateBackendAuth)
+
+instance Core.AWSRequest UpdateBackendAuth where
+  type
+    AWSResponse UpdateBackendAuth =
+      UpdateBackendAuthResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateBackendAuthResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateBackendAuth where
+  hashWithSalt _salt UpdateBackendAuth' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+      `Prelude.hashWithSalt` resourceConfig
+
+instance Prelude.NFData UpdateBackendAuth where
+  rnf UpdateBackendAuth' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf resourceConfig
+
+instance Data.ToHeaders UpdateBackendAuth where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateBackendAuth where
+  toJSON UpdateBackendAuth' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("resourceName" Data..= resourceName),
+            Prelude.Just
+              ("resourceConfig" Data..= resourceConfig)
+          ]
+      )
+
+instance Data.ToPath UpdateBackendAuth where
+  toPath UpdateBackendAuth' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/auth/",
+        Data.toBS backendEnvironmentName
+      ]
+
+instance Data.ToQuery UpdateBackendAuth where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateBackendAuthResponse' smart constructor.
+data UpdateBackendAuthResponse = UpdateBackendAuthResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'UpdateBackendAuthResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'updateBackendAuthResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'updateBackendAuthResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'error', 'updateBackendAuthResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'updateBackendAuthResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'updateBackendAuthResponse_operation' - The name of the operation.
+--
+-- 'status', 'updateBackendAuthResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'updateBackendAuthResponse_httpStatus' - The response's http status code.
+newUpdateBackendAuthResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateBackendAuthResponse
+newUpdateBackendAuthResponse pHttpStatus_ =
+  UpdateBackendAuthResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+updateBackendAuthResponse_appId :: Lens.Lens' UpdateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+updateBackendAuthResponse_appId = Lens.lens (\UpdateBackendAuthResponse' {appId} -> appId) (\s@UpdateBackendAuthResponse' {} a -> s {appId = a} :: UpdateBackendAuthResponse)
+
+-- | The name of the backend environment.
+updateBackendAuthResponse_backendEnvironmentName :: Lens.Lens' UpdateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+updateBackendAuthResponse_backendEnvironmentName = Lens.lens (\UpdateBackendAuthResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@UpdateBackendAuthResponse' {} a -> s {backendEnvironmentName = a} :: UpdateBackendAuthResponse)
+
+-- | If the request fails, this error is returned.
+updateBackendAuthResponse_error :: Lens.Lens' UpdateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+updateBackendAuthResponse_error = Lens.lens (\UpdateBackendAuthResponse' {error} -> error) (\s@UpdateBackendAuthResponse' {} a -> s {error = a} :: UpdateBackendAuthResponse)
+
+-- | The ID for the job.
+updateBackendAuthResponse_jobId :: Lens.Lens' UpdateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+updateBackendAuthResponse_jobId = Lens.lens (\UpdateBackendAuthResponse' {jobId} -> jobId) (\s@UpdateBackendAuthResponse' {} a -> s {jobId = a} :: UpdateBackendAuthResponse)
+
+-- | The name of the operation.
+updateBackendAuthResponse_operation :: Lens.Lens' UpdateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+updateBackendAuthResponse_operation = Lens.lens (\UpdateBackendAuthResponse' {operation} -> operation) (\s@UpdateBackendAuthResponse' {} a -> s {operation = a} :: UpdateBackendAuthResponse)
+
+-- | The current status of the request.
+updateBackendAuthResponse_status :: Lens.Lens' UpdateBackendAuthResponse (Prelude.Maybe Prelude.Text)
+updateBackendAuthResponse_status = Lens.lens (\UpdateBackendAuthResponse' {status} -> status) (\s@UpdateBackendAuthResponse' {} a -> s {status = a} :: UpdateBackendAuthResponse)
+
+-- | The response's http status code.
+updateBackendAuthResponse_httpStatus :: Lens.Lens' UpdateBackendAuthResponse Prelude.Int
+updateBackendAuthResponse_httpStatus = Lens.lens (\UpdateBackendAuthResponse' {httpStatus} -> httpStatus) (\s@UpdateBackendAuthResponse' {} a -> s {httpStatus = a} :: UpdateBackendAuthResponse)
+
+instance Prelude.NFData UpdateBackendAuthResponse where
+  rnf UpdateBackendAuthResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/UpdateBackendConfig.hs b/gen/Amazonka/AmplifyBackend/UpdateBackendConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/UpdateBackendConfig.hs
@@ -0,0 +1,226 @@
+{-# 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.AmplifyBackend.UpdateBackendConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the AWS resources required to access the Amplify Admin UI.
+module Amazonka.AmplifyBackend.UpdateBackendConfig
+  ( -- * Creating a Request
+    UpdateBackendConfig (..),
+    newUpdateBackendConfig,
+
+    -- * Request Lenses
+    updateBackendConfig_loginAuthConfig,
+    updateBackendConfig_appId,
+
+    -- * Destructuring the Response
+    UpdateBackendConfigResponse (..),
+    newUpdateBackendConfigResponse,
+
+    -- * Response Lenses
+    updateBackendConfigResponse_appId,
+    updateBackendConfigResponse_backendManagerAppId,
+    updateBackendConfigResponse_error,
+    updateBackendConfigResponse_loginAuthConfig,
+    updateBackendConfigResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for UpdateBackendConfig.
+--
+-- /See:/ 'newUpdateBackendConfig' smart constructor.
+data UpdateBackendConfig = UpdateBackendConfig'
+  { -- | Describes the Amazon Cognito configuration for Admin UI access.
+    loginAuthConfig :: Prelude.Maybe LoginAuthConfigReqObj,
+    -- | The app ID.
+    appId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'loginAuthConfig', 'updateBackendConfig_loginAuthConfig' - Describes the Amazon Cognito configuration for Admin UI access.
+--
+-- 'appId', 'updateBackendConfig_appId' - The app ID.
+newUpdateBackendConfig ::
+  -- | 'appId'
+  Prelude.Text ->
+  UpdateBackendConfig
+newUpdateBackendConfig pAppId_ =
+  UpdateBackendConfig'
+    { loginAuthConfig =
+        Prelude.Nothing,
+      appId = pAppId_
+    }
+
+-- | Describes the Amazon Cognito configuration for Admin UI access.
+updateBackendConfig_loginAuthConfig :: Lens.Lens' UpdateBackendConfig (Prelude.Maybe LoginAuthConfigReqObj)
+updateBackendConfig_loginAuthConfig = Lens.lens (\UpdateBackendConfig' {loginAuthConfig} -> loginAuthConfig) (\s@UpdateBackendConfig' {} a -> s {loginAuthConfig = a} :: UpdateBackendConfig)
+
+-- | The app ID.
+updateBackendConfig_appId :: Lens.Lens' UpdateBackendConfig Prelude.Text
+updateBackendConfig_appId = Lens.lens (\UpdateBackendConfig' {appId} -> appId) (\s@UpdateBackendConfig' {} a -> s {appId = a} :: UpdateBackendConfig)
+
+instance Core.AWSRequest UpdateBackendConfig where
+  type
+    AWSResponse UpdateBackendConfig =
+      UpdateBackendConfigResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateBackendConfigResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendManagerAppId")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "loginAuthConfig")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateBackendConfig where
+  hashWithSalt _salt UpdateBackendConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` loginAuthConfig
+      `Prelude.hashWithSalt` appId
+
+instance Prelude.NFData UpdateBackendConfig where
+  rnf UpdateBackendConfig' {..} =
+    Prelude.rnf loginAuthConfig
+      `Prelude.seq` Prelude.rnf appId
+
+instance Data.ToHeaders UpdateBackendConfig where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateBackendConfig where
+  toJSON UpdateBackendConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("loginAuthConfig" Data..=)
+              Prelude.<$> loginAuthConfig
+          ]
+      )
+
+instance Data.ToPath UpdateBackendConfig where
+  toPath UpdateBackendConfig' {..} =
+    Prelude.mconcat
+      ["/backend/", Data.toBS appId, "/config/update"]
+
+instance Data.ToQuery UpdateBackendConfig where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateBackendConfigResponse' smart constructor.
+data UpdateBackendConfigResponse = UpdateBackendConfigResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The app ID for the backend manager.
+    backendManagerAppId :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | Describes the Amazon Cognito configurations for the Admin UI auth
+    -- resource to log in with.
+    loginAuthConfig :: Prelude.Maybe LoginAuthConfigReqObj,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendConfigResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'updateBackendConfigResponse_appId' - The app ID.
+--
+-- 'backendManagerAppId', 'updateBackendConfigResponse_backendManagerAppId' - The app ID for the backend manager.
+--
+-- 'error', 'updateBackendConfigResponse_error' - If the request fails, this error is returned.
+--
+-- 'loginAuthConfig', 'updateBackendConfigResponse_loginAuthConfig' - Describes the Amazon Cognito configurations for the Admin UI auth
+-- resource to log in with.
+--
+-- 'httpStatus', 'updateBackendConfigResponse_httpStatus' - The response's http status code.
+newUpdateBackendConfigResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateBackendConfigResponse
+newUpdateBackendConfigResponse pHttpStatus_ =
+  UpdateBackendConfigResponse'
+    { appId =
+        Prelude.Nothing,
+      backendManagerAppId = Prelude.Nothing,
+      error = Prelude.Nothing,
+      loginAuthConfig = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+updateBackendConfigResponse_appId :: Lens.Lens' UpdateBackendConfigResponse (Prelude.Maybe Prelude.Text)
+updateBackendConfigResponse_appId = Lens.lens (\UpdateBackendConfigResponse' {appId} -> appId) (\s@UpdateBackendConfigResponse' {} a -> s {appId = a} :: UpdateBackendConfigResponse)
+
+-- | The app ID for the backend manager.
+updateBackendConfigResponse_backendManagerAppId :: Lens.Lens' UpdateBackendConfigResponse (Prelude.Maybe Prelude.Text)
+updateBackendConfigResponse_backendManagerAppId = Lens.lens (\UpdateBackendConfigResponse' {backendManagerAppId} -> backendManagerAppId) (\s@UpdateBackendConfigResponse' {} a -> s {backendManagerAppId = a} :: UpdateBackendConfigResponse)
+
+-- | If the request fails, this error is returned.
+updateBackendConfigResponse_error :: Lens.Lens' UpdateBackendConfigResponse (Prelude.Maybe Prelude.Text)
+updateBackendConfigResponse_error = Lens.lens (\UpdateBackendConfigResponse' {error} -> error) (\s@UpdateBackendConfigResponse' {} a -> s {error = a} :: UpdateBackendConfigResponse)
+
+-- | Describes the Amazon Cognito configurations for the Admin UI auth
+-- resource to log in with.
+updateBackendConfigResponse_loginAuthConfig :: Lens.Lens' UpdateBackendConfigResponse (Prelude.Maybe LoginAuthConfigReqObj)
+updateBackendConfigResponse_loginAuthConfig = Lens.lens (\UpdateBackendConfigResponse' {loginAuthConfig} -> loginAuthConfig) (\s@UpdateBackendConfigResponse' {} a -> s {loginAuthConfig = a} :: UpdateBackendConfigResponse)
+
+-- | The response's http status code.
+updateBackendConfigResponse_httpStatus :: Lens.Lens' UpdateBackendConfigResponse Prelude.Int
+updateBackendConfigResponse_httpStatus = Lens.lens (\UpdateBackendConfigResponse' {httpStatus} -> httpStatus) (\s@UpdateBackendConfigResponse' {} a -> s {httpStatus = a} :: UpdateBackendConfigResponse)
+
+instance Prelude.NFData UpdateBackendConfigResponse where
+  rnf UpdateBackendConfigResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendManagerAppId
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf loginAuthConfig
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/UpdateBackendJob.hs b/gen/Amazonka/AmplifyBackend/UpdateBackendJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/UpdateBackendJob.hs
@@ -0,0 +1,324 @@
+{-# 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.AmplifyBackend.UpdateBackendJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a specific job.
+module Amazonka.AmplifyBackend.UpdateBackendJob
+  ( -- * Creating a Request
+    UpdateBackendJob (..),
+    newUpdateBackendJob,
+
+    -- * Request Lenses
+    updateBackendJob_operation,
+    updateBackendJob_status,
+    updateBackendJob_appId,
+    updateBackendJob_backendEnvironmentName,
+    updateBackendJob_jobId,
+
+    -- * Destructuring the Response
+    UpdateBackendJobResponse (..),
+    newUpdateBackendJobResponse,
+
+    -- * Response Lenses
+    updateBackendJobResponse_appId,
+    updateBackendJobResponse_backendEnvironmentName,
+    updateBackendJobResponse_createTime,
+    updateBackendJobResponse_error,
+    updateBackendJobResponse_jobId,
+    updateBackendJobResponse_operation,
+    updateBackendJobResponse_status,
+    updateBackendJobResponse_updateTime,
+    updateBackendJobResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for GetBackendJob.
+--
+-- /See:/ 'newUpdateBackendJob' smart constructor.
+data UpdateBackendJob = UpdateBackendJob'
+  { -- | Filters the list of response objects to include only those with the
+    -- specified operation name.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | Filters the list of response objects to include only those with the
+    -- specified status.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'operation', 'updateBackendJob_operation' - Filters the list of response objects to include only those with the
+-- specified operation name.
+--
+-- 'status', 'updateBackendJob_status' - Filters the list of response objects to include only those with the
+-- specified status.
+--
+-- 'appId', 'updateBackendJob_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'updateBackendJob_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'jobId', 'updateBackendJob_jobId' - The ID for the job.
+newUpdateBackendJob ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'jobId'
+  Prelude.Text ->
+  UpdateBackendJob
+newUpdateBackendJob
+  pAppId_
+  pBackendEnvironmentName_
+  pJobId_ =
+    UpdateBackendJob'
+      { operation = Prelude.Nothing,
+        status = Prelude.Nothing,
+        appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        jobId = pJobId_
+      }
+
+-- | Filters the list of response objects to include only those with the
+-- specified operation name.
+updateBackendJob_operation :: Lens.Lens' UpdateBackendJob (Prelude.Maybe Prelude.Text)
+updateBackendJob_operation = Lens.lens (\UpdateBackendJob' {operation} -> operation) (\s@UpdateBackendJob' {} a -> s {operation = a} :: UpdateBackendJob)
+
+-- | Filters the list of response objects to include only those with the
+-- specified status.
+updateBackendJob_status :: Lens.Lens' UpdateBackendJob (Prelude.Maybe Prelude.Text)
+updateBackendJob_status = Lens.lens (\UpdateBackendJob' {status} -> status) (\s@UpdateBackendJob' {} a -> s {status = a} :: UpdateBackendJob)
+
+-- | The app ID.
+updateBackendJob_appId :: Lens.Lens' UpdateBackendJob Prelude.Text
+updateBackendJob_appId = Lens.lens (\UpdateBackendJob' {appId} -> appId) (\s@UpdateBackendJob' {} a -> s {appId = a} :: UpdateBackendJob)
+
+-- | The name of the backend environment.
+updateBackendJob_backendEnvironmentName :: Lens.Lens' UpdateBackendJob Prelude.Text
+updateBackendJob_backendEnvironmentName = Lens.lens (\UpdateBackendJob' {backendEnvironmentName} -> backendEnvironmentName) (\s@UpdateBackendJob' {} a -> s {backendEnvironmentName = a} :: UpdateBackendJob)
+
+-- | The ID for the job.
+updateBackendJob_jobId :: Lens.Lens' UpdateBackendJob Prelude.Text
+updateBackendJob_jobId = Lens.lens (\UpdateBackendJob' {jobId} -> jobId) (\s@UpdateBackendJob' {} a -> s {jobId = a} :: UpdateBackendJob)
+
+instance Core.AWSRequest UpdateBackendJob where
+  type
+    AWSResponse UpdateBackendJob =
+      UpdateBackendJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateBackendJobResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "createTime")
+            Prelude.<*> (x Data..?> "error")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "operation")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (x Data..?> "updateTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateBackendJob where
+  hashWithSalt _salt UpdateBackendJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` operation
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` jobId
+
+instance Prelude.NFData UpdateBackendJob where
+  rnf UpdateBackendJob' {..} =
+    Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf jobId
+
+instance Data.ToHeaders UpdateBackendJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateBackendJob where
+  toJSON UpdateBackendJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("operation" Data..=) Prelude.<$> operation,
+            ("status" Data..=) Prelude.<$> status
+          ]
+      )
+
+instance Data.ToPath UpdateBackendJob where
+  toPath UpdateBackendJob' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/job/",
+        Data.toBS backendEnvironmentName,
+        "/",
+        Data.toBS jobId
+      ]
+
+instance Data.ToQuery UpdateBackendJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateBackendJobResponse' smart constructor.
+data UpdateBackendJobResponse = UpdateBackendJobResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The time when the job was created.
+    createTime :: Prelude.Maybe Prelude.Text,
+    -- | If the request fails, this error is returned.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the operation.
+    operation :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: Prelude.Maybe Prelude.Text,
+    -- | The time when the job was last updated.
+    updateTime :: 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 'UpdateBackendJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'updateBackendJobResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'updateBackendJobResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'createTime', 'updateBackendJobResponse_createTime' - The time when the job was created.
+--
+-- 'error', 'updateBackendJobResponse_error' - If the request fails, this error is returned.
+--
+-- 'jobId', 'updateBackendJobResponse_jobId' - The ID for the job.
+--
+-- 'operation', 'updateBackendJobResponse_operation' - The name of the operation.
+--
+-- 'status', 'updateBackendJobResponse_status' - The current status of the request.
+--
+-- 'updateTime', 'updateBackendJobResponse_updateTime' - The time when the job was last updated.
+--
+-- 'httpStatus', 'updateBackendJobResponse_httpStatus' - The response's http status code.
+newUpdateBackendJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateBackendJobResponse
+newUpdateBackendJobResponse pHttpStatus_ =
+  UpdateBackendJobResponse'
+    { appId = Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      createTime = Prelude.Nothing,
+      error = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      operation = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updateTime = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+updateBackendJobResponse_appId :: Lens.Lens' UpdateBackendJobResponse (Prelude.Maybe Prelude.Text)
+updateBackendJobResponse_appId = Lens.lens (\UpdateBackendJobResponse' {appId} -> appId) (\s@UpdateBackendJobResponse' {} a -> s {appId = a} :: UpdateBackendJobResponse)
+
+-- | The name of the backend environment.
+updateBackendJobResponse_backendEnvironmentName :: Lens.Lens' UpdateBackendJobResponse (Prelude.Maybe Prelude.Text)
+updateBackendJobResponse_backendEnvironmentName = Lens.lens (\UpdateBackendJobResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@UpdateBackendJobResponse' {} a -> s {backendEnvironmentName = a} :: UpdateBackendJobResponse)
+
+-- | The time when the job was created.
+updateBackendJobResponse_createTime :: Lens.Lens' UpdateBackendJobResponse (Prelude.Maybe Prelude.Text)
+updateBackendJobResponse_createTime = Lens.lens (\UpdateBackendJobResponse' {createTime} -> createTime) (\s@UpdateBackendJobResponse' {} a -> s {createTime = a} :: UpdateBackendJobResponse)
+
+-- | If the request fails, this error is returned.
+updateBackendJobResponse_error :: Lens.Lens' UpdateBackendJobResponse (Prelude.Maybe Prelude.Text)
+updateBackendJobResponse_error = Lens.lens (\UpdateBackendJobResponse' {error} -> error) (\s@UpdateBackendJobResponse' {} a -> s {error = a} :: UpdateBackendJobResponse)
+
+-- | The ID for the job.
+updateBackendJobResponse_jobId :: Lens.Lens' UpdateBackendJobResponse (Prelude.Maybe Prelude.Text)
+updateBackendJobResponse_jobId = Lens.lens (\UpdateBackendJobResponse' {jobId} -> jobId) (\s@UpdateBackendJobResponse' {} a -> s {jobId = a} :: UpdateBackendJobResponse)
+
+-- | The name of the operation.
+updateBackendJobResponse_operation :: Lens.Lens' UpdateBackendJobResponse (Prelude.Maybe Prelude.Text)
+updateBackendJobResponse_operation = Lens.lens (\UpdateBackendJobResponse' {operation} -> operation) (\s@UpdateBackendJobResponse' {} a -> s {operation = a} :: UpdateBackendJobResponse)
+
+-- | The current status of the request.
+updateBackendJobResponse_status :: Lens.Lens' UpdateBackendJobResponse (Prelude.Maybe Prelude.Text)
+updateBackendJobResponse_status = Lens.lens (\UpdateBackendJobResponse' {status} -> status) (\s@UpdateBackendJobResponse' {} a -> s {status = a} :: UpdateBackendJobResponse)
+
+-- | The time when the job was last updated.
+updateBackendJobResponse_updateTime :: Lens.Lens' UpdateBackendJobResponse (Prelude.Maybe Prelude.Text)
+updateBackendJobResponse_updateTime = Lens.lens (\UpdateBackendJobResponse' {updateTime} -> updateTime) (\s@UpdateBackendJobResponse' {} a -> s {updateTime = a} :: UpdateBackendJobResponse)
+
+-- | The response's http status code.
+updateBackendJobResponse_httpStatus :: Lens.Lens' UpdateBackendJobResponse Prelude.Int
+updateBackendJobResponse_httpStatus = Lens.lens (\UpdateBackendJobResponse' {httpStatus} -> httpStatus) (\s@UpdateBackendJobResponse' {} a -> s {httpStatus = a} :: UpdateBackendJobResponse)
+
+instance Prelude.NFData UpdateBackendJobResponse where
+  rnf UpdateBackendJobResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf createTime
+      `Prelude.seq` Prelude.rnf error
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf operation
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updateTime
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/UpdateBackendStorage.hs b/gen/Amazonka/AmplifyBackend/UpdateBackendStorage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/UpdateBackendStorage.hs
@@ -0,0 +1,261 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.UpdateBackendStorage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing backend storage resource.
+module Amazonka.AmplifyBackend.UpdateBackendStorage
+  ( -- * Creating a Request
+    UpdateBackendStorage (..),
+    newUpdateBackendStorage,
+
+    -- * Request Lenses
+    updateBackendStorage_appId,
+    updateBackendStorage_backendEnvironmentName,
+    updateBackendStorage_resourceName,
+    updateBackendStorage_resourceConfig,
+
+    -- * Destructuring the Response
+    UpdateBackendStorageResponse (..),
+    newUpdateBackendStorageResponse,
+
+    -- * Response Lenses
+    updateBackendStorageResponse_appId,
+    updateBackendStorageResponse_backendEnvironmentName,
+    updateBackendStorageResponse_jobId,
+    updateBackendStorageResponse_status,
+    updateBackendStorageResponse_httpStatus,
+  )
+where
+
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The request body for UpdateBackendStorage.
+--
+-- /See:/ 'newUpdateBackendStorage' smart constructor.
+data UpdateBackendStorage = UpdateBackendStorage'
+  { -- | The app ID.
+    appId :: Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Text,
+    -- | The name of the storage resource.
+    resourceName :: Prelude.Text,
+    -- | The resource configuration for updating backend storage.
+    resourceConfig :: UpdateBackendStorageResourceConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateBackendStorage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'updateBackendStorage_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'updateBackendStorage_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'resourceName', 'updateBackendStorage_resourceName' - The name of the storage resource.
+--
+-- 'resourceConfig', 'updateBackendStorage_resourceConfig' - The resource configuration for updating backend storage.
+newUpdateBackendStorage ::
+  -- | 'appId'
+  Prelude.Text ->
+  -- | 'backendEnvironmentName'
+  Prelude.Text ->
+  -- | 'resourceName'
+  Prelude.Text ->
+  -- | 'resourceConfig'
+  UpdateBackendStorageResourceConfig ->
+  UpdateBackendStorage
+newUpdateBackendStorage
+  pAppId_
+  pBackendEnvironmentName_
+  pResourceName_
+  pResourceConfig_ =
+    UpdateBackendStorage'
+      { appId = pAppId_,
+        backendEnvironmentName = pBackendEnvironmentName_,
+        resourceName = pResourceName_,
+        resourceConfig = pResourceConfig_
+      }
+
+-- | The app ID.
+updateBackendStorage_appId :: Lens.Lens' UpdateBackendStorage Prelude.Text
+updateBackendStorage_appId = Lens.lens (\UpdateBackendStorage' {appId} -> appId) (\s@UpdateBackendStorage' {} a -> s {appId = a} :: UpdateBackendStorage)
+
+-- | The name of the backend environment.
+updateBackendStorage_backendEnvironmentName :: Lens.Lens' UpdateBackendStorage Prelude.Text
+updateBackendStorage_backendEnvironmentName = Lens.lens (\UpdateBackendStorage' {backendEnvironmentName} -> backendEnvironmentName) (\s@UpdateBackendStorage' {} a -> s {backendEnvironmentName = a} :: UpdateBackendStorage)
+
+-- | The name of the storage resource.
+updateBackendStorage_resourceName :: Lens.Lens' UpdateBackendStorage Prelude.Text
+updateBackendStorage_resourceName = Lens.lens (\UpdateBackendStorage' {resourceName} -> resourceName) (\s@UpdateBackendStorage' {} a -> s {resourceName = a} :: UpdateBackendStorage)
+
+-- | The resource configuration for updating backend storage.
+updateBackendStorage_resourceConfig :: Lens.Lens' UpdateBackendStorage UpdateBackendStorageResourceConfig
+updateBackendStorage_resourceConfig = Lens.lens (\UpdateBackendStorage' {resourceConfig} -> resourceConfig) (\s@UpdateBackendStorage' {} a -> s {resourceConfig = a} :: UpdateBackendStorage)
+
+instance Core.AWSRequest UpdateBackendStorage where
+  type
+    AWSResponse UpdateBackendStorage =
+      UpdateBackendStorageResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateBackendStorageResponse'
+            Prelude.<$> (x Data..?> "appId")
+            Prelude.<*> (x Data..?> "backendEnvironmentName")
+            Prelude.<*> (x Data..?> "jobId")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateBackendStorage where
+  hashWithSalt _salt UpdateBackendStorage' {..} =
+    _salt
+      `Prelude.hashWithSalt` appId
+      `Prelude.hashWithSalt` backendEnvironmentName
+      `Prelude.hashWithSalt` resourceName
+      `Prelude.hashWithSalt` resourceConfig
+
+instance Prelude.NFData UpdateBackendStorage where
+  rnf UpdateBackendStorage' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf resourceName
+      `Prelude.seq` Prelude.rnf resourceConfig
+
+instance Data.ToHeaders UpdateBackendStorage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateBackendStorage where
+  toJSON UpdateBackendStorage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("resourceName" Data..= resourceName),
+            Prelude.Just
+              ("resourceConfig" Data..= resourceConfig)
+          ]
+      )
+
+instance Data.ToPath UpdateBackendStorage where
+  toPath UpdateBackendStorage' {..} =
+    Prelude.mconcat
+      [ "/backend/",
+        Data.toBS appId,
+        "/storage/",
+        Data.toBS backendEnvironmentName
+      ]
+
+instance Data.ToQuery UpdateBackendStorage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateBackendStorageResponse' smart constructor.
+data UpdateBackendStorageResponse = UpdateBackendStorageResponse'
+  { -- | The app ID.
+    appId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the backend environment.
+    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
+    -- | The ID for the job.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the request.
+    status :: 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 'UpdateBackendStorageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'appId', 'updateBackendStorageResponse_appId' - The app ID.
+--
+-- 'backendEnvironmentName', 'updateBackendStorageResponse_backendEnvironmentName' - The name of the backend environment.
+--
+-- 'jobId', 'updateBackendStorageResponse_jobId' - The ID for the job.
+--
+-- 'status', 'updateBackendStorageResponse_status' - The current status of the request.
+--
+-- 'httpStatus', 'updateBackendStorageResponse_httpStatus' - The response's http status code.
+newUpdateBackendStorageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateBackendStorageResponse
+newUpdateBackendStorageResponse pHttpStatus_ =
+  UpdateBackendStorageResponse'
+    { appId =
+        Prelude.Nothing,
+      backendEnvironmentName = Prelude.Nothing,
+      jobId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The app ID.
+updateBackendStorageResponse_appId :: Lens.Lens' UpdateBackendStorageResponse (Prelude.Maybe Prelude.Text)
+updateBackendStorageResponse_appId = Lens.lens (\UpdateBackendStorageResponse' {appId} -> appId) (\s@UpdateBackendStorageResponse' {} a -> s {appId = a} :: UpdateBackendStorageResponse)
+
+-- | The name of the backend environment.
+updateBackendStorageResponse_backendEnvironmentName :: Lens.Lens' UpdateBackendStorageResponse (Prelude.Maybe Prelude.Text)
+updateBackendStorageResponse_backendEnvironmentName = Lens.lens (\UpdateBackendStorageResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@UpdateBackendStorageResponse' {} a -> s {backendEnvironmentName = a} :: UpdateBackendStorageResponse)
+
+-- | The ID for the job.
+updateBackendStorageResponse_jobId :: Lens.Lens' UpdateBackendStorageResponse (Prelude.Maybe Prelude.Text)
+updateBackendStorageResponse_jobId = Lens.lens (\UpdateBackendStorageResponse' {jobId} -> jobId) (\s@UpdateBackendStorageResponse' {} a -> s {jobId = a} :: UpdateBackendStorageResponse)
+
+-- | The current status of the request.
+updateBackendStorageResponse_status :: Lens.Lens' UpdateBackendStorageResponse (Prelude.Maybe Prelude.Text)
+updateBackendStorageResponse_status = Lens.lens (\UpdateBackendStorageResponse' {status} -> status) (\s@UpdateBackendStorageResponse' {} a -> s {status = a} :: UpdateBackendStorageResponse)
+
+-- | The response's http status code.
+updateBackendStorageResponse_httpStatus :: Lens.Lens' UpdateBackendStorageResponse Prelude.Int
+updateBackendStorageResponse_httpStatus = Lens.lens (\UpdateBackendStorageResponse' {httpStatus} -> httpStatus) (\s@UpdateBackendStorageResponse' {} a -> s {httpStatus = a} :: UpdateBackendStorageResponse)
+
+instance Prelude.NFData UpdateBackendStorageResponse where
+  rnf UpdateBackendStorageResponse' {..} =
+    Prelude.rnf appId
+      `Prelude.seq` Prelude.rnf backendEnvironmentName
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/AmplifyBackend/Waiters.hs b/gen/Amazonka/AmplifyBackend/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/AmplifyBackend/Waiters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.AmplifyBackend.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.AmplifyBackend.Waiters where
+
+import Amazonka.AmplifyBackend.Lens
+import Amazonka.AmplifyBackend.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.AmplifyBackend
+import Test.Amazonka.AmplifyBackend.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "AmplifyBackend"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/AmplifyBackend.hs b/test/Test/Amazonka/AmplifyBackend.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/AmplifyBackend.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.AmplifyBackend
+-- 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.AmplifyBackend
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/AmplifyBackend/Internal.hs b/test/Test/Amazonka/AmplifyBackend/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/AmplifyBackend/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.AmplifyBackend.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.AmplifyBackend.Internal where
diff --git a/test/Test/Amazonka/Gen/AmplifyBackend.hs b/test/Test/Amazonka/Gen/AmplifyBackend.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/AmplifyBackend.hs
@@ -0,0 +1,658 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.AmplifyBackend
+-- 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.AmplifyBackend where
+
+import Amazonka.AmplifyBackend
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.AmplifyBackend.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"
+--         [ requestCloneBackend $
+--             newCloneBackend
+--
+--         , requestCreateBackend $
+--             newCreateBackend
+--
+--         , requestCreateBackendAPI $
+--             newCreateBackendAPI
+--
+--         , requestCreateBackendAuth $
+--             newCreateBackendAuth
+--
+--         , requestCreateBackendConfig $
+--             newCreateBackendConfig
+--
+--         , requestCreateBackendStorage $
+--             newCreateBackendStorage
+--
+--         , requestCreateToken $
+--             newCreateToken
+--
+--         , requestDeleteBackend $
+--             newDeleteBackend
+--
+--         , requestDeleteBackendAPI $
+--             newDeleteBackendAPI
+--
+--         , requestDeleteBackendAuth $
+--             newDeleteBackendAuth
+--
+--         , requestDeleteBackendStorage $
+--             newDeleteBackendStorage
+--
+--         , requestDeleteToken $
+--             newDeleteToken
+--
+--         , requestGenerateBackendAPIModels $
+--             newGenerateBackendAPIModels
+--
+--         , requestGetBackend $
+--             newGetBackend
+--
+--         , requestGetBackendAPI $
+--             newGetBackendAPI
+--
+--         , requestGetBackendAPIModels $
+--             newGetBackendAPIModels
+--
+--         , requestGetBackendAuth $
+--             newGetBackendAuth
+--
+--         , requestGetBackendJob $
+--             newGetBackendJob
+--
+--         , requestGetBackendStorage $
+--             newGetBackendStorage
+--
+--         , requestGetToken $
+--             newGetToken
+--
+--         , requestImportBackendAuth $
+--             newImportBackendAuth
+--
+--         , requestImportBackendStorage $
+--             newImportBackendStorage
+--
+--         , requestListBackendJobs $
+--             newListBackendJobs
+--
+--         , requestListS3Buckets $
+--             newListS3Buckets
+--
+--         , requestRemoveAllBackends $
+--             newRemoveAllBackends
+--
+--         , requestRemoveBackendConfig $
+--             newRemoveBackendConfig
+--
+--         , requestUpdateBackendAPI $
+--             newUpdateBackendAPI
+--
+--         , requestUpdateBackendAuth $
+--             newUpdateBackendAuth
+--
+--         , requestUpdateBackendConfig $
+--             newUpdateBackendConfig
+--
+--         , requestUpdateBackendJob $
+--             newUpdateBackendJob
+--
+--         , requestUpdateBackendStorage $
+--             newUpdateBackendStorage
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCloneBackend $
+--             newCloneBackendResponse
+--
+--         , responseCreateBackend $
+--             newCreateBackendResponse
+--
+--         , responseCreateBackendAPI $
+--             newCreateBackendAPIResponse
+--
+--         , responseCreateBackendAuth $
+--             newCreateBackendAuthResponse
+--
+--         , responseCreateBackendConfig $
+--             newCreateBackendConfigResponse
+--
+--         , responseCreateBackendStorage $
+--             newCreateBackendStorageResponse
+--
+--         , responseCreateToken $
+--             newCreateTokenResponse
+--
+--         , responseDeleteBackend $
+--             newDeleteBackendResponse
+--
+--         , responseDeleteBackendAPI $
+--             newDeleteBackendAPIResponse
+--
+--         , responseDeleteBackendAuth $
+--             newDeleteBackendAuthResponse
+--
+--         , responseDeleteBackendStorage $
+--             newDeleteBackendStorageResponse
+--
+--         , responseDeleteToken $
+--             newDeleteTokenResponse
+--
+--         , responseGenerateBackendAPIModels $
+--             newGenerateBackendAPIModelsResponse
+--
+--         , responseGetBackend $
+--             newGetBackendResponse
+--
+--         , responseGetBackendAPI $
+--             newGetBackendAPIResponse
+--
+--         , responseGetBackendAPIModels $
+--             newGetBackendAPIModelsResponse
+--
+--         , responseGetBackendAuth $
+--             newGetBackendAuthResponse
+--
+--         , responseGetBackendJob $
+--             newGetBackendJobResponse
+--
+--         , responseGetBackendStorage $
+--             newGetBackendStorageResponse
+--
+--         , responseGetToken $
+--             newGetTokenResponse
+--
+--         , responseImportBackendAuth $
+--             newImportBackendAuthResponse
+--
+--         , responseImportBackendStorage $
+--             newImportBackendStorageResponse
+--
+--         , responseListBackendJobs $
+--             newListBackendJobsResponse
+--
+--         , responseListS3Buckets $
+--             newListS3BucketsResponse
+--
+--         , responseRemoveAllBackends $
+--             newRemoveAllBackendsResponse
+--
+--         , responseRemoveBackendConfig $
+--             newRemoveBackendConfigResponse
+--
+--         , responseUpdateBackendAPI $
+--             newUpdateBackendAPIResponse
+--
+--         , responseUpdateBackendAuth $
+--             newUpdateBackendAuthResponse
+--
+--         , responseUpdateBackendConfig $
+--             newUpdateBackendConfigResponse
+--
+--         , responseUpdateBackendJob $
+--             newUpdateBackendJobResponse
+--
+--         , responseUpdateBackendStorage $
+--             newUpdateBackendStorageResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCloneBackend :: CloneBackend -> TestTree
+requestCloneBackend =
+  req
+    "CloneBackend"
+    "fixture/CloneBackend.yaml"
+
+requestCreateBackend :: CreateBackend -> TestTree
+requestCreateBackend =
+  req
+    "CreateBackend"
+    "fixture/CreateBackend.yaml"
+
+requestCreateBackendAPI :: CreateBackendAPI -> TestTree
+requestCreateBackendAPI =
+  req
+    "CreateBackendAPI"
+    "fixture/CreateBackendAPI.yaml"
+
+requestCreateBackendAuth :: CreateBackendAuth -> TestTree
+requestCreateBackendAuth =
+  req
+    "CreateBackendAuth"
+    "fixture/CreateBackendAuth.yaml"
+
+requestCreateBackendConfig :: CreateBackendConfig -> TestTree
+requestCreateBackendConfig =
+  req
+    "CreateBackendConfig"
+    "fixture/CreateBackendConfig.yaml"
+
+requestCreateBackendStorage :: CreateBackendStorage -> TestTree
+requestCreateBackendStorage =
+  req
+    "CreateBackendStorage"
+    "fixture/CreateBackendStorage.yaml"
+
+requestCreateToken :: CreateToken -> TestTree
+requestCreateToken =
+  req
+    "CreateToken"
+    "fixture/CreateToken.yaml"
+
+requestDeleteBackend :: DeleteBackend -> TestTree
+requestDeleteBackend =
+  req
+    "DeleteBackend"
+    "fixture/DeleteBackend.yaml"
+
+requestDeleteBackendAPI :: DeleteBackendAPI -> TestTree
+requestDeleteBackendAPI =
+  req
+    "DeleteBackendAPI"
+    "fixture/DeleteBackendAPI.yaml"
+
+requestDeleteBackendAuth :: DeleteBackendAuth -> TestTree
+requestDeleteBackendAuth =
+  req
+    "DeleteBackendAuth"
+    "fixture/DeleteBackendAuth.yaml"
+
+requestDeleteBackendStorage :: DeleteBackendStorage -> TestTree
+requestDeleteBackendStorage =
+  req
+    "DeleteBackendStorage"
+    "fixture/DeleteBackendStorage.yaml"
+
+requestDeleteToken :: DeleteToken -> TestTree
+requestDeleteToken =
+  req
+    "DeleteToken"
+    "fixture/DeleteToken.yaml"
+
+requestGenerateBackendAPIModels :: GenerateBackendAPIModels -> TestTree
+requestGenerateBackendAPIModels =
+  req
+    "GenerateBackendAPIModels"
+    "fixture/GenerateBackendAPIModels.yaml"
+
+requestGetBackend :: GetBackend -> TestTree
+requestGetBackend =
+  req
+    "GetBackend"
+    "fixture/GetBackend.yaml"
+
+requestGetBackendAPI :: GetBackendAPI -> TestTree
+requestGetBackendAPI =
+  req
+    "GetBackendAPI"
+    "fixture/GetBackendAPI.yaml"
+
+requestGetBackendAPIModels :: GetBackendAPIModels -> TestTree
+requestGetBackendAPIModels =
+  req
+    "GetBackendAPIModels"
+    "fixture/GetBackendAPIModels.yaml"
+
+requestGetBackendAuth :: GetBackendAuth -> TestTree
+requestGetBackendAuth =
+  req
+    "GetBackendAuth"
+    "fixture/GetBackendAuth.yaml"
+
+requestGetBackendJob :: GetBackendJob -> TestTree
+requestGetBackendJob =
+  req
+    "GetBackendJob"
+    "fixture/GetBackendJob.yaml"
+
+requestGetBackendStorage :: GetBackendStorage -> TestTree
+requestGetBackendStorage =
+  req
+    "GetBackendStorage"
+    "fixture/GetBackendStorage.yaml"
+
+requestGetToken :: GetToken -> TestTree
+requestGetToken =
+  req
+    "GetToken"
+    "fixture/GetToken.yaml"
+
+requestImportBackendAuth :: ImportBackendAuth -> TestTree
+requestImportBackendAuth =
+  req
+    "ImportBackendAuth"
+    "fixture/ImportBackendAuth.yaml"
+
+requestImportBackendStorage :: ImportBackendStorage -> TestTree
+requestImportBackendStorage =
+  req
+    "ImportBackendStorage"
+    "fixture/ImportBackendStorage.yaml"
+
+requestListBackendJobs :: ListBackendJobs -> TestTree
+requestListBackendJobs =
+  req
+    "ListBackendJobs"
+    "fixture/ListBackendJobs.yaml"
+
+requestListS3Buckets :: ListS3Buckets -> TestTree
+requestListS3Buckets =
+  req
+    "ListS3Buckets"
+    "fixture/ListS3Buckets.yaml"
+
+requestRemoveAllBackends :: RemoveAllBackends -> TestTree
+requestRemoveAllBackends =
+  req
+    "RemoveAllBackends"
+    "fixture/RemoveAllBackends.yaml"
+
+requestRemoveBackendConfig :: RemoveBackendConfig -> TestTree
+requestRemoveBackendConfig =
+  req
+    "RemoveBackendConfig"
+    "fixture/RemoveBackendConfig.yaml"
+
+requestUpdateBackendAPI :: UpdateBackendAPI -> TestTree
+requestUpdateBackendAPI =
+  req
+    "UpdateBackendAPI"
+    "fixture/UpdateBackendAPI.yaml"
+
+requestUpdateBackendAuth :: UpdateBackendAuth -> TestTree
+requestUpdateBackendAuth =
+  req
+    "UpdateBackendAuth"
+    "fixture/UpdateBackendAuth.yaml"
+
+requestUpdateBackendConfig :: UpdateBackendConfig -> TestTree
+requestUpdateBackendConfig =
+  req
+    "UpdateBackendConfig"
+    "fixture/UpdateBackendConfig.yaml"
+
+requestUpdateBackendJob :: UpdateBackendJob -> TestTree
+requestUpdateBackendJob =
+  req
+    "UpdateBackendJob"
+    "fixture/UpdateBackendJob.yaml"
+
+requestUpdateBackendStorage :: UpdateBackendStorage -> TestTree
+requestUpdateBackendStorage =
+  req
+    "UpdateBackendStorage"
+    "fixture/UpdateBackendStorage.yaml"
+
+-- Responses
+
+responseCloneBackend :: CloneBackendResponse -> TestTree
+responseCloneBackend =
+  res
+    "CloneBackendResponse"
+    "fixture/CloneBackendResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CloneBackend)
+
+responseCreateBackend :: CreateBackendResponse -> TestTree
+responseCreateBackend =
+  res
+    "CreateBackendResponse"
+    "fixture/CreateBackendResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateBackend)
+
+responseCreateBackendAPI :: CreateBackendAPIResponse -> TestTree
+responseCreateBackendAPI =
+  res
+    "CreateBackendAPIResponse"
+    "fixture/CreateBackendAPIResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateBackendAPI)
+
+responseCreateBackendAuth :: CreateBackendAuthResponse -> TestTree
+responseCreateBackendAuth =
+  res
+    "CreateBackendAuthResponse"
+    "fixture/CreateBackendAuthResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateBackendAuth)
+
+responseCreateBackendConfig :: CreateBackendConfigResponse -> TestTree
+responseCreateBackendConfig =
+  res
+    "CreateBackendConfigResponse"
+    "fixture/CreateBackendConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateBackendConfig)
+
+responseCreateBackendStorage :: CreateBackendStorageResponse -> TestTree
+responseCreateBackendStorage =
+  res
+    "CreateBackendStorageResponse"
+    "fixture/CreateBackendStorageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateBackendStorage)
+
+responseCreateToken :: CreateTokenResponse -> TestTree
+responseCreateToken =
+  res
+    "CreateTokenResponse"
+    "fixture/CreateTokenResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateToken)
+
+responseDeleteBackend :: DeleteBackendResponse -> TestTree
+responseDeleteBackend =
+  res
+    "DeleteBackendResponse"
+    "fixture/DeleteBackendResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteBackend)
+
+responseDeleteBackendAPI :: DeleteBackendAPIResponse -> TestTree
+responseDeleteBackendAPI =
+  res
+    "DeleteBackendAPIResponse"
+    "fixture/DeleteBackendAPIResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteBackendAPI)
+
+responseDeleteBackendAuth :: DeleteBackendAuthResponse -> TestTree
+responseDeleteBackendAuth =
+  res
+    "DeleteBackendAuthResponse"
+    "fixture/DeleteBackendAuthResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteBackendAuth)
+
+responseDeleteBackendStorage :: DeleteBackendStorageResponse -> TestTree
+responseDeleteBackendStorage =
+  res
+    "DeleteBackendStorageResponse"
+    "fixture/DeleteBackendStorageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteBackendStorage)
+
+responseDeleteToken :: DeleteTokenResponse -> TestTree
+responseDeleteToken =
+  res
+    "DeleteTokenResponse"
+    "fixture/DeleteTokenResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteToken)
+
+responseGenerateBackendAPIModels :: GenerateBackendAPIModelsResponse -> TestTree
+responseGenerateBackendAPIModels =
+  res
+    "GenerateBackendAPIModelsResponse"
+    "fixture/GenerateBackendAPIModelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GenerateBackendAPIModels)
+
+responseGetBackend :: GetBackendResponse -> TestTree
+responseGetBackend =
+  res
+    "GetBackendResponse"
+    "fixture/GetBackendResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetBackend)
+
+responseGetBackendAPI :: GetBackendAPIResponse -> TestTree
+responseGetBackendAPI =
+  res
+    "GetBackendAPIResponse"
+    "fixture/GetBackendAPIResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetBackendAPI)
+
+responseGetBackendAPIModels :: GetBackendAPIModelsResponse -> TestTree
+responseGetBackendAPIModels =
+  res
+    "GetBackendAPIModelsResponse"
+    "fixture/GetBackendAPIModelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetBackendAPIModels)
+
+responseGetBackendAuth :: GetBackendAuthResponse -> TestTree
+responseGetBackendAuth =
+  res
+    "GetBackendAuthResponse"
+    "fixture/GetBackendAuthResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetBackendAuth)
+
+responseGetBackendJob :: GetBackendJobResponse -> TestTree
+responseGetBackendJob =
+  res
+    "GetBackendJobResponse"
+    "fixture/GetBackendJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetBackendJob)
+
+responseGetBackendStorage :: GetBackendStorageResponse -> TestTree
+responseGetBackendStorage =
+  res
+    "GetBackendStorageResponse"
+    "fixture/GetBackendStorageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetBackendStorage)
+
+responseGetToken :: GetTokenResponse -> TestTree
+responseGetToken =
+  res
+    "GetTokenResponse"
+    "fixture/GetTokenResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetToken)
+
+responseImportBackendAuth :: ImportBackendAuthResponse -> TestTree
+responseImportBackendAuth =
+  res
+    "ImportBackendAuthResponse"
+    "fixture/ImportBackendAuthResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ImportBackendAuth)
+
+responseImportBackendStorage :: ImportBackendStorageResponse -> TestTree
+responseImportBackendStorage =
+  res
+    "ImportBackendStorageResponse"
+    "fixture/ImportBackendStorageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ImportBackendStorage)
+
+responseListBackendJobs :: ListBackendJobsResponse -> TestTree
+responseListBackendJobs =
+  res
+    "ListBackendJobsResponse"
+    "fixture/ListBackendJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListBackendJobs)
+
+responseListS3Buckets :: ListS3BucketsResponse -> TestTree
+responseListS3Buckets =
+  res
+    "ListS3BucketsResponse"
+    "fixture/ListS3BucketsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListS3Buckets)
+
+responseRemoveAllBackends :: RemoveAllBackendsResponse -> TestTree
+responseRemoveAllBackends =
+  res
+    "RemoveAllBackendsResponse"
+    "fixture/RemoveAllBackendsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RemoveAllBackends)
+
+responseRemoveBackendConfig :: RemoveBackendConfigResponse -> TestTree
+responseRemoveBackendConfig =
+  res
+    "RemoveBackendConfigResponse"
+    "fixture/RemoveBackendConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RemoveBackendConfig)
+
+responseUpdateBackendAPI :: UpdateBackendAPIResponse -> TestTree
+responseUpdateBackendAPI =
+  res
+    "UpdateBackendAPIResponse"
+    "fixture/UpdateBackendAPIResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateBackendAPI)
+
+responseUpdateBackendAuth :: UpdateBackendAuthResponse -> TestTree
+responseUpdateBackendAuth =
+  res
+    "UpdateBackendAuthResponse"
+    "fixture/UpdateBackendAuthResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateBackendAuth)
+
+responseUpdateBackendConfig :: UpdateBackendConfigResponse -> TestTree
+responseUpdateBackendConfig =
+  res
+    "UpdateBackendConfigResponse"
+    "fixture/UpdateBackendConfigResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateBackendConfig)
+
+responseUpdateBackendJob :: UpdateBackendJobResponse -> TestTree
+responseUpdateBackendJob =
+  res
+    "UpdateBackendJobResponse"
+    "fixture/UpdateBackendJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateBackendJob)
+
+responseUpdateBackendStorage :: UpdateBackendStorageResponse -> TestTree
+responseUpdateBackendStorage =
+  res
+    "UpdateBackendStorageResponse"
+    "fixture/UpdateBackendStorageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateBackendStorage)
