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 Quotas SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2019-06-24@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-service-quotas)
+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.ServiceQuotas](http://hackage.haskell.org/package/amazonka-service-quotas/docs/Amazonka-ServiceQuotas.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-service-quotas` 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-service-quotas.cabal b/amazonka-service-quotas.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-service-quotas.cabal
@@ -0,0 +1,114 @@
+cabal-version:      2.2
+name:               amazonka-service-quotas
+version:            2.0
+synopsis:           Amazon Quotas 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 @2019-06-24@ 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.ServiceQuotas.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.ServiceQuotas" 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-service-quotas
+
+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.ServiceQuotas
+    Amazonka.ServiceQuotas.AssociateServiceQuotaTemplate
+    Amazonka.ServiceQuotas.DeleteServiceQuotaIncreaseRequestFromTemplate
+    Amazonka.ServiceQuotas.DisassociateServiceQuotaTemplate
+    Amazonka.ServiceQuotas.GetAssociationForServiceQuotaTemplate
+    Amazonka.ServiceQuotas.GetAWSDefaultServiceQuota
+    Amazonka.ServiceQuotas.GetRequestedServiceQuotaChange
+    Amazonka.ServiceQuotas.GetServiceQuota
+    Amazonka.ServiceQuotas.GetServiceQuotaIncreaseRequestFromTemplate
+    Amazonka.ServiceQuotas.Lens
+    Amazonka.ServiceQuotas.ListAWSDefaultServiceQuotas
+    Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistory
+    Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistoryByQuota
+    Amazonka.ServiceQuotas.ListServiceQuotaIncreaseRequestsInTemplate
+    Amazonka.ServiceQuotas.ListServiceQuotas
+    Amazonka.ServiceQuotas.ListServices
+    Amazonka.ServiceQuotas.ListTagsForResource
+    Amazonka.ServiceQuotas.PutServiceQuotaIncreaseRequestIntoTemplate
+    Amazonka.ServiceQuotas.RequestServiceQuotaIncrease
+    Amazonka.ServiceQuotas.TagResource
+    Amazonka.ServiceQuotas.Types
+    Amazonka.ServiceQuotas.Types.ErrorCode
+    Amazonka.ServiceQuotas.Types.ErrorReason
+    Amazonka.ServiceQuotas.Types.MetricInfo
+    Amazonka.ServiceQuotas.Types.PeriodUnit
+    Amazonka.ServiceQuotas.Types.QuotaPeriod
+    Amazonka.ServiceQuotas.Types.RequestedServiceQuotaChange
+    Amazonka.ServiceQuotas.Types.RequestStatus
+    Amazonka.ServiceQuotas.Types.ServiceInfo
+    Amazonka.ServiceQuotas.Types.ServiceQuota
+    Amazonka.ServiceQuotas.Types.ServiceQuotaIncreaseRequestInTemplate
+    Amazonka.ServiceQuotas.Types.ServiceQuotaTemplateAssociationStatus
+    Amazonka.ServiceQuotas.Types.Tag
+    Amazonka.ServiceQuotas.UntagResource
+    Amazonka.ServiceQuotas.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-service-quotas-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.Gen.ServiceQuotas
+    Test.Amazonka.ServiceQuotas
+    Test.Amazonka.ServiceQuotas.Internal
+
+  build-depends:
+    , amazonka-core            >=2.0 && <2.1
+    , amazonka-service-quotas
+    , amazonka-test            >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociateServiceQuotaTemplate.yaml b/fixture/AssociateServiceQuotaTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateServiceQuotaTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/AssociateServiceQuotaTemplateResponse.proto b/fixture/AssociateServiceQuotaTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateServiceQuotaTemplateResponse.proto
diff --git a/fixture/DeleteServiceQuotaIncreaseRequestFromTemplate.yaml b/fixture/DeleteServiceQuotaIncreaseRequestFromTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteServiceQuotaIncreaseRequestFromTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/DeleteServiceQuotaIncreaseRequestFromTemplateResponse.proto b/fixture/DeleteServiceQuotaIncreaseRequestFromTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteServiceQuotaIncreaseRequestFromTemplateResponse.proto
diff --git a/fixture/DisassociateServiceQuotaTemplate.yaml b/fixture/DisassociateServiceQuotaTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateServiceQuotaTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/DisassociateServiceQuotaTemplateResponse.proto b/fixture/DisassociateServiceQuotaTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateServiceQuotaTemplateResponse.proto
diff --git a/fixture/GetAWSDefaultServiceQuota.yaml b/fixture/GetAWSDefaultServiceQuota.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAWSDefaultServiceQuota.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/GetAWSDefaultServiceQuotaResponse.proto b/fixture/GetAWSDefaultServiceQuotaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAWSDefaultServiceQuotaResponse.proto
diff --git a/fixture/GetAssociationForServiceQuotaTemplate.yaml b/fixture/GetAssociationForServiceQuotaTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAssociationForServiceQuotaTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/GetAssociationForServiceQuotaTemplateResponse.proto b/fixture/GetAssociationForServiceQuotaTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAssociationForServiceQuotaTemplateResponse.proto
diff --git a/fixture/GetRequestedServiceQuotaChange.yaml b/fixture/GetRequestedServiceQuotaChange.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRequestedServiceQuotaChange.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/GetRequestedServiceQuotaChangeResponse.proto b/fixture/GetRequestedServiceQuotaChangeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRequestedServiceQuotaChangeResponse.proto
diff --git a/fixture/GetServiceQuota.yaml b/fixture/GetServiceQuota.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetServiceQuota.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/GetServiceQuotaIncreaseRequestFromTemplate.yaml b/fixture/GetServiceQuotaIncreaseRequestFromTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetServiceQuotaIncreaseRequestFromTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/GetServiceQuotaIncreaseRequestFromTemplateResponse.proto b/fixture/GetServiceQuotaIncreaseRequestFromTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetServiceQuotaIncreaseRequestFromTemplateResponse.proto
diff --git a/fixture/GetServiceQuotaResponse.proto b/fixture/GetServiceQuotaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetServiceQuotaResponse.proto
diff --git a/fixture/ListAWSDefaultServiceQuotas.yaml b/fixture/ListAWSDefaultServiceQuotas.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAWSDefaultServiceQuotas.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/ListAWSDefaultServiceQuotasResponse.proto b/fixture/ListAWSDefaultServiceQuotasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAWSDefaultServiceQuotasResponse.proto
diff --git a/fixture/ListRequestedServiceQuotaChangeHistory.yaml b/fixture/ListRequestedServiceQuotaChangeHistory.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRequestedServiceQuotaChangeHistory.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/ListRequestedServiceQuotaChangeHistoryByQuota.yaml b/fixture/ListRequestedServiceQuotaChangeHistoryByQuota.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRequestedServiceQuotaChangeHistoryByQuota.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/ListRequestedServiceQuotaChangeHistoryByQuotaResponse.proto b/fixture/ListRequestedServiceQuotaChangeHistoryByQuotaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRequestedServiceQuotaChangeHistoryByQuotaResponse.proto
diff --git a/fixture/ListRequestedServiceQuotaChangeHistoryResponse.proto b/fixture/ListRequestedServiceQuotaChangeHistoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRequestedServiceQuotaChangeHistoryResponse.proto
diff --git a/fixture/ListServiceQuotaIncreaseRequestsInTemplate.yaml b/fixture/ListServiceQuotaIncreaseRequestsInTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListServiceQuotaIncreaseRequestsInTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/ListServiceQuotaIncreaseRequestsInTemplateResponse.proto b/fixture/ListServiceQuotaIncreaseRequestsInTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListServiceQuotaIncreaseRequestsInTemplateResponse.proto
diff --git a/fixture/ListServiceQuotas.yaml b/fixture/ListServiceQuotas.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListServiceQuotas.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/ListServiceQuotasResponse.proto b/fixture/ListServiceQuotasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListServiceQuotasResponse.proto
diff --git a/fixture/ListServices.yaml b/fixture/ListServices.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListServices.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/ListServicesResponse.proto b/fixture/ListServicesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListServicesResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/PutServiceQuotaIncreaseRequestIntoTemplate.yaml b/fixture/PutServiceQuotaIncreaseRequestIntoTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutServiceQuotaIncreaseRequestIntoTemplate.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/PutServiceQuotaIncreaseRequestIntoTemplateResponse.proto b/fixture/PutServiceQuotaIncreaseRequestIntoTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutServiceQuotaIncreaseRequestIntoTemplateResponse.proto
diff --git a/fixture/RequestServiceQuotaIncrease.yaml b/fixture/RequestServiceQuotaIncrease.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RequestServiceQuotaIncrease.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.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/RequestServiceQuotaIncreaseResponse.proto b/fixture/RequestServiceQuotaIncreaseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RequestServiceQuotaIncreaseResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/servicequotas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  servicequotas.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Amazonka/ServiceQuotas.hs b/gen/Amazonka/ServiceQuotas.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas.hs
@@ -0,0 +1,293 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.ServiceQuotas
+-- 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 @2019-06-24@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- With Service Quotas, you can view and manage your quotas easily as your
+-- AWS workloads grow. Quotas, also referred to as limits, are the maximum
+-- number of resources that you can create in your AWS account. For more
+-- information, see the
+-- <https://docs.aws.amazon.com/servicequotas/latest/userguide/ Service Quotas User Guide>.
+module Amazonka.ServiceQuotas
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AWSServiceAccessNotEnabledException
+    _AWSServiceAccessNotEnabledException,
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** DependencyAccessDeniedException
+    _DependencyAccessDeniedException,
+
+    -- ** IllegalArgumentException
+    _IllegalArgumentException,
+
+    -- ** InvalidPaginationTokenException
+    _InvalidPaginationTokenException,
+
+    -- ** InvalidResourceStateException
+    _InvalidResourceStateException,
+
+    -- ** NoAvailableOrganizationException
+    _NoAvailableOrganizationException,
+
+    -- ** NoSuchResourceException
+    _NoSuchResourceException,
+
+    -- ** OrganizationNotInAllFeaturesModeException
+    _OrganizationNotInAllFeaturesModeException,
+
+    -- ** QuotaExceededException
+    _QuotaExceededException,
+
+    -- ** ResourceAlreadyExistsException
+    _ResourceAlreadyExistsException,
+
+    -- ** ServiceException
+    _ServiceException,
+
+    -- ** ServiceQuotaTemplateNotInUseException
+    _ServiceQuotaTemplateNotInUseException,
+
+    -- ** TagPolicyViolationException
+    _TagPolicyViolationException,
+
+    -- ** TemplatesNotAvailableInRegionException
+    _TemplatesNotAvailableInRegionException,
+
+    -- ** TooManyRequestsException
+    _TooManyRequestsException,
+
+    -- ** TooManyTagsException
+    _TooManyTagsException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateServiceQuotaTemplate
+    AssociateServiceQuotaTemplate (AssociateServiceQuotaTemplate'),
+    newAssociateServiceQuotaTemplate,
+    AssociateServiceQuotaTemplateResponse (AssociateServiceQuotaTemplateResponse'),
+    newAssociateServiceQuotaTemplateResponse,
+
+    -- ** DeleteServiceQuotaIncreaseRequestFromTemplate
+    DeleteServiceQuotaIncreaseRequestFromTemplate (DeleteServiceQuotaIncreaseRequestFromTemplate'),
+    newDeleteServiceQuotaIncreaseRequestFromTemplate,
+    DeleteServiceQuotaIncreaseRequestFromTemplateResponse (DeleteServiceQuotaIncreaseRequestFromTemplateResponse'),
+    newDeleteServiceQuotaIncreaseRequestFromTemplateResponse,
+
+    -- ** DisassociateServiceQuotaTemplate
+    DisassociateServiceQuotaTemplate (DisassociateServiceQuotaTemplate'),
+    newDisassociateServiceQuotaTemplate,
+    DisassociateServiceQuotaTemplateResponse (DisassociateServiceQuotaTemplateResponse'),
+    newDisassociateServiceQuotaTemplateResponse,
+
+    -- ** GetAWSDefaultServiceQuota
+    GetAWSDefaultServiceQuota (GetAWSDefaultServiceQuota'),
+    newGetAWSDefaultServiceQuota,
+    GetAWSDefaultServiceQuotaResponse (GetAWSDefaultServiceQuotaResponse'),
+    newGetAWSDefaultServiceQuotaResponse,
+
+    -- ** GetAssociationForServiceQuotaTemplate
+    GetAssociationForServiceQuotaTemplate (GetAssociationForServiceQuotaTemplate'),
+    newGetAssociationForServiceQuotaTemplate,
+    GetAssociationForServiceQuotaTemplateResponse (GetAssociationForServiceQuotaTemplateResponse'),
+    newGetAssociationForServiceQuotaTemplateResponse,
+
+    -- ** GetRequestedServiceQuotaChange
+    GetRequestedServiceQuotaChange (GetRequestedServiceQuotaChange'),
+    newGetRequestedServiceQuotaChange,
+    GetRequestedServiceQuotaChangeResponse (GetRequestedServiceQuotaChangeResponse'),
+    newGetRequestedServiceQuotaChangeResponse,
+
+    -- ** GetServiceQuota
+    GetServiceQuota (GetServiceQuota'),
+    newGetServiceQuota,
+    GetServiceQuotaResponse (GetServiceQuotaResponse'),
+    newGetServiceQuotaResponse,
+
+    -- ** GetServiceQuotaIncreaseRequestFromTemplate
+    GetServiceQuotaIncreaseRequestFromTemplate (GetServiceQuotaIncreaseRequestFromTemplate'),
+    newGetServiceQuotaIncreaseRequestFromTemplate,
+    GetServiceQuotaIncreaseRequestFromTemplateResponse (GetServiceQuotaIncreaseRequestFromTemplateResponse'),
+    newGetServiceQuotaIncreaseRequestFromTemplateResponse,
+
+    -- ** ListAWSDefaultServiceQuotas (Paginated)
+    ListAWSDefaultServiceQuotas (ListAWSDefaultServiceQuotas'),
+    newListAWSDefaultServiceQuotas,
+    ListAWSDefaultServiceQuotasResponse (ListAWSDefaultServiceQuotasResponse'),
+    newListAWSDefaultServiceQuotasResponse,
+
+    -- ** ListRequestedServiceQuotaChangeHistory (Paginated)
+    ListRequestedServiceQuotaChangeHistory (ListRequestedServiceQuotaChangeHistory'),
+    newListRequestedServiceQuotaChangeHistory,
+    ListRequestedServiceQuotaChangeHistoryResponse (ListRequestedServiceQuotaChangeHistoryResponse'),
+    newListRequestedServiceQuotaChangeHistoryResponse,
+
+    -- ** ListRequestedServiceQuotaChangeHistoryByQuota (Paginated)
+    ListRequestedServiceQuotaChangeHistoryByQuota (ListRequestedServiceQuotaChangeHistoryByQuota'),
+    newListRequestedServiceQuotaChangeHistoryByQuota,
+    ListRequestedServiceQuotaChangeHistoryByQuotaResponse (ListRequestedServiceQuotaChangeHistoryByQuotaResponse'),
+    newListRequestedServiceQuotaChangeHistoryByQuotaResponse,
+
+    -- ** ListServiceQuotaIncreaseRequestsInTemplate (Paginated)
+    ListServiceQuotaIncreaseRequestsInTemplate (ListServiceQuotaIncreaseRequestsInTemplate'),
+    newListServiceQuotaIncreaseRequestsInTemplate,
+    ListServiceQuotaIncreaseRequestsInTemplateResponse (ListServiceQuotaIncreaseRequestsInTemplateResponse'),
+    newListServiceQuotaIncreaseRequestsInTemplateResponse,
+
+    -- ** ListServiceQuotas (Paginated)
+    ListServiceQuotas (ListServiceQuotas'),
+    newListServiceQuotas,
+    ListServiceQuotasResponse (ListServiceQuotasResponse'),
+    newListServiceQuotasResponse,
+
+    -- ** ListServices (Paginated)
+    ListServices (ListServices'),
+    newListServices,
+    ListServicesResponse (ListServicesResponse'),
+    newListServicesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** PutServiceQuotaIncreaseRequestIntoTemplate
+    PutServiceQuotaIncreaseRequestIntoTemplate (PutServiceQuotaIncreaseRequestIntoTemplate'),
+    newPutServiceQuotaIncreaseRequestIntoTemplate,
+    PutServiceQuotaIncreaseRequestIntoTemplateResponse (PutServiceQuotaIncreaseRequestIntoTemplateResponse'),
+    newPutServiceQuotaIncreaseRequestIntoTemplateResponse,
+
+    -- ** RequestServiceQuotaIncrease
+    RequestServiceQuotaIncrease (RequestServiceQuotaIncrease'),
+    newRequestServiceQuotaIncrease,
+    RequestServiceQuotaIncreaseResponse (RequestServiceQuotaIncreaseResponse'),
+    newRequestServiceQuotaIncreaseResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- * Types
+
+    -- ** ErrorCode
+    ErrorCode (..),
+
+    -- ** PeriodUnit
+    PeriodUnit (..),
+
+    -- ** RequestStatus
+    RequestStatus (..),
+
+    -- ** ServiceQuotaTemplateAssociationStatus
+    ServiceQuotaTemplateAssociationStatus (..),
+
+    -- ** ErrorReason
+    ErrorReason (ErrorReason'),
+    newErrorReason,
+
+    -- ** MetricInfo
+    MetricInfo (MetricInfo'),
+    newMetricInfo,
+
+    -- ** QuotaPeriod
+    QuotaPeriod (QuotaPeriod'),
+    newQuotaPeriod,
+
+    -- ** RequestedServiceQuotaChange
+    RequestedServiceQuotaChange (RequestedServiceQuotaChange'),
+    newRequestedServiceQuotaChange,
+
+    -- ** ServiceInfo
+    ServiceInfo (ServiceInfo'),
+    newServiceInfo,
+
+    -- ** ServiceQuota
+    ServiceQuota (ServiceQuota'),
+    newServiceQuota,
+
+    -- ** ServiceQuotaIncreaseRequestInTemplate
+    ServiceQuotaIncreaseRequestInTemplate (ServiceQuotaIncreaseRequestInTemplate'),
+    newServiceQuotaIncreaseRequestInTemplate,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+  )
+where
+
+import Amazonka.ServiceQuotas.AssociateServiceQuotaTemplate
+import Amazonka.ServiceQuotas.DeleteServiceQuotaIncreaseRequestFromTemplate
+import Amazonka.ServiceQuotas.DisassociateServiceQuotaTemplate
+import Amazonka.ServiceQuotas.GetAWSDefaultServiceQuota
+import Amazonka.ServiceQuotas.GetAssociationForServiceQuotaTemplate
+import Amazonka.ServiceQuotas.GetRequestedServiceQuotaChange
+import Amazonka.ServiceQuotas.GetServiceQuota
+import Amazonka.ServiceQuotas.GetServiceQuotaIncreaseRequestFromTemplate
+import Amazonka.ServiceQuotas.Lens
+import Amazonka.ServiceQuotas.ListAWSDefaultServiceQuotas
+import Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistory
+import Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistoryByQuota
+import Amazonka.ServiceQuotas.ListServiceQuotaIncreaseRequestsInTemplate
+import Amazonka.ServiceQuotas.ListServiceQuotas
+import Amazonka.ServiceQuotas.ListServices
+import Amazonka.ServiceQuotas.ListTagsForResource
+import Amazonka.ServiceQuotas.PutServiceQuotaIncreaseRequestIntoTemplate
+import Amazonka.ServiceQuotas.RequestServiceQuotaIncrease
+import Amazonka.ServiceQuotas.TagResource
+import Amazonka.ServiceQuotas.Types
+import Amazonka.ServiceQuotas.UntagResource
+import Amazonka.ServiceQuotas.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 'ServiceQuotas'.
+
+-- $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/ServiceQuotas/AssociateServiceQuotaTemplate.hs b/gen/Amazonka/ServiceQuotas/AssociateServiceQuotaTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/AssociateServiceQuotaTemplate.hs
@@ -0,0 +1,149 @@
+{-# 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.ServiceQuotas.AssociateServiceQuotaTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates your quota request template with your organization. When a
+-- new account is created in your organization, the quota increase requests
+-- in the template are automatically applied to the account. You can add a
+-- quota increase request for any adjustable quota to your template.
+module Amazonka.ServiceQuotas.AssociateServiceQuotaTemplate
+  ( -- * Creating a Request
+    AssociateServiceQuotaTemplate (..),
+    newAssociateServiceQuotaTemplate,
+
+    -- * Destructuring the Response
+    AssociateServiceQuotaTemplateResponse (..),
+    newAssociateServiceQuotaTemplateResponse,
+
+    -- * Response Lenses
+    associateServiceQuotaTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newAssociateServiceQuotaTemplate' smart constructor.
+data AssociateServiceQuotaTemplate = AssociateServiceQuotaTemplate'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateServiceQuotaTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newAssociateServiceQuotaTemplate ::
+  AssociateServiceQuotaTemplate
+newAssociateServiceQuotaTemplate =
+  AssociateServiceQuotaTemplate'
+
+instance
+  Core.AWSRequest
+    AssociateServiceQuotaTemplate
+  where
+  type
+    AWSResponse AssociateServiceQuotaTemplate =
+      AssociateServiceQuotaTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AssociateServiceQuotaTemplateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AssociateServiceQuotaTemplate
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData AssociateServiceQuotaTemplate where
+  rnf _ = ()
+
+instance Data.ToHeaders AssociateServiceQuotaTemplate where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.AssociateServiceQuotaTemplate" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateServiceQuotaTemplate where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath AssociateServiceQuotaTemplate where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery AssociateServiceQuotaTemplate where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateServiceQuotaTemplateResponse' smart constructor.
+data AssociateServiceQuotaTemplateResponse = AssociateServiceQuotaTemplateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateServiceQuotaTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'associateServiceQuotaTemplateResponse_httpStatus' - The response's http status code.
+newAssociateServiceQuotaTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateServiceQuotaTemplateResponse
+newAssociateServiceQuotaTemplateResponse pHttpStatus_ =
+  AssociateServiceQuotaTemplateResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+associateServiceQuotaTemplateResponse_httpStatus :: Lens.Lens' AssociateServiceQuotaTemplateResponse Prelude.Int
+associateServiceQuotaTemplateResponse_httpStatus = Lens.lens (\AssociateServiceQuotaTemplateResponse' {httpStatus} -> httpStatus) (\s@AssociateServiceQuotaTemplateResponse' {} a -> s {httpStatus = a} :: AssociateServiceQuotaTemplateResponse)
+
+instance
+  Prelude.NFData
+    AssociateServiceQuotaTemplateResponse
+  where
+  rnf AssociateServiceQuotaTemplateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/DeleteServiceQuotaIncreaseRequestFromTemplate.hs b/gen/Amazonka/ServiceQuotas/DeleteServiceQuotaIncreaseRequestFromTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/DeleteServiceQuotaIncreaseRequestFromTemplate.hs
@@ -0,0 +1,227 @@
+{-# 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.ServiceQuotas.DeleteServiceQuotaIncreaseRequestFromTemplate
+-- 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 quota increase request for the specified quota from your
+-- quota request template.
+module Amazonka.ServiceQuotas.DeleteServiceQuotaIncreaseRequestFromTemplate
+  ( -- * Creating a Request
+    DeleteServiceQuotaIncreaseRequestFromTemplate (..),
+    newDeleteServiceQuotaIncreaseRequestFromTemplate,
+
+    -- * Request Lenses
+    deleteServiceQuotaIncreaseRequestFromTemplate_serviceCode,
+    deleteServiceQuotaIncreaseRequestFromTemplate_quotaCode,
+    deleteServiceQuotaIncreaseRequestFromTemplate_awsRegion,
+
+    -- * Destructuring the Response
+    DeleteServiceQuotaIncreaseRequestFromTemplateResponse (..),
+    newDeleteServiceQuotaIncreaseRequestFromTemplateResponse,
+
+    -- * Response Lenses
+    deleteServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newDeleteServiceQuotaIncreaseRequestFromTemplate' smart constructor.
+data DeleteServiceQuotaIncreaseRequestFromTemplate = DeleteServiceQuotaIncreaseRequestFromTemplate'
+  { -- | The service identifier.
+    serviceCode :: Prelude.Text,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Text,
+    -- | The AWS Region.
+    awsRegion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteServiceQuotaIncreaseRequestFromTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceCode', 'deleteServiceQuotaIncreaseRequestFromTemplate_serviceCode' - The service identifier.
+--
+-- 'quotaCode', 'deleteServiceQuotaIncreaseRequestFromTemplate_quotaCode' - The quota identifier.
+--
+-- 'awsRegion', 'deleteServiceQuotaIncreaseRequestFromTemplate_awsRegion' - The AWS Region.
+newDeleteServiceQuotaIncreaseRequestFromTemplate ::
+  -- | 'serviceCode'
+  Prelude.Text ->
+  -- | 'quotaCode'
+  Prelude.Text ->
+  -- | 'awsRegion'
+  Prelude.Text ->
+  DeleteServiceQuotaIncreaseRequestFromTemplate
+newDeleteServiceQuotaIncreaseRequestFromTemplate
+  pServiceCode_
+  pQuotaCode_
+  pAwsRegion_ =
+    DeleteServiceQuotaIncreaseRequestFromTemplate'
+      { serviceCode =
+          pServiceCode_,
+        quotaCode = pQuotaCode_,
+        awsRegion = pAwsRegion_
+      }
+
+-- | The service identifier.
+deleteServiceQuotaIncreaseRequestFromTemplate_serviceCode :: Lens.Lens' DeleteServiceQuotaIncreaseRequestFromTemplate Prelude.Text
+deleteServiceQuotaIncreaseRequestFromTemplate_serviceCode = Lens.lens (\DeleteServiceQuotaIncreaseRequestFromTemplate' {serviceCode} -> serviceCode) (\s@DeleteServiceQuotaIncreaseRequestFromTemplate' {} a -> s {serviceCode = a} :: DeleteServiceQuotaIncreaseRequestFromTemplate)
+
+-- | The quota identifier.
+deleteServiceQuotaIncreaseRequestFromTemplate_quotaCode :: Lens.Lens' DeleteServiceQuotaIncreaseRequestFromTemplate Prelude.Text
+deleteServiceQuotaIncreaseRequestFromTemplate_quotaCode = Lens.lens (\DeleteServiceQuotaIncreaseRequestFromTemplate' {quotaCode} -> quotaCode) (\s@DeleteServiceQuotaIncreaseRequestFromTemplate' {} a -> s {quotaCode = a} :: DeleteServiceQuotaIncreaseRequestFromTemplate)
+
+-- | The AWS Region.
+deleteServiceQuotaIncreaseRequestFromTemplate_awsRegion :: Lens.Lens' DeleteServiceQuotaIncreaseRequestFromTemplate Prelude.Text
+deleteServiceQuotaIncreaseRequestFromTemplate_awsRegion = Lens.lens (\DeleteServiceQuotaIncreaseRequestFromTemplate' {awsRegion} -> awsRegion) (\s@DeleteServiceQuotaIncreaseRequestFromTemplate' {} a -> s {awsRegion = a} :: DeleteServiceQuotaIncreaseRequestFromTemplate)
+
+instance
+  Core.AWSRequest
+    DeleteServiceQuotaIncreaseRequestFromTemplate
+  where
+  type
+    AWSResponse
+      DeleteServiceQuotaIncreaseRequestFromTemplate =
+      DeleteServiceQuotaIncreaseRequestFromTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteServiceQuotaIncreaseRequestFromTemplateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DeleteServiceQuotaIncreaseRequestFromTemplate
+  where
+  hashWithSalt
+    _salt
+    DeleteServiceQuotaIncreaseRequestFromTemplate' {..} =
+      _salt
+        `Prelude.hashWithSalt` serviceCode
+        `Prelude.hashWithSalt` quotaCode
+        `Prelude.hashWithSalt` awsRegion
+
+instance
+  Prelude.NFData
+    DeleteServiceQuotaIncreaseRequestFromTemplate
+  where
+  rnf
+    DeleteServiceQuotaIncreaseRequestFromTemplate' {..} =
+      Prelude.rnf serviceCode
+        `Prelude.seq` Prelude.rnf quotaCode
+        `Prelude.seq` Prelude.rnf awsRegion
+
+instance
+  Data.ToHeaders
+    DeleteServiceQuotaIncreaseRequestFromTemplate
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.DeleteServiceQuotaIncreaseRequestFromTemplate" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DeleteServiceQuotaIncreaseRequestFromTemplate
+  where
+  toJSON
+    DeleteServiceQuotaIncreaseRequestFromTemplate' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just ("ServiceCode" Data..= serviceCode),
+              Prelude.Just ("QuotaCode" Data..= quotaCode),
+              Prelude.Just ("AwsRegion" Data..= awsRegion)
+            ]
+        )
+
+instance
+  Data.ToPath
+    DeleteServiceQuotaIncreaseRequestFromTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteServiceQuotaIncreaseRequestFromTemplate
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteServiceQuotaIncreaseRequestFromTemplateResponse' smart constructor.
+data DeleteServiceQuotaIncreaseRequestFromTemplateResponse = DeleteServiceQuotaIncreaseRequestFromTemplateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteServiceQuotaIncreaseRequestFromTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus' - The response's http status code.
+newDeleteServiceQuotaIncreaseRequestFromTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteServiceQuotaIncreaseRequestFromTemplateResponse
+newDeleteServiceQuotaIncreaseRequestFromTemplateResponse
+  pHttpStatus_ =
+    DeleteServiceQuotaIncreaseRequestFromTemplateResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+deleteServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus :: Lens.Lens' DeleteServiceQuotaIncreaseRequestFromTemplateResponse Prelude.Int
+deleteServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus = Lens.lens (\DeleteServiceQuotaIncreaseRequestFromTemplateResponse' {httpStatus} -> httpStatus) (\s@DeleteServiceQuotaIncreaseRequestFromTemplateResponse' {} a -> s {httpStatus = a} :: DeleteServiceQuotaIncreaseRequestFromTemplateResponse)
+
+instance
+  Prelude.NFData
+    DeleteServiceQuotaIncreaseRequestFromTemplateResponse
+  where
+  rnf
+    DeleteServiceQuotaIncreaseRequestFromTemplateResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/DisassociateServiceQuotaTemplate.hs b/gen/Amazonka/ServiceQuotas/DisassociateServiceQuotaTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/DisassociateServiceQuotaTemplate.hs
@@ -0,0 +1,159 @@
+{-# 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.ServiceQuotas.DisassociateServiceQuotaTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disables your quota request template. After a template is disabled, the
+-- quota increase requests in the template are not applied to new accounts
+-- in your organization. Disabling a quota request template does not apply
+-- its quota increase requests.
+module Amazonka.ServiceQuotas.DisassociateServiceQuotaTemplate
+  ( -- * Creating a Request
+    DisassociateServiceQuotaTemplate (..),
+    newDisassociateServiceQuotaTemplate,
+
+    -- * Destructuring the Response
+    DisassociateServiceQuotaTemplateResponse (..),
+    newDisassociateServiceQuotaTemplateResponse,
+
+    -- * Response Lenses
+    disassociateServiceQuotaTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newDisassociateServiceQuotaTemplate' smart constructor.
+data DisassociateServiceQuotaTemplate = DisassociateServiceQuotaTemplate'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateServiceQuotaTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDisassociateServiceQuotaTemplate ::
+  DisassociateServiceQuotaTemplate
+newDisassociateServiceQuotaTemplate =
+  DisassociateServiceQuotaTemplate'
+
+instance
+  Core.AWSRequest
+    DisassociateServiceQuotaTemplate
+  where
+  type
+    AWSResponse DisassociateServiceQuotaTemplate =
+      DisassociateServiceQuotaTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DisassociateServiceQuotaTemplateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociateServiceQuotaTemplate
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    DisassociateServiceQuotaTemplate
+  where
+  rnf _ = ()
+
+instance
+  Data.ToHeaders
+    DisassociateServiceQuotaTemplate
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.DisassociateServiceQuotaTemplate" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DisassociateServiceQuotaTemplate where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath DisassociateServiceQuotaTemplate where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DisassociateServiceQuotaTemplate
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateServiceQuotaTemplateResponse' smart constructor.
+data DisassociateServiceQuotaTemplateResponse = DisassociateServiceQuotaTemplateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateServiceQuotaTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'disassociateServiceQuotaTemplateResponse_httpStatus' - The response's http status code.
+newDisassociateServiceQuotaTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateServiceQuotaTemplateResponse
+newDisassociateServiceQuotaTemplateResponse
+  pHttpStatus_ =
+    DisassociateServiceQuotaTemplateResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+disassociateServiceQuotaTemplateResponse_httpStatus :: Lens.Lens' DisassociateServiceQuotaTemplateResponse Prelude.Int
+disassociateServiceQuotaTemplateResponse_httpStatus = Lens.lens (\DisassociateServiceQuotaTemplateResponse' {httpStatus} -> httpStatus) (\s@DisassociateServiceQuotaTemplateResponse' {} a -> s {httpStatus = a} :: DisassociateServiceQuotaTemplateResponse)
+
+instance
+  Prelude.NFData
+    DisassociateServiceQuotaTemplateResponse
+  where
+  rnf DisassociateServiceQuotaTemplateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/GetAWSDefaultServiceQuota.hs b/gen/Amazonka/ServiceQuotas/GetAWSDefaultServiceQuota.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/GetAWSDefaultServiceQuota.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ServiceQuotas.GetAWSDefaultServiceQuota
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the default value for the specified quota. The default value
+-- does not reflect any quota increases.
+module Amazonka.ServiceQuotas.GetAWSDefaultServiceQuota
+  ( -- * Creating a Request
+    GetAWSDefaultServiceQuota (..),
+    newGetAWSDefaultServiceQuota,
+
+    -- * Request Lenses
+    getAWSDefaultServiceQuota_serviceCode,
+    getAWSDefaultServiceQuota_quotaCode,
+
+    -- * Destructuring the Response
+    GetAWSDefaultServiceQuotaResponse (..),
+    newGetAWSDefaultServiceQuotaResponse,
+
+    -- * Response Lenses
+    getAWSDefaultServiceQuotaResponse_quota,
+    getAWSDefaultServiceQuotaResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newGetAWSDefaultServiceQuota' smart constructor.
+data GetAWSDefaultServiceQuota = GetAWSDefaultServiceQuota'
+  { -- | The service identifier.
+    serviceCode :: Prelude.Text,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAWSDefaultServiceQuota' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceCode', 'getAWSDefaultServiceQuota_serviceCode' - The service identifier.
+--
+-- 'quotaCode', 'getAWSDefaultServiceQuota_quotaCode' - The quota identifier.
+newGetAWSDefaultServiceQuota ::
+  -- | 'serviceCode'
+  Prelude.Text ->
+  -- | 'quotaCode'
+  Prelude.Text ->
+  GetAWSDefaultServiceQuota
+newGetAWSDefaultServiceQuota
+  pServiceCode_
+  pQuotaCode_ =
+    GetAWSDefaultServiceQuota'
+      { serviceCode =
+          pServiceCode_,
+        quotaCode = pQuotaCode_
+      }
+
+-- | The service identifier.
+getAWSDefaultServiceQuota_serviceCode :: Lens.Lens' GetAWSDefaultServiceQuota Prelude.Text
+getAWSDefaultServiceQuota_serviceCode = Lens.lens (\GetAWSDefaultServiceQuota' {serviceCode} -> serviceCode) (\s@GetAWSDefaultServiceQuota' {} a -> s {serviceCode = a} :: GetAWSDefaultServiceQuota)
+
+-- | The quota identifier.
+getAWSDefaultServiceQuota_quotaCode :: Lens.Lens' GetAWSDefaultServiceQuota Prelude.Text
+getAWSDefaultServiceQuota_quotaCode = Lens.lens (\GetAWSDefaultServiceQuota' {quotaCode} -> quotaCode) (\s@GetAWSDefaultServiceQuota' {} a -> s {quotaCode = a} :: GetAWSDefaultServiceQuota)
+
+instance Core.AWSRequest GetAWSDefaultServiceQuota where
+  type
+    AWSResponse GetAWSDefaultServiceQuota =
+      GetAWSDefaultServiceQuotaResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetAWSDefaultServiceQuotaResponse'
+            Prelude.<$> (x Data..?> "Quota")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetAWSDefaultServiceQuota where
+  hashWithSalt _salt GetAWSDefaultServiceQuota' {..} =
+    _salt
+      `Prelude.hashWithSalt` serviceCode
+      `Prelude.hashWithSalt` quotaCode
+
+instance Prelude.NFData GetAWSDefaultServiceQuota where
+  rnf GetAWSDefaultServiceQuota' {..} =
+    Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf quotaCode
+
+instance Data.ToHeaders GetAWSDefaultServiceQuota where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.GetAWSDefaultServiceQuota" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetAWSDefaultServiceQuota where
+  toJSON GetAWSDefaultServiceQuota' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ServiceCode" Data..= serviceCode),
+            Prelude.Just ("QuotaCode" Data..= quotaCode)
+          ]
+      )
+
+instance Data.ToPath GetAWSDefaultServiceQuota where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetAWSDefaultServiceQuota where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetAWSDefaultServiceQuotaResponse' smart constructor.
+data GetAWSDefaultServiceQuotaResponse = GetAWSDefaultServiceQuotaResponse'
+  { -- | Information about the quota.
+    quota :: Prelude.Maybe ServiceQuota,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAWSDefaultServiceQuotaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'quota', 'getAWSDefaultServiceQuotaResponse_quota' - Information about the quota.
+--
+-- 'httpStatus', 'getAWSDefaultServiceQuotaResponse_httpStatus' - The response's http status code.
+newGetAWSDefaultServiceQuotaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAWSDefaultServiceQuotaResponse
+newGetAWSDefaultServiceQuotaResponse pHttpStatus_ =
+  GetAWSDefaultServiceQuotaResponse'
+    { quota =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the quota.
+getAWSDefaultServiceQuotaResponse_quota :: Lens.Lens' GetAWSDefaultServiceQuotaResponse (Prelude.Maybe ServiceQuota)
+getAWSDefaultServiceQuotaResponse_quota = Lens.lens (\GetAWSDefaultServiceQuotaResponse' {quota} -> quota) (\s@GetAWSDefaultServiceQuotaResponse' {} a -> s {quota = a} :: GetAWSDefaultServiceQuotaResponse)
+
+-- | The response's http status code.
+getAWSDefaultServiceQuotaResponse_httpStatus :: Lens.Lens' GetAWSDefaultServiceQuotaResponse Prelude.Int
+getAWSDefaultServiceQuotaResponse_httpStatus = Lens.lens (\GetAWSDefaultServiceQuotaResponse' {httpStatus} -> httpStatus) (\s@GetAWSDefaultServiceQuotaResponse' {} a -> s {httpStatus = a} :: GetAWSDefaultServiceQuotaResponse)
+
+instance
+  Prelude.NFData
+    GetAWSDefaultServiceQuotaResponse
+  where
+  rnf GetAWSDefaultServiceQuotaResponse' {..} =
+    Prelude.rnf quota
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/GetAssociationForServiceQuotaTemplate.hs b/gen/Amazonka/ServiceQuotas/GetAssociationForServiceQuotaTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/GetAssociationForServiceQuotaTemplate.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.ServiceQuotas.GetAssociationForServiceQuotaTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the status of the association for the quota request template.
+module Amazonka.ServiceQuotas.GetAssociationForServiceQuotaTemplate
+  ( -- * Creating a Request
+    GetAssociationForServiceQuotaTemplate (..),
+    newGetAssociationForServiceQuotaTemplate,
+
+    -- * Destructuring the Response
+    GetAssociationForServiceQuotaTemplateResponse (..),
+    newGetAssociationForServiceQuotaTemplateResponse,
+
+    -- * Response Lenses
+    getAssociationForServiceQuotaTemplateResponse_serviceQuotaTemplateAssociationStatus,
+    getAssociationForServiceQuotaTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newGetAssociationForServiceQuotaTemplate' smart constructor.
+data GetAssociationForServiceQuotaTemplate = GetAssociationForServiceQuotaTemplate'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAssociationForServiceQuotaTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetAssociationForServiceQuotaTemplate ::
+  GetAssociationForServiceQuotaTemplate
+newGetAssociationForServiceQuotaTemplate =
+  GetAssociationForServiceQuotaTemplate'
+
+instance
+  Core.AWSRequest
+    GetAssociationForServiceQuotaTemplate
+  where
+  type
+    AWSResponse
+      GetAssociationForServiceQuotaTemplate =
+      GetAssociationForServiceQuotaTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetAssociationForServiceQuotaTemplateResponse'
+            Prelude.<$> (x Data..?> "ServiceQuotaTemplateAssociationStatus")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetAssociationForServiceQuotaTemplate
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance
+  Prelude.NFData
+    GetAssociationForServiceQuotaTemplate
+  where
+  rnf _ = ()
+
+instance
+  Data.ToHeaders
+    GetAssociationForServiceQuotaTemplate
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.GetAssociationForServiceQuotaTemplate" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    GetAssociationForServiceQuotaTemplate
+  where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance
+  Data.ToPath
+    GetAssociationForServiceQuotaTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    GetAssociationForServiceQuotaTemplate
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetAssociationForServiceQuotaTemplateResponse' smart constructor.
+data GetAssociationForServiceQuotaTemplateResponse = GetAssociationForServiceQuotaTemplateResponse'
+  { -- | The association status. If the status is @ASSOCIATED@, the quota
+    -- increase requests in the template are automatically applied to new
+    -- accounts in your organization.
+    serviceQuotaTemplateAssociationStatus :: Prelude.Maybe ServiceQuotaTemplateAssociationStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAssociationForServiceQuotaTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceQuotaTemplateAssociationStatus', 'getAssociationForServiceQuotaTemplateResponse_serviceQuotaTemplateAssociationStatus' - The association status. If the status is @ASSOCIATED@, the quota
+-- increase requests in the template are automatically applied to new
+-- accounts in your organization.
+--
+-- 'httpStatus', 'getAssociationForServiceQuotaTemplateResponse_httpStatus' - The response's http status code.
+newGetAssociationForServiceQuotaTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAssociationForServiceQuotaTemplateResponse
+newGetAssociationForServiceQuotaTemplateResponse
+  pHttpStatus_ =
+    GetAssociationForServiceQuotaTemplateResponse'
+      { serviceQuotaTemplateAssociationStatus =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The association status. If the status is @ASSOCIATED@, the quota
+-- increase requests in the template are automatically applied to new
+-- accounts in your organization.
+getAssociationForServiceQuotaTemplateResponse_serviceQuotaTemplateAssociationStatus :: Lens.Lens' GetAssociationForServiceQuotaTemplateResponse (Prelude.Maybe ServiceQuotaTemplateAssociationStatus)
+getAssociationForServiceQuotaTemplateResponse_serviceQuotaTemplateAssociationStatus = Lens.lens (\GetAssociationForServiceQuotaTemplateResponse' {serviceQuotaTemplateAssociationStatus} -> serviceQuotaTemplateAssociationStatus) (\s@GetAssociationForServiceQuotaTemplateResponse' {} a -> s {serviceQuotaTemplateAssociationStatus = a} :: GetAssociationForServiceQuotaTemplateResponse)
+
+-- | The response's http status code.
+getAssociationForServiceQuotaTemplateResponse_httpStatus :: Lens.Lens' GetAssociationForServiceQuotaTemplateResponse Prelude.Int
+getAssociationForServiceQuotaTemplateResponse_httpStatus = Lens.lens (\GetAssociationForServiceQuotaTemplateResponse' {httpStatus} -> httpStatus) (\s@GetAssociationForServiceQuotaTemplateResponse' {} a -> s {httpStatus = a} :: GetAssociationForServiceQuotaTemplateResponse)
+
+instance
+  Prelude.NFData
+    GetAssociationForServiceQuotaTemplateResponse
+  where
+  rnf
+    GetAssociationForServiceQuotaTemplateResponse' {..} =
+      Prelude.rnf serviceQuotaTemplateAssociationStatus
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/GetRequestedServiceQuotaChange.hs b/gen/Amazonka/ServiceQuotas/GetRequestedServiceQuotaChange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/GetRequestedServiceQuotaChange.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ServiceQuotas.GetRequestedServiceQuotaChange
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves information about the specified quota increase request.
+module Amazonka.ServiceQuotas.GetRequestedServiceQuotaChange
+  ( -- * Creating a Request
+    GetRequestedServiceQuotaChange (..),
+    newGetRequestedServiceQuotaChange,
+
+    -- * Request Lenses
+    getRequestedServiceQuotaChange_requestId,
+
+    -- * Destructuring the Response
+    GetRequestedServiceQuotaChangeResponse (..),
+    newGetRequestedServiceQuotaChangeResponse,
+
+    -- * Response Lenses
+    getRequestedServiceQuotaChangeResponse_requestedQuota,
+    getRequestedServiceQuotaChangeResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newGetRequestedServiceQuotaChange' smart constructor.
+data GetRequestedServiceQuotaChange = GetRequestedServiceQuotaChange'
+  { -- | The ID of the quota increase request.
+    requestId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRequestedServiceQuotaChange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestId', 'getRequestedServiceQuotaChange_requestId' - The ID of the quota increase request.
+newGetRequestedServiceQuotaChange ::
+  -- | 'requestId'
+  Prelude.Text ->
+  GetRequestedServiceQuotaChange
+newGetRequestedServiceQuotaChange pRequestId_ =
+  GetRequestedServiceQuotaChange'
+    { requestId =
+        pRequestId_
+    }
+
+-- | The ID of the quota increase request.
+getRequestedServiceQuotaChange_requestId :: Lens.Lens' GetRequestedServiceQuotaChange Prelude.Text
+getRequestedServiceQuotaChange_requestId = Lens.lens (\GetRequestedServiceQuotaChange' {requestId} -> requestId) (\s@GetRequestedServiceQuotaChange' {} a -> s {requestId = a} :: GetRequestedServiceQuotaChange)
+
+instance
+  Core.AWSRequest
+    GetRequestedServiceQuotaChange
+  where
+  type
+    AWSResponse GetRequestedServiceQuotaChange =
+      GetRequestedServiceQuotaChangeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetRequestedServiceQuotaChangeResponse'
+            Prelude.<$> (x Data..?> "RequestedQuota")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetRequestedServiceQuotaChange
+  where
+  hashWithSalt
+    _salt
+    GetRequestedServiceQuotaChange' {..} =
+      _salt `Prelude.hashWithSalt` requestId
+
+instance
+  Prelude.NFData
+    GetRequestedServiceQuotaChange
+  where
+  rnf GetRequestedServiceQuotaChange' {..} =
+    Prelude.rnf requestId
+
+instance
+  Data.ToHeaders
+    GetRequestedServiceQuotaChange
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.GetRequestedServiceQuotaChange" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetRequestedServiceQuotaChange where
+  toJSON GetRequestedServiceQuotaChange' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("RequestId" Data..= requestId)]
+      )
+
+instance Data.ToPath GetRequestedServiceQuotaChange where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetRequestedServiceQuotaChange where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetRequestedServiceQuotaChangeResponse' smart constructor.
+data GetRequestedServiceQuotaChangeResponse = GetRequestedServiceQuotaChangeResponse'
+  { -- | Information about the quota increase request.
+    requestedQuota :: Prelude.Maybe RequestedServiceQuotaChange,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetRequestedServiceQuotaChangeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestedQuota', 'getRequestedServiceQuotaChangeResponse_requestedQuota' - Information about the quota increase request.
+--
+-- 'httpStatus', 'getRequestedServiceQuotaChangeResponse_httpStatus' - The response's http status code.
+newGetRequestedServiceQuotaChangeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetRequestedServiceQuotaChangeResponse
+newGetRequestedServiceQuotaChangeResponse
+  pHttpStatus_ =
+    GetRequestedServiceQuotaChangeResponse'
+      { requestedQuota =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | Information about the quota increase request.
+getRequestedServiceQuotaChangeResponse_requestedQuota :: Lens.Lens' GetRequestedServiceQuotaChangeResponse (Prelude.Maybe RequestedServiceQuotaChange)
+getRequestedServiceQuotaChangeResponse_requestedQuota = Lens.lens (\GetRequestedServiceQuotaChangeResponse' {requestedQuota} -> requestedQuota) (\s@GetRequestedServiceQuotaChangeResponse' {} a -> s {requestedQuota = a} :: GetRequestedServiceQuotaChangeResponse)
+
+-- | The response's http status code.
+getRequestedServiceQuotaChangeResponse_httpStatus :: Lens.Lens' GetRequestedServiceQuotaChangeResponse Prelude.Int
+getRequestedServiceQuotaChangeResponse_httpStatus = Lens.lens (\GetRequestedServiceQuotaChangeResponse' {httpStatus} -> httpStatus) (\s@GetRequestedServiceQuotaChangeResponse' {} a -> s {httpStatus = a} :: GetRequestedServiceQuotaChangeResponse)
+
+instance
+  Prelude.NFData
+    GetRequestedServiceQuotaChangeResponse
+  where
+  rnf GetRequestedServiceQuotaChangeResponse' {..} =
+    Prelude.rnf requestedQuota
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/GetServiceQuota.hs b/gen/Amazonka/ServiceQuotas/GetServiceQuota.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/GetServiceQuota.hs
@@ -0,0 +1,189 @@
+{-# 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.ServiceQuotas.GetServiceQuota
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the applied quota value for the specified quota. For some
+-- quotas, only the default values are available. If the applied quota
+-- value is not available for a quota, the quota is not retrieved.
+module Amazonka.ServiceQuotas.GetServiceQuota
+  ( -- * Creating a Request
+    GetServiceQuota (..),
+    newGetServiceQuota,
+
+    -- * Request Lenses
+    getServiceQuota_serviceCode,
+    getServiceQuota_quotaCode,
+
+    -- * Destructuring the Response
+    GetServiceQuotaResponse (..),
+    newGetServiceQuotaResponse,
+
+    -- * Response Lenses
+    getServiceQuotaResponse_quota,
+    getServiceQuotaResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newGetServiceQuota' smart constructor.
+data GetServiceQuota = GetServiceQuota'
+  { -- | The service identifier.
+    serviceCode :: Prelude.Text,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetServiceQuota' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceCode', 'getServiceQuota_serviceCode' - The service identifier.
+--
+-- 'quotaCode', 'getServiceQuota_quotaCode' - The quota identifier.
+newGetServiceQuota ::
+  -- | 'serviceCode'
+  Prelude.Text ->
+  -- | 'quotaCode'
+  Prelude.Text ->
+  GetServiceQuota
+newGetServiceQuota pServiceCode_ pQuotaCode_ =
+  GetServiceQuota'
+    { serviceCode = pServiceCode_,
+      quotaCode = pQuotaCode_
+    }
+
+-- | The service identifier.
+getServiceQuota_serviceCode :: Lens.Lens' GetServiceQuota Prelude.Text
+getServiceQuota_serviceCode = Lens.lens (\GetServiceQuota' {serviceCode} -> serviceCode) (\s@GetServiceQuota' {} a -> s {serviceCode = a} :: GetServiceQuota)
+
+-- | The quota identifier.
+getServiceQuota_quotaCode :: Lens.Lens' GetServiceQuota Prelude.Text
+getServiceQuota_quotaCode = Lens.lens (\GetServiceQuota' {quotaCode} -> quotaCode) (\s@GetServiceQuota' {} a -> s {quotaCode = a} :: GetServiceQuota)
+
+instance Core.AWSRequest GetServiceQuota where
+  type
+    AWSResponse GetServiceQuota =
+      GetServiceQuotaResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetServiceQuotaResponse'
+            Prelude.<$> (x Data..?> "Quota")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetServiceQuota where
+  hashWithSalt _salt GetServiceQuota' {..} =
+    _salt
+      `Prelude.hashWithSalt` serviceCode
+      `Prelude.hashWithSalt` quotaCode
+
+instance Prelude.NFData GetServiceQuota where
+  rnf GetServiceQuota' {..} =
+    Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf quotaCode
+
+instance Data.ToHeaders GetServiceQuota where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.GetServiceQuota" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetServiceQuota where
+  toJSON GetServiceQuota' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ServiceCode" Data..= serviceCode),
+            Prelude.Just ("QuotaCode" Data..= quotaCode)
+          ]
+      )
+
+instance Data.ToPath GetServiceQuota where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetServiceQuota where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetServiceQuotaResponse' smart constructor.
+data GetServiceQuotaResponse = GetServiceQuotaResponse'
+  { -- | Information about the quota.
+    quota :: Prelude.Maybe ServiceQuota,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetServiceQuotaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'quota', 'getServiceQuotaResponse_quota' - Information about the quota.
+--
+-- 'httpStatus', 'getServiceQuotaResponse_httpStatus' - The response's http status code.
+newGetServiceQuotaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetServiceQuotaResponse
+newGetServiceQuotaResponse pHttpStatus_ =
+  GetServiceQuotaResponse'
+    { quota = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the quota.
+getServiceQuotaResponse_quota :: Lens.Lens' GetServiceQuotaResponse (Prelude.Maybe ServiceQuota)
+getServiceQuotaResponse_quota = Lens.lens (\GetServiceQuotaResponse' {quota} -> quota) (\s@GetServiceQuotaResponse' {} a -> s {quota = a} :: GetServiceQuotaResponse)
+
+-- | The response's http status code.
+getServiceQuotaResponse_httpStatus :: Lens.Lens' GetServiceQuotaResponse Prelude.Int
+getServiceQuotaResponse_httpStatus = Lens.lens (\GetServiceQuotaResponse' {httpStatus} -> httpStatus) (\s@GetServiceQuotaResponse' {} a -> s {httpStatus = a} :: GetServiceQuotaResponse)
+
+instance Prelude.NFData GetServiceQuotaResponse where
+  rnf GetServiceQuotaResponse' {..} =
+    Prelude.rnf quota
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/GetServiceQuotaIncreaseRequestFromTemplate.hs b/gen/Amazonka/ServiceQuotas/GetServiceQuotaIncreaseRequestFromTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/GetServiceQuotaIncreaseRequestFromTemplate.hs
@@ -0,0 +1,239 @@
+{-# 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.ServiceQuotas.GetServiceQuotaIncreaseRequestFromTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves information about the specified quota increase request in your
+-- quota request template.
+module Amazonka.ServiceQuotas.GetServiceQuotaIncreaseRequestFromTemplate
+  ( -- * Creating a Request
+    GetServiceQuotaIncreaseRequestFromTemplate (..),
+    newGetServiceQuotaIncreaseRequestFromTemplate,
+
+    -- * Request Lenses
+    getServiceQuotaIncreaseRequestFromTemplate_serviceCode,
+    getServiceQuotaIncreaseRequestFromTemplate_quotaCode,
+    getServiceQuotaIncreaseRequestFromTemplate_awsRegion,
+
+    -- * Destructuring the Response
+    GetServiceQuotaIncreaseRequestFromTemplateResponse (..),
+    newGetServiceQuotaIncreaseRequestFromTemplateResponse,
+
+    -- * Response Lenses
+    getServiceQuotaIncreaseRequestFromTemplateResponse_serviceQuotaIncreaseRequestInTemplate,
+    getServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newGetServiceQuotaIncreaseRequestFromTemplate' smart constructor.
+data GetServiceQuotaIncreaseRequestFromTemplate = GetServiceQuotaIncreaseRequestFromTemplate'
+  { -- | The service identifier.
+    serviceCode :: Prelude.Text,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Text,
+    -- | The AWS Region.
+    awsRegion :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetServiceQuotaIncreaseRequestFromTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceCode', 'getServiceQuotaIncreaseRequestFromTemplate_serviceCode' - The service identifier.
+--
+-- 'quotaCode', 'getServiceQuotaIncreaseRequestFromTemplate_quotaCode' - The quota identifier.
+--
+-- 'awsRegion', 'getServiceQuotaIncreaseRequestFromTemplate_awsRegion' - The AWS Region.
+newGetServiceQuotaIncreaseRequestFromTemplate ::
+  -- | 'serviceCode'
+  Prelude.Text ->
+  -- | 'quotaCode'
+  Prelude.Text ->
+  -- | 'awsRegion'
+  Prelude.Text ->
+  GetServiceQuotaIncreaseRequestFromTemplate
+newGetServiceQuotaIncreaseRequestFromTemplate
+  pServiceCode_
+  pQuotaCode_
+  pAwsRegion_ =
+    GetServiceQuotaIncreaseRequestFromTemplate'
+      { serviceCode =
+          pServiceCode_,
+        quotaCode = pQuotaCode_,
+        awsRegion = pAwsRegion_
+      }
+
+-- | The service identifier.
+getServiceQuotaIncreaseRequestFromTemplate_serviceCode :: Lens.Lens' GetServiceQuotaIncreaseRequestFromTemplate Prelude.Text
+getServiceQuotaIncreaseRequestFromTemplate_serviceCode = Lens.lens (\GetServiceQuotaIncreaseRequestFromTemplate' {serviceCode} -> serviceCode) (\s@GetServiceQuotaIncreaseRequestFromTemplate' {} a -> s {serviceCode = a} :: GetServiceQuotaIncreaseRequestFromTemplate)
+
+-- | The quota identifier.
+getServiceQuotaIncreaseRequestFromTemplate_quotaCode :: Lens.Lens' GetServiceQuotaIncreaseRequestFromTemplate Prelude.Text
+getServiceQuotaIncreaseRequestFromTemplate_quotaCode = Lens.lens (\GetServiceQuotaIncreaseRequestFromTemplate' {quotaCode} -> quotaCode) (\s@GetServiceQuotaIncreaseRequestFromTemplate' {} a -> s {quotaCode = a} :: GetServiceQuotaIncreaseRequestFromTemplate)
+
+-- | The AWS Region.
+getServiceQuotaIncreaseRequestFromTemplate_awsRegion :: Lens.Lens' GetServiceQuotaIncreaseRequestFromTemplate Prelude.Text
+getServiceQuotaIncreaseRequestFromTemplate_awsRegion = Lens.lens (\GetServiceQuotaIncreaseRequestFromTemplate' {awsRegion} -> awsRegion) (\s@GetServiceQuotaIncreaseRequestFromTemplate' {} a -> s {awsRegion = a} :: GetServiceQuotaIncreaseRequestFromTemplate)
+
+instance
+  Core.AWSRequest
+    GetServiceQuotaIncreaseRequestFromTemplate
+  where
+  type
+    AWSResponse
+      GetServiceQuotaIncreaseRequestFromTemplate =
+      GetServiceQuotaIncreaseRequestFromTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetServiceQuotaIncreaseRequestFromTemplateResponse'
+            Prelude.<$> (x Data..?> "ServiceQuotaIncreaseRequestInTemplate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetServiceQuotaIncreaseRequestFromTemplate
+  where
+  hashWithSalt
+    _salt
+    GetServiceQuotaIncreaseRequestFromTemplate' {..} =
+      _salt
+        `Prelude.hashWithSalt` serviceCode
+        `Prelude.hashWithSalt` quotaCode
+        `Prelude.hashWithSalt` awsRegion
+
+instance
+  Prelude.NFData
+    GetServiceQuotaIncreaseRequestFromTemplate
+  where
+  rnf GetServiceQuotaIncreaseRequestFromTemplate' {..} =
+    Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf quotaCode
+      `Prelude.seq` Prelude.rnf awsRegion
+
+instance
+  Data.ToHeaders
+    GetServiceQuotaIncreaseRequestFromTemplate
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.GetServiceQuotaIncreaseRequestFromTemplate" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    GetServiceQuotaIncreaseRequestFromTemplate
+  where
+  toJSON
+    GetServiceQuotaIncreaseRequestFromTemplate' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just ("ServiceCode" Data..= serviceCode),
+              Prelude.Just ("QuotaCode" Data..= quotaCode),
+              Prelude.Just ("AwsRegion" Data..= awsRegion)
+            ]
+        )
+
+instance
+  Data.ToPath
+    GetServiceQuotaIncreaseRequestFromTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    GetServiceQuotaIncreaseRequestFromTemplate
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetServiceQuotaIncreaseRequestFromTemplateResponse' smart constructor.
+data GetServiceQuotaIncreaseRequestFromTemplateResponse = GetServiceQuotaIncreaseRequestFromTemplateResponse'
+  { -- | Information about the quota increase request.
+    serviceQuotaIncreaseRequestInTemplate :: Prelude.Maybe ServiceQuotaIncreaseRequestInTemplate,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetServiceQuotaIncreaseRequestFromTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceQuotaIncreaseRequestInTemplate', 'getServiceQuotaIncreaseRequestFromTemplateResponse_serviceQuotaIncreaseRequestInTemplate' - Information about the quota increase request.
+--
+-- 'httpStatus', 'getServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus' - The response's http status code.
+newGetServiceQuotaIncreaseRequestFromTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetServiceQuotaIncreaseRequestFromTemplateResponse
+newGetServiceQuotaIncreaseRequestFromTemplateResponse
+  pHttpStatus_ =
+    GetServiceQuotaIncreaseRequestFromTemplateResponse'
+      { serviceQuotaIncreaseRequestInTemplate =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Information about the quota increase request.
+getServiceQuotaIncreaseRequestFromTemplateResponse_serviceQuotaIncreaseRequestInTemplate :: Lens.Lens' GetServiceQuotaIncreaseRequestFromTemplateResponse (Prelude.Maybe ServiceQuotaIncreaseRequestInTemplate)
+getServiceQuotaIncreaseRequestFromTemplateResponse_serviceQuotaIncreaseRequestInTemplate = Lens.lens (\GetServiceQuotaIncreaseRequestFromTemplateResponse' {serviceQuotaIncreaseRequestInTemplate} -> serviceQuotaIncreaseRequestInTemplate) (\s@GetServiceQuotaIncreaseRequestFromTemplateResponse' {} a -> s {serviceQuotaIncreaseRequestInTemplate = a} :: GetServiceQuotaIncreaseRequestFromTemplateResponse)
+
+-- | The response's http status code.
+getServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus :: Lens.Lens' GetServiceQuotaIncreaseRequestFromTemplateResponse Prelude.Int
+getServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus = Lens.lens (\GetServiceQuotaIncreaseRequestFromTemplateResponse' {httpStatus} -> httpStatus) (\s@GetServiceQuotaIncreaseRequestFromTemplateResponse' {} a -> s {httpStatus = a} :: GetServiceQuotaIncreaseRequestFromTemplateResponse)
+
+instance
+  Prelude.NFData
+    GetServiceQuotaIncreaseRequestFromTemplateResponse
+  where
+  rnf
+    GetServiceQuotaIncreaseRequestFromTemplateResponse' {..} =
+      Prelude.rnf serviceQuotaIncreaseRequestInTemplate
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/Lens.hs b/gen/Amazonka/ServiceQuotas/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Lens.hs
@@ -0,0 +1,230 @@
+{-# 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.ServiceQuotas.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.ServiceQuotas.Lens
+  ( -- * Operations
+
+    -- ** AssociateServiceQuotaTemplate
+    associateServiceQuotaTemplateResponse_httpStatus,
+
+    -- ** DeleteServiceQuotaIncreaseRequestFromTemplate
+    deleteServiceQuotaIncreaseRequestFromTemplate_serviceCode,
+    deleteServiceQuotaIncreaseRequestFromTemplate_quotaCode,
+    deleteServiceQuotaIncreaseRequestFromTemplate_awsRegion,
+    deleteServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus,
+
+    -- ** DisassociateServiceQuotaTemplate
+    disassociateServiceQuotaTemplateResponse_httpStatus,
+
+    -- ** GetAWSDefaultServiceQuota
+    getAWSDefaultServiceQuota_serviceCode,
+    getAWSDefaultServiceQuota_quotaCode,
+    getAWSDefaultServiceQuotaResponse_quota,
+    getAWSDefaultServiceQuotaResponse_httpStatus,
+
+    -- ** GetAssociationForServiceQuotaTemplate
+    getAssociationForServiceQuotaTemplateResponse_serviceQuotaTemplateAssociationStatus,
+    getAssociationForServiceQuotaTemplateResponse_httpStatus,
+
+    -- ** GetRequestedServiceQuotaChange
+    getRequestedServiceQuotaChange_requestId,
+    getRequestedServiceQuotaChangeResponse_requestedQuota,
+    getRequestedServiceQuotaChangeResponse_httpStatus,
+
+    -- ** GetServiceQuota
+    getServiceQuota_serviceCode,
+    getServiceQuota_quotaCode,
+    getServiceQuotaResponse_quota,
+    getServiceQuotaResponse_httpStatus,
+
+    -- ** GetServiceQuotaIncreaseRequestFromTemplate
+    getServiceQuotaIncreaseRequestFromTemplate_serviceCode,
+    getServiceQuotaIncreaseRequestFromTemplate_quotaCode,
+    getServiceQuotaIncreaseRequestFromTemplate_awsRegion,
+    getServiceQuotaIncreaseRequestFromTemplateResponse_serviceQuotaIncreaseRequestInTemplate,
+    getServiceQuotaIncreaseRequestFromTemplateResponse_httpStatus,
+
+    -- ** ListAWSDefaultServiceQuotas
+    listAWSDefaultServiceQuotas_maxResults,
+    listAWSDefaultServiceQuotas_nextToken,
+    listAWSDefaultServiceQuotas_serviceCode,
+    listAWSDefaultServiceQuotasResponse_nextToken,
+    listAWSDefaultServiceQuotasResponse_quotas,
+    listAWSDefaultServiceQuotasResponse_httpStatus,
+
+    -- ** ListRequestedServiceQuotaChangeHistory
+    listRequestedServiceQuotaChangeHistory_maxResults,
+    listRequestedServiceQuotaChangeHistory_nextToken,
+    listRequestedServiceQuotaChangeHistory_serviceCode,
+    listRequestedServiceQuotaChangeHistory_status,
+    listRequestedServiceQuotaChangeHistoryResponse_nextToken,
+    listRequestedServiceQuotaChangeHistoryResponse_requestedQuotas,
+    listRequestedServiceQuotaChangeHistoryResponse_httpStatus,
+
+    -- ** ListRequestedServiceQuotaChangeHistoryByQuota
+    listRequestedServiceQuotaChangeHistoryByQuota_maxResults,
+    listRequestedServiceQuotaChangeHistoryByQuota_nextToken,
+    listRequestedServiceQuotaChangeHistoryByQuota_status,
+    listRequestedServiceQuotaChangeHistoryByQuota_serviceCode,
+    listRequestedServiceQuotaChangeHistoryByQuota_quotaCode,
+    listRequestedServiceQuotaChangeHistoryByQuotaResponse_nextToken,
+    listRequestedServiceQuotaChangeHistoryByQuotaResponse_requestedQuotas,
+    listRequestedServiceQuotaChangeHistoryByQuotaResponse_httpStatus,
+
+    -- ** ListServiceQuotaIncreaseRequestsInTemplate
+    listServiceQuotaIncreaseRequestsInTemplate_awsRegion,
+    listServiceQuotaIncreaseRequestsInTemplate_maxResults,
+    listServiceQuotaIncreaseRequestsInTemplate_nextToken,
+    listServiceQuotaIncreaseRequestsInTemplate_serviceCode,
+    listServiceQuotaIncreaseRequestsInTemplateResponse_nextToken,
+    listServiceQuotaIncreaseRequestsInTemplateResponse_serviceQuotaIncreaseRequestInTemplateList,
+    listServiceQuotaIncreaseRequestsInTemplateResponse_httpStatus,
+
+    -- ** ListServiceQuotas
+    listServiceQuotas_maxResults,
+    listServiceQuotas_nextToken,
+    listServiceQuotas_serviceCode,
+    listServiceQuotasResponse_nextToken,
+    listServiceQuotasResponse_quotas,
+    listServiceQuotasResponse_httpStatus,
+
+    -- ** ListServices
+    listServices_maxResults,
+    listServices_nextToken,
+    listServicesResponse_nextToken,
+    listServicesResponse_services,
+    listServicesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceARN,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** PutServiceQuotaIncreaseRequestIntoTemplate
+    putServiceQuotaIncreaseRequestIntoTemplate_quotaCode,
+    putServiceQuotaIncreaseRequestIntoTemplate_serviceCode,
+    putServiceQuotaIncreaseRequestIntoTemplate_awsRegion,
+    putServiceQuotaIncreaseRequestIntoTemplate_desiredValue,
+    putServiceQuotaIncreaseRequestIntoTemplateResponse_serviceQuotaIncreaseRequestInTemplate,
+    putServiceQuotaIncreaseRequestIntoTemplateResponse_httpStatus,
+
+    -- ** RequestServiceQuotaIncrease
+    requestServiceQuotaIncrease_serviceCode,
+    requestServiceQuotaIncrease_quotaCode,
+    requestServiceQuotaIncrease_desiredValue,
+    requestServiceQuotaIncreaseResponse_requestedQuota,
+    requestServiceQuotaIncreaseResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceARN,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- * Types
+
+    -- ** ErrorReason
+    errorReason_errorCode,
+    errorReason_errorMessage,
+
+    -- ** MetricInfo
+    metricInfo_metricDimensions,
+    metricInfo_metricName,
+    metricInfo_metricNamespace,
+    metricInfo_metricStatisticRecommendation,
+
+    -- ** QuotaPeriod
+    quotaPeriod_periodUnit,
+    quotaPeriod_periodValue,
+
+    -- ** RequestedServiceQuotaChange
+    requestedServiceQuotaChange_caseId,
+    requestedServiceQuotaChange_created,
+    requestedServiceQuotaChange_desiredValue,
+    requestedServiceQuotaChange_globalQuota,
+    requestedServiceQuotaChange_id,
+    requestedServiceQuotaChange_lastUpdated,
+    requestedServiceQuotaChange_quotaArn,
+    requestedServiceQuotaChange_quotaCode,
+    requestedServiceQuotaChange_quotaName,
+    requestedServiceQuotaChange_requester,
+    requestedServiceQuotaChange_serviceCode,
+    requestedServiceQuotaChange_serviceName,
+    requestedServiceQuotaChange_status,
+    requestedServiceQuotaChange_unit,
+
+    -- ** ServiceInfo
+    serviceInfo_serviceCode,
+    serviceInfo_serviceName,
+
+    -- ** ServiceQuota
+    serviceQuota_adjustable,
+    serviceQuota_errorReason,
+    serviceQuota_globalQuota,
+    serviceQuota_period,
+    serviceQuota_quotaArn,
+    serviceQuota_quotaCode,
+    serviceQuota_quotaName,
+    serviceQuota_serviceCode,
+    serviceQuota_serviceName,
+    serviceQuota_unit,
+    serviceQuota_usageMetric,
+    serviceQuota_value,
+
+    -- ** ServiceQuotaIncreaseRequestInTemplate
+    serviceQuotaIncreaseRequestInTemplate_awsRegion,
+    serviceQuotaIncreaseRequestInTemplate_desiredValue,
+    serviceQuotaIncreaseRequestInTemplate_globalQuota,
+    serviceQuotaIncreaseRequestInTemplate_quotaCode,
+    serviceQuotaIncreaseRequestInTemplate_quotaName,
+    serviceQuotaIncreaseRequestInTemplate_serviceCode,
+    serviceQuotaIncreaseRequestInTemplate_serviceName,
+    serviceQuotaIncreaseRequestInTemplate_unit,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+  )
+where
+
+import Amazonka.ServiceQuotas.AssociateServiceQuotaTemplate
+import Amazonka.ServiceQuotas.DeleteServiceQuotaIncreaseRequestFromTemplate
+import Amazonka.ServiceQuotas.DisassociateServiceQuotaTemplate
+import Amazonka.ServiceQuotas.GetAWSDefaultServiceQuota
+import Amazonka.ServiceQuotas.GetAssociationForServiceQuotaTemplate
+import Amazonka.ServiceQuotas.GetRequestedServiceQuotaChange
+import Amazonka.ServiceQuotas.GetServiceQuota
+import Amazonka.ServiceQuotas.GetServiceQuotaIncreaseRequestFromTemplate
+import Amazonka.ServiceQuotas.ListAWSDefaultServiceQuotas
+import Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistory
+import Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistoryByQuota
+import Amazonka.ServiceQuotas.ListServiceQuotaIncreaseRequestsInTemplate
+import Amazonka.ServiceQuotas.ListServiceQuotas
+import Amazonka.ServiceQuotas.ListServices
+import Amazonka.ServiceQuotas.ListTagsForResource
+import Amazonka.ServiceQuotas.PutServiceQuotaIncreaseRequestIntoTemplate
+import Amazonka.ServiceQuotas.RequestServiceQuotaIncrease
+import Amazonka.ServiceQuotas.TagResource
+import Amazonka.ServiceQuotas.Types.ErrorReason
+import Amazonka.ServiceQuotas.Types.MetricInfo
+import Amazonka.ServiceQuotas.Types.QuotaPeriod
+import Amazonka.ServiceQuotas.Types.RequestedServiceQuotaChange
+import Amazonka.ServiceQuotas.Types.ServiceInfo
+import Amazonka.ServiceQuotas.Types.ServiceQuota
+import Amazonka.ServiceQuotas.Types.ServiceQuotaIncreaseRequestInTemplate
+import Amazonka.ServiceQuotas.Types.Tag
+import Amazonka.ServiceQuotas.UntagResource
diff --git a/gen/Amazonka/ServiceQuotas/ListAWSDefaultServiceQuotas.hs b/gen/Amazonka/ServiceQuotas/ListAWSDefaultServiceQuotas.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/ListAWSDefaultServiceQuotas.hs
@@ -0,0 +1,249 @@
+{-# 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.ServiceQuotas.ListAWSDefaultServiceQuotas
+-- 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 default values for the quotas for the specified AWS service. A
+-- default value does not reflect any quota increases.
+--
+-- This operation returns paginated results.
+module Amazonka.ServiceQuotas.ListAWSDefaultServiceQuotas
+  ( -- * Creating a Request
+    ListAWSDefaultServiceQuotas (..),
+    newListAWSDefaultServiceQuotas,
+
+    -- * Request Lenses
+    listAWSDefaultServiceQuotas_maxResults,
+    listAWSDefaultServiceQuotas_nextToken,
+    listAWSDefaultServiceQuotas_serviceCode,
+
+    -- * Destructuring the Response
+    ListAWSDefaultServiceQuotasResponse (..),
+    newListAWSDefaultServiceQuotasResponse,
+
+    -- * Response Lenses
+    listAWSDefaultServiceQuotasResponse_nextToken,
+    listAWSDefaultServiceQuotasResponse_quotas,
+    listAWSDefaultServiceQuotasResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newListAWSDefaultServiceQuotas' smart constructor.
+data ListAWSDefaultServiceQuotas = ListAWSDefaultServiceQuotas'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, if any, make another call with the token returned
+    -- from this call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The service identifier.
+    serviceCode :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAWSDefaultServiceQuotas' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listAWSDefaultServiceQuotas_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+--
+-- 'nextToken', 'listAWSDefaultServiceQuotas_nextToken' - The token for the next page of results.
+--
+-- 'serviceCode', 'listAWSDefaultServiceQuotas_serviceCode' - The service identifier.
+newListAWSDefaultServiceQuotas ::
+  -- | 'serviceCode'
+  Prelude.Text ->
+  ListAWSDefaultServiceQuotas
+newListAWSDefaultServiceQuotas pServiceCode_ =
+  ListAWSDefaultServiceQuotas'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      serviceCode = pServiceCode_
+    }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+listAWSDefaultServiceQuotas_maxResults :: Lens.Lens' ListAWSDefaultServiceQuotas (Prelude.Maybe Prelude.Natural)
+listAWSDefaultServiceQuotas_maxResults = Lens.lens (\ListAWSDefaultServiceQuotas' {maxResults} -> maxResults) (\s@ListAWSDefaultServiceQuotas' {} a -> s {maxResults = a} :: ListAWSDefaultServiceQuotas)
+
+-- | The token for the next page of results.
+listAWSDefaultServiceQuotas_nextToken :: Lens.Lens' ListAWSDefaultServiceQuotas (Prelude.Maybe Prelude.Text)
+listAWSDefaultServiceQuotas_nextToken = Lens.lens (\ListAWSDefaultServiceQuotas' {nextToken} -> nextToken) (\s@ListAWSDefaultServiceQuotas' {} a -> s {nextToken = a} :: ListAWSDefaultServiceQuotas)
+
+-- | The service identifier.
+listAWSDefaultServiceQuotas_serviceCode :: Lens.Lens' ListAWSDefaultServiceQuotas Prelude.Text
+listAWSDefaultServiceQuotas_serviceCode = Lens.lens (\ListAWSDefaultServiceQuotas' {serviceCode} -> serviceCode) (\s@ListAWSDefaultServiceQuotas' {} a -> s {serviceCode = a} :: ListAWSDefaultServiceQuotas)
+
+instance Core.AWSPager ListAWSDefaultServiceQuotas where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listAWSDefaultServiceQuotasResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listAWSDefaultServiceQuotasResponse_quotas
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listAWSDefaultServiceQuotas_nextToken
+          Lens..~ rs
+          Lens.^? listAWSDefaultServiceQuotasResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListAWSDefaultServiceQuotas where
+  type
+    AWSResponse ListAWSDefaultServiceQuotas =
+      ListAWSDefaultServiceQuotasResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListAWSDefaultServiceQuotasResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Quotas" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListAWSDefaultServiceQuotas where
+  hashWithSalt _salt ListAWSDefaultServiceQuotas' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` serviceCode
+
+instance Prelude.NFData ListAWSDefaultServiceQuotas where
+  rnf ListAWSDefaultServiceQuotas' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf serviceCode
+
+instance Data.ToHeaders ListAWSDefaultServiceQuotas where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.ListAWSDefaultServiceQuotas" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListAWSDefaultServiceQuotas where
+  toJSON ListAWSDefaultServiceQuotas' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("ServiceCode" Data..= serviceCode)
+          ]
+      )
+
+instance Data.ToPath ListAWSDefaultServiceQuotas where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListAWSDefaultServiceQuotas where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListAWSDefaultServiceQuotasResponse' smart constructor.
+data ListAWSDefaultServiceQuotasResponse = ListAWSDefaultServiceQuotasResponse'
+  { -- | The token to use to retrieve the next page of results. This value is
+    -- null when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the quotas.
+    quotas :: Prelude.Maybe [ServiceQuota],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListAWSDefaultServiceQuotasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAWSDefaultServiceQuotasResponse_nextToken' - The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+--
+-- 'quotas', 'listAWSDefaultServiceQuotasResponse_quotas' - Information about the quotas.
+--
+-- 'httpStatus', 'listAWSDefaultServiceQuotasResponse_httpStatus' - The response's http status code.
+newListAWSDefaultServiceQuotasResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListAWSDefaultServiceQuotasResponse
+newListAWSDefaultServiceQuotasResponse pHttpStatus_ =
+  ListAWSDefaultServiceQuotasResponse'
+    { nextToken =
+        Prelude.Nothing,
+      quotas = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+listAWSDefaultServiceQuotasResponse_nextToken :: Lens.Lens' ListAWSDefaultServiceQuotasResponse (Prelude.Maybe Prelude.Text)
+listAWSDefaultServiceQuotasResponse_nextToken = Lens.lens (\ListAWSDefaultServiceQuotasResponse' {nextToken} -> nextToken) (\s@ListAWSDefaultServiceQuotasResponse' {} a -> s {nextToken = a} :: ListAWSDefaultServiceQuotasResponse)
+
+-- | Information about the quotas.
+listAWSDefaultServiceQuotasResponse_quotas :: Lens.Lens' ListAWSDefaultServiceQuotasResponse (Prelude.Maybe [ServiceQuota])
+listAWSDefaultServiceQuotasResponse_quotas = Lens.lens (\ListAWSDefaultServiceQuotasResponse' {quotas} -> quotas) (\s@ListAWSDefaultServiceQuotasResponse' {} a -> s {quotas = a} :: ListAWSDefaultServiceQuotasResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listAWSDefaultServiceQuotasResponse_httpStatus :: Lens.Lens' ListAWSDefaultServiceQuotasResponse Prelude.Int
+listAWSDefaultServiceQuotasResponse_httpStatus = Lens.lens (\ListAWSDefaultServiceQuotasResponse' {httpStatus} -> httpStatus) (\s@ListAWSDefaultServiceQuotasResponse' {} a -> s {httpStatus = a} :: ListAWSDefaultServiceQuotasResponse)
+
+instance
+  Prelude.NFData
+    ListAWSDefaultServiceQuotasResponse
+  where
+  rnf ListAWSDefaultServiceQuotasResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf quotas
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/ListRequestedServiceQuotaChangeHistory.hs b/gen/Amazonka/ServiceQuotas/ListRequestedServiceQuotaChangeHistory.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/ListRequestedServiceQuotaChangeHistory.hs
@@ -0,0 +1,292 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistory
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the quota increase requests for the specified service.
+--
+-- This operation returns paginated results.
+module Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistory
+  ( -- * Creating a Request
+    ListRequestedServiceQuotaChangeHistory (..),
+    newListRequestedServiceQuotaChangeHistory,
+
+    -- * Request Lenses
+    listRequestedServiceQuotaChangeHistory_maxResults,
+    listRequestedServiceQuotaChangeHistory_nextToken,
+    listRequestedServiceQuotaChangeHistory_serviceCode,
+    listRequestedServiceQuotaChangeHistory_status,
+
+    -- * Destructuring the Response
+    ListRequestedServiceQuotaChangeHistoryResponse (..),
+    newListRequestedServiceQuotaChangeHistoryResponse,
+
+    -- * Response Lenses
+    listRequestedServiceQuotaChangeHistoryResponse_nextToken,
+    listRequestedServiceQuotaChangeHistoryResponse_requestedQuotas,
+    listRequestedServiceQuotaChangeHistoryResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newListRequestedServiceQuotaChangeHistory' smart constructor.
+data ListRequestedServiceQuotaChangeHistory = ListRequestedServiceQuotaChangeHistory'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, if any, make another call with the token returned
+    -- from this call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The service identifier.
+    serviceCode :: Prelude.Maybe Prelude.Text,
+    -- | The status of the quota increase request.
+    status :: Prelude.Maybe RequestStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRequestedServiceQuotaChangeHistory' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listRequestedServiceQuotaChangeHistory_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+--
+-- 'nextToken', 'listRequestedServiceQuotaChangeHistory_nextToken' - The token for the next page of results.
+--
+-- 'serviceCode', 'listRequestedServiceQuotaChangeHistory_serviceCode' - The service identifier.
+--
+-- 'status', 'listRequestedServiceQuotaChangeHistory_status' - The status of the quota increase request.
+newListRequestedServiceQuotaChangeHistory ::
+  ListRequestedServiceQuotaChangeHistory
+newListRequestedServiceQuotaChangeHistory =
+  ListRequestedServiceQuotaChangeHistory'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      serviceCode = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+listRequestedServiceQuotaChangeHistory_maxResults :: Lens.Lens' ListRequestedServiceQuotaChangeHistory (Prelude.Maybe Prelude.Natural)
+listRequestedServiceQuotaChangeHistory_maxResults = Lens.lens (\ListRequestedServiceQuotaChangeHistory' {maxResults} -> maxResults) (\s@ListRequestedServiceQuotaChangeHistory' {} a -> s {maxResults = a} :: ListRequestedServiceQuotaChangeHistory)
+
+-- | The token for the next page of results.
+listRequestedServiceQuotaChangeHistory_nextToken :: Lens.Lens' ListRequestedServiceQuotaChangeHistory (Prelude.Maybe Prelude.Text)
+listRequestedServiceQuotaChangeHistory_nextToken = Lens.lens (\ListRequestedServiceQuotaChangeHistory' {nextToken} -> nextToken) (\s@ListRequestedServiceQuotaChangeHistory' {} a -> s {nextToken = a} :: ListRequestedServiceQuotaChangeHistory)
+
+-- | The service identifier.
+listRequestedServiceQuotaChangeHistory_serviceCode :: Lens.Lens' ListRequestedServiceQuotaChangeHistory (Prelude.Maybe Prelude.Text)
+listRequestedServiceQuotaChangeHistory_serviceCode = Lens.lens (\ListRequestedServiceQuotaChangeHistory' {serviceCode} -> serviceCode) (\s@ListRequestedServiceQuotaChangeHistory' {} a -> s {serviceCode = a} :: ListRequestedServiceQuotaChangeHistory)
+
+-- | The status of the quota increase request.
+listRequestedServiceQuotaChangeHistory_status :: Lens.Lens' ListRequestedServiceQuotaChangeHistory (Prelude.Maybe RequestStatus)
+listRequestedServiceQuotaChangeHistory_status = Lens.lens (\ListRequestedServiceQuotaChangeHistory' {status} -> status) (\s@ListRequestedServiceQuotaChangeHistory' {} a -> s {status = a} :: ListRequestedServiceQuotaChangeHistory)
+
+instance
+  Core.AWSPager
+    ListRequestedServiceQuotaChangeHistory
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listRequestedServiceQuotaChangeHistoryResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listRequestedServiceQuotaChangeHistoryResponse_requestedQuotas
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listRequestedServiceQuotaChangeHistory_nextToken
+          Lens..~ rs
+          Lens.^? listRequestedServiceQuotaChangeHistoryResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListRequestedServiceQuotaChangeHistory
+  where
+  type
+    AWSResponse
+      ListRequestedServiceQuotaChangeHistory =
+      ListRequestedServiceQuotaChangeHistoryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRequestedServiceQuotaChangeHistoryResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "RequestedQuotas"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListRequestedServiceQuotaChangeHistory
+  where
+  hashWithSalt
+    _salt
+    ListRequestedServiceQuotaChangeHistory' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` serviceCode
+        `Prelude.hashWithSalt` status
+
+instance
+  Prelude.NFData
+    ListRequestedServiceQuotaChangeHistory
+  where
+  rnf ListRequestedServiceQuotaChangeHistory' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf status
+
+instance
+  Data.ToHeaders
+    ListRequestedServiceQuotaChangeHistory
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.ListRequestedServiceQuotaChangeHistory" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListRequestedServiceQuotaChangeHistory
+  where
+  toJSON ListRequestedServiceQuotaChangeHistory' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("ServiceCode" Data..=) Prelude.<$> serviceCode,
+            ("Status" Data..=) Prelude.<$> status
+          ]
+      )
+
+instance
+  Data.ToPath
+    ListRequestedServiceQuotaChangeHistory
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListRequestedServiceQuotaChangeHistory
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListRequestedServiceQuotaChangeHistoryResponse' smart constructor.
+data ListRequestedServiceQuotaChangeHistoryResponse = ListRequestedServiceQuotaChangeHistoryResponse'
+  { -- | The token to use to retrieve the next page of results. This value is
+    -- null when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the quota increase requests.
+    requestedQuotas :: Prelude.Maybe [RequestedServiceQuotaChange],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRequestedServiceQuotaChangeHistoryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRequestedServiceQuotaChangeHistoryResponse_nextToken' - The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+--
+-- 'requestedQuotas', 'listRequestedServiceQuotaChangeHistoryResponse_requestedQuotas' - Information about the quota increase requests.
+--
+-- 'httpStatus', 'listRequestedServiceQuotaChangeHistoryResponse_httpStatus' - The response's http status code.
+newListRequestedServiceQuotaChangeHistoryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRequestedServiceQuotaChangeHistoryResponse
+newListRequestedServiceQuotaChangeHistoryResponse
+  pHttpStatus_ =
+    ListRequestedServiceQuotaChangeHistoryResponse'
+      { nextToken =
+          Prelude.Nothing,
+        requestedQuotas =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+listRequestedServiceQuotaChangeHistoryResponse_nextToken :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryResponse (Prelude.Maybe Prelude.Text)
+listRequestedServiceQuotaChangeHistoryResponse_nextToken = Lens.lens (\ListRequestedServiceQuotaChangeHistoryResponse' {nextToken} -> nextToken) (\s@ListRequestedServiceQuotaChangeHistoryResponse' {} a -> s {nextToken = a} :: ListRequestedServiceQuotaChangeHistoryResponse)
+
+-- | Information about the quota increase requests.
+listRequestedServiceQuotaChangeHistoryResponse_requestedQuotas :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryResponse (Prelude.Maybe [RequestedServiceQuotaChange])
+listRequestedServiceQuotaChangeHistoryResponse_requestedQuotas = Lens.lens (\ListRequestedServiceQuotaChangeHistoryResponse' {requestedQuotas} -> requestedQuotas) (\s@ListRequestedServiceQuotaChangeHistoryResponse' {} a -> s {requestedQuotas = a} :: ListRequestedServiceQuotaChangeHistoryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRequestedServiceQuotaChangeHistoryResponse_httpStatus :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryResponse Prelude.Int
+listRequestedServiceQuotaChangeHistoryResponse_httpStatus = Lens.lens (\ListRequestedServiceQuotaChangeHistoryResponse' {httpStatus} -> httpStatus) (\s@ListRequestedServiceQuotaChangeHistoryResponse' {} a -> s {httpStatus = a} :: ListRequestedServiceQuotaChangeHistoryResponse)
+
+instance
+  Prelude.NFData
+    ListRequestedServiceQuotaChangeHistoryResponse
+  where
+  rnf
+    ListRequestedServiceQuotaChangeHistoryResponse' {..} =
+      Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf requestedQuotas
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/ListRequestedServiceQuotaChangeHistoryByQuota.hs b/gen/Amazonka/ServiceQuotas/ListRequestedServiceQuotaChangeHistoryByQuota.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/ListRequestedServiceQuotaChangeHistoryByQuota.hs
@@ -0,0 +1,314 @@
+{-# 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.ServiceQuotas.ListRequestedServiceQuotaChangeHistoryByQuota
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the quota increase requests for the specified quota.
+--
+-- This operation returns paginated results.
+module Amazonka.ServiceQuotas.ListRequestedServiceQuotaChangeHistoryByQuota
+  ( -- * Creating a Request
+    ListRequestedServiceQuotaChangeHistoryByQuota (..),
+    newListRequestedServiceQuotaChangeHistoryByQuota,
+
+    -- * Request Lenses
+    listRequestedServiceQuotaChangeHistoryByQuota_maxResults,
+    listRequestedServiceQuotaChangeHistoryByQuota_nextToken,
+    listRequestedServiceQuotaChangeHistoryByQuota_status,
+    listRequestedServiceQuotaChangeHistoryByQuota_serviceCode,
+    listRequestedServiceQuotaChangeHistoryByQuota_quotaCode,
+
+    -- * Destructuring the Response
+    ListRequestedServiceQuotaChangeHistoryByQuotaResponse (..),
+    newListRequestedServiceQuotaChangeHistoryByQuotaResponse,
+
+    -- * Response Lenses
+    listRequestedServiceQuotaChangeHistoryByQuotaResponse_nextToken,
+    listRequestedServiceQuotaChangeHistoryByQuotaResponse_requestedQuotas,
+    listRequestedServiceQuotaChangeHistoryByQuotaResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newListRequestedServiceQuotaChangeHistoryByQuota' smart constructor.
+data ListRequestedServiceQuotaChangeHistoryByQuota = ListRequestedServiceQuotaChangeHistoryByQuota'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, if any, make another call with the token returned
+    -- from this call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The status value of the quota increase request.
+    status :: Prelude.Maybe RequestStatus,
+    -- | The service identifier.
+    serviceCode :: Prelude.Text,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRequestedServiceQuotaChangeHistoryByQuota' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listRequestedServiceQuotaChangeHistoryByQuota_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+--
+-- 'nextToken', 'listRequestedServiceQuotaChangeHistoryByQuota_nextToken' - The token for the next page of results.
+--
+-- 'status', 'listRequestedServiceQuotaChangeHistoryByQuota_status' - The status value of the quota increase request.
+--
+-- 'serviceCode', 'listRequestedServiceQuotaChangeHistoryByQuota_serviceCode' - The service identifier.
+--
+-- 'quotaCode', 'listRequestedServiceQuotaChangeHistoryByQuota_quotaCode' - The quota identifier.
+newListRequestedServiceQuotaChangeHistoryByQuota ::
+  -- | 'serviceCode'
+  Prelude.Text ->
+  -- | 'quotaCode'
+  Prelude.Text ->
+  ListRequestedServiceQuotaChangeHistoryByQuota
+newListRequestedServiceQuotaChangeHistoryByQuota
+  pServiceCode_
+  pQuotaCode_ =
+    ListRequestedServiceQuotaChangeHistoryByQuota'
+      { maxResults =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        status = Prelude.Nothing,
+        serviceCode = pServiceCode_,
+        quotaCode = pQuotaCode_
+      }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+listRequestedServiceQuotaChangeHistoryByQuota_maxResults :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryByQuota (Prelude.Maybe Prelude.Natural)
+listRequestedServiceQuotaChangeHistoryByQuota_maxResults = Lens.lens (\ListRequestedServiceQuotaChangeHistoryByQuota' {maxResults} -> maxResults) (\s@ListRequestedServiceQuotaChangeHistoryByQuota' {} a -> s {maxResults = a} :: ListRequestedServiceQuotaChangeHistoryByQuota)
+
+-- | The token for the next page of results.
+listRequestedServiceQuotaChangeHistoryByQuota_nextToken :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryByQuota (Prelude.Maybe Prelude.Text)
+listRequestedServiceQuotaChangeHistoryByQuota_nextToken = Lens.lens (\ListRequestedServiceQuotaChangeHistoryByQuota' {nextToken} -> nextToken) (\s@ListRequestedServiceQuotaChangeHistoryByQuota' {} a -> s {nextToken = a} :: ListRequestedServiceQuotaChangeHistoryByQuota)
+
+-- | The status value of the quota increase request.
+listRequestedServiceQuotaChangeHistoryByQuota_status :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryByQuota (Prelude.Maybe RequestStatus)
+listRequestedServiceQuotaChangeHistoryByQuota_status = Lens.lens (\ListRequestedServiceQuotaChangeHistoryByQuota' {status} -> status) (\s@ListRequestedServiceQuotaChangeHistoryByQuota' {} a -> s {status = a} :: ListRequestedServiceQuotaChangeHistoryByQuota)
+
+-- | The service identifier.
+listRequestedServiceQuotaChangeHistoryByQuota_serviceCode :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryByQuota Prelude.Text
+listRequestedServiceQuotaChangeHistoryByQuota_serviceCode = Lens.lens (\ListRequestedServiceQuotaChangeHistoryByQuota' {serviceCode} -> serviceCode) (\s@ListRequestedServiceQuotaChangeHistoryByQuota' {} a -> s {serviceCode = a} :: ListRequestedServiceQuotaChangeHistoryByQuota)
+
+-- | The quota identifier.
+listRequestedServiceQuotaChangeHistoryByQuota_quotaCode :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryByQuota Prelude.Text
+listRequestedServiceQuotaChangeHistoryByQuota_quotaCode = Lens.lens (\ListRequestedServiceQuotaChangeHistoryByQuota' {quotaCode} -> quotaCode) (\s@ListRequestedServiceQuotaChangeHistoryByQuota' {} a -> s {quotaCode = a} :: ListRequestedServiceQuotaChangeHistoryByQuota)
+
+instance
+  Core.AWSPager
+    ListRequestedServiceQuotaChangeHistoryByQuota
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listRequestedServiceQuotaChangeHistoryByQuotaResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listRequestedServiceQuotaChangeHistoryByQuotaResponse_requestedQuotas
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listRequestedServiceQuotaChangeHistoryByQuota_nextToken
+          Lens..~ rs
+          Lens.^? listRequestedServiceQuotaChangeHistoryByQuotaResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListRequestedServiceQuotaChangeHistoryByQuota
+  where
+  type
+    AWSResponse
+      ListRequestedServiceQuotaChangeHistoryByQuota =
+      ListRequestedServiceQuotaChangeHistoryByQuotaResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRequestedServiceQuotaChangeHistoryByQuotaResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "RequestedQuotas"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListRequestedServiceQuotaChangeHistoryByQuota
+  where
+  hashWithSalt
+    _salt
+    ListRequestedServiceQuotaChangeHistoryByQuota' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` status
+        `Prelude.hashWithSalt` serviceCode
+        `Prelude.hashWithSalt` quotaCode
+
+instance
+  Prelude.NFData
+    ListRequestedServiceQuotaChangeHistoryByQuota
+  where
+  rnf
+    ListRequestedServiceQuotaChangeHistoryByQuota' {..} =
+      Prelude.rnf maxResults
+        `Prelude.seq` Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf status
+        `Prelude.seq` Prelude.rnf serviceCode
+        `Prelude.seq` Prelude.rnf quotaCode
+
+instance
+  Data.ToHeaders
+    ListRequestedServiceQuotaChangeHistoryByQuota
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.ListRequestedServiceQuotaChangeHistoryByQuota" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListRequestedServiceQuotaChangeHistoryByQuota
+  where
+  toJSON
+    ListRequestedServiceQuotaChangeHistoryByQuota' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+              ("NextToken" Data..=) Prelude.<$> nextToken,
+              ("Status" Data..=) Prelude.<$> status,
+              Prelude.Just ("ServiceCode" Data..= serviceCode),
+              Prelude.Just ("QuotaCode" Data..= quotaCode)
+            ]
+        )
+
+instance
+  Data.ToPath
+    ListRequestedServiceQuotaChangeHistoryByQuota
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListRequestedServiceQuotaChangeHistoryByQuota
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListRequestedServiceQuotaChangeHistoryByQuotaResponse' smart constructor.
+data ListRequestedServiceQuotaChangeHistoryByQuotaResponse = ListRequestedServiceQuotaChangeHistoryByQuotaResponse'
+  { -- | The token to use to retrieve the next page of results. This value is
+    -- null when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the quota increase requests.
+    requestedQuotas :: Prelude.Maybe [RequestedServiceQuotaChange],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRequestedServiceQuotaChangeHistoryByQuotaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRequestedServiceQuotaChangeHistoryByQuotaResponse_nextToken' - The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+--
+-- 'requestedQuotas', 'listRequestedServiceQuotaChangeHistoryByQuotaResponse_requestedQuotas' - Information about the quota increase requests.
+--
+-- 'httpStatus', 'listRequestedServiceQuotaChangeHistoryByQuotaResponse_httpStatus' - The response's http status code.
+newListRequestedServiceQuotaChangeHistoryByQuotaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRequestedServiceQuotaChangeHistoryByQuotaResponse
+newListRequestedServiceQuotaChangeHistoryByQuotaResponse
+  pHttpStatus_ =
+    ListRequestedServiceQuotaChangeHistoryByQuotaResponse'
+      { nextToken =
+          Prelude.Nothing,
+        requestedQuotas =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+listRequestedServiceQuotaChangeHistoryByQuotaResponse_nextToken :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryByQuotaResponse (Prelude.Maybe Prelude.Text)
+listRequestedServiceQuotaChangeHistoryByQuotaResponse_nextToken = Lens.lens (\ListRequestedServiceQuotaChangeHistoryByQuotaResponse' {nextToken} -> nextToken) (\s@ListRequestedServiceQuotaChangeHistoryByQuotaResponse' {} a -> s {nextToken = a} :: ListRequestedServiceQuotaChangeHistoryByQuotaResponse)
+
+-- | Information about the quota increase requests.
+listRequestedServiceQuotaChangeHistoryByQuotaResponse_requestedQuotas :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryByQuotaResponse (Prelude.Maybe [RequestedServiceQuotaChange])
+listRequestedServiceQuotaChangeHistoryByQuotaResponse_requestedQuotas = Lens.lens (\ListRequestedServiceQuotaChangeHistoryByQuotaResponse' {requestedQuotas} -> requestedQuotas) (\s@ListRequestedServiceQuotaChangeHistoryByQuotaResponse' {} a -> s {requestedQuotas = a} :: ListRequestedServiceQuotaChangeHistoryByQuotaResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRequestedServiceQuotaChangeHistoryByQuotaResponse_httpStatus :: Lens.Lens' ListRequestedServiceQuotaChangeHistoryByQuotaResponse Prelude.Int
+listRequestedServiceQuotaChangeHistoryByQuotaResponse_httpStatus = Lens.lens (\ListRequestedServiceQuotaChangeHistoryByQuotaResponse' {httpStatus} -> httpStatus) (\s@ListRequestedServiceQuotaChangeHistoryByQuotaResponse' {} a -> s {httpStatus = a} :: ListRequestedServiceQuotaChangeHistoryByQuotaResponse)
+
+instance
+  Prelude.NFData
+    ListRequestedServiceQuotaChangeHistoryByQuotaResponse
+  where
+  rnf
+    ListRequestedServiceQuotaChangeHistoryByQuotaResponse' {..} =
+      Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf requestedQuotas
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/ListServiceQuotaIncreaseRequestsInTemplate.hs b/gen/Amazonka/ServiceQuotas/ListServiceQuotaIncreaseRequestsInTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/ListServiceQuotaIncreaseRequestsInTemplate.hs
@@ -0,0 +1,295 @@
+{-# 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.ServiceQuotas.ListServiceQuotaIncreaseRequestsInTemplate
+-- 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 quota increase requests in the specified quota request
+-- template.
+--
+-- This operation returns paginated results.
+module Amazonka.ServiceQuotas.ListServiceQuotaIncreaseRequestsInTemplate
+  ( -- * Creating a Request
+    ListServiceQuotaIncreaseRequestsInTemplate (..),
+    newListServiceQuotaIncreaseRequestsInTemplate,
+
+    -- * Request Lenses
+    listServiceQuotaIncreaseRequestsInTemplate_awsRegion,
+    listServiceQuotaIncreaseRequestsInTemplate_maxResults,
+    listServiceQuotaIncreaseRequestsInTemplate_nextToken,
+    listServiceQuotaIncreaseRequestsInTemplate_serviceCode,
+
+    -- * Destructuring the Response
+    ListServiceQuotaIncreaseRequestsInTemplateResponse (..),
+    newListServiceQuotaIncreaseRequestsInTemplateResponse,
+
+    -- * Response Lenses
+    listServiceQuotaIncreaseRequestsInTemplateResponse_nextToken,
+    listServiceQuotaIncreaseRequestsInTemplateResponse_serviceQuotaIncreaseRequestInTemplateList,
+    listServiceQuotaIncreaseRequestsInTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newListServiceQuotaIncreaseRequestsInTemplate' smart constructor.
+data ListServiceQuotaIncreaseRequestsInTemplate = ListServiceQuotaIncreaseRequestsInTemplate'
+  { -- | The AWS Region.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, if any, make another call with the token returned
+    -- from this call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The service identifier.
+    serviceCode :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServiceQuotaIncreaseRequestsInTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsRegion', 'listServiceQuotaIncreaseRequestsInTemplate_awsRegion' - The AWS Region.
+--
+-- 'maxResults', 'listServiceQuotaIncreaseRequestsInTemplate_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+--
+-- 'nextToken', 'listServiceQuotaIncreaseRequestsInTemplate_nextToken' - The token for the next page of results.
+--
+-- 'serviceCode', 'listServiceQuotaIncreaseRequestsInTemplate_serviceCode' - The service identifier.
+newListServiceQuotaIncreaseRequestsInTemplate ::
+  ListServiceQuotaIncreaseRequestsInTemplate
+newListServiceQuotaIncreaseRequestsInTemplate =
+  ListServiceQuotaIncreaseRequestsInTemplate'
+    { awsRegion =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      serviceCode = Prelude.Nothing
+    }
+
+-- | The AWS Region.
+listServiceQuotaIncreaseRequestsInTemplate_awsRegion :: Lens.Lens' ListServiceQuotaIncreaseRequestsInTemplate (Prelude.Maybe Prelude.Text)
+listServiceQuotaIncreaseRequestsInTemplate_awsRegion = Lens.lens (\ListServiceQuotaIncreaseRequestsInTemplate' {awsRegion} -> awsRegion) (\s@ListServiceQuotaIncreaseRequestsInTemplate' {} a -> s {awsRegion = a} :: ListServiceQuotaIncreaseRequestsInTemplate)
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+listServiceQuotaIncreaseRequestsInTemplate_maxResults :: Lens.Lens' ListServiceQuotaIncreaseRequestsInTemplate (Prelude.Maybe Prelude.Natural)
+listServiceQuotaIncreaseRequestsInTemplate_maxResults = Lens.lens (\ListServiceQuotaIncreaseRequestsInTemplate' {maxResults} -> maxResults) (\s@ListServiceQuotaIncreaseRequestsInTemplate' {} a -> s {maxResults = a} :: ListServiceQuotaIncreaseRequestsInTemplate)
+
+-- | The token for the next page of results.
+listServiceQuotaIncreaseRequestsInTemplate_nextToken :: Lens.Lens' ListServiceQuotaIncreaseRequestsInTemplate (Prelude.Maybe Prelude.Text)
+listServiceQuotaIncreaseRequestsInTemplate_nextToken = Lens.lens (\ListServiceQuotaIncreaseRequestsInTemplate' {nextToken} -> nextToken) (\s@ListServiceQuotaIncreaseRequestsInTemplate' {} a -> s {nextToken = a} :: ListServiceQuotaIncreaseRequestsInTemplate)
+
+-- | The service identifier.
+listServiceQuotaIncreaseRequestsInTemplate_serviceCode :: Lens.Lens' ListServiceQuotaIncreaseRequestsInTemplate (Prelude.Maybe Prelude.Text)
+listServiceQuotaIncreaseRequestsInTemplate_serviceCode = Lens.lens (\ListServiceQuotaIncreaseRequestsInTemplate' {serviceCode} -> serviceCode) (\s@ListServiceQuotaIncreaseRequestsInTemplate' {} a -> s {serviceCode = a} :: ListServiceQuotaIncreaseRequestsInTemplate)
+
+instance
+  Core.AWSPager
+    ListServiceQuotaIncreaseRequestsInTemplate
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listServiceQuotaIncreaseRequestsInTemplateResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listServiceQuotaIncreaseRequestsInTemplateResponse_serviceQuotaIncreaseRequestInTemplateList
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listServiceQuotaIncreaseRequestsInTemplate_nextToken
+          Lens..~ rs
+          Lens.^? listServiceQuotaIncreaseRequestsInTemplateResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListServiceQuotaIncreaseRequestsInTemplate
+  where
+  type
+    AWSResponse
+      ListServiceQuotaIncreaseRequestsInTemplate =
+      ListServiceQuotaIncreaseRequestsInTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListServiceQuotaIncreaseRequestsInTemplateResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "ServiceQuotaIncreaseRequestInTemplateList"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListServiceQuotaIncreaseRequestsInTemplate
+  where
+  hashWithSalt
+    _salt
+    ListServiceQuotaIncreaseRequestsInTemplate' {..} =
+      _salt
+        `Prelude.hashWithSalt` awsRegion
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+        `Prelude.hashWithSalt` serviceCode
+
+instance
+  Prelude.NFData
+    ListServiceQuotaIncreaseRequestsInTemplate
+  where
+  rnf ListServiceQuotaIncreaseRequestsInTemplate' {..} =
+    Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf serviceCode
+
+instance
+  Data.ToHeaders
+    ListServiceQuotaIncreaseRequestsInTemplate
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.ListServiceQuotaIncreaseRequestsInTemplate" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    ListServiceQuotaIncreaseRequestsInTemplate
+  where
+  toJSON
+    ListServiceQuotaIncreaseRequestsInTemplate' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("AwsRegion" Data..=) Prelude.<$> awsRegion,
+              ("MaxResults" Data..=) Prelude.<$> maxResults,
+              ("NextToken" Data..=) Prelude.<$> nextToken,
+              ("ServiceCode" Data..=) Prelude.<$> serviceCode
+            ]
+        )
+
+instance
+  Data.ToPath
+    ListServiceQuotaIncreaseRequestsInTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListServiceQuotaIncreaseRequestsInTemplate
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListServiceQuotaIncreaseRequestsInTemplateResponse' smart constructor.
+data ListServiceQuotaIncreaseRequestsInTemplateResponse = ListServiceQuotaIncreaseRequestsInTemplateResponse'
+  { -- | The token to use to retrieve the next page of results. This value is
+    -- null when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the quota increase requests.
+    serviceQuotaIncreaseRequestInTemplateList :: Prelude.Maybe [ServiceQuotaIncreaseRequestInTemplate],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServiceQuotaIncreaseRequestsInTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listServiceQuotaIncreaseRequestsInTemplateResponse_nextToken' - The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+--
+-- 'serviceQuotaIncreaseRequestInTemplateList', 'listServiceQuotaIncreaseRequestsInTemplateResponse_serviceQuotaIncreaseRequestInTemplateList' - Information about the quota increase requests.
+--
+-- 'httpStatus', 'listServiceQuotaIncreaseRequestsInTemplateResponse_httpStatus' - The response's http status code.
+newListServiceQuotaIncreaseRequestsInTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListServiceQuotaIncreaseRequestsInTemplateResponse
+newListServiceQuotaIncreaseRequestsInTemplateResponse
+  pHttpStatus_ =
+    ListServiceQuotaIncreaseRequestsInTemplateResponse'
+      { nextToken =
+          Prelude.Nothing,
+        serviceQuotaIncreaseRequestInTemplateList =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+listServiceQuotaIncreaseRequestsInTemplateResponse_nextToken :: Lens.Lens' ListServiceQuotaIncreaseRequestsInTemplateResponse (Prelude.Maybe Prelude.Text)
+listServiceQuotaIncreaseRequestsInTemplateResponse_nextToken = Lens.lens (\ListServiceQuotaIncreaseRequestsInTemplateResponse' {nextToken} -> nextToken) (\s@ListServiceQuotaIncreaseRequestsInTemplateResponse' {} a -> s {nextToken = a} :: ListServiceQuotaIncreaseRequestsInTemplateResponse)
+
+-- | Information about the quota increase requests.
+listServiceQuotaIncreaseRequestsInTemplateResponse_serviceQuotaIncreaseRequestInTemplateList :: Lens.Lens' ListServiceQuotaIncreaseRequestsInTemplateResponse (Prelude.Maybe [ServiceQuotaIncreaseRequestInTemplate])
+listServiceQuotaIncreaseRequestsInTemplateResponse_serviceQuotaIncreaseRequestInTemplateList = Lens.lens (\ListServiceQuotaIncreaseRequestsInTemplateResponse' {serviceQuotaIncreaseRequestInTemplateList} -> serviceQuotaIncreaseRequestInTemplateList) (\s@ListServiceQuotaIncreaseRequestsInTemplateResponse' {} a -> s {serviceQuotaIncreaseRequestInTemplateList = a} :: ListServiceQuotaIncreaseRequestsInTemplateResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listServiceQuotaIncreaseRequestsInTemplateResponse_httpStatus :: Lens.Lens' ListServiceQuotaIncreaseRequestsInTemplateResponse Prelude.Int
+listServiceQuotaIncreaseRequestsInTemplateResponse_httpStatus = Lens.lens (\ListServiceQuotaIncreaseRequestsInTemplateResponse' {httpStatus} -> httpStatus) (\s@ListServiceQuotaIncreaseRequestsInTemplateResponse' {} a -> s {httpStatus = a} :: ListServiceQuotaIncreaseRequestsInTemplateResponse)
+
+instance
+  Prelude.NFData
+    ListServiceQuotaIncreaseRequestsInTemplateResponse
+  where
+  rnf
+    ListServiceQuotaIncreaseRequestsInTemplateResponse' {..} =
+      Prelude.rnf nextToken
+        `Prelude.seq` Prelude.rnf serviceQuotaIncreaseRequestInTemplateList
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/ListServiceQuotas.hs b/gen/Amazonka/ServiceQuotas/ListServiceQuotas.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/ListServiceQuotas.hs
@@ -0,0 +1,246 @@
+{-# 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.ServiceQuotas.ListServiceQuotas
+-- 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 applied quota values for the specified AWS service. For some
+-- quotas, only the default values are available. If the applied quota
+-- value is not available for a quota, the quota is not retrieved.
+--
+-- This operation returns paginated results.
+module Amazonka.ServiceQuotas.ListServiceQuotas
+  ( -- * Creating a Request
+    ListServiceQuotas (..),
+    newListServiceQuotas,
+
+    -- * Request Lenses
+    listServiceQuotas_maxResults,
+    listServiceQuotas_nextToken,
+    listServiceQuotas_serviceCode,
+
+    -- * Destructuring the Response
+    ListServiceQuotasResponse (..),
+    newListServiceQuotasResponse,
+
+    -- * Response Lenses
+    listServiceQuotasResponse_nextToken,
+    listServiceQuotasResponse_quotas,
+    listServiceQuotasResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newListServiceQuotas' smart constructor.
+data ListServiceQuotas = ListServiceQuotas'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, if any, make another call with the token returned
+    -- from this call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The service identifier.
+    serviceCode :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServiceQuotas' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listServiceQuotas_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+--
+-- 'nextToken', 'listServiceQuotas_nextToken' - The token for the next page of results.
+--
+-- 'serviceCode', 'listServiceQuotas_serviceCode' - The service identifier.
+newListServiceQuotas ::
+  -- | 'serviceCode'
+  Prelude.Text ->
+  ListServiceQuotas
+newListServiceQuotas pServiceCode_ =
+  ListServiceQuotas'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      serviceCode = pServiceCode_
+    }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+listServiceQuotas_maxResults :: Lens.Lens' ListServiceQuotas (Prelude.Maybe Prelude.Natural)
+listServiceQuotas_maxResults = Lens.lens (\ListServiceQuotas' {maxResults} -> maxResults) (\s@ListServiceQuotas' {} a -> s {maxResults = a} :: ListServiceQuotas)
+
+-- | The token for the next page of results.
+listServiceQuotas_nextToken :: Lens.Lens' ListServiceQuotas (Prelude.Maybe Prelude.Text)
+listServiceQuotas_nextToken = Lens.lens (\ListServiceQuotas' {nextToken} -> nextToken) (\s@ListServiceQuotas' {} a -> s {nextToken = a} :: ListServiceQuotas)
+
+-- | The service identifier.
+listServiceQuotas_serviceCode :: Lens.Lens' ListServiceQuotas Prelude.Text
+listServiceQuotas_serviceCode = Lens.lens (\ListServiceQuotas' {serviceCode} -> serviceCode) (\s@ListServiceQuotas' {} a -> s {serviceCode = a} :: ListServiceQuotas)
+
+instance Core.AWSPager ListServiceQuotas where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listServiceQuotasResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listServiceQuotasResponse_quotas
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listServiceQuotas_nextToken
+          Lens..~ rs
+          Lens.^? listServiceQuotasResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListServiceQuotas where
+  type
+    AWSResponse ListServiceQuotas =
+      ListServiceQuotasResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListServiceQuotasResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Quotas" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListServiceQuotas where
+  hashWithSalt _salt ListServiceQuotas' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` serviceCode
+
+instance Prelude.NFData ListServiceQuotas where
+  rnf ListServiceQuotas' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf serviceCode
+
+instance Data.ToHeaders ListServiceQuotas where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.ListServiceQuotas" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListServiceQuotas where
+  toJSON ListServiceQuotas' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            Prelude.Just ("ServiceCode" Data..= serviceCode)
+          ]
+      )
+
+instance Data.ToPath ListServiceQuotas where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListServiceQuotas where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListServiceQuotasResponse' smart constructor.
+data ListServiceQuotasResponse = ListServiceQuotasResponse'
+  { -- | The token to use to retrieve the next page of results. This value is
+    -- null when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the quotas.
+    quotas :: Prelude.Maybe [ServiceQuota],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServiceQuotasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listServiceQuotasResponse_nextToken' - The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+--
+-- 'quotas', 'listServiceQuotasResponse_quotas' - Information about the quotas.
+--
+-- 'httpStatus', 'listServiceQuotasResponse_httpStatus' - The response's http status code.
+newListServiceQuotasResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListServiceQuotasResponse
+newListServiceQuotasResponse pHttpStatus_ =
+  ListServiceQuotasResponse'
+    { nextToken =
+        Prelude.Nothing,
+      quotas = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+listServiceQuotasResponse_nextToken :: Lens.Lens' ListServiceQuotasResponse (Prelude.Maybe Prelude.Text)
+listServiceQuotasResponse_nextToken = Lens.lens (\ListServiceQuotasResponse' {nextToken} -> nextToken) (\s@ListServiceQuotasResponse' {} a -> s {nextToken = a} :: ListServiceQuotasResponse)
+
+-- | Information about the quotas.
+listServiceQuotasResponse_quotas :: Lens.Lens' ListServiceQuotasResponse (Prelude.Maybe [ServiceQuota])
+listServiceQuotasResponse_quotas = Lens.lens (\ListServiceQuotasResponse' {quotas} -> quotas) (\s@ListServiceQuotasResponse' {} a -> s {quotas = a} :: ListServiceQuotasResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listServiceQuotasResponse_httpStatus :: Lens.Lens' ListServiceQuotasResponse Prelude.Int
+listServiceQuotasResponse_httpStatus = Lens.lens (\ListServiceQuotasResponse' {httpStatus} -> httpStatus) (\s@ListServiceQuotasResponse' {} a -> s {httpStatus = a} :: ListServiceQuotasResponse)
+
+instance Prelude.NFData ListServiceQuotasResponse where
+  rnf ListServiceQuotasResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf quotas
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/ListServices.hs b/gen/Amazonka/ServiceQuotas/ListServices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/ListServices.hs
@@ -0,0 +1,227 @@
+{-# 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.ServiceQuotas.ListServices
+-- 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 names and codes for the services integrated with Service
+-- Quotas.
+--
+-- This operation returns paginated results.
+module Amazonka.ServiceQuotas.ListServices
+  ( -- * Creating a Request
+    ListServices (..),
+    newListServices,
+
+    -- * Request Lenses
+    listServices_maxResults,
+    listServices_nextToken,
+
+    -- * Destructuring the Response
+    ListServicesResponse (..),
+    newListServicesResponse,
+
+    -- * Response Lenses
+    listServicesResponse_nextToken,
+    listServicesResponse_services,
+    listServicesResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newListServices' smart constructor.
+data ListServices = ListServices'
+  { -- | The maximum number of results to return with a single call. To retrieve
+    -- the remaining results, if any, make another call with the token returned
+    -- from this call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token for the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServices' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listServices_maxResults' - The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+--
+-- 'nextToken', 'listServices_nextToken' - The token for the next page of results.
+newListServices ::
+  ListServices
+newListServices =
+  ListServices'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return with a single call. To retrieve
+-- the remaining results, if any, make another call with the token returned
+-- from this call.
+listServices_maxResults :: Lens.Lens' ListServices (Prelude.Maybe Prelude.Natural)
+listServices_maxResults = Lens.lens (\ListServices' {maxResults} -> maxResults) (\s@ListServices' {} a -> s {maxResults = a} :: ListServices)
+
+-- | The token for the next page of results.
+listServices_nextToken :: Lens.Lens' ListServices (Prelude.Maybe Prelude.Text)
+listServices_nextToken = Lens.lens (\ListServices' {nextToken} -> nextToken) (\s@ListServices' {} a -> s {nextToken = a} :: ListServices)
+
+instance Core.AWSPager ListServices where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listServicesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listServicesResponse_services
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listServices_nextToken
+          Lens..~ rs
+          Lens.^? listServicesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListServices where
+  type AWSResponse ListServices = ListServicesResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListServicesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Services" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListServices where
+  hashWithSalt _salt ListServices' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListServices where
+  rnf ListServices' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListServices where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.ListServices" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListServices where
+  toJSON ListServices' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListServices where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListServices where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListServicesResponse' smart constructor.
+data ListServicesResponse = ListServicesResponse'
+  { -- | The token to use to retrieve the next page of results. This value is
+    -- null when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Information about the services.
+    services :: Prelude.Maybe [ServiceInfo],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServicesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listServicesResponse_nextToken' - The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+--
+-- 'services', 'listServicesResponse_services' - Information about the services.
+--
+-- 'httpStatus', 'listServicesResponse_httpStatus' - The response's http status code.
+newListServicesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListServicesResponse
+newListServicesResponse pHttpStatus_ =
+  ListServicesResponse'
+    { nextToken = Prelude.Nothing,
+      services = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to use to retrieve the next page of results. This value is
+-- null when there are no more results to return.
+listServicesResponse_nextToken :: Lens.Lens' ListServicesResponse (Prelude.Maybe Prelude.Text)
+listServicesResponse_nextToken = Lens.lens (\ListServicesResponse' {nextToken} -> nextToken) (\s@ListServicesResponse' {} a -> s {nextToken = a} :: ListServicesResponse)
+
+-- | Information about the services.
+listServicesResponse_services :: Lens.Lens' ListServicesResponse (Prelude.Maybe [ServiceInfo])
+listServicesResponse_services = Lens.lens (\ListServicesResponse' {services} -> services) (\s@ListServicesResponse' {} a -> s {services = a} :: ListServicesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listServicesResponse_httpStatus :: Lens.Lens' ListServicesResponse Prelude.Int
+listServicesResponse_httpStatus = Lens.lens (\ListServicesResponse' {httpStatus} -> httpStatus) (\s@ListServicesResponse' {} a -> s {httpStatus = a} :: ListServicesResponse)
+
+instance Prelude.NFData ListServicesResponse where
+  rnf ListServicesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf services
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/ListTagsForResource.hs b/gen/Amazonka/ServiceQuotas/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/ListTagsForResource.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ServiceQuotas.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of the tags assigned to the specified applied quota.
+module Amazonka.ServiceQuotas.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceARN,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) for the applied quota for which you want
+    -- to list tags. You can get this information by using the Service Quotas
+    -- console, or by listing the quotas using the
+    -- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+    -- AWS CLI command or the
+    -- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+    -- AWS API operation.
+    resourceARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'listTagsForResource_resourceARN' - The Amazon Resource Name (ARN) for the applied quota for which you want
+-- to list tags. You can get this information by using the Service Quotas
+-- console, or by listing the quotas using the
+-- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+-- AWS CLI command or the
+-- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+-- AWS API operation.
+newListTagsForResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceARN_ =
+  ListTagsForResource' {resourceARN = pResourceARN_}
+
+-- | The Amazon Resource Name (ARN) for the applied quota for which you want
+-- to list tags. You can get this information by using the Service Quotas
+-- console, or by listing the quotas using the
+-- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+-- AWS CLI command or the
+-- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+-- AWS API operation.
+listTagsForResource_resourceARN :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceARN = Lens.lens (\ListTagsForResource' {resourceARN} -> resourceARN) (\s@ListTagsForResource' {} a -> s {resourceARN = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceARN
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceARN
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.ListTagsForResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTagsForResource where
+  toJSON ListTagsForResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ResourceARN" Data..= resourceARN)]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | A complex data type that contains zero or more tag elements.
+    tags :: Prelude.Maybe [Tag],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - A complex data type that contains zero or more tag elements.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A complex data type that contains zero or more tag elements.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/PutServiceQuotaIncreaseRequestIntoTemplate.hs b/gen/Amazonka/ServiceQuotas/PutServiceQuotaIncreaseRequestIntoTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/PutServiceQuotaIncreaseRequestIntoTemplate.hs
@@ -0,0 +1,254 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ServiceQuotas.PutServiceQuotaIncreaseRequestIntoTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a quota increase request to your quota request template.
+module Amazonka.ServiceQuotas.PutServiceQuotaIncreaseRequestIntoTemplate
+  ( -- * Creating a Request
+    PutServiceQuotaIncreaseRequestIntoTemplate (..),
+    newPutServiceQuotaIncreaseRequestIntoTemplate,
+
+    -- * Request Lenses
+    putServiceQuotaIncreaseRequestIntoTemplate_quotaCode,
+    putServiceQuotaIncreaseRequestIntoTemplate_serviceCode,
+    putServiceQuotaIncreaseRequestIntoTemplate_awsRegion,
+    putServiceQuotaIncreaseRequestIntoTemplate_desiredValue,
+
+    -- * Destructuring the Response
+    PutServiceQuotaIncreaseRequestIntoTemplateResponse (..),
+    newPutServiceQuotaIncreaseRequestIntoTemplateResponse,
+
+    -- * Response Lenses
+    putServiceQuotaIncreaseRequestIntoTemplateResponse_serviceQuotaIncreaseRequestInTemplate,
+    putServiceQuotaIncreaseRequestIntoTemplateResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newPutServiceQuotaIncreaseRequestIntoTemplate' smart constructor.
+data PutServiceQuotaIncreaseRequestIntoTemplate = PutServiceQuotaIncreaseRequestIntoTemplate'
+  { -- | The quota identifier.
+    quotaCode :: Prelude.Text,
+    -- | The service identifier.
+    serviceCode :: Prelude.Text,
+    -- | The AWS Region.
+    awsRegion :: Prelude.Text,
+    -- | The new, increased value for the quota.
+    desiredValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutServiceQuotaIncreaseRequestIntoTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'quotaCode', 'putServiceQuotaIncreaseRequestIntoTemplate_quotaCode' - The quota identifier.
+--
+-- 'serviceCode', 'putServiceQuotaIncreaseRequestIntoTemplate_serviceCode' - The service identifier.
+--
+-- 'awsRegion', 'putServiceQuotaIncreaseRequestIntoTemplate_awsRegion' - The AWS Region.
+--
+-- 'desiredValue', 'putServiceQuotaIncreaseRequestIntoTemplate_desiredValue' - The new, increased value for the quota.
+newPutServiceQuotaIncreaseRequestIntoTemplate ::
+  -- | 'quotaCode'
+  Prelude.Text ->
+  -- | 'serviceCode'
+  Prelude.Text ->
+  -- | 'awsRegion'
+  Prelude.Text ->
+  -- | 'desiredValue'
+  Prelude.Double ->
+  PutServiceQuotaIncreaseRequestIntoTemplate
+newPutServiceQuotaIncreaseRequestIntoTemplate
+  pQuotaCode_
+  pServiceCode_
+  pAwsRegion_
+  pDesiredValue_ =
+    PutServiceQuotaIncreaseRequestIntoTemplate'
+      { quotaCode =
+          pQuotaCode_,
+        serviceCode = pServiceCode_,
+        awsRegion = pAwsRegion_,
+        desiredValue = pDesiredValue_
+      }
+
+-- | The quota identifier.
+putServiceQuotaIncreaseRequestIntoTemplate_quotaCode :: Lens.Lens' PutServiceQuotaIncreaseRequestIntoTemplate Prelude.Text
+putServiceQuotaIncreaseRequestIntoTemplate_quotaCode = Lens.lens (\PutServiceQuotaIncreaseRequestIntoTemplate' {quotaCode} -> quotaCode) (\s@PutServiceQuotaIncreaseRequestIntoTemplate' {} a -> s {quotaCode = a} :: PutServiceQuotaIncreaseRequestIntoTemplate)
+
+-- | The service identifier.
+putServiceQuotaIncreaseRequestIntoTemplate_serviceCode :: Lens.Lens' PutServiceQuotaIncreaseRequestIntoTemplate Prelude.Text
+putServiceQuotaIncreaseRequestIntoTemplate_serviceCode = Lens.lens (\PutServiceQuotaIncreaseRequestIntoTemplate' {serviceCode} -> serviceCode) (\s@PutServiceQuotaIncreaseRequestIntoTemplate' {} a -> s {serviceCode = a} :: PutServiceQuotaIncreaseRequestIntoTemplate)
+
+-- | The AWS Region.
+putServiceQuotaIncreaseRequestIntoTemplate_awsRegion :: Lens.Lens' PutServiceQuotaIncreaseRequestIntoTemplate Prelude.Text
+putServiceQuotaIncreaseRequestIntoTemplate_awsRegion = Lens.lens (\PutServiceQuotaIncreaseRequestIntoTemplate' {awsRegion} -> awsRegion) (\s@PutServiceQuotaIncreaseRequestIntoTemplate' {} a -> s {awsRegion = a} :: PutServiceQuotaIncreaseRequestIntoTemplate)
+
+-- | The new, increased value for the quota.
+putServiceQuotaIncreaseRequestIntoTemplate_desiredValue :: Lens.Lens' PutServiceQuotaIncreaseRequestIntoTemplate Prelude.Double
+putServiceQuotaIncreaseRequestIntoTemplate_desiredValue = Lens.lens (\PutServiceQuotaIncreaseRequestIntoTemplate' {desiredValue} -> desiredValue) (\s@PutServiceQuotaIncreaseRequestIntoTemplate' {} a -> s {desiredValue = a} :: PutServiceQuotaIncreaseRequestIntoTemplate)
+
+instance
+  Core.AWSRequest
+    PutServiceQuotaIncreaseRequestIntoTemplate
+  where
+  type
+    AWSResponse
+      PutServiceQuotaIncreaseRequestIntoTemplate =
+      PutServiceQuotaIncreaseRequestIntoTemplateResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutServiceQuotaIncreaseRequestIntoTemplateResponse'
+            Prelude.<$> (x Data..?> "ServiceQuotaIncreaseRequestInTemplate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutServiceQuotaIncreaseRequestIntoTemplate
+  where
+  hashWithSalt
+    _salt
+    PutServiceQuotaIncreaseRequestIntoTemplate' {..} =
+      _salt
+        `Prelude.hashWithSalt` quotaCode
+        `Prelude.hashWithSalt` serviceCode
+        `Prelude.hashWithSalt` awsRegion
+        `Prelude.hashWithSalt` desiredValue
+
+instance
+  Prelude.NFData
+    PutServiceQuotaIncreaseRequestIntoTemplate
+  where
+  rnf PutServiceQuotaIncreaseRequestIntoTemplate' {..} =
+    Prelude.rnf quotaCode
+      `Prelude.seq` Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf desiredValue
+
+instance
+  Data.ToHeaders
+    PutServiceQuotaIncreaseRequestIntoTemplate
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.PutServiceQuotaIncreaseRequestIntoTemplate" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    PutServiceQuotaIncreaseRequestIntoTemplate
+  where
+  toJSON
+    PutServiceQuotaIncreaseRequestIntoTemplate' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just ("QuotaCode" Data..= quotaCode),
+              Prelude.Just ("ServiceCode" Data..= serviceCode),
+              Prelude.Just ("AwsRegion" Data..= awsRegion),
+              Prelude.Just ("DesiredValue" Data..= desiredValue)
+            ]
+        )
+
+instance
+  Data.ToPath
+    PutServiceQuotaIncreaseRequestIntoTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    PutServiceQuotaIncreaseRequestIntoTemplate
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutServiceQuotaIncreaseRequestIntoTemplateResponse' smart constructor.
+data PutServiceQuotaIncreaseRequestIntoTemplateResponse = PutServiceQuotaIncreaseRequestIntoTemplateResponse'
+  { -- | Information about the quota increase request.
+    serviceQuotaIncreaseRequestInTemplate :: Prelude.Maybe ServiceQuotaIncreaseRequestInTemplate,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutServiceQuotaIncreaseRequestIntoTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceQuotaIncreaseRequestInTemplate', 'putServiceQuotaIncreaseRequestIntoTemplateResponse_serviceQuotaIncreaseRequestInTemplate' - Information about the quota increase request.
+--
+-- 'httpStatus', 'putServiceQuotaIncreaseRequestIntoTemplateResponse_httpStatus' - The response's http status code.
+newPutServiceQuotaIncreaseRequestIntoTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutServiceQuotaIncreaseRequestIntoTemplateResponse
+newPutServiceQuotaIncreaseRequestIntoTemplateResponse
+  pHttpStatus_ =
+    PutServiceQuotaIncreaseRequestIntoTemplateResponse'
+      { serviceQuotaIncreaseRequestInTemplate =
+          Prelude.Nothing,
+        httpStatus =
+          pHttpStatus_
+      }
+
+-- | Information about the quota increase request.
+putServiceQuotaIncreaseRequestIntoTemplateResponse_serviceQuotaIncreaseRequestInTemplate :: Lens.Lens' PutServiceQuotaIncreaseRequestIntoTemplateResponse (Prelude.Maybe ServiceQuotaIncreaseRequestInTemplate)
+putServiceQuotaIncreaseRequestIntoTemplateResponse_serviceQuotaIncreaseRequestInTemplate = Lens.lens (\PutServiceQuotaIncreaseRequestIntoTemplateResponse' {serviceQuotaIncreaseRequestInTemplate} -> serviceQuotaIncreaseRequestInTemplate) (\s@PutServiceQuotaIncreaseRequestIntoTemplateResponse' {} a -> s {serviceQuotaIncreaseRequestInTemplate = a} :: PutServiceQuotaIncreaseRequestIntoTemplateResponse)
+
+-- | The response's http status code.
+putServiceQuotaIncreaseRequestIntoTemplateResponse_httpStatus :: Lens.Lens' PutServiceQuotaIncreaseRequestIntoTemplateResponse Prelude.Int
+putServiceQuotaIncreaseRequestIntoTemplateResponse_httpStatus = Lens.lens (\PutServiceQuotaIncreaseRequestIntoTemplateResponse' {httpStatus} -> httpStatus) (\s@PutServiceQuotaIncreaseRequestIntoTemplateResponse' {} a -> s {httpStatus = a} :: PutServiceQuotaIncreaseRequestIntoTemplateResponse)
+
+instance
+  Prelude.NFData
+    PutServiceQuotaIncreaseRequestIntoTemplateResponse
+  where
+  rnf
+    PutServiceQuotaIncreaseRequestIntoTemplateResponse' {..} =
+      Prelude.rnf serviceQuotaIncreaseRequestInTemplate
+        `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/RequestServiceQuotaIncrease.hs b/gen/Amazonka/ServiceQuotas/RequestServiceQuotaIncrease.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/RequestServiceQuotaIncrease.hs
@@ -0,0 +1,210 @@
+{-# 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.ServiceQuotas.RequestServiceQuotaIncrease
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Submits a quota increase request for the specified quota.
+module Amazonka.ServiceQuotas.RequestServiceQuotaIncrease
+  ( -- * Creating a Request
+    RequestServiceQuotaIncrease (..),
+    newRequestServiceQuotaIncrease,
+
+    -- * Request Lenses
+    requestServiceQuotaIncrease_serviceCode,
+    requestServiceQuotaIncrease_quotaCode,
+    requestServiceQuotaIncrease_desiredValue,
+
+    -- * Destructuring the Response
+    RequestServiceQuotaIncreaseResponse (..),
+    newRequestServiceQuotaIncreaseResponse,
+
+    -- * Response Lenses
+    requestServiceQuotaIncreaseResponse_requestedQuota,
+    requestServiceQuotaIncreaseResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newRequestServiceQuotaIncrease' smart constructor.
+data RequestServiceQuotaIncrease = RequestServiceQuotaIncrease'
+  { -- | The service identifier.
+    serviceCode :: Prelude.Text,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Text,
+    -- | The new, increased value for the quota.
+    desiredValue :: Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RequestServiceQuotaIncrease' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceCode', 'requestServiceQuotaIncrease_serviceCode' - The service identifier.
+--
+-- 'quotaCode', 'requestServiceQuotaIncrease_quotaCode' - The quota identifier.
+--
+-- 'desiredValue', 'requestServiceQuotaIncrease_desiredValue' - The new, increased value for the quota.
+newRequestServiceQuotaIncrease ::
+  -- | 'serviceCode'
+  Prelude.Text ->
+  -- | 'quotaCode'
+  Prelude.Text ->
+  -- | 'desiredValue'
+  Prelude.Double ->
+  RequestServiceQuotaIncrease
+newRequestServiceQuotaIncrease
+  pServiceCode_
+  pQuotaCode_
+  pDesiredValue_ =
+    RequestServiceQuotaIncrease'
+      { serviceCode =
+          pServiceCode_,
+        quotaCode = pQuotaCode_,
+        desiredValue = pDesiredValue_
+      }
+
+-- | The service identifier.
+requestServiceQuotaIncrease_serviceCode :: Lens.Lens' RequestServiceQuotaIncrease Prelude.Text
+requestServiceQuotaIncrease_serviceCode = Lens.lens (\RequestServiceQuotaIncrease' {serviceCode} -> serviceCode) (\s@RequestServiceQuotaIncrease' {} a -> s {serviceCode = a} :: RequestServiceQuotaIncrease)
+
+-- | The quota identifier.
+requestServiceQuotaIncrease_quotaCode :: Lens.Lens' RequestServiceQuotaIncrease Prelude.Text
+requestServiceQuotaIncrease_quotaCode = Lens.lens (\RequestServiceQuotaIncrease' {quotaCode} -> quotaCode) (\s@RequestServiceQuotaIncrease' {} a -> s {quotaCode = a} :: RequestServiceQuotaIncrease)
+
+-- | The new, increased value for the quota.
+requestServiceQuotaIncrease_desiredValue :: Lens.Lens' RequestServiceQuotaIncrease Prelude.Double
+requestServiceQuotaIncrease_desiredValue = Lens.lens (\RequestServiceQuotaIncrease' {desiredValue} -> desiredValue) (\s@RequestServiceQuotaIncrease' {} a -> s {desiredValue = a} :: RequestServiceQuotaIncrease)
+
+instance Core.AWSRequest RequestServiceQuotaIncrease where
+  type
+    AWSResponse RequestServiceQuotaIncrease =
+      RequestServiceQuotaIncreaseResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RequestServiceQuotaIncreaseResponse'
+            Prelude.<$> (x Data..?> "RequestedQuota")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RequestServiceQuotaIncrease where
+  hashWithSalt _salt RequestServiceQuotaIncrease' {..} =
+    _salt
+      `Prelude.hashWithSalt` serviceCode
+      `Prelude.hashWithSalt` quotaCode
+      `Prelude.hashWithSalt` desiredValue
+
+instance Prelude.NFData RequestServiceQuotaIncrease where
+  rnf RequestServiceQuotaIncrease' {..} =
+    Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf quotaCode
+      `Prelude.seq` Prelude.rnf desiredValue
+
+instance Data.ToHeaders RequestServiceQuotaIncrease where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.RequestServiceQuotaIncrease" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RequestServiceQuotaIncrease where
+  toJSON RequestServiceQuotaIncrease' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ServiceCode" Data..= serviceCode),
+            Prelude.Just ("QuotaCode" Data..= quotaCode),
+            Prelude.Just ("DesiredValue" Data..= desiredValue)
+          ]
+      )
+
+instance Data.ToPath RequestServiceQuotaIncrease where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery RequestServiceQuotaIncrease where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRequestServiceQuotaIncreaseResponse' smart constructor.
+data RequestServiceQuotaIncreaseResponse = RequestServiceQuotaIncreaseResponse'
+  { -- | Information about the quota increase request.
+    requestedQuota :: Prelude.Maybe RequestedServiceQuotaChange,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RequestServiceQuotaIncreaseResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'requestedQuota', 'requestServiceQuotaIncreaseResponse_requestedQuota' - Information about the quota increase request.
+--
+-- 'httpStatus', 'requestServiceQuotaIncreaseResponse_httpStatus' - The response's http status code.
+newRequestServiceQuotaIncreaseResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RequestServiceQuotaIncreaseResponse
+newRequestServiceQuotaIncreaseResponse pHttpStatus_ =
+  RequestServiceQuotaIncreaseResponse'
+    { requestedQuota =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the quota increase request.
+requestServiceQuotaIncreaseResponse_requestedQuota :: Lens.Lens' RequestServiceQuotaIncreaseResponse (Prelude.Maybe RequestedServiceQuotaChange)
+requestServiceQuotaIncreaseResponse_requestedQuota = Lens.lens (\RequestServiceQuotaIncreaseResponse' {requestedQuota} -> requestedQuota) (\s@RequestServiceQuotaIncreaseResponse' {} a -> s {requestedQuota = a} :: RequestServiceQuotaIncreaseResponse)
+
+-- | The response's http status code.
+requestServiceQuotaIncreaseResponse_httpStatus :: Lens.Lens' RequestServiceQuotaIncreaseResponse Prelude.Int
+requestServiceQuotaIncreaseResponse_httpStatus = Lens.lens (\RequestServiceQuotaIncreaseResponse' {httpStatus} -> httpStatus) (\s@RequestServiceQuotaIncreaseResponse' {} a -> s {httpStatus = a} :: RequestServiceQuotaIncreaseResponse)
+
+instance
+  Prelude.NFData
+    RequestServiceQuotaIncreaseResponse
+  where
+  rnf RequestServiceQuotaIncreaseResponse' {..} =
+    Prelude.rnf requestedQuota
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/TagResource.hs b/gen/Amazonka/ServiceQuotas/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/TagResource.hs
@@ -0,0 +1,189 @@
+{-# 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.ServiceQuotas.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds tags to the specified applied quota. You can include one or more
+-- tags to add to the quota.
+module Amazonka.ServiceQuotas.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceARN,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) for the applied quota. You can get this
+    -- information by using the Service Quotas console, or by listing the
+    -- quotas using the
+    -- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+    -- AWS CLI command or the
+    -- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+    -- AWS API operation.
+    resourceARN :: Prelude.Text,
+    -- | The tags that you want to add to the resource.
+    tags :: Prelude.NonEmpty Tag
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'tagResource_resourceARN' - The Amazon Resource Name (ARN) for the applied quota. You can get this
+-- information by using the Service Quotas console, or by listing the
+-- quotas using the
+-- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+-- AWS CLI command or the
+-- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+-- AWS API operation.
+--
+-- 'tags', 'tagResource_tags' - The tags that you want to add to the resource.
+newTagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'tags'
+  Prelude.NonEmpty Tag ->
+  TagResource
+newTagResource pResourceARN_ pTags_ =
+  TagResource'
+    { resourceARN = pResourceARN_,
+      tags = Lens.coerced Lens.# pTags_
+    }
+
+-- | The Amazon Resource Name (ARN) for the applied quota. You can get this
+-- information by using the Service Quotas console, or by listing the
+-- quotas using the
+-- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+-- AWS CLI command or the
+-- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+-- AWS API operation.
+tagResource_resourceARN :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceARN = Lens.lens (\TagResource' {resourceARN} -> resourceARN) (\s@TagResource' {} a -> s {resourceARN = a} :: TagResource)
+
+-- | The tags that you want to add to the resource.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.NonEmpty Tag)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.TagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/Types.hs b/gen/Amazonka/ServiceQuotas/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types.hs
@@ -0,0 +1,344 @@
+{-# 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.ServiceQuotas.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.ServiceQuotas.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AWSServiceAccessNotEnabledException,
+    _AccessDeniedException,
+    _DependencyAccessDeniedException,
+    _IllegalArgumentException,
+    _InvalidPaginationTokenException,
+    _InvalidResourceStateException,
+    _NoAvailableOrganizationException,
+    _NoSuchResourceException,
+    _OrganizationNotInAllFeaturesModeException,
+    _QuotaExceededException,
+    _ResourceAlreadyExistsException,
+    _ServiceException,
+    _ServiceQuotaTemplateNotInUseException,
+    _TagPolicyViolationException,
+    _TemplatesNotAvailableInRegionException,
+    _TooManyRequestsException,
+    _TooManyTagsException,
+
+    -- * ErrorCode
+    ErrorCode (..),
+
+    -- * PeriodUnit
+    PeriodUnit (..),
+
+    -- * RequestStatus
+    RequestStatus (..),
+
+    -- * ServiceQuotaTemplateAssociationStatus
+    ServiceQuotaTemplateAssociationStatus (..),
+
+    -- * ErrorReason
+    ErrorReason (..),
+    newErrorReason,
+    errorReason_errorCode,
+    errorReason_errorMessage,
+
+    -- * MetricInfo
+    MetricInfo (..),
+    newMetricInfo,
+    metricInfo_metricDimensions,
+    metricInfo_metricName,
+    metricInfo_metricNamespace,
+    metricInfo_metricStatisticRecommendation,
+
+    -- * QuotaPeriod
+    QuotaPeriod (..),
+    newQuotaPeriod,
+    quotaPeriod_periodUnit,
+    quotaPeriod_periodValue,
+
+    -- * RequestedServiceQuotaChange
+    RequestedServiceQuotaChange (..),
+    newRequestedServiceQuotaChange,
+    requestedServiceQuotaChange_caseId,
+    requestedServiceQuotaChange_created,
+    requestedServiceQuotaChange_desiredValue,
+    requestedServiceQuotaChange_globalQuota,
+    requestedServiceQuotaChange_id,
+    requestedServiceQuotaChange_lastUpdated,
+    requestedServiceQuotaChange_quotaArn,
+    requestedServiceQuotaChange_quotaCode,
+    requestedServiceQuotaChange_quotaName,
+    requestedServiceQuotaChange_requester,
+    requestedServiceQuotaChange_serviceCode,
+    requestedServiceQuotaChange_serviceName,
+    requestedServiceQuotaChange_status,
+    requestedServiceQuotaChange_unit,
+
+    -- * ServiceInfo
+    ServiceInfo (..),
+    newServiceInfo,
+    serviceInfo_serviceCode,
+    serviceInfo_serviceName,
+
+    -- * ServiceQuota
+    ServiceQuota (..),
+    newServiceQuota,
+    serviceQuota_adjustable,
+    serviceQuota_errorReason,
+    serviceQuota_globalQuota,
+    serviceQuota_period,
+    serviceQuota_quotaArn,
+    serviceQuota_quotaCode,
+    serviceQuota_quotaName,
+    serviceQuota_serviceCode,
+    serviceQuota_serviceName,
+    serviceQuota_unit,
+    serviceQuota_usageMetric,
+    serviceQuota_value,
+
+    -- * ServiceQuotaIncreaseRequestInTemplate
+    ServiceQuotaIncreaseRequestInTemplate (..),
+    newServiceQuotaIncreaseRequestInTemplate,
+    serviceQuotaIncreaseRequestInTemplate_awsRegion,
+    serviceQuotaIncreaseRequestInTemplate_desiredValue,
+    serviceQuotaIncreaseRequestInTemplate_globalQuota,
+    serviceQuotaIncreaseRequestInTemplate_quotaCode,
+    serviceQuotaIncreaseRequestInTemplate_quotaName,
+    serviceQuotaIncreaseRequestInTemplate_serviceCode,
+    serviceQuotaIncreaseRequestInTemplate_serviceName,
+    serviceQuotaIncreaseRequestInTemplate_unit,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.ServiceQuotas.Types.ErrorCode
+import Amazonka.ServiceQuotas.Types.ErrorReason
+import Amazonka.ServiceQuotas.Types.MetricInfo
+import Amazonka.ServiceQuotas.Types.PeriodUnit
+import Amazonka.ServiceQuotas.Types.QuotaPeriod
+import Amazonka.ServiceQuotas.Types.RequestStatus
+import Amazonka.ServiceQuotas.Types.RequestedServiceQuotaChange
+import Amazonka.ServiceQuotas.Types.ServiceInfo
+import Amazonka.ServiceQuotas.Types.ServiceQuota
+import Amazonka.ServiceQuotas.Types.ServiceQuotaIncreaseRequestInTemplate
+import Amazonka.ServiceQuotas.Types.ServiceQuotaTemplateAssociationStatus
+import Amazonka.ServiceQuotas.Types.Tag
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2019-06-24@ of the Amazon Quotas SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "ServiceQuotas",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "servicequotas",
+      Core.signingName = "servicequotas",
+      Core.version = "2019-06-24",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "ServiceQuotas",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | The action you attempted is not allowed unless Service Access with
+-- Service Quotas is enabled in your organization.
+_AWSServiceAccessNotEnabledException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AWSServiceAccessNotEnabledException =
+  Core._MatchServiceError
+    defaultService
+    "AWSServiceAccessNotEnabledException"
+
+-- | You do not have sufficient permission to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+
+-- | You can\'t perform this action because a dependency does not have
+-- access.
+_DependencyAccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DependencyAccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "DependencyAccessDeniedException"
+
+-- | Invalid input was provided.
+_IllegalArgumentException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_IllegalArgumentException =
+  Core._MatchServiceError
+    defaultService
+    "IllegalArgumentException"
+
+-- | Invalid input was provided.
+_InvalidPaginationTokenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidPaginationTokenException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidPaginationTokenException"
+
+-- | The resource is in an invalid state.
+_InvalidResourceStateException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidResourceStateException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidResourceStateException"
+
+-- | The account making this call is not a member of an organization.
+_NoAvailableOrganizationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NoAvailableOrganizationException =
+  Core._MatchServiceError
+    defaultService
+    "NoAvailableOrganizationException"
+
+-- | The specified resource does not exist.
+_NoSuchResourceException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NoSuchResourceException =
+  Core._MatchServiceError
+    defaultService
+    "NoSuchResourceException"
+
+-- | The organization that your account belongs to is not in All Features
+-- mode.
+_OrganizationNotInAllFeaturesModeException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_OrganizationNotInAllFeaturesModeException =
+  Core._MatchServiceError
+    defaultService
+    "OrganizationNotInAllFeaturesModeException"
+
+-- | You have exceeded your service quota. To perform the requested action,
+-- remove some of the relevant resources, or use Service Quotas to request
+-- a service quota increase.
+_QuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_QuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "QuotaExceededException"
+
+-- | The specified resource already exists.
+_ResourceAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceAlreadyExistsException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceAlreadyExistsException"
+
+-- | Something went wrong.
+_ServiceException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceException"
+
+-- | The quota request template is not associated with your organization.
+_ServiceQuotaTemplateNotInUseException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaTemplateNotInUseException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaTemplateNotInUseException"
+
+-- | The specified tag is a reserved word and cannot be used.
+_TagPolicyViolationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TagPolicyViolationException =
+  Core._MatchServiceError
+    defaultService
+    "TagPolicyViolationException"
+
+-- | The Service Quotas template is not available in this AWS Region.
+_TemplatesNotAvailableInRegionException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TemplatesNotAvailableInRegionException =
+  Core._MatchServiceError
+    defaultService
+    "TemplatesNotAvailableInRegionException"
+
+-- | Due to throttling, the request was denied. Slow down the rate of request
+-- calls, or request an increase for this quota.
+_TooManyRequestsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyRequestsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyRequestsException"
+
+-- | You\'ve exceeded the number of tags allowed for a resource. For more
+-- information, see
+-- <https://docs.aws.amazon.com/servicequotas/latest/userguide/sq-tagging.html#sq-tagging-restrictions Tag restrictions>
+-- in the /Service Quotas User Guide/.
+_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyTagsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyTagsException"
diff --git a/gen/Amazonka/ServiceQuotas/Types/ErrorCode.hs b/gen/Amazonka/ServiceQuotas/Types/ErrorCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/ErrorCode.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.ServiceQuotas.Types.ErrorCode
+-- 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.ServiceQuotas.Types.ErrorCode
+  ( ErrorCode
+      ( ..,
+        ErrorCode_DEPENDENCY_ACCESS_DENIED_ERROR,
+        ErrorCode_DEPENDENCY_SERVICE_ERROR,
+        ErrorCode_DEPENDENCY_THROTTLING_ERROR,
+        ErrorCode_SERVICE_QUOTA_NOT_AVAILABLE_ERROR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ErrorCode = ErrorCode'
+  { fromErrorCode ::
+      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 ErrorCode_DEPENDENCY_ACCESS_DENIED_ERROR :: ErrorCode
+pattern ErrorCode_DEPENDENCY_ACCESS_DENIED_ERROR = ErrorCode' "DEPENDENCY_ACCESS_DENIED_ERROR"
+
+pattern ErrorCode_DEPENDENCY_SERVICE_ERROR :: ErrorCode
+pattern ErrorCode_DEPENDENCY_SERVICE_ERROR = ErrorCode' "DEPENDENCY_SERVICE_ERROR"
+
+pattern ErrorCode_DEPENDENCY_THROTTLING_ERROR :: ErrorCode
+pattern ErrorCode_DEPENDENCY_THROTTLING_ERROR = ErrorCode' "DEPENDENCY_THROTTLING_ERROR"
+
+pattern ErrorCode_SERVICE_QUOTA_NOT_AVAILABLE_ERROR :: ErrorCode
+pattern ErrorCode_SERVICE_QUOTA_NOT_AVAILABLE_ERROR = ErrorCode' "SERVICE_QUOTA_NOT_AVAILABLE_ERROR"
+
+{-# COMPLETE
+  ErrorCode_DEPENDENCY_ACCESS_DENIED_ERROR,
+  ErrorCode_DEPENDENCY_SERVICE_ERROR,
+  ErrorCode_DEPENDENCY_THROTTLING_ERROR,
+  ErrorCode_SERVICE_QUOTA_NOT_AVAILABLE_ERROR,
+  ErrorCode'
+  #-}
diff --git a/gen/Amazonka/ServiceQuotas/Types/ErrorReason.hs b/gen/Amazonka/ServiceQuotas/Types/ErrorReason.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/ErrorReason.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.ServiceQuotas.Types.ErrorReason
+-- 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.ServiceQuotas.Types.ErrorReason 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
+import Amazonka.ServiceQuotas.Types.ErrorCode
+
+-- | An error that explains why an action did not succeed.
+--
+-- /See:/ 'newErrorReason' smart constructor.
+data ErrorReason = ErrorReason'
+  { -- | Service Quotas returns the following error values:
+    --
+    -- -   @DEPENDENCY_ACCESS_DENIED_ERROR@ - The caller does not have the
+    --     required permissions to complete the action. To resolve the error,
+    --     you must have permission to access the service or quota.
+    --
+    -- -   @DEPENDENCY_THROTTLING_ERROR@ - The service is throttling Service
+    --     Quotas.
+    --
+    -- -   @DEPENDENCY_SERVICE_ERROR@ - The service is not available.
+    --
+    -- -   @SERVICE_QUOTA_NOT_AVAILABLE_ERROR@ - There was an error in Service
+    --     Quotas.
+    errorCode :: Prelude.Maybe ErrorCode,
+    -- | The error message.
+    errorMessage :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ErrorReason' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorCode', 'errorReason_errorCode' - Service Quotas returns the following error values:
+--
+-- -   @DEPENDENCY_ACCESS_DENIED_ERROR@ - The caller does not have the
+--     required permissions to complete the action. To resolve the error,
+--     you must have permission to access the service or quota.
+--
+-- -   @DEPENDENCY_THROTTLING_ERROR@ - The service is throttling Service
+--     Quotas.
+--
+-- -   @DEPENDENCY_SERVICE_ERROR@ - The service is not available.
+--
+-- -   @SERVICE_QUOTA_NOT_AVAILABLE_ERROR@ - There was an error in Service
+--     Quotas.
+--
+-- 'errorMessage', 'errorReason_errorMessage' - The error message.
+newErrorReason ::
+  ErrorReason
+newErrorReason =
+  ErrorReason'
+    { errorCode = Prelude.Nothing,
+      errorMessage = Prelude.Nothing
+    }
+
+-- | Service Quotas returns the following error values:
+--
+-- -   @DEPENDENCY_ACCESS_DENIED_ERROR@ - The caller does not have the
+--     required permissions to complete the action. To resolve the error,
+--     you must have permission to access the service or quota.
+--
+-- -   @DEPENDENCY_THROTTLING_ERROR@ - The service is throttling Service
+--     Quotas.
+--
+-- -   @DEPENDENCY_SERVICE_ERROR@ - The service is not available.
+--
+-- -   @SERVICE_QUOTA_NOT_AVAILABLE_ERROR@ - There was an error in Service
+--     Quotas.
+errorReason_errorCode :: Lens.Lens' ErrorReason (Prelude.Maybe ErrorCode)
+errorReason_errorCode = Lens.lens (\ErrorReason' {errorCode} -> errorCode) (\s@ErrorReason' {} a -> s {errorCode = a} :: ErrorReason)
+
+-- | The error message.
+errorReason_errorMessage :: Lens.Lens' ErrorReason (Prelude.Maybe Prelude.Text)
+errorReason_errorMessage = Lens.lens (\ErrorReason' {errorMessage} -> errorMessage) (\s@ErrorReason' {} a -> s {errorMessage = a} :: ErrorReason)
+
+instance Data.FromJSON ErrorReason where
+  parseJSON =
+    Data.withObject
+      "ErrorReason"
+      ( \x ->
+          ErrorReason'
+            Prelude.<$> (x Data..:? "ErrorCode")
+            Prelude.<*> (x Data..:? "ErrorMessage")
+      )
+
+instance Prelude.Hashable ErrorReason where
+  hashWithSalt _salt ErrorReason' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorCode
+      `Prelude.hashWithSalt` errorMessage
+
+instance Prelude.NFData ErrorReason where
+  rnf ErrorReason' {..} =
+    Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorMessage
diff --git a/gen/Amazonka/ServiceQuotas/Types/MetricInfo.hs b/gen/Amazonka/ServiceQuotas/Types/MetricInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/MetricInfo.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.ServiceQuotas.Types.MetricInfo
+-- 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.ServiceQuotas.Types.MetricInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the CloudWatch metric that reflects quota usage.
+--
+-- /See:/ 'newMetricInfo' smart constructor.
+data MetricInfo = MetricInfo'
+  { -- | The metric dimension. This is a name\/value pair that is part of the
+    -- identity of a metric.
+    metricDimensions :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The name of the metric.
+    metricName :: Prelude.Maybe Prelude.Text,
+    -- | The namespace of the metric.
+    metricNamespace :: Prelude.Maybe Prelude.Text,
+    -- | The metric statistic that we recommend you use when determining quota
+    -- usage.
+    metricStatisticRecommendation :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetricInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'metricDimensions', 'metricInfo_metricDimensions' - The metric dimension. This is a name\/value pair that is part of the
+-- identity of a metric.
+--
+-- 'metricName', 'metricInfo_metricName' - The name of the metric.
+--
+-- 'metricNamespace', 'metricInfo_metricNamespace' - The namespace of the metric.
+--
+-- 'metricStatisticRecommendation', 'metricInfo_metricStatisticRecommendation' - The metric statistic that we recommend you use when determining quota
+-- usage.
+newMetricInfo ::
+  MetricInfo
+newMetricInfo =
+  MetricInfo'
+    { metricDimensions = Prelude.Nothing,
+      metricName = Prelude.Nothing,
+      metricNamespace = Prelude.Nothing,
+      metricStatisticRecommendation = Prelude.Nothing
+    }
+
+-- | The metric dimension. This is a name\/value pair that is part of the
+-- identity of a metric.
+metricInfo_metricDimensions :: Lens.Lens' MetricInfo (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+metricInfo_metricDimensions = Lens.lens (\MetricInfo' {metricDimensions} -> metricDimensions) (\s@MetricInfo' {} a -> s {metricDimensions = a} :: MetricInfo) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the metric.
+metricInfo_metricName :: Lens.Lens' MetricInfo (Prelude.Maybe Prelude.Text)
+metricInfo_metricName = Lens.lens (\MetricInfo' {metricName} -> metricName) (\s@MetricInfo' {} a -> s {metricName = a} :: MetricInfo)
+
+-- | The namespace of the metric.
+metricInfo_metricNamespace :: Lens.Lens' MetricInfo (Prelude.Maybe Prelude.Text)
+metricInfo_metricNamespace = Lens.lens (\MetricInfo' {metricNamespace} -> metricNamespace) (\s@MetricInfo' {} a -> s {metricNamespace = a} :: MetricInfo)
+
+-- | The metric statistic that we recommend you use when determining quota
+-- usage.
+metricInfo_metricStatisticRecommendation :: Lens.Lens' MetricInfo (Prelude.Maybe Prelude.Text)
+metricInfo_metricStatisticRecommendation = Lens.lens (\MetricInfo' {metricStatisticRecommendation} -> metricStatisticRecommendation) (\s@MetricInfo' {} a -> s {metricStatisticRecommendation = a} :: MetricInfo)
+
+instance Data.FromJSON MetricInfo where
+  parseJSON =
+    Data.withObject
+      "MetricInfo"
+      ( \x ->
+          MetricInfo'
+            Prelude.<$> ( x
+                            Data..:? "MetricDimensions"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "MetricName")
+            Prelude.<*> (x Data..:? "MetricNamespace")
+            Prelude.<*> (x Data..:? "MetricStatisticRecommendation")
+      )
+
+instance Prelude.Hashable MetricInfo where
+  hashWithSalt _salt MetricInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` metricDimensions
+      `Prelude.hashWithSalt` metricName
+      `Prelude.hashWithSalt` metricNamespace
+      `Prelude.hashWithSalt` metricStatisticRecommendation
+
+instance Prelude.NFData MetricInfo where
+  rnf MetricInfo' {..} =
+    Prelude.rnf metricDimensions
+      `Prelude.seq` Prelude.rnf metricName
+      `Prelude.seq` Prelude.rnf metricNamespace
+      `Prelude.seq` Prelude.rnf metricStatisticRecommendation
diff --git a/gen/Amazonka/ServiceQuotas/Types/PeriodUnit.hs b/gen/Amazonka/ServiceQuotas/Types/PeriodUnit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/PeriodUnit.hs
@@ -0,0 +1,96 @@
+{-# 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.ServiceQuotas.Types.PeriodUnit
+-- 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.ServiceQuotas.Types.PeriodUnit
+  ( PeriodUnit
+      ( ..,
+        PeriodUnit_DAY,
+        PeriodUnit_HOUR,
+        PeriodUnit_MICROSECOND,
+        PeriodUnit_MILLISECOND,
+        PeriodUnit_MINUTE,
+        PeriodUnit_SECOND,
+        PeriodUnit_WEEK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PeriodUnit = PeriodUnit'
+  { fromPeriodUnit ::
+      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 PeriodUnit_DAY :: PeriodUnit
+pattern PeriodUnit_DAY = PeriodUnit' "DAY"
+
+pattern PeriodUnit_HOUR :: PeriodUnit
+pattern PeriodUnit_HOUR = PeriodUnit' "HOUR"
+
+pattern PeriodUnit_MICROSECOND :: PeriodUnit
+pattern PeriodUnit_MICROSECOND = PeriodUnit' "MICROSECOND"
+
+pattern PeriodUnit_MILLISECOND :: PeriodUnit
+pattern PeriodUnit_MILLISECOND = PeriodUnit' "MILLISECOND"
+
+pattern PeriodUnit_MINUTE :: PeriodUnit
+pattern PeriodUnit_MINUTE = PeriodUnit' "MINUTE"
+
+pattern PeriodUnit_SECOND :: PeriodUnit
+pattern PeriodUnit_SECOND = PeriodUnit' "SECOND"
+
+pattern PeriodUnit_WEEK :: PeriodUnit
+pattern PeriodUnit_WEEK = PeriodUnit' "WEEK"
+
+{-# COMPLETE
+  PeriodUnit_DAY,
+  PeriodUnit_HOUR,
+  PeriodUnit_MICROSECOND,
+  PeriodUnit_MILLISECOND,
+  PeriodUnit_MINUTE,
+  PeriodUnit_SECOND,
+  PeriodUnit_WEEK,
+  PeriodUnit'
+  #-}
diff --git a/gen/Amazonka/ServiceQuotas/Types/QuotaPeriod.hs b/gen/Amazonka/ServiceQuotas/Types/QuotaPeriod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/QuotaPeriod.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ServiceQuotas.Types.QuotaPeriod
+-- 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.ServiceQuotas.Types.QuotaPeriod 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
+import Amazonka.ServiceQuotas.Types.PeriodUnit
+
+-- | Information about the quota period.
+--
+-- /See:/ 'newQuotaPeriod' smart constructor.
+data QuotaPeriod = QuotaPeriod'
+  { -- | The time unit.
+    periodUnit :: Prelude.Maybe PeriodUnit,
+    -- | The value.
+    periodValue :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'QuotaPeriod' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'periodUnit', 'quotaPeriod_periodUnit' - The time unit.
+--
+-- 'periodValue', 'quotaPeriod_periodValue' - The value.
+newQuotaPeriod ::
+  QuotaPeriod
+newQuotaPeriod =
+  QuotaPeriod'
+    { periodUnit = Prelude.Nothing,
+      periodValue = Prelude.Nothing
+    }
+
+-- | The time unit.
+quotaPeriod_periodUnit :: Lens.Lens' QuotaPeriod (Prelude.Maybe PeriodUnit)
+quotaPeriod_periodUnit = Lens.lens (\QuotaPeriod' {periodUnit} -> periodUnit) (\s@QuotaPeriod' {} a -> s {periodUnit = a} :: QuotaPeriod)
+
+-- | The value.
+quotaPeriod_periodValue :: Lens.Lens' QuotaPeriod (Prelude.Maybe Prelude.Int)
+quotaPeriod_periodValue = Lens.lens (\QuotaPeriod' {periodValue} -> periodValue) (\s@QuotaPeriod' {} a -> s {periodValue = a} :: QuotaPeriod)
+
+instance Data.FromJSON QuotaPeriod where
+  parseJSON =
+    Data.withObject
+      "QuotaPeriod"
+      ( \x ->
+          QuotaPeriod'
+            Prelude.<$> (x Data..:? "PeriodUnit")
+            Prelude.<*> (x Data..:? "PeriodValue")
+      )
+
+instance Prelude.Hashable QuotaPeriod where
+  hashWithSalt _salt QuotaPeriod' {..} =
+    _salt
+      `Prelude.hashWithSalt` periodUnit
+      `Prelude.hashWithSalt` periodValue
+
+instance Prelude.NFData QuotaPeriod where
+  rnf QuotaPeriod' {..} =
+    Prelude.rnf periodUnit
+      `Prelude.seq` Prelude.rnf periodValue
diff --git a/gen/Amazonka/ServiceQuotas/Types/RequestStatus.hs b/gen/Amazonka/ServiceQuotas/Types/RequestStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/RequestStatus.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.ServiceQuotas.Types.RequestStatus
+-- 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.ServiceQuotas.Types.RequestStatus
+  ( RequestStatus
+      ( ..,
+        RequestStatus_APPROVED,
+        RequestStatus_CASE_CLOSED,
+        RequestStatus_CASE_OPENED,
+        RequestStatus_DENIED,
+        RequestStatus_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RequestStatus = RequestStatus'
+  { fromRequestStatus ::
+      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 RequestStatus_APPROVED :: RequestStatus
+pattern RequestStatus_APPROVED = RequestStatus' "APPROVED"
+
+pattern RequestStatus_CASE_CLOSED :: RequestStatus
+pattern RequestStatus_CASE_CLOSED = RequestStatus' "CASE_CLOSED"
+
+pattern RequestStatus_CASE_OPENED :: RequestStatus
+pattern RequestStatus_CASE_OPENED = RequestStatus' "CASE_OPENED"
+
+pattern RequestStatus_DENIED :: RequestStatus
+pattern RequestStatus_DENIED = RequestStatus' "DENIED"
+
+pattern RequestStatus_PENDING :: RequestStatus
+pattern RequestStatus_PENDING = RequestStatus' "PENDING"
+
+{-# COMPLETE
+  RequestStatus_APPROVED,
+  RequestStatus_CASE_CLOSED,
+  RequestStatus_CASE_OPENED,
+  RequestStatus_DENIED,
+  RequestStatus_PENDING,
+  RequestStatus'
+  #-}
diff --git a/gen/Amazonka/ServiceQuotas/Types/RequestedServiceQuotaChange.hs b/gen/Amazonka/ServiceQuotas/Types/RequestedServiceQuotaChange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/RequestedServiceQuotaChange.hs
@@ -0,0 +1,233 @@
+{-# 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.ServiceQuotas.Types.RequestedServiceQuotaChange
+-- 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.ServiceQuotas.Types.RequestedServiceQuotaChange 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
+import Amazonka.ServiceQuotas.Types.RequestStatus
+
+-- | Information about a quota increase request.
+--
+-- /See:/ 'newRequestedServiceQuotaChange' smart constructor.
+data RequestedServiceQuotaChange = RequestedServiceQuotaChange'
+  { -- | The case ID.
+    caseId :: Prelude.Maybe Prelude.Text,
+    -- | The date and time when the quota increase request was received and the
+    -- case ID was created.
+    created :: Prelude.Maybe Data.POSIX,
+    -- | The new, increased value for the quota.
+    desiredValue :: Prelude.Maybe Prelude.Double,
+    -- | Indicates whether the quota is global.
+    globalQuota :: Prelude.Maybe Prelude.Bool,
+    -- | The unique identifier.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The date and time of the most recent change.
+    lastUpdated :: Prelude.Maybe Data.POSIX,
+    -- | The Amazon Resource Name (ARN) of the quota.
+    quotaArn :: Prelude.Maybe Prelude.Text,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Maybe Prelude.Text,
+    -- | The quota name.
+    quotaName :: Prelude.Maybe Prelude.Text,
+    -- | The IAM identity of the requester.
+    requester :: Prelude.Maybe Prelude.Text,
+    -- | The service identifier.
+    serviceCode :: Prelude.Maybe Prelude.Text,
+    -- | The service name.
+    serviceName :: Prelude.Maybe Prelude.Text,
+    -- | The state of the quota increase request.
+    status :: Prelude.Maybe RequestStatus,
+    -- | The unit of measurement.
+    unit :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RequestedServiceQuotaChange' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'caseId', 'requestedServiceQuotaChange_caseId' - The case ID.
+--
+-- 'created', 'requestedServiceQuotaChange_created' - The date and time when the quota increase request was received and the
+-- case ID was created.
+--
+-- 'desiredValue', 'requestedServiceQuotaChange_desiredValue' - The new, increased value for the quota.
+--
+-- 'globalQuota', 'requestedServiceQuotaChange_globalQuota' - Indicates whether the quota is global.
+--
+-- 'id', 'requestedServiceQuotaChange_id' - The unique identifier.
+--
+-- 'lastUpdated', 'requestedServiceQuotaChange_lastUpdated' - The date and time of the most recent change.
+--
+-- 'quotaArn', 'requestedServiceQuotaChange_quotaArn' - The Amazon Resource Name (ARN) of the quota.
+--
+-- 'quotaCode', 'requestedServiceQuotaChange_quotaCode' - The quota identifier.
+--
+-- 'quotaName', 'requestedServiceQuotaChange_quotaName' - The quota name.
+--
+-- 'requester', 'requestedServiceQuotaChange_requester' - The IAM identity of the requester.
+--
+-- 'serviceCode', 'requestedServiceQuotaChange_serviceCode' - The service identifier.
+--
+-- 'serviceName', 'requestedServiceQuotaChange_serviceName' - The service name.
+--
+-- 'status', 'requestedServiceQuotaChange_status' - The state of the quota increase request.
+--
+-- 'unit', 'requestedServiceQuotaChange_unit' - The unit of measurement.
+newRequestedServiceQuotaChange ::
+  RequestedServiceQuotaChange
+newRequestedServiceQuotaChange =
+  RequestedServiceQuotaChange'
+    { caseId =
+        Prelude.Nothing,
+      created = Prelude.Nothing,
+      desiredValue = Prelude.Nothing,
+      globalQuota = Prelude.Nothing,
+      id = Prelude.Nothing,
+      lastUpdated = Prelude.Nothing,
+      quotaArn = Prelude.Nothing,
+      quotaCode = Prelude.Nothing,
+      quotaName = Prelude.Nothing,
+      requester = Prelude.Nothing,
+      serviceCode = Prelude.Nothing,
+      serviceName = Prelude.Nothing,
+      status = Prelude.Nothing,
+      unit = Prelude.Nothing
+    }
+
+-- | The case ID.
+requestedServiceQuotaChange_caseId :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_caseId = Lens.lens (\RequestedServiceQuotaChange' {caseId} -> caseId) (\s@RequestedServiceQuotaChange' {} a -> s {caseId = a} :: RequestedServiceQuotaChange)
+
+-- | The date and time when the quota increase request was received and the
+-- case ID was created.
+requestedServiceQuotaChange_created :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.UTCTime)
+requestedServiceQuotaChange_created = Lens.lens (\RequestedServiceQuotaChange' {created} -> created) (\s@RequestedServiceQuotaChange' {} a -> s {created = a} :: RequestedServiceQuotaChange) Prelude.. Lens.mapping Data._Time
+
+-- | The new, increased value for the quota.
+requestedServiceQuotaChange_desiredValue :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Double)
+requestedServiceQuotaChange_desiredValue = Lens.lens (\RequestedServiceQuotaChange' {desiredValue} -> desiredValue) (\s@RequestedServiceQuotaChange' {} a -> s {desiredValue = a} :: RequestedServiceQuotaChange)
+
+-- | Indicates whether the quota is global.
+requestedServiceQuotaChange_globalQuota :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Bool)
+requestedServiceQuotaChange_globalQuota = Lens.lens (\RequestedServiceQuotaChange' {globalQuota} -> globalQuota) (\s@RequestedServiceQuotaChange' {} a -> s {globalQuota = a} :: RequestedServiceQuotaChange)
+
+-- | The unique identifier.
+requestedServiceQuotaChange_id :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_id = Lens.lens (\RequestedServiceQuotaChange' {id} -> id) (\s@RequestedServiceQuotaChange' {} a -> s {id = a} :: RequestedServiceQuotaChange)
+
+-- | The date and time of the most recent change.
+requestedServiceQuotaChange_lastUpdated :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.UTCTime)
+requestedServiceQuotaChange_lastUpdated = Lens.lens (\RequestedServiceQuotaChange' {lastUpdated} -> lastUpdated) (\s@RequestedServiceQuotaChange' {} a -> s {lastUpdated = a} :: RequestedServiceQuotaChange) Prelude.. Lens.mapping Data._Time
+
+-- | The Amazon Resource Name (ARN) of the quota.
+requestedServiceQuotaChange_quotaArn :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_quotaArn = Lens.lens (\RequestedServiceQuotaChange' {quotaArn} -> quotaArn) (\s@RequestedServiceQuotaChange' {} a -> s {quotaArn = a} :: RequestedServiceQuotaChange)
+
+-- | The quota identifier.
+requestedServiceQuotaChange_quotaCode :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_quotaCode = Lens.lens (\RequestedServiceQuotaChange' {quotaCode} -> quotaCode) (\s@RequestedServiceQuotaChange' {} a -> s {quotaCode = a} :: RequestedServiceQuotaChange)
+
+-- | The quota name.
+requestedServiceQuotaChange_quotaName :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_quotaName = Lens.lens (\RequestedServiceQuotaChange' {quotaName} -> quotaName) (\s@RequestedServiceQuotaChange' {} a -> s {quotaName = a} :: RequestedServiceQuotaChange)
+
+-- | The IAM identity of the requester.
+requestedServiceQuotaChange_requester :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_requester = Lens.lens (\RequestedServiceQuotaChange' {requester} -> requester) (\s@RequestedServiceQuotaChange' {} a -> s {requester = a} :: RequestedServiceQuotaChange)
+
+-- | The service identifier.
+requestedServiceQuotaChange_serviceCode :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_serviceCode = Lens.lens (\RequestedServiceQuotaChange' {serviceCode} -> serviceCode) (\s@RequestedServiceQuotaChange' {} a -> s {serviceCode = a} :: RequestedServiceQuotaChange)
+
+-- | The service name.
+requestedServiceQuotaChange_serviceName :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_serviceName = Lens.lens (\RequestedServiceQuotaChange' {serviceName} -> serviceName) (\s@RequestedServiceQuotaChange' {} a -> s {serviceName = a} :: RequestedServiceQuotaChange)
+
+-- | The state of the quota increase request.
+requestedServiceQuotaChange_status :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe RequestStatus)
+requestedServiceQuotaChange_status = Lens.lens (\RequestedServiceQuotaChange' {status} -> status) (\s@RequestedServiceQuotaChange' {} a -> s {status = a} :: RequestedServiceQuotaChange)
+
+-- | The unit of measurement.
+requestedServiceQuotaChange_unit :: Lens.Lens' RequestedServiceQuotaChange (Prelude.Maybe Prelude.Text)
+requestedServiceQuotaChange_unit = Lens.lens (\RequestedServiceQuotaChange' {unit} -> unit) (\s@RequestedServiceQuotaChange' {} a -> s {unit = a} :: RequestedServiceQuotaChange)
+
+instance Data.FromJSON RequestedServiceQuotaChange where
+  parseJSON =
+    Data.withObject
+      "RequestedServiceQuotaChange"
+      ( \x ->
+          RequestedServiceQuotaChange'
+            Prelude.<$> (x Data..:? "CaseId")
+            Prelude.<*> (x Data..:? "Created")
+            Prelude.<*> (x Data..:? "DesiredValue")
+            Prelude.<*> (x Data..:? "GlobalQuota")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "LastUpdated")
+            Prelude.<*> (x Data..:? "QuotaArn")
+            Prelude.<*> (x Data..:? "QuotaCode")
+            Prelude.<*> (x Data..:? "QuotaName")
+            Prelude.<*> (x Data..:? "Requester")
+            Prelude.<*> (x Data..:? "ServiceCode")
+            Prelude.<*> (x Data..:? "ServiceName")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Unit")
+      )
+
+instance Prelude.Hashable RequestedServiceQuotaChange where
+  hashWithSalt _salt RequestedServiceQuotaChange' {..} =
+    _salt
+      `Prelude.hashWithSalt` caseId
+      `Prelude.hashWithSalt` created
+      `Prelude.hashWithSalt` desiredValue
+      `Prelude.hashWithSalt` globalQuota
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` lastUpdated
+      `Prelude.hashWithSalt` quotaArn
+      `Prelude.hashWithSalt` quotaCode
+      `Prelude.hashWithSalt` quotaName
+      `Prelude.hashWithSalt` requester
+      `Prelude.hashWithSalt` serviceCode
+      `Prelude.hashWithSalt` serviceName
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` unit
+
+instance Prelude.NFData RequestedServiceQuotaChange where
+  rnf RequestedServiceQuotaChange' {..} =
+    Prelude.rnf caseId
+      `Prelude.seq` Prelude.rnf created
+      `Prelude.seq` Prelude.rnf desiredValue
+      `Prelude.seq` Prelude.rnf globalQuota
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf lastUpdated
+      `Prelude.seq` Prelude.rnf quotaArn
+      `Prelude.seq` Prelude.rnf quotaCode
+      `Prelude.seq` Prelude.rnf quotaName
+      `Prelude.seq` Prelude.rnf requester
+      `Prelude.seq` Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf serviceName
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf unit
diff --git a/gen/Amazonka/ServiceQuotas/Types/ServiceInfo.hs b/gen/Amazonka/ServiceQuotas/Types/ServiceInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/ServiceInfo.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.ServiceQuotas.Types.ServiceInfo
+-- 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.ServiceQuotas.Types.ServiceInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a service.
+--
+-- /See:/ 'newServiceInfo' smart constructor.
+data ServiceInfo = ServiceInfo'
+  { -- | The service identifier.
+    serviceCode :: Prelude.Maybe Prelude.Text,
+    -- | The service name.
+    serviceName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'serviceCode', 'serviceInfo_serviceCode' - The service identifier.
+--
+-- 'serviceName', 'serviceInfo_serviceName' - The service name.
+newServiceInfo ::
+  ServiceInfo
+newServiceInfo =
+  ServiceInfo'
+    { serviceCode = Prelude.Nothing,
+      serviceName = Prelude.Nothing
+    }
+
+-- | The service identifier.
+serviceInfo_serviceCode :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
+serviceInfo_serviceCode = Lens.lens (\ServiceInfo' {serviceCode} -> serviceCode) (\s@ServiceInfo' {} a -> s {serviceCode = a} :: ServiceInfo)
+
+-- | The service name.
+serviceInfo_serviceName :: Lens.Lens' ServiceInfo (Prelude.Maybe Prelude.Text)
+serviceInfo_serviceName = Lens.lens (\ServiceInfo' {serviceName} -> serviceName) (\s@ServiceInfo' {} a -> s {serviceName = a} :: ServiceInfo)
+
+instance Data.FromJSON ServiceInfo where
+  parseJSON =
+    Data.withObject
+      "ServiceInfo"
+      ( \x ->
+          ServiceInfo'
+            Prelude.<$> (x Data..:? "ServiceCode")
+            Prelude.<*> (x Data..:? "ServiceName")
+      )
+
+instance Prelude.Hashable ServiceInfo where
+  hashWithSalt _salt ServiceInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` serviceCode
+      `Prelude.hashWithSalt` serviceName
+
+instance Prelude.NFData ServiceInfo where
+  rnf ServiceInfo' {..} =
+    Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf serviceName
diff --git a/gen/Amazonka/ServiceQuotas/Types/ServiceQuota.hs b/gen/Amazonka/ServiceQuotas/Types/ServiceQuota.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/ServiceQuota.hs
@@ -0,0 +1,207 @@
+{-# 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.ServiceQuotas.Types.ServiceQuota
+-- 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.ServiceQuotas.Types.ServiceQuota 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
+import Amazonka.ServiceQuotas.Types.ErrorReason
+import Amazonka.ServiceQuotas.Types.MetricInfo
+import Amazonka.ServiceQuotas.Types.QuotaPeriod
+
+-- | Information about a quota.
+--
+-- /See:/ 'newServiceQuota' smart constructor.
+data ServiceQuota = ServiceQuota'
+  { -- | Indicates whether the quota value can be increased.
+    adjustable :: Prelude.Maybe Prelude.Bool,
+    -- | The error code and error reason.
+    errorReason :: Prelude.Maybe ErrorReason,
+    -- | Indicates whether the quota is global.
+    globalQuota :: Prelude.Maybe Prelude.Bool,
+    -- | The period of time.
+    period :: Prelude.Maybe QuotaPeriod,
+    -- | The Amazon Resource Name (ARN) of the quota.
+    quotaArn :: Prelude.Maybe Prelude.Text,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Maybe Prelude.Text,
+    -- | The quota name.
+    quotaName :: Prelude.Maybe Prelude.Text,
+    -- | The service identifier.
+    serviceCode :: Prelude.Maybe Prelude.Text,
+    -- | The service name.
+    serviceName :: Prelude.Maybe Prelude.Text,
+    -- | The unit of measurement.
+    unit :: Prelude.Maybe Prelude.Text,
+    -- | Information about the measurement.
+    usageMetric :: Prelude.Maybe MetricInfo,
+    -- | The quota value.
+    value :: Prelude.Maybe Prelude.Double
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceQuota' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'adjustable', 'serviceQuota_adjustable' - Indicates whether the quota value can be increased.
+--
+-- 'errorReason', 'serviceQuota_errorReason' - The error code and error reason.
+--
+-- 'globalQuota', 'serviceQuota_globalQuota' - Indicates whether the quota is global.
+--
+-- 'period', 'serviceQuota_period' - The period of time.
+--
+-- 'quotaArn', 'serviceQuota_quotaArn' - The Amazon Resource Name (ARN) of the quota.
+--
+-- 'quotaCode', 'serviceQuota_quotaCode' - The quota identifier.
+--
+-- 'quotaName', 'serviceQuota_quotaName' - The quota name.
+--
+-- 'serviceCode', 'serviceQuota_serviceCode' - The service identifier.
+--
+-- 'serviceName', 'serviceQuota_serviceName' - The service name.
+--
+-- 'unit', 'serviceQuota_unit' - The unit of measurement.
+--
+-- 'usageMetric', 'serviceQuota_usageMetric' - Information about the measurement.
+--
+-- 'value', 'serviceQuota_value' - The quota value.
+newServiceQuota ::
+  ServiceQuota
+newServiceQuota =
+  ServiceQuota'
+    { adjustable = Prelude.Nothing,
+      errorReason = Prelude.Nothing,
+      globalQuota = Prelude.Nothing,
+      period = Prelude.Nothing,
+      quotaArn = Prelude.Nothing,
+      quotaCode = Prelude.Nothing,
+      quotaName = Prelude.Nothing,
+      serviceCode = Prelude.Nothing,
+      serviceName = Prelude.Nothing,
+      unit = Prelude.Nothing,
+      usageMetric = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | Indicates whether the quota value can be increased.
+serviceQuota_adjustable :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Bool)
+serviceQuota_adjustable = Lens.lens (\ServiceQuota' {adjustable} -> adjustable) (\s@ServiceQuota' {} a -> s {adjustable = a} :: ServiceQuota)
+
+-- | The error code and error reason.
+serviceQuota_errorReason :: Lens.Lens' ServiceQuota (Prelude.Maybe ErrorReason)
+serviceQuota_errorReason = Lens.lens (\ServiceQuota' {errorReason} -> errorReason) (\s@ServiceQuota' {} a -> s {errorReason = a} :: ServiceQuota)
+
+-- | Indicates whether the quota is global.
+serviceQuota_globalQuota :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Bool)
+serviceQuota_globalQuota = Lens.lens (\ServiceQuota' {globalQuota} -> globalQuota) (\s@ServiceQuota' {} a -> s {globalQuota = a} :: ServiceQuota)
+
+-- | The period of time.
+serviceQuota_period :: Lens.Lens' ServiceQuota (Prelude.Maybe QuotaPeriod)
+serviceQuota_period = Lens.lens (\ServiceQuota' {period} -> period) (\s@ServiceQuota' {} a -> s {period = a} :: ServiceQuota)
+
+-- | The Amazon Resource Name (ARN) of the quota.
+serviceQuota_quotaArn :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Text)
+serviceQuota_quotaArn = Lens.lens (\ServiceQuota' {quotaArn} -> quotaArn) (\s@ServiceQuota' {} a -> s {quotaArn = a} :: ServiceQuota)
+
+-- | The quota identifier.
+serviceQuota_quotaCode :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Text)
+serviceQuota_quotaCode = Lens.lens (\ServiceQuota' {quotaCode} -> quotaCode) (\s@ServiceQuota' {} a -> s {quotaCode = a} :: ServiceQuota)
+
+-- | The quota name.
+serviceQuota_quotaName :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Text)
+serviceQuota_quotaName = Lens.lens (\ServiceQuota' {quotaName} -> quotaName) (\s@ServiceQuota' {} a -> s {quotaName = a} :: ServiceQuota)
+
+-- | The service identifier.
+serviceQuota_serviceCode :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Text)
+serviceQuota_serviceCode = Lens.lens (\ServiceQuota' {serviceCode} -> serviceCode) (\s@ServiceQuota' {} a -> s {serviceCode = a} :: ServiceQuota)
+
+-- | The service name.
+serviceQuota_serviceName :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Text)
+serviceQuota_serviceName = Lens.lens (\ServiceQuota' {serviceName} -> serviceName) (\s@ServiceQuota' {} a -> s {serviceName = a} :: ServiceQuota)
+
+-- | The unit of measurement.
+serviceQuota_unit :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Text)
+serviceQuota_unit = Lens.lens (\ServiceQuota' {unit} -> unit) (\s@ServiceQuota' {} a -> s {unit = a} :: ServiceQuota)
+
+-- | Information about the measurement.
+serviceQuota_usageMetric :: Lens.Lens' ServiceQuota (Prelude.Maybe MetricInfo)
+serviceQuota_usageMetric = Lens.lens (\ServiceQuota' {usageMetric} -> usageMetric) (\s@ServiceQuota' {} a -> s {usageMetric = a} :: ServiceQuota)
+
+-- | The quota value.
+serviceQuota_value :: Lens.Lens' ServiceQuota (Prelude.Maybe Prelude.Double)
+serviceQuota_value = Lens.lens (\ServiceQuota' {value} -> value) (\s@ServiceQuota' {} a -> s {value = a} :: ServiceQuota)
+
+instance Data.FromJSON ServiceQuota where
+  parseJSON =
+    Data.withObject
+      "ServiceQuota"
+      ( \x ->
+          ServiceQuota'
+            Prelude.<$> (x Data..:? "Adjustable")
+            Prelude.<*> (x Data..:? "ErrorReason")
+            Prelude.<*> (x Data..:? "GlobalQuota")
+            Prelude.<*> (x Data..:? "Period")
+            Prelude.<*> (x Data..:? "QuotaArn")
+            Prelude.<*> (x Data..:? "QuotaCode")
+            Prelude.<*> (x Data..:? "QuotaName")
+            Prelude.<*> (x Data..:? "ServiceCode")
+            Prelude.<*> (x Data..:? "ServiceName")
+            Prelude.<*> (x Data..:? "Unit")
+            Prelude.<*> (x Data..:? "UsageMetric")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable ServiceQuota where
+  hashWithSalt _salt ServiceQuota' {..} =
+    _salt
+      `Prelude.hashWithSalt` adjustable
+      `Prelude.hashWithSalt` errorReason
+      `Prelude.hashWithSalt` globalQuota
+      `Prelude.hashWithSalt` period
+      `Prelude.hashWithSalt` quotaArn
+      `Prelude.hashWithSalt` quotaCode
+      `Prelude.hashWithSalt` quotaName
+      `Prelude.hashWithSalt` serviceCode
+      `Prelude.hashWithSalt` serviceName
+      `Prelude.hashWithSalt` unit
+      `Prelude.hashWithSalt` usageMetric
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData ServiceQuota where
+  rnf ServiceQuota' {..} =
+    Prelude.rnf adjustable
+      `Prelude.seq` Prelude.rnf errorReason
+      `Prelude.seq` Prelude.rnf globalQuota
+      `Prelude.seq` Prelude.rnf period
+      `Prelude.seq` Prelude.rnf quotaArn
+      `Prelude.seq` Prelude.rnf quotaCode
+      `Prelude.seq` Prelude.rnf quotaName
+      `Prelude.seq` Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf serviceName
+      `Prelude.seq` Prelude.rnf unit
+      `Prelude.seq` Prelude.rnf usageMetric
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/ServiceQuotas/Types/ServiceQuotaIncreaseRequestInTemplate.hs b/gen/Amazonka/ServiceQuotas/Types/ServiceQuotaIncreaseRequestInTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/ServiceQuotaIncreaseRequestInTemplate.hs
@@ -0,0 +1,168 @@
+{-# 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.ServiceQuotas.Types.ServiceQuotaIncreaseRequestInTemplate
+-- 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.ServiceQuotas.Types.ServiceQuotaIncreaseRequestInTemplate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a quota increase request.
+--
+-- /See:/ 'newServiceQuotaIncreaseRequestInTemplate' smart constructor.
+data ServiceQuotaIncreaseRequestInTemplate = ServiceQuotaIncreaseRequestInTemplate'
+  { -- | The AWS Region.
+    awsRegion :: Prelude.Maybe Prelude.Text,
+    -- | The new, increased value of the quota.
+    desiredValue :: Prelude.Maybe Prelude.Double,
+    -- | Indicates whether the quota is global.
+    globalQuota :: Prelude.Maybe Prelude.Bool,
+    -- | The quota identifier.
+    quotaCode :: Prelude.Maybe Prelude.Text,
+    -- | The quota name.
+    quotaName :: Prelude.Maybe Prelude.Text,
+    -- | The service identifier.
+    serviceCode :: Prelude.Maybe Prelude.Text,
+    -- | The service name.
+    serviceName :: Prelude.Maybe Prelude.Text,
+    -- | The unit of measurement.
+    unit :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ServiceQuotaIncreaseRequestInTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsRegion', 'serviceQuotaIncreaseRequestInTemplate_awsRegion' - The AWS Region.
+--
+-- 'desiredValue', 'serviceQuotaIncreaseRequestInTemplate_desiredValue' - The new, increased value of the quota.
+--
+-- 'globalQuota', 'serviceQuotaIncreaseRequestInTemplate_globalQuota' - Indicates whether the quota is global.
+--
+-- 'quotaCode', 'serviceQuotaIncreaseRequestInTemplate_quotaCode' - The quota identifier.
+--
+-- 'quotaName', 'serviceQuotaIncreaseRequestInTemplate_quotaName' - The quota name.
+--
+-- 'serviceCode', 'serviceQuotaIncreaseRequestInTemplate_serviceCode' - The service identifier.
+--
+-- 'serviceName', 'serviceQuotaIncreaseRequestInTemplate_serviceName' - The service name.
+--
+-- 'unit', 'serviceQuotaIncreaseRequestInTemplate_unit' - The unit of measurement.
+newServiceQuotaIncreaseRequestInTemplate ::
+  ServiceQuotaIncreaseRequestInTemplate
+newServiceQuotaIncreaseRequestInTemplate =
+  ServiceQuotaIncreaseRequestInTemplate'
+    { awsRegion =
+        Prelude.Nothing,
+      desiredValue = Prelude.Nothing,
+      globalQuota = Prelude.Nothing,
+      quotaCode = Prelude.Nothing,
+      quotaName = Prelude.Nothing,
+      serviceCode = Prelude.Nothing,
+      serviceName = Prelude.Nothing,
+      unit = Prelude.Nothing
+    }
+
+-- | The AWS Region.
+serviceQuotaIncreaseRequestInTemplate_awsRegion :: Lens.Lens' ServiceQuotaIncreaseRequestInTemplate (Prelude.Maybe Prelude.Text)
+serviceQuotaIncreaseRequestInTemplate_awsRegion = Lens.lens (\ServiceQuotaIncreaseRequestInTemplate' {awsRegion} -> awsRegion) (\s@ServiceQuotaIncreaseRequestInTemplate' {} a -> s {awsRegion = a} :: ServiceQuotaIncreaseRequestInTemplate)
+
+-- | The new, increased value of the quota.
+serviceQuotaIncreaseRequestInTemplate_desiredValue :: Lens.Lens' ServiceQuotaIncreaseRequestInTemplate (Prelude.Maybe Prelude.Double)
+serviceQuotaIncreaseRequestInTemplate_desiredValue = Lens.lens (\ServiceQuotaIncreaseRequestInTemplate' {desiredValue} -> desiredValue) (\s@ServiceQuotaIncreaseRequestInTemplate' {} a -> s {desiredValue = a} :: ServiceQuotaIncreaseRequestInTemplate)
+
+-- | Indicates whether the quota is global.
+serviceQuotaIncreaseRequestInTemplate_globalQuota :: Lens.Lens' ServiceQuotaIncreaseRequestInTemplate (Prelude.Maybe Prelude.Bool)
+serviceQuotaIncreaseRequestInTemplate_globalQuota = Lens.lens (\ServiceQuotaIncreaseRequestInTemplate' {globalQuota} -> globalQuota) (\s@ServiceQuotaIncreaseRequestInTemplate' {} a -> s {globalQuota = a} :: ServiceQuotaIncreaseRequestInTemplate)
+
+-- | The quota identifier.
+serviceQuotaIncreaseRequestInTemplate_quotaCode :: Lens.Lens' ServiceQuotaIncreaseRequestInTemplate (Prelude.Maybe Prelude.Text)
+serviceQuotaIncreaseRequestInTemplate_quotaCode = Lens.lens (\ServiceQuotaIncreaseRequestInTemplate' {quotaCode} -> quotaCode) (\s@ServiceQuotaIncreaseRequestInTemplate' {} a -> s {quotaCode = a} :: ServiceQuotaIncreaseRequestInTemplate)
+
+-- | The quota name.
+serviceQuotaIncreaseRequestInTemplate_quotaName :: Lens.Lens' ServiceQuotaIncreaseRequestInTemplate (Prelude.Maybe Prelude.Text)
+serviceQuotaIncreaseRequestInTemplate_quotaName = Lens.lens (\ServiceQuotaIncreaseRequestInTemplate' {quotaName} -> quotaName) (\s@ServiceQuotaIncreaseRequestInTemplate' {} a -> s {quotaName = a} :: ServiceQuotaIncreaseRequestInTemplate)
+
+-- | The service identifier.
+serviceQuotaIncreaseRequestInTemplate_serviceCode :: Lens.Lens' ServiceQuotaIncreaseRequestInTemplate (Prelude.Maybe Prelude.Text)
+serviceQuotaIncreaseRequestInTemplate_serviceCode = Lens.lens (\ServiceQuotaIncreaseRequestInTemplate' {serviceCode} -> serviceCode) (\s@ServiceQuotaIncreaseRequestInTemplate' {} a -> s {serviceCode = a} :: ServiceQuotaIncreaseRequestInTemplate)
+
+-- | The service name.
+serviceQuotaIncreaseRequestInTemplate_serviceName :: Lens.Lens' ServiceQuotaIncreaseRequestInTemplate (Prelude.Maybe Prelude.Text)
+serviceQuotaIncreaseRequestInTemplate_serviceName = Lens.lens (\ServiceQuotaIncreaseRequestInTemplate' {serviceName} -> serviceName) (\s@ServiceQuotaIncreaseRequestInTemplate' {} a -> s {serviceName = a} :: ServiceQuotaIncreaseRequestInTemplate)
+
+-- | The unit of measurement.
+serviceQuotaIncreaseRequestInTemplate_unit :: Lens.Lens' ServiceQuotaIncreaseRequestInTemplate (Prelude.Maybe Prelude.Text)
+serviceQuotaIncreaseRequestInTemplate_unit = Lens.lens (\ServiceQuotaIncreaseRequestInTemplate' {unit} -> unit) (\s@ServiceQuotaIncreaseRequestInTemplate' {} a -> s {unit = a} :: ServiceQuotaIncreaseRequestInTemplate)
+
+instance
+  Data.FromJSON
+    ServiceQuotaIncreaseRequestInTemplate
+  where
+  parseJSON =
+    Data.withObject
+      "ServiceQuotaIncreaseRequestInTemplate"
+      ( \x ->
+          ServiceQuotaIncreaseRequestInTemplate'
+            Prelude.<$> (x Data..:? "AwsRegion")
+            Prelude.<*> (x Data..:? "DesiredValue")
+            Prelude.<*> (x Data..:? "GlobalQuota")
+            Prelude.<*> (x Data..:? "QuotaCode")
+            Prelude.<*> (x Data..:? "QuotaName")
+            Prelude.<*> (x Data..:? "ServiceCode")
+            Prelude.<*> (x Data..:? "ServiceName")
+            Prelude.<*> (x Data..:? "Unit")
+      )
+
+instance
+  Prelude.Hashable
+    ServiceQuotaIncreaseRequestInTemplate
+  where
+  hashWithSalt
+    _salt
+    ServiceQuotaIncreaseRequestInTemplate' {..} =
+      _salt
+        `Prelude.hashWithSalt` awsRegion
+        `Prelude.hashWithSalt` desiredValue
+        `Prelude.hashWithSalt` globalQuota
+        `Prelude.hashWithSalt` quotaCode
+        `Prelude.hashWithSalt` quotaName
+        `Prelude.hashWithSalt` serviceCode
+        `Prelude.hashWithSalt` serviceName
+        `Prelude.hashWithSalt` unit
+
+instance
+  Prelude.NFData
+    ServiceQuotaIncreaseRequestInTemplate
+  where
+  rnf ServiceQuotaIncreaseRequestInTemplate' {..} =
+    Prelude.rnf awsRegion
+      `Prelude.seq` Prelude.rnf desiredValue
+      `Prelude.seq` Prelude.rnf globalQuota
+      `Prelude.seq` Prelude.rnf quotaCode
+      `Prelude.seq` Prelude.rnf quotaName
+      `Prelude.seq` Prelude.rnf serviceCode
+      `Prelude.seq` Prelude.rnf serviceName
+      `Prelude.seq` Prelude.rnf unit
diff --git a/gen/Amazonka/ServiceQuotas/Types/ServiceQuotaTemplateAssociationStatus.hs b/gen/Amazonka/ServiceQuotas/Types/ServiceQuotaTemplateAssociationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/ServiceQuotaTemplateAssociationStatus.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.ServiceQuotas.Types.ServiceQuotaTemplateAssociationStatus
+-- 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.ServiceQuotas.Types.ServiceQuotaTemplateAssociationStatus
+  ( ServiceQuotaTemplateAssociationStatus
+      ( ..,
+        ServiceQuotaTemplateAssociationStatus_ASSOCIATED,
+        ServiceQuotaTemplateAssociationStatus_DISASSOCIATED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ServiceQuotaTemplateAssociationStatus = ServiceQuotaTemplateAssociationStatus'
+  { fromServiceQuotaTemplateAssociationStatus ::
+      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 ServiceQuotaTemplateAssociationStatus_ASSOCIATED :: ServiceQuotaTemplateAssociationStatus
+pattern ServiceQuotaTemplateAssociationStatus_ASSOCIATED = ServiceQuotaTemplateAssociationStatus' "ASSOCIATED"
+
+pattern ServiceQuotaTemplateAssociationStatus_DISASSOCIATED :: ServiceQuotaTemplateAssociationStatus
+pattern ServiceQuotaTemplateAssociationStatus_DISASSOCIATED = ServiceQuotaTemplateAssociationStatus' "DISASSOCIATED"
+
+{-# COMPLETE
+  ServiceQuotaTemplateAssociationStatus_ASSOCIATED,
+  ServiceQuotaTemplateAssociationStatus_DISASSOCIATED,
+  ServiceQuotaTemplateAssociationStatus'
+  #-}
diff --git a/gen/Amazonka/ServiceQuotas/Types/Tag.hs b/gen/Amazonka/ServiceQuotas/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/Types/Tag.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.ServiceQuotas.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.ServiceQuotas.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A complex data type that contains a tag key and tag value.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | A string that contains a tag key. The string length should be between 1
+    -- and 128 characters. Valid characters include a-z, A-Z, 0-9, space, and
+    -- the special characters _ - . : \/ = + \@.
+    key :: Prelude.Text,
+    -- | A string that contains an optional tag value. The string length should
+    -- be between 0 and 256 characters. Valid characters include a-z, A-Z, 0-9,
+    -- space, and the special characters _ - . : \/ = + \@.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - A string that contains a tag key. The string length should be between 1
+-- and 128 characters. Valid characters include a-z, A-Z, 0-9, space, and
+-- the special characters _ - . : \/ = + \@.
+--
+-- 'value', 'tag_value' - A string that contains an optional tag value. The string length should
+-- be between 0 and 256 characters. Valid characters include a-z, A-Z, 0-9,
+-- space, and the special characters _ - . : \/ = + \@.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | A string that contains a tag key. The string length should be between 1
+-- and 128 characters. Valid characters include a-z, A-Z, 0-9, space, and
+-- the special characters _ - . : \/ = + \@.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | A string that contains an optional tag value. The string length should
+-- be between 0 and 256 characters. Valid characters include a-z, A-Z, 0-9,
+-- space, and the special characters _ - . : \/ = + \@.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/ServiceQuotas/UntagResource.hs b/gen/Amazonka/ServiceQuotas/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/UntagResource.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ServiceQuotas.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes tags from the specified applied quota. You can specify one or
+-- more tags to remove.
+module Amazonka.ServiceQuotas.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.ServiceQuotas.Types
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) for the applied quota that you want to
+    -- untag. You can get this information by using the Service Quotas console,
+    -- or by listing the quotas using the
+    -- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+    -- AWS CLI command or the
+    -- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+    -- AWS API operation.
+    resourceARN :: Prelude.Text,
+    -- | The keys of the tags that you want to remove from the resource.
+    tagKeys :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'untagResource_resourceARN' - The Amazon Resource Name (ARN) for the applied quota that you want to
+-- untag. You can get this information by using the Service Quotas console,
+-- or by listing the quotas using the
+-- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+-- AWS CLI command or the
+-- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+-- AWS API operation.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The keys of the tags that you want to remove from the resource.
+newUntagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceARN_ =
+  UntagResource'
+    { resourceARN = pResourceARN_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) for the applied quota that you want to
+-- untag. You can get this information by using the Service Quotas console,
+-- or by listing the quotas using the
+-- <https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html list-service-quotas>
+-- AWS CLI command or the
+-- <https://docs.aws.amazon.com/servicequotas/2019-06-24/apireference/API_ListServiceQuotas.html ListServiceQuotas>
+-- AWS API operation.
+untagResource_resourceARN :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceARN = Lens.lens (\UntagResource' {resourceARN} -> resourceARN) (\s@UntagResource' {} a -> s {resourceARN = a} :: UntagResource)
+
+-- | The keys of the tags that you want to remove from the resource.
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "ServiceQuotasV20190624.UntagResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UntagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ServiceQuotas/Waiters.hs b/gen/Amazonka/ServiceQuotas/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ServiceQuotas/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.ServiceQuotas.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.ServiceQuotas.Waiters 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
+import Amazonka.ServiceQuotas.Lens
+import Amazonka.ServiceQuotas.Types
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.ServiceQuotas
+import Test.Amazonka.ServiceQuotas.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "ServiceQuotas"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/ServiceQuotas.hs b/test/Test/Amazonka/Gen/ServiceQuotas.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/ServiceQuotas.hs
@@ -0,0 +1,418 @@
+{-# 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.ServiceQuotas
+-- 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.ServiceQuotas where
+
+import Amazonka.ServiceQuotas
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.ServiceQuotas.Internal
+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"
+--         [ requestAssociateServiceQuotaTemplate $
+--             newAssociateServiceQuotaTemplate
+--
+--         , requestDeleteServiceQuotaIncreaseRequestFromTemplate $
+--             newDeleteServiceQuotaIncreaseRequestFromTemplate
+--
+--         , requestDisassociateServiceQuotaTemplate $
+--             newDisassociateServiceQuotaTemplate
+--
+--         , requestGetAWSDefaultServiceQuota $
+--             newGetAWSDefaultServiceQuota
+--
+--         , requestGetAssociationForServiceQuotaTemplate $
+--             newGetAssociationForServiceQuotaTemplate
+--
+--         , requestGetRequestedServiceQuotaChange $
+--             newGetRequestedServiceQuotaChange
+--
+--         , requestGetServiceQuota $
+--             newGetServiceQuota
+--
+--         , requestGetServiceQuotaIncreaseRequestFromTemplate $
+--             newGetServiceQuotaIncreaseRequestFromTemplate
+--
+--         , requestListAWSDefaultServiceQuotas $
+--             newListAWSDefaultServiceQuotas
+--
+--         , requestListRequestedServiceQuotaChangeHistory $
+--             newListRequestedServiceQuotaChangeHistory
+--
+--         , requestListRequestedServiceQuotaChangeHistoryByQuota $
+--             newListRequestedServiceQuotaChangeHistoryByQuota
+--
+--         , requestListServiceQuotaIncreaseRequestsInTemplate $
+--             newListServiceQuotaIncreaseRequestsInTemplate
+--
+--         , requestListServiceQuotas $
+--             newListServiceQuotas
+--
+--         , requestListServices $
+--             newListServices
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestPutServiceQuotaIncreaseRequestIntoTemplate $
+--             newPutServiceQuotaIncreaseRequestIntoTemplate
+--
+--         , requestRequestServiceQuotaIncrease $
+--             newRequestServiceQuotaIncrease
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateServiceQuotaTemplate $
+--             newAssociateServiceQuotaTemplateResponse
+--
+--         , responseDeleteServiceQuotaIncreaseRequestFromTemplate $
+--             newDeleteServiceQuotaIncreaseRequestFromTemplateResponse
+--
+--         , responseDisassociateServiceQuotaTemplate $
+--             newDisassociateServiceQuotaTemplateResponse
+--
+--         , responseGetAWSDefaultServiceQuota $
+--             newGetAWSDefaultServiceQuotaResponse
+--
+--         , responseGetAssociationForServiceQuotaTemplate $
+--             newGetAssociationForServiceQuotaTemplateResponse
+--
+--         , responseGetRequestedServiceQuotaChange $
+--             newGetRequestedServiceQuotaChangeResponse
+--
+--         , responseGetServiceQuota $
+--             newGetServiceQuotaResponse
+--
+--         , responseGetServiceQuotaIncreaseRequestFromTemplate $
+--             newGetServiceQuotaIncreaseRequestFromTemplateResponse
+--
+--         , responseListAWSDefaultServiceQuotas $
+--             newListAWSDefaultServiceQuotasResponse
+--
+--         , responseListRequestedServiceQuotaChangeHistory $
+--             newListRequestedServiceQuotaChangeHistoryResponse
+--
+--         , responseListRequestedServiceQuotaChangeHistoryByQuota $
+--             newListRequestedServiceQuotaChangeHistoryByQuotaResponse
+--
+--         , responseListServiceQuotaIncreaseRequestsInTemplate $
+--             newListServiceQuotaIncreaseRequestsInTemplateResponse
+--
+--         , responseListServiceQuotas $
+--             newListServiceQuotasResponse
+--
+--         , responseListServices $
+--             newListServicesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responsePutServiceQuotaIncreaseRequestIntoTemplate $
+--             newPutServiceQuotaIncreaseRequestIntoTemplateResponse
+--
+--         , responseRequestServiceQuotaIncrease $
+--             newRequestServiceQuotaIncreaseResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateServiceQuotaTemplate :: AssociateServiceQuotaTemplate -> TestTree
+requestAssociateServiceQuotaTemplate =
+  req
+    "AssociateServiceQuotaTemplate"
+    "fixture/AssociateServiceQuotaTemplate.yaml"
+
+requestDeleteServiceQuotaIncreaseRequestFromTemplate :: DeleteServiceQuotaIncreaseRequestFromTemplate -> TestTree
+requestDeleteServiceQuotaIncreaseRequestFromTemplate =
+  req
+    "DeleteServiceQuotaIncreaseRequestFromTemplate"
+    "fixture/DeleteServiceQuotaIncreaseRequestFromTemplate.yaml"
+
+requestDisassociateServiceQuotaTemplate :: DisassociateServiceQuotaTemplate -> TestTree
+requestDisassociateServiceQuotaTemplate =
+  req
+    "DisassociateServiceQuotaTemplate"
+    "fixture/DisassociateServiceQuotaTemplate.yaml"
+
+requestGetAWSDefaultServiceQuota :: GetAWSDefaultServiceQuota -> TestTree
+requestGetAWSDefaultServiceQuota =
+  req
+    "GetAWSDefaultServiceQuota"
+    "fixture/GetAWSDefaultServiceQuota.yaml"
+
+requestGetAssociationForServiceQuotaTemplate :: GetAssociationForServiceQuotaTemplate -> TestTree
+requestGetAssociationForServiceQuotaTemplate =
+  req
+    "GetAssociationForServiceQuotaTemplate"
+    "fixture/GetAssociationForServiceQuotaTemplate.yaml"
+
+requestGetRequestedServiceQuotaChange :: GetRequestedServiceQuotaChange -> TestTree
+requestGetRequestedServiceQuotaChange =
+  req
+    "GetRequestedServiceQuotaChange"
+    "fixture/GetRequestedServiceQuotaChange.yaml"
+
+requestGetServiceQuota :: GetServiceQuota -> TestTree
+requestGetServiceQuota =
+  req
+    "GetServiceQuota"
+    "fixture/GetServiceQuota.yaml"
+
+requestGetServiceQuotaIncreaseRequestFromTemplate :: GetServiceQuotaIncreaseRequestFromTemplate -> TestTree
+requestGetServiceQuotaIncreaseRequestFromTemplate =
+  req
+    "GetServiceQuotaIncreaseRequestFromTemplate"
+    "fixture/GetServiceQuotaIncreaseRequestFromTemplate.yaml"
+
+requestListAWSDefaultServiceQuotas :: ListAWSDefaultServiceQuotas -> TestTree
+requestListAWSDefaultServiceQuotas =
+  req
+    "ListAWSDefaultServiceQuotas"
+    "fixture/ListAWSDefaultServiceQuotas.yaml"
+
+requestListRequestedServiceQuotaChangeHistory :: ListRequestedServiceQuotaChangeHistory -> TestTree
+requestListRequestedServiceQuotaChangeHistory =
+  req
+    "ListRequestedServiceQuotaChangeHistory"
+    "fixture/ListRequestedServiceQuotaChangeHistory.yaml"
+
+requestListRequestedServiceQuotaChangeHistoryByQuota :: ListRequestedServiceQuotaChangeHistoryByQuota -> TestTree
+requestListRequestedServiceQuotaChangeHistoryByQuota =
+  req
+    "ListRequestedServiceQuotaChangeHistoryByQuota"
+    "fixture/ListRequestedServiceQuotaChangeHistoryByQuota.yaml"
+
+requestListServiceQuotaIncreaseRequestsInTemplate :: ListServiceQuotaIncreaseRequestsInTemplate -> TestTree
+requestListServiceQuotaIncreaseRequestsInTemplate =
+  req
+    "ListServiceQuotaIncreaseRequestsInTemplate"
+    "fixture/ListServiceQuotaIncreaseRequestsInTemplate.yaml"
+
+requestListServiceQuotas :: ListServiceQuotas -> TestTree
+requestListServiceQuotas =
+  req
+    "ListServiceQuotas"
+    "fixture/ListServiceQuotas.yaml"
+
+requestListServices :: ListServices -> TestTree
+requestListServices =
+  req
+    "ListServices"
+    "fixture/ListServices.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestPutServiceQuotaIncreaseRequestIntoTemplate :: PutServiceQuotaIncreaseRequestIntoTemplate -> TestTree
+requestPutServiceQuotaIncreaseRequestIntoTemplate =
+  req
+    "PutServiceQuotaIncreaseRequestIntoTemplate"
+    "fixture/PutServiceQuotaIncreaseRequestIntoTemplate.yaml"
+
+requestRequestServiceQuotaIncrease :: RequestServiceQuotaIncrease -> TestTree
+requestRequestServiceQuotaIncrease =
+  req
+    "RequestServiceQuotaIncrease"
+    "fixture/RequestServiceQuotaIncrease.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+-- Responses
+
+responseAssociateServiceQuotaTemplate :: AssociateServiceQuotaTemplateResponse -> TestTree
+responseAssociateServiceQuotaTemplate =
+  res
+    "AssociateServiceQuotaTemplateResponse"
+    "fixture/AssociateServiceQuotaTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateServiceQuotaTemplate)
+
+responseDeleteServiceQuotaIncreaseRequestFromTemplate :: DeleteServiceQuotaIncreaseRequestFromTemplateResponse -> TestTree
+responseDeleteServiceQuotaIncreaseRequestFromTemplate =
+  res
+    "DeleteServiceQuotaIncreaseRequestFromTemplateResponse"
+    "fixture/DeleteServiceQuotaIncreaseRequestFromTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteServiceQuotaIncreaseRequestFromTemplate)
+
+responseDisassociateServiceQuotaTemplate :: DisassociateServiceQuotaTemplateResponse -> TestTree
+responseDisassociateServiceQuotaTemplate =
+  res
+    "DisassociateServiceQuotaTemplateResponse"
+    "fixture/DisassociateServiceQuotaTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateServiceQuotaTemplate)
+
+responseGetAWSDefaultServiceQuota :: GetAWSDefaultServiceQuotaResponse -> TestTree
+responseGetAWSDefaultServiceQuota =
+  res
+    "GetAWSDefaultServiceQuotaResponse"
+    "fixture/GetAWSDefaultServiceQuotaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAWSDefaultServiceQuota)
+
+responseGetAssociationForServiceQuotaTemplate :: GetAssociationForServiceQuotaTemplateResponse -> TestTree
+responseGetAssociationForServiceQuotaTemplate =
+  res
+    "GetAssociationForServiceQuotaTemplateResponse"
+    "fixture/GetAssociationForServiceQuotaTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAssociationForServiceQuotaTemplate)
+
+responseGetRequestedServiceQuotaChange :: GetRequestedServiceQuotaChangeResponse -> TestTree
+responseGetRequestedServiceQuotaChange =
+  res
+    "GetRequestedServiceQuotaChangeResponse"
+    "fixture/GetRequestedServiceQuotaChangeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetRequestedServiceQuotaChange)
+
+responseGetServiceQuota :: GetServiceQuotaResponse -> TestTree
+responseGetServiceQuota =
+  res
+    "GetServiceQuotaResponse"
+    "fixture/GetServiceQuotaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetServiceQuota)
+
+responseGetServiceQuotaIncreaseRequestFromTemplate :: GetServiceQuotaIncreaseRequestFromTemplateResponse -> TestTree
+responseGetServiceQuotaIncreaseRequestFromTemplate =
+  res
+    "GetServiceQuotaIncreaseRequestFromTemplateResponse"
+    "fixture/GetServiceQuotaIncreaseRequestFromTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetServiceQuotaIncreaseRequestFromTemplate)
+
+responseListAWSDefaultServiceQuotas :: ListAWSDefaultServiceQuotasResponse -> TestTree
+responseListAWSDefaultServiceQuotas =
+  res
+    "ListAWSDefaultServiceQuotasResponse"
+    "fixture/ListAWSDefaultServiceQuotasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListAWSDefaultServiceQuotas)
+
+responseListRequestedServiceQuotaChangeHistory :: ListRequestedServiceQuotaChangeHistoryResponse -> TestTree
+responseListRequestedServiceQuotaChangeHistory =
+  res
+    "ListRequestedServiceQuotaChangeHistoryResponse"
+    "fixture/ListRequestedServiceQuotaChangeHistoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRequestedServiceQuotaChangeHistory)
+
+responseListRequestedServiceQuotaChangeHistoryByQuota :: ListRequestedServiceQuotaChangeHistoryByQuotaResponse -> TestTree
+responseListRequestedServiceQuotaChangeHistoryByQuota =
+  res
+    "ListRequestedServiceQuotaChangeHistoryByQuotaResponse"
+    "fixture/ListRequestedServiceQuotaChangeHistoryByQuotaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRequestedServiceQuotaChangeHistoryByQuota)
+
+responseListServiceQuotaIncreaseRequestsInTemplate :: ListServiceQuotaIncreaseRequestsInTemplateResponse -> TestTree
+responseListServiceQuotaIncreaseRequestsInTemplate =
+  res
+    "ListServiceQuotaIncreaseRequestsInTemplateResponse"
+    "fixture/ListServiceQuotaIncreaseRequestsInTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListServiceQuotaIncreaseRequestsInTemplate)
+
+responseListServiceQuotas :: ListServiceQuotasResponse -> TestTree
+responseListServiceQuotas =
+  res
+    "ListServiceQuotasResponse"
+    "fixture/ListServiceQuotasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListServiceQuotas)
+
+responseListServices :: ListServicesResponse -> TestTree
+responseListServices =
+  res
+    "ListServicesResponse"
+    "fixture/ListServicesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListServices)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responsePutServiceQuotaIncreaseRequestIntoTemplate :: PutServiceQuotaIncreaseRequestIntoTemplateResponse -> TestTree
+responsePutServiceQuotaIncreaseRequestIntoTemplate =
+  res
+    "PutServiceQuotaIncreaseRequestIntoTemplateResponse"
+    "fixture/PutServiceQuotaIncreaseRequestIntoTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutServiceQuotaIncreaseRequestIntoTemplate)
+
+responseRequestServiceQuotaIncrease :: RequestServiceQuotaIncreaseResponse -> TestTree
+responseRequestServiceQuotaIncrease =
+  res
+    "RequestServiceQuotaIncreaseResponse"
+    "fixture/RequestServiceQuotaIncreaseResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RequestServiceQuotaIncrease)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
diff --git a/test/Test/Amazonka/ServiceQuotas.hs b/test/Test/Amazonka/ServiceQuotas.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ServiceQuotas.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.ServiceQuotas
+-- 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.ServiceQuotas
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/ServiceQuotas/Internal.hs b/test/Test/Amazonka/ServiceQuotas/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ServiceQuotas/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.ServiceQuotas.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.ServiceQuotas.Internal where
