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 Schemas SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2019-12-02@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-schemas)
+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.Schemas](http://hackage.haskell.org/package/amazonka-schemas/docs/Amazonka-Schemas.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-schemas` 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-schemas.cabal b/amazonka-schemas.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-schemas.cabal
@@ -0,0 +1,123 @@
+cabal-version:      2.2
+name:               amazonka-schemas
+version:            2.0
+synopsis:           Amazon Schemas 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-12-02@ 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.Schemas.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.Schemas" 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-schemas
+
+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.Schemas
+    Amazonka.Schemas.CreateDiscoverer
+    Amazonka.Schemas.CreateRegistry
+    Amazonka.Schemas.CreateSchema
+    Amazonka.Schemas.DeleteDiscoverer
+    Amazonka.Schemas.DeleteRegistry
+    Amazonka.Schemas.DeleteResourcePolicy
+    Amazonka.Schemas.DeleteSchema
+    Amazonka.Schemas.DeleteSchemaVersion
+    Amazonka.Schemas.DescribeCodeBinding
+    Amazonka.Schemas.DescribeDiscoverer
+    Amazonka.Schemas.DescribeRegistry
+    Amazonka.Schemas.DescribeSchema
+    Amazonka.Schemas.ExportSchema
+    Amazonka.Schemas.GetCodeBindingSource
+    Amazonka.Schemas.GetDiscoveredSchema
+    Amazonka.Schemas.GetResourcePolicy
+    Amazonka.Schemas.Lens
+    Amazonka.Schemas.ListDiscoverers
+    Amazonka.Schemas.ListRegistries
+    Amazonka.Schemas.ListSchemas
+    Amazonka.Schemas.ListSchemaVersions
+    Amazonka.Schemas.ListTagsForResource
+    Amazonka.Schemas.PutCodeBinding
+    Amazonka.Schemas.PutResourcePolicy
+    Amazonka.Schemas.SearchSchemas
+    Amazonka.Schemas.StartDiscoverer
+    Amazonka.Schemas.StopDiscoverer
+    Amazonka.Schemas.TagResource
+    Amazonka.Schemas.Types
+    Amazonka.Schemas.Types.CodeGenerationStatus
+    Amazonka.Schemas.Types.DiscovererState
+    Amazonka.Schemas.Types.DiscovererSummary
+    Amazonka.Schemas.Types.RegistrySummary
+    Amazonka.Schemas.Types.SchemaSummary
+    Amazonka.Schemas.Types.SchemaVersionSummary
+    Amazonka.Schemas.Types.SearchSchemaSummary
+    Amazonka.Schemas.Types.SearchSchemaVersionSummary
+    Amazonka.Schemas.Types.Type
+    Amazonka.Schemas.UntagResource
+    Amazonka.Schemas.UpdateDiscoverer
+    Amazonka.Schemas.UpdateRegistry
+    Amazonka.Schemas.UpdateSchema
+    Amazonka.Schemas.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-schemas-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.Schemas
+    Test.Amazonka.Schemas
+    Test.Amazonka.Schemas.Internal
+
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-schemas
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreateDiscoverer.yaml b/fixture/CreateDiscoverer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDiscoverer.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/CreateDiscovererResponse.proto b/fixture/CreateDiscovererResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDiscovererResponse.proto
diff --git a/fixture/CreateRegistry.yaml b/fixture/CreateRegistry.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRegistry.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/CreateRegistryResponse.proto b/fixture/CreateRegistryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRegistryResponse.proto
diff --git a/fixture/CreateSchema.yaml b/fixture/CreateSchema.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSchema.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/CreateSchemaResponse.proto b/fixture/CreateSchemaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateSchemaResponse.proto
diff --git a/fixture/DeleteDiscoverer.yaml b/fixture/DeleteDiscoverer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDiscoverer.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DeleteDiscovererResponse.proto b/fixture/DeleteDiscovererResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDiscovererResponse.proto
diff --git a/fixture/DeleteRegistry.yaml b/fixture/DeleteRegistry.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRegistry.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DeleteRegistryResponse.proto b/fixture/DeleteRegistryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRegistryResponse.proto
diff --git a/fixture/DeleteResourcePolicy.yaml b/fixture/DeleteResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DeleteResourcePolicyResponse.proto b/fixture/DeleteResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourcePolicyResponse.proto
diff --git a/fixture/DeleteSchema.yaml b/fixture/DeleteSchema.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSchema.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DeleteSchemaResponse.proto b/fixture/DeleteSchemaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSchemaResponse.proto
diff --git a/fixture/DeleteSchemaVersion.yaml b/fixture/DeleteSchemaVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSchemaVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DeleteSchemaVersionResponse.proto b/fixture/DeleteSchemaVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteSchemaVersionResponse.proto
diff --git a/fixture/DescribeCodeBinding.yaml b/fixture/DescribeCodeBinding.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCodeBinding.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DescribeCodeBindingResponse.proto b/fixture/DescribeCodeBindingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCodeBindingResponse.proto
diff --git a/fixture/DescribeDiscoverer.yaml b/fixture/DescribeDiscoverer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDiscoverer.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DescribeDiscovererResponse.proto b/fixture/DescribeDiscovererResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeDiscovererResponse.proto
diff --git a/fixture/DescribeRegistry.yaml b/fixture/DescribeRegistry.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRegistry.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DescribeRegistryResponse.proto b/fixture/DescribeRegistryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRegistryResponse.proto
diff --git a/fixture/DescribeSchema.yaml b/fixture/DescribeSchema.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSchema.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/DescribeSchemaResponse.proto b/fixture/DescribeSchemaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeSchemaResponse.proto
diff --git a/fixture/ExportSchema.yaml b/fixture/ExportSchema.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ExportSchema.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/ExportSchemaResponse.proto b/fixture/ExportSchemaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ExportSchemaResponse.proto
diff --git a/fixture/GetCodeBindingSource.yaml b/fixture/GetCodeBindingSource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetCodeBindingSource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/GetCodeBindingSourceResponse.proto b/fixture/GetCodeBindingSourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetCodeBindingSourceResponse.proto
diff --git a/fixture/GetDiscoveredSchema.yaml b/fixture/GetDiscoveredSchema.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDiscoveredSchema.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/GetDiscoveredSchemaResponse.proto b/fixture/GetDiscoveredSchemaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDiscoveredSchemaResponse.proto
diff --git a/fixture/GetResourcePolicy.yaml b/fixture/GetResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/GetResourcePolicyResponse.proto b/fixture/GetResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcePolicyResponse.proto
diff --git a/fixture/ListDiscoverers.yaml b/fixture/ListDiscoverers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListDiscoverers.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/ListDiscoverersResponse.proto b/fixture/ListDiscoverersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListDiscoverersResponse.proto
diff --git a/fixture/ListRegistries.yaml b/fixture/ListRegistries.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRegistries.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/ListRegistriesResponse.proto b/fixture/ListRegistriesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRegistriesResponse.proto
diff --git a/fixture/ListSchemaVersions.yaml b/fixture/ListSchemaVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSchemaVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/ListSchemaVersionsResponse.proto b/fixture/ListSchemaVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSchemaVersionsResponse.proto
diff --git a/fixture/ListSchemas.yaml b/fixture/ListSchemas.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListSchemas.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/ListSchemasResponse.proto b/fixture/ListSchemasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListSchemasResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/PutCodeBinding.yaml b/fixture/PutCodeBinding.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutCodeBinding.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/PutCodeBindingResponse.proto b/fixture/PutCodeBindingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutCodeBindingResponse.proto
diff --git a/fixture/PutResourcePolicy.yaml b/fixture/PutResourcePolicy.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutResourcePolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/PutResourcePolicyResponse.proto b/fixture/PutResourcePolicyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutResourcePolicyResponse.proto
diff --git a/fixture/SearchSchemas.yaml b/fixture/SearchSchemas.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SearchSchemas.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/SearchSchemasResponse.proto b/fixture/SearchSchemasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SearchSchemasResponse.proto
diff --git a/fixture/StartDiscoverer.yaml b/fixture/StartDiscoverer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartDiscoverer.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/StartDiscovererResponse.proto b/fixture/StartDiscovererResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartDiscovererResponse.proto
diff --git a/fixture/StopDiscoverer.yaml b/fixture/StopDiscoverer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopDiscoverer.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/StopDiscovererResponse.proto b/fixture/StopDiscovererResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopDiscovererResponse.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/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/fixture/UpdateDiscoverer.yaml b/fixture/UpdateDiscoverer.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDiscoverer.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/UpdateDiscovererResponse.proto b/fixture/UpdateDiscovererResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDiscovererResponse.proto
diff --git a/fixture/UpdateRegistry.yaml b/fixture/UpdateRegistry.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRegistry.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/UpdateRegistryResponse.proto b/fixture/UpdateRegistryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRegistryResponse.proto
diff --git a/fixture/UpdateSchema.yaml b/fixture/UpdateSchema.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSchema.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/schemas/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  schemas.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/UpdateSchemaResponse.proto b/fixture/UpdateSchemaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateSchemaResponse.proto
diff --git a/gen/Amazonka/Schemas.hs b/gen/Amazonka/Schemas.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas.hs
@@ -0,0 +1,344 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.Schemas
+-- 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-12-02@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon EventBridge Schema Registry
+module Amazonka.Schemas
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** BadRequestException
+    _BadRequestException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** ForbiddenException
+    _ForbiddenException,
+
+    -- ** GoneException
+    _GoneException,
+
+    -- ** InternalServerErrorException
+    _InternalServerErrorException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** PreconditionFailedException
+    _PreconditionFailedException,
+
+    -- ** ServiceUnavailableException
+    _ServiceUnavailableException,
+
+    -- ** TooManyRequestsException
+    _TooManyRequestsException,
+
+    -- ** UnauthorizedException
+    _UnauthorizedException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- ** CodeBindingExists
+    newCodeBindingExists,
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreateDiscoverer
+    CreateDiscoverer (CreateDiscoverer'),
+    newCreateDiscoverer,
+    CreateDiscovererResponse (CreateDiscovererResponse'),
+    newCreateDiscovererResponse,
+
+    -- ** CreateRegistry
+    CreateRegistry (CreateRegistry'),
+    newCreateRegistry,
+    CreateRegistryResponse (CreateRegistryResponse'),
+    newCreateRegistryResponse,
+
+    -- ** CreateSchema
+    CreateSchema (CreateSchema'),
+    newCreateSchema,
+    CreateSchemaResponse (CreateSchemaResponse'),
+    newCreateSchemaResponse,
+
+    -- ** DeleteDiscoverer
+    DeleteDiscoverer (DeleteDiscoverer'),
+    newDeleteDiscoverer,
+    DeleteDiscovererResponse (DeleteDiscovererResponse'),
+    newDeleteDiscovererResponse,
+
+    -- ** DeleteRegistry
+    DeleteRegistry (DeleteRegistry'),
+    newDeleteRegistry,
+    DeleteRegistryResponse (DeleteRegistryResponse'),
+    newDeleteRegistryResponse,
+
+    -- ** DeleteResourcePolicy
+    DeleteResourcePolicy (DeleteResourcePolicy'),
+    newDeleteResourcePolicy,
+    DeleteResourcePolicyResponse (DeleteResourcePolicyResponse'),
+    newDeleteResourcePolicyResponse,
+
+    -- ** DeleteSchema
+    DeleteSchema (DeleteSchema'),
+    newDeleteSchema,
+    DeleteSchemaResponse (DeleteSchemaResponse'),
+    newDeleteSchemaResponse,
+
+    -- ** DeleteSchemaVersion
+    DeleteSchemaVersion (DeleteSchemaVersion'),
+    newDeleteSchemaVersion,
+    DeleteSchemaVersionResponse (DeleteSchemaVersionResponse'),
+    newDeleteSchemaVersionResponse,
+
+    -- ** DescribeCodeBinding
+    DescribeCodeBinding (DescribeCodeBinding'),
+    newDescribeCodeBinding,
+    DescribeCodeBindingResponse (DescribeCodeBindingResponse'),
+    newDescribeCodeBindingResponse,
+
+    -- ** DescribeDiscoverer
+    DescribeDiscoverer (DescribeDiscoverer'),
+    newDescribeDiscoverer,
+    DescribeDiscovererResponse (DescribeDiscovererResponse'),
+    newDescribeDiscovererResponse,
+
+    -- ** DescribeRegistry
+    DescribeRegistry (DescribeRegistry'),
+    newDescribeRegistry,
+    DescribeRegistryResponse (DescribeRegistryResponse'),
+    newDescribeRegistryResponse,
+
+    -- ** DescribeSchema
+    DescribeSchema (DescribeSchema'),
+    newDescribeSchema,
+    DescribeSchemaResponse (DescribeSchemaResponse'),
+    newDescribeSchemaResponse,
+
+    -- ** ExportSchema
+    ExportSchema (ExportSchema'),
+    newExportSchema,
+    ExportSchemaResponse (ExportSchemaResponse'),
+    newExportSchemaResponse,
+
+    -- ** GetCodeBindingSource
+    GetCodeBindingSource (GetCodeBindingSource'),
+    newGetCodeBindingSource,
+    GetCodeBindingSourceResponse (GetCodeBindingSourceResponse'),
+    newGetCodeBindingSourceResponse,
+
+    -- ** GetDiscoveredSchema
+    GetDiscoveredSchema (GetDiscoveredSchema'),
+    newGetDiscoveredSchema,
+    GetDiscoveredSchemaResponse (GetDiscoveredSchemaResponse'),
+    newGetDiscoveredSchemaResponse,
+
+    -- ** GetResourcePolicy
+    GetResourcePolicy (GetResourcePolicy'),
+    newGetResourcePolicy,
+    GetResourcePolicyResponse (GetResourcePolicyResponse'),
+    newGetResourcePolicyResponse,
+
+    -- ** ListDiscoverers (Paginated)
+    ListDiscoverers (ListDiscoverers'),
+    newListDiscoverers,
+    ListDiscoverersResponse (ListDiscoverersResponse'),
+    newListDiscoverersResponse,
+
+    -- ** ListRegistries (Paginated)
+    ListRegistries (ListRegistries'),
+    newListRegistries,
+    ListRegistriesResponse (ListRegistriesResponse'),
+    newListRegistriesResponse,
+
+    -- ** ListSchemaVersions (Paginated)
+    ListSchemaVersions (ListSchemaVersions'),
+    newListSchemaVersions,
+    ListSchemaVersionsResponse (ListSchemaVersionsResponse'),
+    newListSchemaVersionsResponse,
+
+    -- ** ListSchemas (Paginated)
+    ListSchemas (ListSchemas'),
+    newListSchemas,
+    ListSchemasResponse (ListSchemasResponse'),
+    newListSchemasResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** PutCodeBinding
+    PutCodeBinding (PutCodeBinding'),
+    newPutCodeBinding,
+    PutCodeBindingResponse (PutCodeBindingResponse'),
+    newPutCodeBindingResponse,
+
+    -- ** PutResourcePolicy
+    PutResourcePolicy (PutResourcePolicy'),
+    newPutResourcePolicy,
+    PutResourcePolicyResponse (PutResourcePolicyResponse'),
+    newPutResourcePolicyResponse,
+
+    -- ** SearchSchemas (Paginated)
+    SearchSchemas (SearchSchemas'),
+    newSearchSchemas,
+    SearchSchemasResponse (SearchSchemasResponse'),
+    newSearchSchemasResponse,
+
+    -- ** StartDiscoverer
+    StartDiscoverer (StartDiscoverer'),
+    newStartDiscoverer,
+    StartDiscovererResponse (StartDiscovererResponse'),
+    newStartDiscovererResponse,
+
+    -- ** StopDiscoverer
+    StopDiscoverer (StopDiscoverer'),
+    newStopDiscoverer,
+    StopDiscovererResponse (StopDiscovererResponse'),
+    newStopDiscovererResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateDiscoverer
+    UpdateDiscoverer (UpdateDiscoverer'),
+    newUpdateDiscoverer,
+    UpdateDiscovererResponse (UpdateDiscovererResponse'),
+    newUpdateDiscovererResponse,
+
+    -- ** UpdateRegistry
+    UpdateRegistry (UpdateRegistry'),
+    newUpdateRegistry,
+    UpdateRegistryResponse (UpdateRegistryResponse'),
+    newUpdateRegistryResponse,
+
+    -- ** UpdateSchema
+    UpdateSchema (UpdateSchema'),
+    newUpdateSchema,
+    UpdateSchemaResponse (UpdateSchemaResponse'),
+    newUpdateSchemaResponse,
+
+    -- * Types
+
+    -- ** CodeGenerationStatus
+    CodeGenerationStatus (..),
+
+    -- ** DiscovererState
+    DiscovererState (..),
+
+    -- ** Type
+    Type (..),
+
+    -- ** DiscovererSummary
+    DiscovererSummary (DiscovererSummary'),
+    newDiscovererSummary,
+
+    -- ** RegistrySummary
+    RegistrySummary (RegistrySummary'),
+    newRegistrySummary,
+
+    -- ** SchemaSummary
+    SchemaSummary (SchemaSummary'),
+    newSchemaSummary,
+
+    -- ** SchemaVersionSummary
+    SchemaVersionSummary (SchemaVersionSummary'),
+    newSchemaVersionSummary,
+
+    -- ** SearchSchemaSummary
+    SearchSchemaSummary (SearchSchemaSummary'),
+    newSearchSchemaSummary,
+
+    -- ** SearchSchemaVersionSummary
+    SearchSchemaVersionSummary (SearchSchemaVersionSummary'),
+    newSearchSchemaVersionSummary,
+  )
+where
+
+import Amazonka.Schemas.CreateDiscoverer
+import Amazonka.Schemas.CreateRegistry
+import Amazonka.Schemas.CreateSchema
+import Amazonka.Schemas.DeleteDiscoverer
+import Amazonka.Schemas.DeleteRegistry
+import Amazonka.Schemas.DeleteResourcePolicy
+import Amazonka.Schemas.DeleteSchema
+import Amazonka.Schemas.DeleteSchemaVersion
+import Amazonka.Schemas.DescribeCodeBinding
+import Amazonka.Schemas.DescribeDiscoverer
+import Amazonka.Schemas.DescribeRegistry
+import Amazonka.Schemas.DescribeSchema
+import Amazonka.Schemas.ExportSchema
+import Amazonka.Schemas.GetCodeBindingSource
+import Amazonka.Schemas.GetDiscoveredSchema
+import Amazonka.Schemas.GetResourcePolicy
+import Amazonka.Schemas.Lens
+import Amazonka.Schemas.ListDiscoverers
+import Amazonka.Schemas.ListRegistries
+import Amazonka.Schemas.ListSchemaVersions
+import Amazonka.Schemas.ListSchemas
+import Amazonka.Schemas.ListTagsForResource
+import Amazonka.Schemas.PutCodeBinding
+import Amazonka.Schemas.PutResourcePolicy
+import Amazonka.Schemas.SearchSchemas
+import Amazonka.Schemas.StartDiscoverer
+import Amazonka.Schemas.StopDiscoverer
+import Amazonka.Schemas.TagResource
+import Amazonka.Schemas.Types
+import Amazonka.Schemas.UntagResource
+import Amazonka.Schemas.UpdateDiscoverer
+import Amazonka.Schemas.UpdateRegistry
+import Amazonka.Schemas.UpdateSchema
+import Amazonka.Schemas.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 'Schemas'.
+
+-- $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/Schemas/CreateDiscoverer.hs b/gen/Amazonka/Schemas/CreateDiscoverer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/CreateDiscoverer.hs
@@ -0,0 +1,288 @@
+{-# 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.Schemas.CreateDiscoverer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a discoverer.
+module Amazonka.Schemas.CreateDiscoverer
+  ( -- * Creating a Request
+    CreateDiscoverer (..),
+    newCreateDiscoverer,
+
+    -- * Request Lenses
+    createDiscoverer_crossAccount,
+    createDiscoverer_description,
+    createDiscoverer_tags,
+    createDiscoverer_sourceArn,
+
+    -- * Destructuring the Response
+    CreateDiscovererResponse (..),
+    newCreateDiscovererResponse,
+
+    -- * Response Lenses
+    createDiscovererResponse_crossAccount,
+    createDiscovererResponse_description,
+    createDiscovererResponse_discovererArn,
+    createDiscovererResponse_discovererId,
+    createDiscovererResponse_sourceArn,
+    createDiscovererResponse_state,
+    createDiscovererResponse_tags,
+    createDiscovererResponse_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.Schemas.Types
+
+-- |
+--
+-- /See:/ 'newCreateDiscoverer' smart constructor.
+data CreateDiscoverer = CreateDiscoverer'
+  { -- | Support discovery of schemas in events sent to the bus from another
+    -- account. (default: true).
+    crossAccount :: Prelude.Maybe Prelude.Bool,
+    -- | A description for the discoverer.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Tags associated with the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The ARN of the event bus.
+    sourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDiscoverer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'crossAccount', 'createDiscoverer_crossAccount' - Support discovery of schemas in events sent to the bus from another
+-- account. (default: true).
+--
+-- 'description', 'createDiscoverer_description' - A description for the discoverer.
+--
+-- 'tags', 'createDiscoverer_tags' - Tags associated with the resource.
+--
+-- 'sourceArn', 'createDiscoverer_sourceArn' - The ARN of the event bus.
+newCreateDiscoverer ::
+  -- | 'sourceArn'
+  Prelude.Text ->
+  CreateDiscoverer
+newCreateDiscoverer pSourceArn_ =
+  CreateDiscoverer'
+    { crossAccount = Prelude.Nothing,
+      description = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      sourceArn = pSourceArn_
+    }
+
+-- | Support discovery of schemas in events sent to the bus from another
+-- account. (default: true).
+createDiscoverer_crossAccount :: Lens.Lens' CreateDiscoverer (Prelude.Maybe Prelude.Bool)
+createDiscoverer_crossAccount = Lens.lens (\CreateDiscoverer' {crossAccount} -> crossAccount) (\s@CreateDiscoverer' {} a -> s {crossAccount = a} :: CreateDiscoverer)
+
+-- | A description for the discoverer.
+createDiscoverer_description :: Lens.Lens' CreateDiscoverer (Prelude.Maybe Prelude.Text)
+createDiscoverer_description = Lens.lens (\CreateDiscoverer' {description} -> description) (\s@CreateDiscoverer' {} a -> s {description = a} :: CreateDiscoverer)
+
+-- | Tags associated with the resource.
+createDiscoverer_tags :: Lens.Lens' CreateDiscoverer (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createDiscoverer_tags = Lens.lens (\CreateDiscoverer' {tags} -> tags) (\s@CreateDiscoverer' {} a -> s {tags = a} :: CreateDiscoverer) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the event bus.
+createDiscoverer_sourceArn :: Lens.Lens' CreateDiscoverer Prelude.Text
+createDiscoverer_sourceArn = Lens.lens (\CreateDiscoverer' {sourceArn} -> sourceArn) (\s@CreateDiscoverer' {} a -> s {sourceArn = a} :: CreateDiscoverer)
+
+instance Core.AWSRequest CreateDiscoverer where
+  type
+    AWSResponse CreateDiscoverer =
+      CreateDiscovererResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateDiscovererResponse'
+            Prelude.<$> (x Data..?> "CrossAccount")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DiscovererArn")
+            Prelude.<*> (x Data..?> "DiscovererId")
+            Prelude.<*> (x Data..?> "SourceArn")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateDiscoverer where
+  hashWithSalt _salt CreateDiscoverer' {..} =
+    _salt
+      `Prelude.hashWithSalt` crossAccount
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` sourceArn
+
+instance Prelude.NFData CreateDiscoverer where
+  rnf CreateDiscoverer' {..} =
+    Prelude.rnf crossAccount
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf sourceArn
+
+instance Data.ToHeaders CreateDiscoverer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateDiscoverer where
+  toJSON CreateDiscoverer' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CrossAccount" Data..=) Prelude.<$> crossAccount,
+            ("Description" Data..=) Prelude.<$> description,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("SourceArn" Data..= sourceArn)
+          ]
+      )
+
+instance Data.ToPath CreateDiscoverer where
+  toPath = Prelude.const "/v1/discoverers"
+
+instance Data.ToQuery CreateDiscoverer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateDiscovererResponse' smart constructor.
+data CreateDiscovererResponse = CreateDiscovererResponse'
+  { -- | The Status if the discoverer will discover schemas from events sent from
+    -- another account.
+    crossAccount :: Prelude.Maybe Prelude.Bool,
+    -- | The description of the discoverer.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the discoverer.
+    discovererArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the discoverer.
+    discovererId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the event bus.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The state of the discoverer.
+    state :: Prelude.Maybe DiscovererState,
+    -- | Tags associated with the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateDiscovererResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'crossAccount', 'createDiscovererResponse_crossAccount' - The Status if the discoverer will discover schemas from events sent from
+-- another account.
+--
+-- 'description', 'createDiscovererResponse_description' - The description of the discoverer.
+--
+-- 'discovererArn', 'createDiscovererResponse_discovererArn' - The ARN of the discoverer.
+--
+-- 'discovererId', 'createDiscovererResponse_discovererId' - The ID of the discoverer.
+--
+-- 'sourceArn', 'createDiscovererResponse_sourceArn' - The ARN of the event bus.
+--
+-- 'state', 'createDiscovererResponse_state' - The state of the discoverer.
+--
+-- 'tags', 'createDiscovererResponse_tags' - Tags associated with the resource.
+--
+-- 'httpStatus', 'createDiscovererResponse_httpStatus' - The response's http status code.
+newCreateDiscovererResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateDiscovererResponse
+newCreateDiscovererResponse pHttpStatus_ =
+  CreateDiscovererResponse'
+    { crossAccount =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      discovererArn = Prelude.Nothing,
+      discovererId = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Status if the discoverer will discover schemas from events sent from
+-- another account.
+createDiscovererResponse_crossAccount :: Lens.Lens' CreateDiscovererResponse (Prelude.Maybe Prelude.Bool)
+createDiscovererResponse_crossAccount = Lens.lens (\CreateDiscovererResponse' {crossAccount} -> crossAccount) (\s@CreateDiscovererResponse' {} a -> s {crossAccount = a} :: CreateDiscovererResponse)
+
+-- | The description of the discoverer.
+createDiscovererResponse_description :: Lens.Lens' CreateDiscovererResponse (Prelude.Maybe Prelude.Text)
+createDiscovererResponse_description = Lens.lens (\CreateDiscovererResponse' {description} -> description) (\s@CreateDiscovererResponse' {} a -> s {description = a} :: CreateDiscovererResponse)
+
+-- | The ARN of the discoverer.
+createDiscovererResponse_discovererArn :: Lens.Lens' CreateDiscovererResponse (Prelude.Maybe Prelude.Text)
+createDiscovererResponse_discovererArn = Lens.lens (\CreateDiscovererResponse' {discovererArn} -> discovererArn) (\s@CreateDiscovererResponse' {} a -> s {discovererArn = a} :: CreateDiscovererResponse)
+
+-- | The ID of the discoverer.
+createDiscovererResponse_discovererId :: Lens.Lens' CreateDiscovererResponse (Prelude.Maybe Prelude.Text)
+createDiscovererResponse_discovererId = Lens.lens (\CreateDiscovererResponse' {discovererId} -> discovererId) (\s@CreateDiscovererResponse' {} a -> s {discovererId = a} :: CreateDiscovererResponse)
+
+-- | The ARN of the event bus.
+createDiscovererResponse_sourceArn :: Lens.Lens' CreateDiscovererResponse (Prelude.Maybe Prelude.Text)
+createDiscovererResponse_sourceArn = Lens.lens (\CreateDiscovererResponse' {sourceArn} -> sourceArn) (\s@CreateDiscovererResponse' {} a -> s {sourceArn = a} :: CreateDiscovererResponse)
+
+-- | The state of the discoverer.
+createDiscovererResponse_state :: Lens.Lens' CreateDiscovererResponse (Prelude.Maybe DiscovererState)
+createDiscovererResponse_state = Lens.lens (\CreateDiscovererResponse' {state} -> state) (\s@CreateDiscovererResponse' {} a -> s {state = a} :: CreateDiscovererResponse)
+
+-- | Tags associated with the resource.
+createDiscovererResponse_tags :: Lens.Lens' CreateDiscovererResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createDiscovererResponse_tags = Lens.lens (\CreateDiscovererResponse' {tags} -> tags) (\s@CreateDiscovererResponse' {} a -> s {tags = a} :: CreateDiscovererResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+createDiscovererResponse_httpStatus :: Lens.Lens' CreateDiscovererResponse Prelude.Int
+createDiscovererResponse_httpStatus = Lens.lens (\CreateDiscovererResponse' {httpStatus} -> httpStatus) (\s@CreateDiscovererResponse' {} a -> s {httpStatus = a} :: CreateDiscovererResponse)
+
+instance Prelude.NFData CreateDiscovererResponse where
+  rnf CreateDiscovererResponse' {..} =
+    Prelude.rnf crossAccount
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf discovererArn
+      `Prelude.seq` Prelude.rnf discovererId
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/CreateRegistry.hs b/gen/Amazonka/Schemas/CreateRegistry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/CreateRegistry.hs
@@ -0,0 +1,232 @@
+{-# 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.Schemas.CreateRegistry
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a registry.
+module Amazonka.Schemas.CreateRegistry
+  ( -- * Creating a Request
+    CreateRegistry (..),
+    newCreateRegistry,
+
+    -- * Request Lenses
+    createRegistry_description,
+    createRegistry_tags,
+    createRegistry_registryName,
+
+    -- * Destructuring the Response
+    CreateRegistryResponse (..),
+    newCreateRegistryResponse,
+
+    -- * Response Lenses
+    createRegistryResponse_description,
+    createRegistryResponse_registryArn,
+    createRegistryResponse_registryName,
+    createRegistryResponse_tags,
+    createRegistryResponse_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.Schemas.Types
+
+-- | /See:/ 'newCreateRegistry' smart constructor.
+data CreateRegistry = CreateRegistry'
+  { -- | A description of the registry to be created.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Tags to associate with the registry.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The name of the registry.
+    registryName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateRegistry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'createRegistry_description' - A description of the registry to be created.
+--
+-- 'tags', 'createRegistry_tags' - Tags to associate with the registry.
+--
+-- 'registryName', 'createRegistry_registryName' - The name of the registry.
+newCreateRegistry ::
+  -- | 'registryName'
+  Prelude.Text ->
+  CreateRegistry
+newCreateRegistry pRegistryName_ =
+  CreateRegistry'
+    { description = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      registryName = pRegistryName_
+    }
+
+-- | A description of the registry to be created.
+createRegistry_description :: Lens.Lens' CreateRegistry (Prelude.Maybe Prelude.Text)
+createRegistry_description = Lens.lens (\CreateRegistry' {description} -> description) (\s@CreateRegistry' {} a -> s {description = a} :: CreateRegistry)
+
+-- | Tags to associate with the registry.
+createRegistry_tags :: Lens.Lens' CreateRegistry (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createRegistry_tags = Lens.lens (\CreateRegistry' {tags} -> tags) (\s@CreateRegistry' {} a -> s {tags = a} :: CreateRegistry) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the registry.
+createRegistry_registryName :: Lens.Lens' CreateRegistry Prelude.Text
+createRegistry_registryName = Lens.lens (\CreateRegistry' {registryName} -> registryName) (\s@CreateRegistry' {} a -> s {registryName = a} :: CreateRegistry)
+
+instance Core.AWSRequest CreateRegistry where
+  type
+    AWSResponse CreateRegistry =
+      CreateRegistryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateRegistryResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "RegistryArn")
+            Prelude.<*> (x Data..?> "RegistryName")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateRegistry where
+  hashWithSalt _salt CreateRegistry' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` registryName
+
+instance Prelude.NFData CreateRegistry where
+  rnf CreateRegistry' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf registryName
+
+instance Data.ToHeaders CreateRegistry where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateRegistry where
+  toJSON CreateRegistry' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("tags" Data..=) Prelude.<$> tags
+          ]
+      )
+
+instance Data.ToPath CreateRegistry where
+  toPath CreateRegistry' {..} =
+    Prelude.mconcat
+      ["/v1/registries/name/", Data.toBS registryName]
+
+instance Data.ToQuery CreateRegistry where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateRegistryResponse' smart constructor.
+data CreateRegistryResponse = CreateRegistryResponse'
+  { -- | The description of the registry.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the registry.
+    registryArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Maybe Prelude.Text,
+    -- | Tags associated with the registry.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateRegistryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'createRegistryResponse_description' - The description of the registry.
+--
+-- 'registryArn', 'createRegistryResponse_registryArn' - The ARN of the registry.
+--
+-- 'registryName', 'createRegistryResponse_registryName' - The name of the registry.
+--
+-- 'tags', 'createRegistryResponse_tags' - Tags associated with the registry.
+--
+-- 'httpStatus', 'createRegistryResponse_httpStatus' - The response's http status code.
+newCreateRegistryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateRegistryResponse
+newCreateRegistryResponse pHttpStatus_ =
+  CreateRegistryResponse'
+    { description =
+        Prelude.Nothing,
+      registryArn = Prelude.Nothing,
+      registryName = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The description of the registry.
+createRegistryResponse_description :: Lens.Lens' CreateRegistryResponse (Prelude.Maybe Prelude.Text)
+createRegistryResponse_description = Lens.lens (\CreateRegistryResponse' {description} -> description) (\s@CreateRegistryResponse' {} a -> s {description = a} :: CreateRegistryResponse)
+
+-- | The ARN of the registry.
+createRegistryResponse_registryArn :: Lens.Lens' CreateRegistryResponse (Prelude.Maybe Prelude.Text)
+createRegistryResponse_registryArn = Lens.lens (\CreateRegistryResponse' {registryArn} -> registryArn) (\s@CreateRegistryResponse' {} a -> s {registryArn = a} :: CreateRegistryResponse)
+
+-- | The name of the registry.
+createRegistryResponse_registryName :: Lens.Lens' CreateRegistryResponse (Prelude.Maybe Prelude.Text)
+createRegistryResponse_registryName = Lens.lens (\CreateRegistryResponse' {registryName} -> registryName) (\s@CreateRegistryResponse' {} a -> s {registryName = a} :: CreateRegistryResponse)
+
+-- | Tags associated with the registry.
+createRegistryResponse_tags :: Lens.Lens' CreateRegistryResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createRegistryResponse_tags = Lens.lens (\CreateRegistryResponse' {tags} -> tags) (\s@CreateRegistryResponse' {} a -> s {tags = a} :: CreateRegistryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+createRegistryResponse_httpStatus :: Lens.Lens' CreateRegistryResponse Prelude.Int
+createRegistryResponse_httpStatus = Lens.lens (\CreateRegistryResponse' {httpStatus} -> httpStatus) (\s@CreateRegistryResponse' {} a -> s {httpStatus = a} :: CreateRegistryResponse)
+
+instance Prelude.NFData CreateRegistryResponse where
+  rnf CreateRegistryResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf registryArn
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/CreateSchema.hs b/gen/Amazonka/Schemas/CreateSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/CreateSchema.hs
@@ -0,0 +1,331 @@
+{-# 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.Schemas.CreateSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a schema definition.
+--
+-- Inactive schemas will be deleted after two years.
+module Amazonka.Schemas.CreateSchema
+  ( -- * Creating a Request
+    CreateSchema (..),
+    newCreateSchema,
+
+    -- * Request Lenses
+    createSchema_description,
+    createSchema_tags,
+    createSchema_registryName,
+    createSchema_schemaName,
+    createSchema_type,
+    createSchema_content,
+
+    -- * Destructuring the Response
+    CreateSchemaResponse (..),
+    newCreateSchemaResponse,
+
+    -- * Response Lenses
+    createSchemaResponse_description,
+    createSchemaResponse_lastModified,
+    createSchemaResponse_schemaArn,
+    createSchemaResponse_schemaName,
+    createSchemaResponse_schemaVersion,
+    createSchemaResponse_tags,
+    createSchemaResponse_type,
+    createSchemaResponse_versionCreatedDate,
+    createSchemaResponse_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.Schemas.Types
+
+-- | /See:/ 'newCreateSchema' smart constructor.
+data CreateSchema = CreateSchema'
+  { -- | A description of the schema.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Tags associated with the schema.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text,
+    -- | The type of schema.
+    type' :: Type,
+    -- | The source of the schema definition.
+    content :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'createSchema_description' - A description of the schema.
+--
+-- 'tags', 'createSchema_tags' - Tags associated with the schema.
+--
+-- 'registryName', 'createSchema_registryName' - The name of the registry.
+--
+-- 'schemaName', 'createSchema_schemaName' - The name of the schema.
+--
+-- 'type'', 'createSchema_type' - The type of schema.
+--
+-- 'content', 'createSchema_content' - The source of the schema definition.
+newCreateSchema ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  -- | 'type''
+  Type ->
+  -- | 'content'
+  Prelude.Text ->
+  CreateSchema
+newCreateSchema
+  pRegistryName_
+  pSchemaName_
+  pType_
+  pContent_ =
+    CreateSchema'
+      { description = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        registryName = pRegistryName_,
+        schemaName = pSchemaName_,
+        type' = pType_,
+        content = pContent_
+      }
+
+-- | A description of the schema.
+createSchema_description :: Lens.Lens' CreateSchema (Prelude.Maybe Prelude.Text)
+createSchema_description = Lens.lens (\CreateSchema' {description} -> description) (\s@CreateSchema' {} a -> s {description = a} :: CreateSchema)
+
+-- | Tags associated with the schema.
+createSchema_tags :: Lens.Lens' CreateSchema (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createSchema_tags = Lens.lens (\CreateSchema' {tags} -> tags) (\s@CreateSchema' {} a -> s {tags = a} :: CreateSchema) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the registry.
+createSchema_registryName :: Lens.Lens' CreateSchema Prelude.Text
+createSchema_registryName = Lens.lens (\CreateSchema' {registryName} -> registryName) (\s@CreateSchema' {} a -> s {registryName = a} :: CreateSchema)
+
+-- | The name of the schema.
+createSchema_schemaName :: Lens.Lens' CreateSchema Prelude.Text
+createSchema_schemaName = Lens.lens (\CreateSchema' {schemaName} -> schemaName) (\s@CreateSchema' {} a -> s {schemaName = a} :: CreateSchema)
+
+-- | The type of schema.
+createSchema_type :: Lens.Lens' CreateSchema Type
+createSchema_type = Lens.lens (\CreateSchema' {type'} -> type') (\s@CreateSchema' {} a -> s {type' = a} :: CreateSchema)
+
+-- | The source of the schema definition.
+createSchema_content :: Lens.Lens' CreateSchema Prelude.Text
+createSchema_content = Lens.lens (\CreateSchema' {content} -> content) (\s@CreateSchema' {} a -> s {content = a} :: CreateSchema)
+
+instance Core.AWSRequest CreateSchema where
+  type AWSResponse CreateSchema = CreateSchemaResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateSchemaResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModified")
+            Prelude.<*> (x Data..?> "SchemaArn")
+            Prelude.<*> (x Data..?> "SchemaName")
+            Prelude.<*> (x Data..?> "SchemaVersion")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Type")
+            Prelude.<*> (x Data..?> "VersionCreatedDate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateSchema where
+  hashWithSalt _salt CreateSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` content
+
+instance Prelude.NFData CreateSchema where
+  rnf CreateSchema' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf content
+
+instance Data.ToHeaders CreateSchema where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateSchema where
+  toJSON CreateSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("Content" Data..= content)
+          ]
+      )
+
+instance Data.ToPath CreateSchema where
+  toPath CreateSchema' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName
+      ]
+
+instance Data.ToQuery CreateSchema where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateSchemaResponse' smart constructor.
+data CreateSchemaResponse = CreateSchemaResponse'
+  { -- | The description of the schema.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that schema was modified.
+    lastModified :: Prelude.Maybe Data.ISO8601,
+    -- | The ARN of the schema.
+    schemaArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the schema
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The type of the schema.
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The date the schema version was created.
+    versionCreatedDate :: Prelude.Maybe Data.ISO8601,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateSchemaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'createSchemaResponse_description' - The description of the schema.
+--
+-- 'lastModified', 'createSchemaResponse_lastModified' - The date and time that schema was modified.
+--
+-- 'schemaArn', 'createSchemaResponse_schemaArn' - The ARN of the schema.
+--
+-- 'schemaName', 'createSchemaResponse_schemaName' - The name of the schema.
+--
+-- 'schemaVersion', 'createSchemaResponse_schemaVersion' - The version number of the schema
+--
+-- 'tags', 'createSchemaResponse_tags' - Undocumented member.
+--
+-- 'type'', 'createSchemaResponse_type' - The type of the schema.
+--
+-- 'versionCreatedDate', 'createSchemaResponse_versionCreatedDate' - The date the schema version was created.
+--
+-- 'httpStatus', 'createSchemaResponse_httpStatus' - The response's http status code.
+newCreateSchemaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateSchemaResponse
+newCreateSchemaResponse pHttpStatus_ =
+  CreateSchemaResponse'
+    { description =
+        Prelude.Nothing,
+      lastModified = Prelude.Nothing,
+      schemaArn = Prelude.Nothing,
+      schemaName = Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      versionCreatedDate = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The description of the schema.
+createSchemaResponse_description :: Lens.Lens' CreateSchemaResponse (Prelude.Maybe Prelude.Text)
+createSchemaResponse_description = Lens.lens (\CreateSchemaResponse' {description} -> description) (\s@CreateSchemaResponse' {} a -> s {description = a} :: CreateSchemaResponse)
+
+-- | The date and time that schema was modified.
+createSchemaResponse_lastModified :: Lens.Lens' CreateSchemaResponse (Prelude.Maybe Prelude.UTCTime)
+createSchemaResponse_lastModified = Lens.lens (\CreateSchemaResponse' {lastModified} -> lastModified) (\s@CreateSchemaResponse' {} a -> s {lastModified = a} :: CreateSchemaResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the schema.
+createSchemaResponse_schemaArn :: Lens.Lens' CreateSchemaResponse (Prelude.Maybe Prelude.Text)
+createSchemaResponse_schemaArn = Lens.lens (\CreateSchemaResponse' {schemaArn} -> schemaArn) (\s@CreateSchemaResponse' {} a -> s {schemaArn = a} :: CreateSchemaResponse)
+
+-- | The name of the schema.
+createSchemaResponse_schemaName :: Lens.Lens' CreateSchemaResponse (Prelude.Maybe Prelude.Text)
+createSchemaResponse_schemaName = Lens.lens (\CreateSchemaResponse' {schemaName} -> schemaName) (\s@CreateSchemaResponse' {} a -> s {schemaName = a} :: CreateSchemaResponse)
+
+-- | The version number of the schema
+createSchemaResponse_schemaVersion :: Lens.Lens' CreateSchemaResponse (Prelude.Maybe Prelude.Text)
+createSchemaResponse_schemaVersion = Lens.lens (\CreateSchemaResponse' {schemaVersion} -> schemaVersion) (\s@CreateSchemaResponse' {} a -> s {schemaVersion = a} :: CreateSchemaResponse)
+
+-- | Undocumented member.
+createSchemaResponse_tags :: Lens.Lens' CreateSchemaResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createSchemaResponse_tags = Lens.lens (\CreateSchemaResponse' {tags} -> tags) (\s@CreateSchemaResponse' {} a -> s {tags = a} :: CreateSchemaResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of the schema.
+createSchemaResponse_type :: Lens.Lens' CreateSchemaResponse (Prelude.Maybe Prelude.Text)
+createSchemaResponse_type = Lens.lens (\CreateSchemaResponse' {type'} -> type') (\s@CreateSchemaResponse' {} a -> s {type' = a} :: CreateSchemaResponse)
+
+-- | The date the schema version was created.
+createSchemaResponse_versionCreatedDate :: Lens.Lens' CreateSchemaResponse (Prelude.Maybe Prelude.UTCTime)
+createSchemaResponse_versionCreatedDate = Lens.lens (\CreateSchemaResponse' {versionCreatedDate} -> versionCreatedDate) (\s@CreateSchemaResponse' {} a -> s {versionCreatedDate = a} :: CreateSchemaResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+createSchemaResponse_httpStatus :: Lens.Lens' CreateSchemaResponse Prelude.Int
+createSchemaResponse_httpStatus = Lens.lens (\CreateSchemaResponse' {httpStatus} -> httpStatus) (\s@CreateSchemaResponse' {} a -> s {httpStatus = a} :: CreateSchemaResponse)
+
+instance Prelude.NFData CreateSchemaResponse where
+  rnf CreateSchemaResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModified
+      `Prelude.seq` Prelude.rnf schemaArn
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf versionCreatedDate
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/DeleteDiscoverer.hs b/gen/Amazonka/Schemas/DeleteDiscoverer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DeleteDiscoverer.hs
@@ -0,0 +1,124 @@
+{-# 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.Schemas.DeleteDiscoverer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a discoverer.
+module Amazonka.Schemas.DeleteDiscoverer
+  ( -- * Creating a Request
+    DeleteDiscoverer (..),
+    newDeleteDiscoverer,
+
+    -- * Request Lenses
+    deleteDiscoverer_discovererId,
+
+    -- * Destructuring the Response
+    DeleteDiscovererResponse (..),
+    newDeleteDiscovererResponse,
+  )
+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.Schemas.Types
+
+-- | /See:/ 'newDeleteDiscoverer' smart constructor.
+data DeleteDiscoverer = DeleteDiscoverer'
+  { -- | The ID of the discoverer.
+    discovererId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDiscoverer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discovererId', 'deleteDiscoverer_discovererId' - The ID of the discoverer.
+newDeleteDiscoverer ::
+  -- | 'discovererId'
+  Prelude.Text ->
+  DeleteDiscoverer
+newDeleteDiscoverer pDiscovererId_ =
+  DeleteDiscoverer' {discovererId = pDiscovererId_}
+
+-- | The ID of the discoverer.
+deleteDiscoverer_discovererId :: Lens.Lens' DeleteDiscoverer Prelude.Text
+deleteDiscoverer_discovererId = Lens.lens (\DeleteDiscoverer' {discovererId} -> discovererId) (\s@DeleteDiscoverer' {} a -> s {discovererId = a} :: DeleteDiscoverer)
+
+instance Core.AWSRequest DeleteDiscoverer where
+  type
+    AWSResponse DeleteDiscoverer =
+      DeleteDiscovererResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteDiscovererResponse'
+
+instance Prelude.Hashable DeleteDiscoverer where
+  hashWithSalt _salt DeleteDiscoverer' {..} =
+    _salt `Prelude.hashWithSalt` discovererId
+
+instance Prelude.NFData DeleteDiscoverer where
+  rnf DeleteDiscoverer' {..} = Prelude.rnf discovererId
+
+instance Data.ToHeaders DeleteDiscoverer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteDiscoverer where
+  toPath DeleteDiscoverer' {..} =
+    Prelude.mconcat
+      ["/v1/discoverers/id/", Data.toBS discovererId]
+
+instance Data.ToQuery DeleteDiscoverer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDiscovererResponse' smart constructor.
+data DeleteDiscovererResponse = DeleteDiscovererResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDiscovererResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteDiscovererResponse ::
+  DeleteDiscovererResponse
+newDeleteDiscovererResponse =
+  DeleteDiscovererResponse'
+
+instance Prelude.NFData DeleteDiscovererResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Schemas/DeleteRegistry.hs b/gen/Amazonka/Schemas/DeleteRegistry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DeleteRegistry.hs
@@ -0,0 +1,123 @@
+{-# 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.Schemas.DeleteRegistry
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a Registry.
+module Amazonka.Schemas.DeleteRegistry
+  ( -- * Creating a Request
+    DeleteRegistry (..),
+    newDeleteRegistry,
+
+    -- * Request Lenses
+    deleteRegistry_registryName,
+
+    -- * Destructuring the Response
+    DeleteRegistryResponse (..),
+    newDeleteRegistryResponse,
+  )
+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.Schemas.Types
+
+-- | /See:/ 'newDeleteRegistry' smart constructor.
+data DeleteRegistry = DeleteRegistry'
+  { -- | The name of the registry.
+    registryName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRegistry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'registryName', 'deleteRegistry_registryName' - The name of the registry.
+newDeleteRegistry ::
+  -- | 'registryName'
+  Prelude.Text ->
+  DeleteRegistry
+newDeleteRegistry pRegistryName_ =
+  DeleteRegistry' {registryName = pRegistryName_}
+
+-- | The name of the registry.
+deleteRegistry_registryName :: Lens.Lens' DeleteRegistry Prelude.Text
+deleteRegistry_registryName = Lens.lens (\DeleteRegistry' {registryName} -> registryName) (\s@DeleteRegistry' {} a -> s {registryName = a} :: DeleteRegistry)
+
+instance Core.AWSRequest DeleteRegistry where
+  type
+    AWSResponse DeleteRegistry =
+      DeleteRegistryResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteRegistryResponse'
+
+instance Prelude.Hashable DeleteRegistry where
+  hashWithSalt _salt DeleteRegistry' {..} =
+    _salt `Prelude.hashWithSalt` registryName
+
+instance Prelude.NFData DeleteRegistry where
+  rnf DeleteRegistry' {..} = Prelude.rnf registryName
+
+instance Data.ToHeaders DeleteRegistry where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteRegistry where
+  toPath DeleteRegistry' {..} =
+    Prelude.mconcat
+      ["/v1/registries/name/", Data.toBS registryName]
+
+instance Data.ToQuery DeleteRegistry where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteRegistryResponse' smart constructor.
+data DeleteRegistryResponse = DeleteRegistryResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteRegistryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteRegistryResponse ::
+  DeleteRegistryResponse
+newDeleteRegistryResponse = DeleteRegistryResponse'
+
+instance Prelude.NFData DeleteRegistryResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Schemas/DeleteResourcePolicy.hs b/gen/Amazonka/Schemas/DeleteResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DeleteResourcePolicy.hs
@@ -0,0 +1,126 @@
+{-# 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.Schemas.DeleteResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete the resource-based policy attached to the specified registry.
+module Amazonka.Schemas.DeleteResourcePolicy
+  ( -- * Creating a Request
+    DeleteResourcePolicy (..),
+    newDeleteResourcePolicy,
+
+    -- * Request Lenses
+    deleteResourcePolicy_registryName,
+
+    -- * Destructuring the Response
+    DeleteResourcePolicyResponse (..),
+    newDeleteResourcePolicyResponse,
+  )
+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.Schemas.Types
+
+-- | /See:/ 'newDeleteResourcePolicy' smart constructor.
+data DeleteResourcePolicy = DeleteResourcePolicy'
+  { -- | The name of the registry.
+    registryName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'registryName', 'deleteResourcePolicy_registryName' - The name of the registry.
+newDeleteResourcePolicy ::
+  DeleteResourcePolicy
+newDeleteResourcePolicy =
+  DeleteResourcePolicy'
+    { registryName =
+        Prelude.Nothing
+    }
+
+-- | The name of the registry.
+deleteResourcePolicy_registryName :: Lens.Lens' DeleteResourcePolicy (Prelude.Maybe Prelude.Text)
+deleteResourcePolicy_registryName = Lens.lens (\DeleteResourcePolicy' {registryName} -> registryName) (\s@DeleteResourcePolicy' {} a -> s {registryName = a} :: DeleteResourcePolicy)
+
+instance Core.AWSRequest DeleteResourcePolicy where
+  type
+    AWSResponse DeleteResourcePolicy =
+      DeleteResourcePolicyResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteResourcePolicyResponse'
+
+instance Prelude.Hashable DeleteResourcePolicy where
+  hashWithSalt _salt DeleteResourcePolicy' {..} =
+    _salt `Prelude.hashWithSalt` registryName
+
+instance Prelude.NFData DeleteResourcePolicy where
+  rnf DeleteResourcePolicy' {..} =
+    Prelude.rnf registryName
+
+instance Data.ToHeaders DeleteResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteResourcePolicy where
+  toPath = Prelude.const "/v1/policy"
+
+instance Data.ToQuery DeleteResourcePolicy where
+  toQuery DeleteResourcePolicy' {..} =
+    Prelude.mconcat
+      ["registryName" Data.=: registryName]
+
+-- | /See:/ 'newDeleteResourcePolicyResponse' smart constructor.
+data DeleteResourcePolicyResponse = DeleteResourcePolicyResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteResourcePolicyResponse ::
+  DeleteResourcePolicyResponse
+newDeleteResourcePolicyResponse =
+  DeleteResourcePolicyResponse'
+
+instance Prelude.NFData DeleteResourcePolicyResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Schemas/DeleteSchema.hs b/gen/Amazonka/Schemas/DeleteSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DeleteSchema.hs
@@ -0,0 +1,142 @@
+{-# 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.Schemas.DeleteSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a schema definition.
+module Amazonka.Schemas.DeleteSchema
+  ( -- * Creating a Request
+    DeleteSchema (..),
+    newDeleteSchema,
+
+    -- * Request Lenses
+    deleteSchema_registryName,
+    deleteSchema_schemaName,
+
+    -- * Destructuring the Response
+    DeleteSchemaResponse (..),
+    newDeleteSchemaResponse,
+  )
+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.Schemas.Types
+
+-- | /See:/ 'newDeleteSchema' smart constructor.
+data DeleteSchema = DeleteSchema'
+  { -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'registryName', 'deleteSchema_registryName' - The name of the registry.
+--
+-- 'schemaName', 'deleteSchema_schemaName' - The name of the schema.
+newDeleteSchema ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  DeleteSchema
+newDeleteSchema pRegistryName_ pSchemaName_ =
+  DeleteSchema'
+    { registryName = pRegistryName_,
+      schemaName = pSchemaName_
+    }
+
+-- | The name of the registry.
+deleteSchema_registryName :: Lens.Lens' DeleteSchema Prelude.Text
+deleteSchema_registryName = Lens.lens (\DeleteSchema' {registryName} -> registryName) (\s@DeleteSchema' {} a -> s {registryName = a} :: DeleteSchema)
+
+-- | The name of the schema.
+deleteSchema_schemaName :: Lens.Lens' DeleteSchema Prelude.Text
+deleteSchema_schemaName = Lens.lens (\DeleteSchema' {schemaName} -> schemaName) (\s@DeleteSchema' {} a -> s {schemaName = a} :: DeleteSchema)
+
+instance Core.AWSRequest DeleteSchema where
+  type AWSResponse DeleteSchema = DeleteSchemaResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response = Response.receiveNull DeleteSchemaResponse'
+
+instance Prelude.Hashable DeleteSchema where
+  hashWithSalt _salt DeleteSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+
+instance Prelude.NFData DeleteSchema where
+  rnf DeleteSchema' {..} =
+    Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+
+instance Data.ToHeaders DeleteSchema where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteSchema where
+  toPath DeleteSchema' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName
+      ]
+
+instance Data.ToQuery DeleteSchema where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteSchemaResponse' smart constructor.
+data DeleteSchemaResponse = DeleteSchemaResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSchemaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteSchemaResponse ::
+  DeleteSchemaResponse
+newDeleteSchemaResponse = DeleteSchemaResponse'
+
+instance Prelude.NFData DeleteSchemaResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Schemas/DeleteSchemaVersion.hs b/gen/Amazonka/Schemas/DeleteSchemaVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DeleteSchemaVersion.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.DeleteSchemaVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete the schema version definition
+module Amazonka.Schemas.DeleteSchemaVersion
+  ( -- * Creating a Request
+    DeleteSchemaVersion (..),
+    newDeleteSchemaVersion,
+
+    -- * Request Lenses
+    deleteSchemaVersion_schemaVersion,
+    deleteSchemaVersion_registryName,
+    deleteSchemaVersion_schemaName,
+
+    -- * Destructuring the Response
+    DeleteSchemaVersionResponse (..),
+    newDeleteSchemaVersionResponse,
+  )
+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.Schemas.Types
+
+-- | /See:/ 'newDeleteSchemaVersion' smart constructor.
+data DeleteSchemaVersion = DeleteSchemaVersion'
+  { -- | The version number of the schema
+    schemaVersion :: Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSchemaVersion' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'schemaVersion', 'deleteSchemaVersion_schemaVersion' - The version number of the schema
+--
+-- 'registryName', 'deleteSchemaVersion_registryName' - The name of the registry.
+--
+-- 'schemaName', 'deleteSchemaVersion_schemaName' - The name of the schema.
+newDeleteSchemaVersion ::
+  -- | 'schemaVersion'
+  Prelude.Text ->
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  DeleteSchemaVersion
+newDeleteSchemaVersion
+  pSchemaVersion_
+  pRegistryName_
+  pSchemaName_ =
+    DeleteSchemaVersion'
+      { schemaVersion =
+          pSchemaVersion_,
+        registryName = pRegistryName_,
+        schemaName = pSchemaName_
+      }
+
+-- | The version number of the schema
+deleteSchemaVersion_schemaVersion :: Lens.Lens' DeleteSchemaVersion Prelude.Text
+deleteSchemaVersion_schemaVersion = Lens.lens (\DeleteSchemaVersion' {schemaVersion} -> schemaVersion) (\s@DeleteSchemaVersion' {} a -> s {schemaVersion = a} :: DeleteSchemaVersion)
+
+-- | The name of the registry.
+deleteSchemaVersion_registryName :: Lens.Lens' DeleteSchemaVersion Prelude.Text
+deleteSchemaVersion_registryName = Lens.lens (\DeleteSchemaVersion' {registryName} -> registryName) (\s@DeleteSchemaVersion' {} a -> s {registryName = a} :: DeleteSchemaVersion)
+
+-- | The name of the schema.
+deleteSchemaVersion_schemaName :: Lens.Lens' DeleteSchemaVersion Prelude.Text
+deleteSchemaVersion_schemaName = Lens.lens (\DeleteSchemaVersion' {schemaName} -> schemaName) (\s@DeleteSchemaVersion' {} a -> s {schemaName = a} :: DeleteSchemaVersion)
+
+instance Core.AWSRequest DeleteSchemaVersion where
+  type
+    AWSResponse DeleteSchemaVersion =
+      DeleteSchemaVersionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteSchemaVersionResponse'
+
+instance Prelude.Hashable DeleteSchemaVersion where
+  hashWithSalt _salt DeleteSchemaVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` schemaVersion
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+
+instance Prelude.NFData DeleteSchemaVersion where
+  rnf DeleteSchemaVersion' {..} =
+    Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+
+instance Data.ToHeaders DeleteSchemaVersion where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteSchemaVersion where
+  toPath DeleteSchemaVersion' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName,
+        "/version/",
+        Data.toBS schemaVersion
+      ]
+
+instance Data.ToQuery DeleteSchemaVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteSchemaVersionResponse' smart constructor.
+data DeleteSchemaVersionResponse = DeleteSchemaVersionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteSchemaVersionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteSchemaVersionResponse ::
+  DeleteSchemaVersionResponse
+newDeleteSchemaVersionResponse =
+  DeleteSchemaVersionResponse'
+
+instance Prelude.NFData DeleteSchemaVersionResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Schemas/DescribeCodeBinding.hs b/gen/Amazonka/Schemas/DescribeCodeBinding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DescribeCodeBinding.hs
@@ -0,0 +1,251 @@
+{-# 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.Schemas.DescribeCodeBinding
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describe the code binding URI.
+module Amazonka.Schemas.DescribeCodeBinding
+  ( -- * Creating a Request
+    DescribeCodeBinding (..),
+    newDescribeCodeBinding,
+
+    -- * Request Lenses
+    describeCodeBinding_schemaVersion,
+    describeCodeBinding_registryName,
+    describeCodeBinding_schemaName,
+    describeCodeBinding_language,
+
+    -- * Destructuring the Response
+    DescribeCodeBindingResponse (..),
+    newDescribeCodeBindingResponse,
+
+    -- * Response Lenses
+    describeCodeBindingResponse_creationDate,
+    describeCodeBindingResponse_lastModified,
+    describeCodeBindingResponse_schemaVersion,
+    describeCodeBindingResponse_status,
+    describeCodeBindingResponse_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.Schemas.Types
+
+-- | /See:/ 'newDescribeCodeBinding' smart constructor.
+data DescribeCodeBinding = DescribeCodeBinding'
+  { -- | Specifying this limits the results to only this schema version.
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text,
+    -- | The language of the code binding.
+    language :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCodeBinding' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'schemaVersion', 'describeCodeBinding_schemaVersion' - Specifying this limits the results to only this schema version.
+--
+-- 'registryName', 'describeCodeBinding_registryName' - The name of the registry.
+--
+-- 'schemaName', 'describeCodeBinding_schemaName' - The name of the schema.
+--
+-- 'language', 'describeCodeBinding_language' - The language of the code binding.
+newDescribeCodeBinding ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  -- | 'language'
+  Prelude.Text ->
+  DescribeCodeBinding
+newDescribeCodeBinding
+  pRegistryName_
+  pSchemaName_
+  pLanguage_ =
+    DescribeCodeBinding'
+      { schemaVersion =
+          Prelude.Nothing,
+        registryName = pRegistryName_,
+        schemaName = pSchemaName_,
+        language = pLanguage_
+      }
+
+-- | Specifying this limits the results to only this schema version.
+describeCodeBinding_schemaVersion :: Lens.Lens' DescribeCodeBinding (Prelude.Maybe Prelude.Text)
+describeCodeBinding_schemaVersion = Lens.lens (\DescribeCodeBinding' {schemaVersion} -> schemaVersion) (\s@DescribeCodeBinding' {} a -> s {schemaVersion = a} :: DescribeCodeBinding)
+
+-- | The name of the registry.
+describeCodeBinding_registryName :: Lens.Lens' DescribeCodeBinding Prelude.Text
+describeCodeBinding_registryName = Lens.lens (\DescribeCodeBinding' {registryName} -> registryName) (\s@DescribeCodeBinding' {} a -> s {registryName = a} :: DescribeCodeBinding)
+
+-- | The name of the schema.
+describeCodeBinding_schemaName :: Lens.Lens' DescribeCodeBinding Prelude.Text
+describeCodeBinding_schemaName = Lens.lens (\DescribeCodeBinding' {schemaName} -> schemaName) (\s@DescribeCodeBinding' {} a -> s {schemaName = a} :: DescribeCodeBinding)
+
+-- | The language of the code binding.
+describeCodeBinding_language :: Lens.Lens' DescribeCodeBinding Prelude.Text
+describeCodeBinding_language = Lens.lens (\DescribeCodeBinding' {language} -> language) (\s@DescribeCodeBinding' {} a -> s {language = a} :: DescribeCodeBinding)
+
+instance Core.AWSRequest DescribeCodeBinding where
+  type
+    AWSResponse DescribeCodeBinding =
+      DescribeCodeBindingResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeCodeBindingResponse'
+            Prelude.<$> (x Data..?> "CreationDate")
+            Prelude.<*> (x Data..?> "LastModified")
+            Prelude.<*> (x Data..?> "SchemaVersion")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeCodeBinding where
+  hashWithSalt _salt DescribeCodeBinding' {..} =
+    _salt
+      `Prelude.hashWithSalt` schemaVersion
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+      `Prelude.hashWithSalt` language
+
+instance Prelude.NFData DescribeCodeBinding where
+  rnf DescribeCodeBinding' {..} =
+    Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf language
+
+instance Data.ToHeaders DescribeCodeBinding where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeCodeBinding where
+  toPath DescribeCodeBinding' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName,
+        "/language/",
+        Data.toBS language
+      ]
+
+instance Data.ToQuery DescribeCodeBinding where
+  toQuery DescribeCodeBinding' {..} =
+    Prelude.mconcat
+      ["schemaVersion" Data.=: schemaVersion]
+
+-- | /See:/ 'newDescribeCodeBindingResponse' smart constructor.
+data DescribeCodeBindingResponse = DescribeCodeBindingResponse'
+  { -- | The time and date that the code binding was created.
+    creationDate :: Prelude.Maybe Data.ISO8601,
+    -- | The date and time that code bindings were modified.
+    lastModified :: Prelude.Maybe Data.ISO8601,
+    -- | The version number of the schema.
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The current status of code binding generation.
+    status :: Prelude.Maybe CodeGenerationStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCodeBindingResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'creationDate', 'describeCodeBindingResponse_creationDate' - The time and date that the code binding was created.
+--
+-- 'lastModified', 'describeCodeBindingResponse_lastModified' - The date and time that code bindings were modified.
+--
+-- 'schemaVersion', 'describeCodeBindingResponse_schemaVersion' - The version number of the schema.
+--
+-- 'status', 'describeCodeBindingResponse_status' - The current status of code binding generation.
+--
+-- 'httpStatus', 'describeCodeBindingResponse_httpStatus' - The response's http status code.
+newDescribeCodeBindingResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeCodeBindingResponse
+newDescribeCodeBindingResponse pHttpStatus_ =
+  DescribeCodeBindingResponse'
+    { creationDate =
+        Prelude.Nothing,
+      lastModified = Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The time and date that the code binding was created.
+describeCodeBindingResponse_creationDate :: Lens.Lens' DescribeCodeBindingResponse (Prelude.Maybe Prelude.UTCTime)
+describeCodeBindingResponse_creationDate = Lens.lens (\DescribeCodeBindingResponse' {creationDate} -> creationDate) (\s@DescribeCodeBindingResponse' {} a -> s {creationDate = a} :: DescribeCodeBindingResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The date and time that code bindings were modified.
+describeCodeBindingResponse_lastModified :: Lens.Lens' DescribeCodeBindingResponse (Prelude.Maybe Prelude.UTCTime)
+describeCodeBindingResponse_lastModified = Lens.lens (\DescribeCodeBindingResponse' {lastModified} -> lastModified) (\s@DescribeCodeBindingResponse' {} a -> s {lastModified = a} :: DescribeCodeBindingResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The version number of the schema.
+describeCodeBindingResponse_schemaVersion :: Lens.Lens' DescribeCodeBindingResponse (Prelude.Maybe Prelude.Text)
+describeCodeBindingResponse_schemaVersion = Lens.lens (\DescribeCodeBindingResponse' {schemaVersion} -> schemaVersion) (\s@DescribeCodeBindingResponse' {} a -> s {schemaVersion = a} :: DescribeCodeBindingResponse)
+
+-- | The current status of code binding generation.
+describeCodeBindingResponse_status :: Lens.Lens' DescribeCodeBindingResponse (Prelude.Maybe CodeGenerationStatus)
+describeCodeBindingResponse_status = Lens.lens (\DescribeCodeBindingResponse' {status} -> status) (\s@DescribeCodeBindingResponse' {} a -> s {status = a} :: DescribeCodeBindingResponse)
+
+-- | The response's http status code.
+describeCodeBindingResponse_httpStatus :: Lens.Lens' DescribeCodeBindingResponse Prelude.Int
+describeCodeBindingResponse_httpStatus = Lens.lens (\DescribeCodeBindingResponse' {httpStatus} -> httpStatus) (\s@DescribeCodeBindingResponse' {} a -> s {httpStatus = a} :: DescribeCodeBindingResponse)
+
+instance Prelude.NFData DescribeCodeBindingResponse where
+  rnf DescribeCodeBindingResponse' {..} =
+    Prelude.rnf creationDate
+      `Prelude.seq` Prelude.rnf lastModified
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/DescribeDiscoverer.hs b/gen/Amazonka/Schemas/DescribeDiscoverer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DescribeDiscoverer.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.DescribeDiscoverer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the discoverer.
+module Amazonka.Schemas.DescribeDiscoverer
+  ( -- * Creating a Request
+    DescribeDiscoverer (..),
+    newDescribeDiscoverer,
+
+    -- * Request Lenses
+    describeDiscoverer_discovererId,
+
+    -- * Destructuring the Response
+    DescribeDiscovererResponse (..),
+    newDescribeDiscovererResponse,
+
+    -- * Response Lenses
+    describeDiscovererResponse_crossAccount,
+    describeDiscovererResponse_description,
+    describeDiscovererResponse_discovererArn,
+    describeDiscovererResponse_discovererId,
+    describeDiscovererResponse_sourceArn,
+    describeDiscovererResponse_state,
+    describeDiscovererResponse_tags,
+    describeDiscovererResponse_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.Schemas.Types
+
+-- | /See:/ 'newDescribeDiscoverer' smart constructor.
+data DescribeDiscoverer = DescribeDiscoverer'
+  { -- | The ID of the discoverer.
+    discovererId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDiscoverer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discovererId', 'describeDiscoverer_discovererId' - The ID of the discoverer.
+newDescribeDiscoverer ::
+  -- | 'discovererId'
+  Prelude.Text ->
+  DescribeDiscoverer
+newDescribeDiscoverer pDiscovererId_ =
+  DescribeDiscoverer' {discovererId = pDiscovererId_}
+
+-- | The ID of the discoverer.
+describeDiscoverer_discovererId :: Lens.Lens' DescribeDiscoverer Prelude.Text
+describeDiscoverer_discovererId = Lens.lens (\DescribeDiscoverer' {discovererId} -> discovererId) (\s@DescribeDiscoverer' {} a -> s {discovererId = a} :: DescribeDiscoverer)
+
+instance Core.AWSRequest DescribeDiscoverer where
+  type
+    AWSResponse DescribeDiscoverer =
+      DescribeDiscovererResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDiscovererResponse'
+            Prelude.<$> (x Data..?> "CrossAccount")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DiscovererArn")
+            Prelude.<*> (x Data..?> "DiscovererId")
+            Prelude.<*> (x Data..?> "SourceArn")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDiscoverer where
+  hashWithSalt _salt DescribeDiscoverer' {..} =
+    _salt `Prelude.hashWithSalt` discovererId
+
+instance Prelude.NFData DescribeDiscoverer where
+  rnf DescribeDiscoverer' {..} =
+    Prelude.rnf discovererId
+
+instance Data.ToHeaders DescribeDiscoverer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDiscoverer where
+  toPath DescribeDiscoverer' {..} =
+    Prelude.mconcat
+      ["/v1/discoverers/id/", Data.toBS discovererId]
+
+instance Data.ToQuery DescribeDiscoverer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeDiscovererResponse' smart constructor.
+data DescribeDiscovererResponse = DescribeDiscovererResponse'
+  { -- | The Status if the discoverer will discover schemas from events sent from
+    -- another account.
+    crossAccount :: Prelude.Maybe Prelude.Bool,
+    -- | The description of the discoverer.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the discoverer.
+    discovererArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the discoverer.
+    discovererId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the event bus.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The state of the discoverer.
+    state :: Prelude.Maybe DiscovererState,
+    -- | Tags associated with the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDiscovererResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'crossAccount', 'describeDiscovererResponse_crossAccount' - The Status if the discoverer will discover schemas from events sent from
+-- another account.
+--
+-- 'description', 'describeDiscovererResponse_description' - The description of the discoverer.
+--
+-- 'discovererArn', 'describeDiscovererResponse_discovererArn' - The ARN of the discoverer.
+--
+-- 'discovererId', 'describeDiscovererResponse_discovererId' - The ID of the discoverer.
+--
+-- 'sourceArn', 'describeDiscovererResponse_sourceArn' - The ARN of the event bus.
+--
+-- 'state', 'describeDiscovererResponse_state' - The state of the discoverer.
+--
+-- 'tags', 'describeDiscovererResponse_tags' - Tags associated with the resource.
+--
+-- 'httpStatus', 'describeDiscovererResponse_httpStatus' - The response's http status code.
+newDescribeDiscovererResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDiscovererResponse
+newDescribeDiscovererResponse pHttpStatus_ =
+  DescribeDiscovererResponse'
+    { crossAccount =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      discovererArn = Prelude.Nothing,
+      discovererId = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Status if the discoverer will discover schemas from events sent from
+-- another account.
+describeDiscovererResponse_crossAccount :: Lens.Lens' DescribeDiscovererResponse (Prelude.Maybe Prelude.Bool)
+describeDiscovererResponse_crossAccount = Lens.lens (\DescribeDiscovererResponse' {crossAccount} -> crossAccount) (\s@DescribeDiscovererResponse' {} a -> s {crossAccount = a} :: DescribeDiscovererResponse)
+
+-- | The description of the discoverer.
+describeDiscovererResponse_description :: Lens.Lens' DescribeDiscovererResponse (Prelude.Maybe Prelude.Text)
+describeDiscovererResponse_description = Lens.lens (\DescribeDiscovererResponse' {description} -> description) (\s@DescribeDiscovererResponse' {} a -> s {description = a} :: DescribeDiscovererResponse)
+
+-- | The ARN of the discoverer.
+describeDiscovererResponse_discovererArn :: Lens.Lens' DescribeDiscovererResponse (Prelude.Maybe Prelude.Text)
+describeDiscovererResponse_discovererArn = Lens.lens (\DescribeDiscovererResponse' {discovererArn} -> discovererArn) (\s@DescribeDiscovererResponse' {} a -> s {discovererArn = a} :: DescribeDiscovererResponse)
+
+-- | The ID of the discoverer.
+describeDiscovererResponse_discovererId :: Lens.Lens' DescribeDiscovererResponse (Prelude.Maybe Prelude.Text)
+describeDiscovererResponse_discovererId = Lens.lens (\DescribeDiscovererResponse' {discovererId} -> discovererId) (\s@DescribeDiscovererResponse' {} a -> s {discovererId = a} :: DescribeDiscovererResponse)
+
+-- | The ARN of the event bus.
+describeDiscovererResponse_sourceArn :: Lens.Lens' DescribeDiscovererResponse (Prelude.Maybe Prelude.Text)
+describeDiscovererResponse_sourceArn = Lens.lens (\DescribeDiscovererResponse' {sourceArn} -> sourceArn) (\s@DescribeDiscovererResponse' {} a -> s {sourceArn = a} :: DescribeDiscovererResponse)
+
+-- | The state of the discoverer.
+describeDiscovererResponse_state :: Lens.Lens' DescribeDiscovererResponse (Prelude.Maybe DiscovererState)
+describeDiscovererResponse_state = Lens.lens (\DescribeDiscovererResponse' {state} -> state) (\s@DescribeDiscovererResponse' {} a -> s {state = a} :: DescribeDiscovererResponse)
+
+-- | Tags associated with the resource.
+describeDiscovererResponse_tags :: Lens.Lens' DescribeDiscovererResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeDiscovererResponse_tags = Lens.lens (\DescribeDiscovererResponse' {tags} -> tags) (\s@DescribeDiscovererResponse' {} a -> s {tags = a} :: DescribeDiscovererResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeDiscovererResponse_httpStatus :: Lens.Lens' DescribeDiscovererResponse Prelude.Int
+describeDiscovererResponse_httpStatus = Lens.lens (\DescribeDiscovererResponse' {httpStatus} -> httpStatus) (\s@DescribeDiscovererResponse' {} a -> s {httpStatus = a} :: DescribeDiscovererResponse)
+
+instance Prelude.NFData DescribeDiscovererResponse where
+  rnf DescribeDiscovererResponse' {..} =
+    Prelude.rnf crossAccount
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf discovererArn
+      `Prelude.seq` Prelude.rnf discovererId
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/DescribeRegistry.hs b/gen/Amazonka/Schemas/DescribeRegistry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DescribeRegistry.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.Schemas.DescribeRegistry
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the registry.
+module Amazonka.Schemas.DescribeRegistry
+  ( -- * Creating a Request
+    DescribeRegistry (..),
+    newDescribeRegistry,
+
+    -- * Request Lenses
+    describeRegistry_registryName,
+
+    -- * Destructuring the Response
+    DescribeRegistryResponse (..),
+    newDescribeRegistryResponse,
+
+    -- * Response Lenses
+    describeRegistryResponse_description,
+    describeRegistryResponse_registryArn,
+    describeRegistryResponse_registryName,
+    describeRegistryResponse_tags,
+    describeRegistryResponse_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.Schemas.Types
+
+-- | /See:/ 'newDescribeRegistry' smart constructor.
+data DescribeRegistry = DescribeRegistry'
+  { -- | The name of the registry.
+    registryName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeRegistry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'registryName', 'describeRegistry_registryName' - The name of the registry.
+newDescribeRegistry ::
+  -- | 'registryName'
+  Prelude.Text ->
+  DescribeRegistry
+newDescribeRegistry pRegistryName_ =
+  DescribeRegistry' {registryName = pRegistryName_}
+
+-- | The name of the registry.
+describeRegistry_registryName :: Lens.Lens' DescribeRegistry Prelude.Text
+describeRegistry_registryName = Lens.lens (\DescribeRegistry' {registryName} -> registryName) (\s@DescribeRegistry' {} a -> s {registryName = a} :: DescribeRegistry)
+
+instance Core.AWSRequest DescribeRegistry where
+  type
+    AWSResponse DescribeRegistry =
+      DescribeRegistryResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeRegistryResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "RegistryArn")
+            Prelude.<*> (x Data..?> "RegistryName")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeRegistry where
+  hashWithSalt _salt DescribeRegistry' {..} =
+    _salt `Prelude.hashWithSalt` registryName
+
+instance Prelude.NFData DescribeRegistry where
+  rnf DescribeRegistry' {..} = Prelude.rnf registryName
+
+instance Data.ToHeaders DescribeRegistry where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeRegistry where
+  toPath DescribeRegistry' {..} =
+    Prelude.mconcat
+      ["/v1/registries/name/", Data.toBS registryName]
+
+instance Data.ToQuery DescribeRegistry where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeRegistryResponse' smart constructor.
+data DescribeRegistryResponse = DescribeRegistryResponse'
+  { -- | The description of the registry.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the registry.
+    registryArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Maybe Prelude.Text,
+    -- | Tags associated with the registry.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeRegistryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'describeRegistryResponse_description' - The description of the registry.
+--
+-- 'registryArn', 'describeRegistryResponse_registryArn' - The ARN of the registry.
+--
+-- 'registryName', 'describeRegistryResponse_registryName' - The name of the registry.
+--
+-- 'tags', 'describeRegistryResponse_tags' - Tags associated with the registry.
+--
+-- 'httpStatus', 'describeRegistryResponse_httpStatus' - The response's http status code.
+newDescribeRegistryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeRegistryResponse
+newDescribeRegistryResponse pHttpStatus_ =
+  DescribeRegistryResponse'
+    { description =
+        Prelude.Nothing,
+      registryArn = Prelude.Nothing,
+      registryName = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The description of the registry.
+describeRegistryResponse_description :: Lens.Lens' DescribeRegistryResponse (Prelude.Maybe Prelude.Text)
+describeRegistryResponse_description = Lens.lens (\DescribeRegistryResponse' {description} -> description) (\s@DescribeRegistryResponse' {} a -> s {description = a} :: DescribeRegistryResponse)
+
+-- | The ARN of the registry.
+describeRegistryResponse_registryArn :: Lens.Lens' DescribeRegistryResponse (Prelude.Maybe Prelude.Text)
+describeRegistryResponse_registryArn = Lens.lens (\DescribeRegistryResponse' {registryArn} -> registryArn) (\s@DescribeRegistryResponse' {} a -> s {registryArn = a} :: DescribeRegistryResponse)
+
+-- | The name of the registry.
+describeRegistryResponse_registryName :: Lens.Lens' DescribeRegistryResponse (Prelude.Maybe Prelude.Text)
+describeRegistryResponse_registryName = Lens.lens (\DescribeRegistryResponse' {registryName} -> registryName) (\s@DescribeRegistryResponse' {} a -> s {registryName = a} :: DescribeRegistryResponse)
+
+-- | Tags associated with the registry.
+describeRegistryResponse_tags :: Lens.Lens' DescribeRegistryResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeRegistryResponse_tags = Lens.lens (\DescribeRegistryResponse' {tags} -> tags) (\s@DescribeRegistryResponse' {} a -> s {tags = a} :: DescribeRegistryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeRegistryResponse_httpStatus :: Lens.Lens' DescribeRegistryResponse Prelude.Int
+describeRegistryResponse_httpStatus = Lens.lens (\DescribeRegistryResponse' {httpStatus} -> httpStatus) (\s@DescribeRegistryResponse' {} a -> s {httpStatus = a} :: DescribeRegistryResponse)
+
+instance Prelude.NFData DescribeRegistryResponse where
+  rnf DescribeRegistryResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf registryArn
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/DescribeSchema.hs b/gen/Amazonka/Schemas/DescribeSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/DescribeSchema.hs
@@ -0,0 +1,290 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.DescribeSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve the schema definition.
+module Amazonka.Schemas.DescribeSchema
+  ( -- * Creating a Request
+    DescribeSchema (..),
+    newDescribeSchema,
+
+    -- * Request Lenses
+    describeSchema_schemaVersion,
+    describeSchema_registryName,
+    describeSchema_schemaName,
+
+    -- * Destructuring the Response
+    DescribeSchemaResponse (..),
+    newDescribeSchemaResponse,
+
+    -- * Response Lenses
+    describeSchemaResponse_content,
+    describeSchemaResponse_description,
+    describeSchemaResponse_lastModified,
+    describeSchemaResponse_schemaArn,
+    describeSchemaResponse_schemaName,
+    describeSchemaResponse_schemaVersion,
+    describeSchemaResponse_tags,
+    describeSchemaResponse_type,
+    describeSchemaResponse_versionCreatedDate,
+    describeSchemaResponse_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.Schemas.Types
+
+-- | /See:/ 'newDescribeSchema' smart constructor.
+data DescribeSchema = DescribeSchema'
+  { -- | Specifying this limits the results to only this schema version.
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'schemaVersion', 'describeSchema_schemaVersion' - Specifying this limits the results to only this schema version.
+--
+-- 'registryName', 'describeSchema_registryName' - The name of the registry.
+--
+-- 'schemaName', 'describeSchema_schemaName' - The name of the schema.
+newDescribeSchema ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  DescribeSchema
+newDescribeSchema pRegistryName_ pSchemaName_ =
+  DescribeSchema'
+    { schemaVersion = Prelude.Nothing,
+      registryName = pRegistryName_,
+      schemaName = pSchemaName_
+    }
+
+-- | Specifying this limits the results to only this schema version.
+describeSchema_schemaVersion :: Lens.Lens' DescribeSchema (Prelude.Maybe Prelude.Text)
+describeSchema_schemaVersion = Lens.lens (\DescribeSchema' {schemaVersion} -> schemaVersion) (\s@DescribeSchema' {} a -> s {schemaVersion = a} :: DescribeSchema)
+
+-- | The name of the registry.
+describeSchema_registryName :: Lens.Lens' DescribeSchema Prelude.Text
+describeSchema_registryName = Lens.lens (\DescribeSchema' {registryName} -> registryName) (\s@DescribeSchema' {} a -> s {registryName = a} :: DescribeSchema)
+
+-- | The name of the schema.
+describeSchema_schemaName :: Lens.Lens' DescribeSchema Prelude.Text
+describeSchema_schemaName = Lens.lens (\DescribeSchema' {schemaName} -> schemaName) (\s@DescribeSchema' {} a -> s {schemaName = a} :: DescribeSchema)
+
+instance Core.AWSRequest DescribeSchema where
+  type
+    AWSResponse DescribeSchema =
+      DescribeSchemaResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeSchemaResponse'
+            Prelude.<$> (x Data..?> "Content")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModified")
+            Prelude.<*> (x Data..?> "SchemaArn")
+            Prelude.<*> (x Data..?> "SchemaName")
+            Prelude.<*> (x Data..?> "SchemaVersion")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Type")
+            Prelude.<*> (x Data..?> "VersionCreatedDate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeSchema where
+  hashWithSalt _salt DescribeSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` schemaVersion
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+
+instance Prelude.NFData DescribeSchema where
+  rnf DescribeSchema' {..} =
+    Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+
+instance Data.ToHeaders DescribeSchema where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeSchema where
+  toPath DescribeSchema' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName
+      ]
+
+instance Data.ToQuery DescribeSchema where
+  toQuery DescribeSchema' {..} =
+    Prelude.mconcat
+      ["schemaVersion" Data.=: schemaVersion]
+
+-- | /See:/ 'newDescribeSchemaResponse' smart constructor.
+data DescribeSchemaResponse = DescribeSchemaResponse'
+  { -- | The source of the schema definition.
+    content :: Prelude.Maybe Prelude.Text,
+    -- | The description of the schema.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that schema was modified.
+    lastModified :: Prelude.Maybe Data.ISO8601,
+    -- | The ARN of the schema.
+    schemaArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the schema
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | Tags associated with the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The type of the schema.
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The date the schema version was created.
+    versionCreatedDate :: Prelude.Maybe Data.ISO8601,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeSchemaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'content', 'describeSchemaResponse_content' - The source of the schema definition.
+--
+-- 'description', 'describeSchemaResponse_description' - The description of the schema.
+--
+-- 'lastModified', 'describeSchemaResponse_lastModified' - The date and time that schema was modified.
+--
+-- 'schemaArn', 'describeSchemaResponse_schemaArn' - The ARN of the schema.
+--
+-- 'schemaName', 'describeSchemaResponse_schemaName' - The name of the schema.
+--
+-- 'schemaVersion', 'describeSchemaResponse_schemaVersion' - The version number of the schema
+--
+-- 'tags', 'describeSchemaResponse_tags' - Tags associated with the resource.
+--
+-- 'type'', 'describeSchemaResponse_type' - The type of the schema.
+--
+-- 'versionCreatedDate', 'describeSchemaResponse_versionCreatedDate' - The date the schema version was created.
+--
+-- 'httpStatus', 'describeSchemaResponse_httpStatus' - The response's http status code.
+newDescribeSchemaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeSchemaResponse
+newDescribeSchemaResponse pHttpStatus_ =
+  DescribeSchemaResponse'
+    { content = Prelude.Nothing,
+      description = Prelude.Nothing,
+      lastModified = Prelude.Nothing,
+      schemaArn = Prelude.Nothing,
+      schemaName = Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      versionCreatedDate = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The source of the schema definition.
+describeSchemaResponse_content :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe Prelude.Text)
+describeSchemaResponse_content = Lens.lens (\DescribeSchemaResponse' {content} -> content) (\s@DescribeSchemaResponse' {} a -> s {content = a} :: DescribeSchemaResponse)
+
+-- | The description of the schema.
+describeSchemaResponse_description :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe Prelude.Text)
+describeSchemaResponse_description = Lens.lens (\DescribeSchemaResponse' {description} -> description) (\s@DescribeSchemaResponse' {} a -> s {description = a} :: DescribeSchemaResponse)
+
+-- | The date and time that schema was modified.
+describeSchemaResponse_lastModified :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe Prelude.UTCTime)
+describeSchemaResponse_lastModified = Lens.lens (\DescribeSchemaResponse' {lastModified} -> lastModified) (\s@DescribeSchemaResponse' {} a -> s {lastModified = a} :: DescribeSchemaResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the schema.
+describeSchemaResponse_schemaArn :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe Prelude.Text)
+describeSchemaResponse_schemaArn = Lens.lens (\DescribeSchemaResponse' {schemaArn} -> schemaArn) (\s@DescribeSchemaResponse' {} a -> s {schemaArn = a} :: DescribeSchemaResponse)
+
+-- | The name of the schema.
+describeSchemaResponse_schemaName :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe Prelude.Text)
+describeSchemaResponse_schemaName = Lens.lens (\DescribeSchemaResponse' {schemaName} -> schemaName) (\s@DescribeSchemaResponse' {} a -> s {schemaName = a} :: DescribeSchemaResponse)
+
+-- | The version number of the schema
+describeSchemaResponse_schemaVersion :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe Prelude.Text)
+describeSchemaResponse_schemaVersion = Lens.lens (\DescribeSchemaResponse' {schemaVersion} -> schemaVersion) (\s@DescribeSchemaResponse' {} a -> s {schemaVersion = a} :: DescribeSchemaResponse)
+
+-- | Tags associated with the resource.
+describeSchemaResponse_tags :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeSchemaResponse_tags = Lens.lens (\DescribeSchemaResponse' {tags} -> tags) (\s@DescribeSchemaResponse' {} a -> s {tags = a} :: DescribeSchemaResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of the schema.
+describeSchemaResponse_type :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe Prelude.Text)
+describeSchemaResponse_type = Lens.lens (\DescribeSchemaResponse' {type'} -> type') (\s@DescribeSchemaResponse' {} a -> s {type' = a} :: DescribeSchemaResponse)
+
+-- | The date the schema version was created.
+describeSchemaResponse_versionCreatedDate :: Lens.Lens' DescribeSchemaResponse (Prelude.Maybe Prelude.UTCTime)
+describeSchemaResponse_versionCreatedDate = Lens.lens (\DescribeSchemaResponse' {versionCreatedDate} -> versionCreatedDate) (\s@DescribeSchemaResponse' {} a -> s {versionCreatedDate = a} :: DescribeSchemaResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+describeSchemaResponse_httpStatus :: Lens.Lens' DescribeSchemaResponse Prelude.Int
+describeSchemaResponse_httpStatus = Lens.lens (\DescribeSchemaResponse' {httpStatus} -> httpStatus) (\s@DescribeSchemaResponse' {} a -> s {httpStatus = a} :: DescribeSchemaResponse)
+
+instance Prelude.NFData DescribeSchemaResponse where
+  rnf DescribeSchemaResponse' {..} =
+    Prelude.rnf content
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModified
+      `Prelude.seq` Prelude.rnf schemaArn
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf versionCreatedDate
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/ExportSchema.hs b/gen/Amazonka/Schemas/ExportSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/ExportSchema.hs
@@ -0,0 +1,251 @@
+{-# 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.Schemas.ExportSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- -- | Undocumented operation.
+module Amazonka.Schemas.ExportSchema
+  ( -- * Creating a Request
+    ExportSchema (..),
+    newExportSchema,
+
+    -- * Request Lenses
+    exportSchema_schemaVersion,
+    exportSchema_registryName,
+    exportSchema_schemaName,
+    exportSchema_type,
+
+    -- * Destructuring the Response
+    ExportSchemaResponse (..),
+    newExportSchemaResponse,
+
+    -- * Response Lenses
+    exportSchemaResponse_content,
+    exportSchemaResponse_schemaArn,
+    exportSchemaResponse_schemaName,
+    exportSchemaResponse_schemaVersion,
+    exportSchemaResponse_type,
+    exportSchemaResponse_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.Schemas.Types
+
+-- | /See:/ 'newExportSchema' smart constructor.
+data ExportSchema = ExportSchema'
+  { -- | Specifying this limits the results to only this schema version.
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text,
+    type' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'schemaVersion', 'exportSchema_schemaVersion' - Specifying this limits the results to only this schema version.
+--
+-- 'registryName', 'exportSchema_registryName' - The name of the registry.
+--
+-- 'schemaName', 'exportSchema_schemaName' - The name of the schema.
+--
+-- 'type'', 'exportSchema_type' - Undocumented member.
+newExportSchema ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  -- | 'type''
+  Prelude.Text ->
+  ExportSchema
+newExportSchema pRegistryName_ pSchemaName_ pType_ =
+  ExportSchema'
+    { schemaVersion = Prelude.Nothing,
+      registryName = pRegistryName_,
+      schemaName = pSchemaName_,
+      type' = pType_
+    }
+
+-- | Specifying this limits the results to only this schema version.
+exportSchema_schemaVersion :: Lens.Lens' ExportSchema (Prelude.Maybe Prelude.Text)
+exportSchema_schemaVersion = Lens.lens (\ExportSchema' {schemaVersion} -> schemaVersion) (\s@ExportSchema' {} a -> s {schemaVersion = a} :: ExportSchema)
+
+-- | The name of the registry.
+exportSchema_registryName :: Lens.Lens' ExportSchema Prelude.Text
+exportSchema_registryName = Lens.lens (\ExportSchema' {registryName} -> registryName) (\s@ExportSchema' {} a -> s {registryName = a} :: ExportSchema)
+
+-- | The name of the schema.
+exportSchema_schemaName :: Lens.Lens' ExportSchema Prelude.Text
+exportSchema_schemaName = Lens.lens (\ExportSchema' {schemaName} -> schemaName) (\s@ExportSchema' {} a -> s {schemaName = a} :: ExportSchema)
+
+-- | Undocumented member.
+exportSchema_type :: Lens.Lens' ExportSchema Prelude.Text
+exportSchema_type = Lens.lens (\ExportSchema' {type'} -> type') (\s@ExportSchema' {} a -> s {type' = a} :: ExportSchema)
+
+instance Core.AWSRequest ExportSchema where
+  type AWSResponse ExportSchema = ExportSchemaResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ExportSchemaResponse'
+            Prelude.<$> (x Data..?> "Content")
+            Prelude.<*> (x Data..?> "SchemaArn")
+            Prelude.<*> (x Data..?> "SchemaName")
+            Prelude.<*> (x Data..?> "SchemaVersion")
+            Prelude.<*> (x Data..?> "Type")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ExportSchema where
+  hashWithSalt _salt ExportSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` schemaVersion
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ExportSchema where
+  rnf ExportSchema' {..} =
+    Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders ExportSchema where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ExportSchema where
+  toPath ExportSchema' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName,
+        "/export"
+      ]
+
+instance Data.ToQuery ExportSchema where
+  toQuery ExportSchema' {..} =
+    Prelude.mconcat
+      [ "schemaVersion" Data.=: schemaVersion,
+        "type" Data.=: type'
+      ]
+
+-- | /See:/ 'newExportSchemaResponse' smart constructor.
+data ExportSchemaResponse = ExportSchemaResponse'
+  { content :: Prelude.Maybe Prelude.Text,
+    schemaArn :: Prelude.Maybe Prelude.Text,
+    schemaName :: Prelude.Maybe Prelude.Text,
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportSchemaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'content', 'exportSchemaResponse_content' - Undocumented member.
+--
+-- 'schemaArn', 'exportSchemaResponse_schemaArn' - Undocumented member.
+--
+-- 'schemaName', 'exportSchemaResponse_schemaName' - Undocumented member.
+--
+-- 'schemaVersion', 'exportSchemaResponse_schemaVersion' - Undocumented member.
+--
+-- 'type'', 'exportSchemaResponse_type' - Undocumented member.
+--
+-- 'httpStatus', 'exportSchemaResponse_httpStatus' - The response's http status code.
+newExportSchemaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ExportSchemaResponse
+newExportSchemaResponse pHttpStatus_ =
+  ExportSchemaResponse'
+    { content = Prelude.Nothing,
+      schemaArn = Prelude.Nothing,
+      schemaName = Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+exportSchemaResponse_content :: Lens.Lens' ExportSchemaResponse (Prelude.Maybe Prelude.Text)
+exportSchemaResponse_content = Lens.lens (\ExportSchemaResponse' {content} -> content) (\s@ExportSchemaResponse' {} a -> s {content = a} :: ExportSchemaResponse)
+
+-- | Undocumented member.
+exportSchemaResponse_schemaArn :: Lens.Lens' ExportSchemaResponse (Prelude.Maybe Prelude.Text)
+exportSchemaResponse_schemaArn = Lens.lens (\ExportSchemaResponse' {schemaArn} -> schemaArn) (\s@ExportSchemaResponse' {} a -> s {schemaArn = a} :: ExportSchemaResponse)
+
+-- | Undocumented member.
+exportSchemaResponse_schemaName :: Lens.Lens' ExportSchemaResponse (Prelude.Maybe Prelude.Text)
+exportSchemaResponse_schemaName = Lens.lens (\ExportSchemaResponse' {schemaName} -> schemaName) (\s@ExportSchemaResponse' {} a -> s {schemaName = a} :: ExportSchemaResponse)
+
+-- | Undocumented member.
+exportSchemaResponse_schemaVersion :: Lens.Lens' ExportSchemaResponse (Prelude.Maybe Prelude.Text)
+exportSchemaResponse_schemaVersion = Lens.lens (\ExportSchemaResponse' {schemaVersion} -> schemaVersion) (\s@ExportSchemaResponse' {} a -> s {schemaVersion = a} :: ExportSchemaResponse)
+
+-- | Undocumented member.
+exportSchemaResponse_type :: Lens.Lens' ExportSchemaResponse (Prelude.Maybe Prelude.Text)
+exportSchemaResponse_type = Lens.lens (\ExportSchemaResponse' {type'} -> type') (\s@ExportSchemaResponse' {} a -> s {type' = a} :: ExportSchemaResponse)
+
+-- | The response's http status code.
+exportSchemaResponse_httpStatus :: Lens.Lens' ExportSchemaResponse Prelude.Int
+exportSchemaResponse_httpStatus = Lens.lens (\ExportSchemaResponse' {httpStatus} -> httpStatus) (\s@ExportSchemaResponse' {} a -> s {httpStatus = a} :: ExportSchemaResponse)
+
+instance Prelude.NFData ExportSchemaResponse where
+  rnf ExportSchemaResponse' {..} =
+    Prelude.rnf content
+      `Prelude.seq` Prelude.rnf schemaArn
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/GetCodeBindingSource.hs b/gen/Amazonka/Schemas/GetCodeBindingSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/GetCodeBindingSource.hs
@@ -0,0 +1,215 @@
+{-# 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.Schemas.GetCodeBindingSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get the code binding source URI.
+module Amazonka.Schemas.GetCodeBindingSource
+  ( -- * Creating a Request
+    GetCodeBindingSource (..),
+    newGetCodeBindingSource,
+
+    -- * Request Lenses
+    getCodeBindingSource_schemaVersion,
+    getCodeBindingSource_registryName,
+    getCodeBindingSource_schemaName,
+    getCodeBindingSource_language,
+
+    -- * Destructuring the Response
+    GetCodeBindingSourceResponse (..),
+    newGetCodeBindingSourceResponse,
+
+    -- * Response Lenses
+    getCodeBindingSourceResponse_body,
+    getCodeBindingSourceResponse_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.Schemas.Types
+
+-- | /See:/ 'newGetCodeBindingSource' smart constructor.
+data GetCodeBindingSource = GetCodeBindingSource'
+  { -- | Specifying this limits the results to only this schema version.
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text,
+    -- | The language of the code binding.
+    language :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCodeBindingSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'schemaVersion', 'getCodeBindingSource_schemaVersion' - Specifying this limits the results to only this schema version.
+--
+-- 'registryName', 'getCodeBindingSource_registryName' - The name of the registry.
+--
+-- 'schemaName', 'getCodeBindingSource_schemaName' - The name of the schema.
+--
+-- 'language', 'getCodeBindingSource_language' - The language of the code binding.
+newGetCodeBindingSource ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  -- | 'language'
+  Prelude.Text ->
+  GetCodeBindingSource
+newGetCodeBindingSource
+  pRegistryName_
+  pSchemaName_
+  pLanguage_ =
+    GetCodeBindingSource'
+      { schemaVersion =
+          Prelude.Nothing,
+        registryName = pRegistryName_,
+        schemaName = pSchemaName_,
+        language = pLanguage_
+      }
+
+-- | Specifying this limits the results to only this schema version.
+getCodeBindingSource_schemaVersion :: Lens.Lens' GetCodeBindingSource (Prelude.Maybe Prelude.Text)
+getCodeBindingSource_schemaVersion = Lens.lens (\GetCodeBindingSource' {schemaVersion} -> schemaVersion) (\s@GetCodeBindingSource' {} a -> s {schemaVersion = a} :: GetCodeBindingSource)
+
+-- | The name of the registry.
+getCodeBindingSource_registryName :: Lens.Lens' GetCodeBindingSource Prelude.Text
+getCodeBindingSource_registryName = Lens.lens (\GetCodeBindingSource' {registryName} -> registryName) (\s@GetCodeBindingSource' {} a -> s {registryName = a} :: GetCodeBindingSource)
+
+-- | The name of the schema.
+getCodeBindingSource_schemaName :: Lens.Lens' GetCodeBindingSource Prelude.Text
+getCodeBindingSource_schemaName = Lens.lens (\GetCodeBindingSource' {schemaName} -> schemaName) (\s@GetCodeBindingSource' {} a -> s {schemaName = a} :: GetCodeBindingSource)
+
+-- | The language of the code binding.
+getCodeBindingSource_language :: Lens.Lens' GetCodeBindingSource Prelude.Text
+getCodeBindingSource_language = Lens.lens (\GetCodeBindingSource' {language} -> language) (\s@GetCodeBindingSource' {} a -> s {language = a} :: GetCodeBindingSource)
+
+instance Core.AWSRequest GetCodeBindingSource where
+  type
+    AWSResponse GetCodeBindingSource =
+      GetCodeBindingSourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveBytes
+      ( \s h x ->
+          GetCodeBindingSourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.Just (Prelude.coerce x)))
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetCodeBindingSource where
+  hashWithSalt _salt GetCodeBindingSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` schemaVersion
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+      `Prelude.hashWithSalt` language
+
+instance Prelude.NFData GetCodeBindingSource where
+  rnf GetCodeBindingSource' {..} =
+    Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf language
+
+instance Data.ToHeaders GetCodeBindingSource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetCodeBindingSource where
+  toPath GetCodeBindingSource' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName,
+        "/language/",
+        Data.toBS language,
+        "/source"
+      ]
+
+instance Data.ToQuery GetCodeBindingSource where
+  toQuery GetCodeBindingSource' {..} =
+    Prelude.mconcat
+      ["schemaVersion" Data.=: schemaVersion]
+
+-- | /See:/ 'newGetCodeBindingSourceResponse' smart constructor.
+data GetCodeBindingSourceResponse = GetCodeBindingSourceResponse'
+  { body :: Prelude.Maybe Prelude.ByteString,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCodeBindingSourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'body', 'getCodeBindingSourceResponse_body' - Undocumented member.
+--
+-- 'httpStatus', 'getCodeBindingSourceResponse_httpStatus' - The response's http status code.
+newGetCodeBindingSourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCodeBindingSourceResponse
+newGetCodeBindingSourceResponse pHttpStatus_ =
+  GetCodeBindingSourceResponse'
+    { body =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getCodeBindingSourceResponse_body :: Lens.Lens' GetCodeBindingSourceResponse (Prelude.Maybe Prelude.ByteString)
+getCodeBindingSourceResponse_body = Lens.lens (\GetCodeBindingSourceResponse' {body} -> body) (\s@GetCodeBindingSourceResponse' {} a -> s {body = a} :: GetCodeBindingSourceResponse)
+
+-- | The response's http status code.
+getCodeBindingSourceResponse_httpStatus :: Lens.Lens' GetCodeBindingSourceResponse Prelude.Int
+getCodeBindingSourceResponse_httpStatus = Lens.lens (\GetCodeBindingSourceResponse' {httpStatus} -> httpStatus) (\s@GetCodeBindingSourceResponse' {} a -> s {httpStatus = a} :: GetCodeBindingSourceResponse)
+
+instance Prelude.NFData GetCodeBindingSourceResponse where
+  rnf GetCodeBindingSourceResponse' {..} =
+    Prelude.rnf body
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/GetDiscoveredSchema.hs b/gen/Amazonka/Schemas/GetDiscoveredSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/GetDiscoveredSchema.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.Schemas.GetDiscoveredSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get the discovered schema that was generated based on sampled events.
+module Amazonka.Schemas.GetDiscoveredSchema
+  ( -- * Creating a Request
+    GetDiscoveredSchema (..),
+    newGetDiscoveredSchema,
+
+    -- * Request Lenses
+    getDiscoveredSchema_type,
+    getDiscoveredSchema_events,
+
+    -- * Destructuring the Response
+    GetDiscoveredSchemaResponse (..),
+    newGetDiscoveredSchemaResponse,
+
+    -- * Response Lenses
+    getDiscoveredSchemaResponse_content,
+    getDiscoveredSchemaResponse_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.Schemas.Types
+
+-- | /See:/ 'newGetDiscoveredSchema' smart constructor.
+data GetDiscoveredSchema = GetDiscoveredSchema'
+  { -- | The type of event.
+    type' :: Type,
+    -- | An array of strings where each string is a JSON event. These are the
+    -- events that were used to generate the schema. The array includes a
+    -- single type of event and has a maximum size of 10 events.
+    events :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDiscoveredSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'type'', 'getDiscoveredSchema_type' - The type of event.
+--
+-- 'events', 'getDiscoveredSchema_events' - An array of strings where each string is a JSON event. These are the
+-- events that were used to generate the schema. The array includes a
+-- single type of event and has a maximum size of 10 events.
+newGetDiscoveredSchema ::
+  -- | 'type''
+  Type ->
+  -- | 'events'
+  Prelude.NonEmpty Prelude.Text ->
+  GetDiscoveredSchema
+newGetDiscoveredSchema pType_ pEvents_ =
+  GetDiscoveredSchema'
+    { type' = pType_,
+      events = Lens.coerced Lens.# pEvents_
+    }
+
+-- | The type of event.
+getDiscoveredSchema_type :: Lens.Lens' GetDiscoveredSchema Type
+getDiscoveredSchema_type = Lens.lens (\GetDiscoveredSchema' {type'} -> type') (\s@GetDiscoveredSchema' {} a -> s {type' = a} :: GetDiscoveredSchema)
+
+-- | An array of strings where each string is a JSON event. These are the
+-- events that were used to generate the schema. The array includes a
+-- single type of event and has a maximum size of 10 events.
+getDiscoveredSchema_events :: Lens.Lens' GetDiscoveredSchema (Prelude.NonEmpty Prelude.Text)
+getDiscoveredSchema_events = Lens.lens (\GetDiscoveredSchema' {events} -> events) (\s@GetDiscoveredSchema' {} a -> s {events = a} :: GetDiscoveredSchema) Prelude.. Lens.coerced
+
+instance Core.AWSRequest GetDiscoveredSchema where
+  type
+    AWSResponse GetDiscoveredSchema =
+      GetDiscoveredSchemaResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDiscoveredSchemaResponse'
+            Prelude.<$> (x Data..?> "Content")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDiscoveredSchema where
+  hashWithSalt _salt GetDiscoveredSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` events
+
+instance Prelude.NFData GetDiscoveredSchema where
+  rnf GetDiscoveredSchema' {..} =
+    Prelude.rnf type' `Prelude.seq` Prelude.rnf events
+
+instance Data.ToHeaders GetDiscoveredSchema where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetDiscoveredSchema where
+  toJSON GetDiscoveredSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("Events" Data..= events)
+          ]
+      )
+
+instance Data.ToPath GetDiscoveredSchema where
+  toPath = Prelude.const "/v1/discover"
+
+instance Data.ToQuery GetDiscoveredSchema where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetDiscoveredSchemaResponse' smart constructor.
+data GetDiscoveredSchemaResponse = GetDiscoveredSchemaResponse'
+  { -- | The source of the schema definition.
+    content :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDiscoveredSchemaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'content', 'getDiscoveredSchemaResponse_content' - The source of the schema definition.
+--
+-- 'httpStatus', 'getDiscoveredSchemaResponse_httpStatus' - The response's http status code.
+newGetDiscoveredSchemaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetDiscoveredSchemaResponse
+newGetDiscoveredSchemaResponse pHttpStatus_ =
+  GetDiscoveredSchemaResponse'
+    { content =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The source of the schema definition.
+getDiscoveredSchemaResponse_content :: Lens.Lens' GetDiscoveredSchemaResponse (Prelude.Maybe Prelude.Text)
+getDiscoveredSchemaResponse_content = Lens.lens (\GetDiscoveredSchemaResponse' {content} -> content) (\s@GetDiscoveredSchemaResponse' {} a -> s {content = a} :: GetDiscoveredSchemaResponse)
+
+-- | The response's http status code.
+getDiscoveredSchemaResponse_httpStatus :: Lens.Lens' GetDiscoveredSchemaResponse Prelude.Int
+getDiscoveredSchemaResponse_httpStatus = Lens.lens (\GetDiscoveredSchemaResponse' {httpStatus} -> httpStatus) (\s@GetDiscoveredSchemaResponse' {} a -> s {httpStatus = a} :: GetDiscoveredSchemaResponse)
+
+instance Prelude.NFData GetDiscoveredSchemaResponse where
+  rnf GetDiscoveredSchemaResponse' {..} =
+    Prelude.rnf content
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/GetResourcePolicy.hs b/gen/Amazonka/Schemas/GetResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/GetResourcePolicy.hs
@@ -0,0 +1,169 @@
+{-# 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.Schemas.GetResourcePolicy
+-- 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 resource-based policy attached to a given registry.
+module Amazonka.Schemas.GetResourcePolicy
+  ( -- * Creating a Request
+    GetResourcePolicy (..),
+    newGetResourcePolicy,
+
+    -- * Request Lenses
+    getResourcePolicy_registryName,
+
+    -- * Destructuring the Response
+    GetResourcePolicyResponse (..),
+    newGetResourcePolicyResponse,
+
+    -- * Response Lenses
+    getResourcePolicyResponse_policy,
+    getResourcePolicyResponse_revisionId,
+    getResourcePolicyResponse_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.Schemas.Types
+
+-- | /See:/ 'newGetResourcePolicy' smart constructor.
+data GetResourcePolicy = GetResourcePolicy'
+  { -- | The name of the registry.
+    registryName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'registryName', 'getResourcePolicy_registryName' - The name of the registry.
+newGetResourcePolicy ::
+  GetResourcePolicy
+newGetResourcePolicy =
+  GetResourcePolicy' {registryName = Prelude.Nothing}
+
+-- | The name of the registry.
+getResourcePolicy_registryName :: Lens.Lens' GetResourcePolicy (Prelude.Maybe Prelude.Text)
+getResourcePolicy_registryName = Lens.lens (\GetResourcePolicy' {registryName} -> registryName) (\s@GetResourcePolicy' {} a -> s {registryName = a} :: GetResourcePolicy)
+
+instance Core.AWSRequest GetResourcePolicy where
+  type
+    AWSResponse GetResourcePolicy =
+      GetResourcePolicyResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetResourcePolicyResponse'
+            Prelude.<$> (x Data..?> "Policy")
+            Prelude.<*> (x Data..?> "RevisionId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetResourcePolicy where
+  hashWithSalt _salt GetResourcePolicy' {..} =
+    _salt `Prelude.hashWithSalt` registryName
+
+instance Prelude.NFData GetResourcePolicy where
+  rnf GetResourcePolicy' {..} = Prelude.rnf registryName
+
+instance Data.ToHeaders GetResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetResourcePolicy where
+  toPath = Prelude.const "/v1/policy"
+
+instance Data.ToQuery GetResourcePolicy where
+  toQuery GetResourcePolicy' {..} =
+    Prelude.mconcat
+      ["registryName" Data.=: registryName]
+
+-- | /See:/ 'newGetResourcePolicyResponse' smart constructor.
+data GetResourcePolicyResponse = GetResourcePolicyResponse'
+  { -- | The resource-based policy.
+    policy :: Prelude.Maybe Prelude.Text,
+    -- | The revision ID.
+    revisionId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policy', 'getResourcePolicyResponse_policy' - The resource-based policy.
+--
+-- 'revisionId', 'getResourcePolicyResponse_revisionId' - The revision ID.
+--
+-- 'httpStatus', 'getResourcePolicyResponse_httpStatus' - The response's http status code.
+newGetResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetResourcePolicyResponse
+newGetResourcePolicyResponse pHttpStatus_ =
+  GetResourcePolicyResponse'
+    { policy =
+        Prelude.Nothing,
+      revisionId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The resource-based policy.
+getResourcePolicyResponse_policy :: Lens.Lens' GetResourcePolicyResponse (Prelude.Maybe Prelude.Text)
+getResourcePolicyResponse_policy = Lens.lens (\GetResourcePolicyResponse' {policy} -> policy) (\s@GetResourcePolicyResponse' {} a -> s {policy = a} :: GetResourcePolicyResponse)
+
+-- | The revision ID.
+getResourcePolicyResponse_revisionId :: Lens.Lens' GetResourcePolicyResponse (Prelude.Maybe Prelude.Text)
+getResourcePolicyResponse_revisionId = Lens.lens (\GetResourcePolicyResponse' {revisionId} -> revisionId) (\s@GetResourcePolicyResponse' {} a -> s {revisionId = a} :: GetResourcePolicyResponse)
+
+-- | The response's http status code.
+getResourcePolicyResponse_httpStatus :: Lens.Lens' GetResourcePolicyResponse Prelude.Int
+getResourcePolicyResponse_httpStatus = Lens.lens (\GetResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@GetResourcePolicyResponse' {} a -> s {httpStatus = a} :: GetResourcePolicyResponse)
+
+instance Prelude.NFData GetResourcePolicyResponse where
+  rnf GetResourcePolicyResponse' {..} =
+    Prelude.rnf policy
+      `Prelude.seq` Prelude.rnf revisionId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/Lens.hs b/gen/Amazonka/Schemas/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Lens.hs
@@ -0,0 +1,358 @@
+{-# 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.Schemas.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.Schemas.Lens
+  ( -- * Operations
+
+    -- ** CreateDiscoverer
+    createDiscoverer_crossAccount,
+    createDiscoverer_description,
+    createDiscoverer_tags,
+    createDiscoverer_sourceArn,
+    createDiscovererResponse_crossAccount,
+    createDiscovererResponse_description,
+    createDiscovererResponse_discovererArn,
+    createDiscovererResponse_discovererId,
+    createDiscovererResponse_sourceArn,
+    createDiscovererResponse_state,
+    createDiscovererResponse_tags,
+    createDiscovererResponse_httpStatus,
+
+    -- ** CreateRegistry
+    createRegistry_description,
+    createRegistry_tags,
+    createRegistry_registryName,
+    createRegistryResponse_description,
+    createRegistryResponse_registryArn,
+    createRegistryResponse_registryName,
+    createRegistryResponse_tags,
+    createRegistryResponse_httpStatus,
+
+    -- ** CreateSchema
+    createSchema_description,
+    createSchema_tags,
+    createSchema_registryName,
+    createSchema_schemaName,
+    createSchema_type,
+    createSchema_content,
+    createSchemaResponse_description,
+    createSchemaResponse_lastModified,
+    createSchemaResponse_schemaArn,
+    createSchemaResponse_schemaName,
+    createSchemaResponse_schemaVersion,
+    createSchemaResponse_tags,
+    createSchemaResponse_type,
+    createSchemaResponse_versionCreatedDate,
+    createSchemaResponse_httpStatus,
+
+    -- ** DeleteDiscoverer
+    deleteDiscoverer_discovererId,
+
+    -- ** DeleteRegistry
+    deleteRegistry_registryName,
+
+    -- ** DeleteResourcePolicy
+    deleteResourcePolicy_registryName,
+
+    -- ** DeleteSchema
+    deleteSchema_registryName,
+    deleteSchema_schemaName,
+
+    -- ** DeleteSchemaVersion
+    deleteSchemaVersion_schemaVersion,
+    deleteSchemaVersion_registryName,
+    deleteSchemaVersion_schemaName,
+
+    -- ** DescribeCodeBinding
+    describeCodeBinding_schemaVersion,
+    describeCodeBinding_registryName,
+    describeCodeBinding_schemaName,
+    describeCodeBinding_language,
+    describeCodeBindingResponse_creationDate,
+    describeCodeBindingResponse_lastModified,
+    describeCodeBindingResponse_schemaVersion,
+    describeCodeBindingResponse_status,
+    describeCodeBindingResponse_httpStatus,
+
+    -- ** DescribeDiscoverer
+    describeDiscoverer_discovererId,
+    describeDiscovererResponse_crossAccount,
+    describeDiscovererResponse_description,
+    describeDiscovererResponse_discovererArn,
+    describeDiscovererResponse_discovererId,
+    describeDiscovererResponse_sourceArn,
+    describeDiscovererResponse_state,
+    describeDiscovererResponse_tags,
+    describeDiscovererResponse_httpStatus,
+
+    -- ** DescribeRegistry
+    describeRegistry_registryName,
+    describeRegistryResponse_description,
+    describeRegistryResponse_registryArn,
+    describeRegistryResponse_registryName,
+    describeRegistryResponse_tags,
+    describeRegistryResponse_httpStatus,
+
+    -- ** DescribeSchema
+    describeSchema_schemaVersion,
+    describeSchema_registryName,
+    describeSchema_schemaName,
+    describeSchemaResponse_content,
+    describeSchemaResponse_description,
+    describeSchemaResponse_lastModified,
+    describeSchemaResponse_schemaArn,
+    describeSchemaResponse_schemaName,
+    describeSchemaResponse_schemaVersion,
+    describeSchemaResponse_tags,
+    describeSchemaResponse_type,
+    describeSchemaResponse_versionCreatedDate,
+    describeSchemaResponse_httpStatus,
+
+    -- ** ExportSchema
+    exportSchema_schemaVersion,
+    exportSchema_registryName,
+    exportSchema_schemaName,
+    exportSchema_type,
+    exportSchemaResponse_content,
+    exportSchemaResponse_schemaArn,
+    exportSchemaResponse_schemaName,
+    exportSchemaResponse_schemaVersion,
+    exportSchemaResponse_type,
+    exportSchemaResponse_httpStatus,
+
+    -- ** GetCodeBindingSource
+    getCodeBindingSource_schemaVersion,
+    getCodeBindingSource_registryName,
+    getCodeBindingSource_schemaName,
+    getCodeBindingSource_language,
+    getCodeBindingSourceResponse_body,
+    getCodeBindingSourceResponse_httpStatus,
+
+    -- ** GetDiscoveredSchema
+    getDiscoveredSchema_type,
+    getDiscoveredSchema_events,
+    getDiscoveredSchemaResponse_content,
+    getDiscoveredSchemaResponse_httpStatus,
+
+    -- ** GetResourcePolicy
+    getResourcePolicy_registryName,
+    getResourcePolicyResponse_policy,
+    getResourcePolicyResponse_revisionId,
+    getResourcePolicyResponse_httpStatus,
+
+    -- ** ListDiscoverers
+    listDiscoverers_discovererIdPrefix,
+    listDiscoverers_limit,
+    listDiscoverers_nextToken,
+    listDiscoverers_sourceArnPrefix,
+    listDiscoverersResponse_discoverers,
+    listDiscoverersResponse_nextToken,
+    listDiscoverersResponse_httpStatus,
+
+    -- ** ListRegistries
+    listRegistries_limit,
+    listRegistries_nextToken,
+    listRegistries_registryNamePrefix,
+    listRegistries_scope,
+    listRegistriesResponse_nextToken,
+    listRegistriesResponse_registries,
+    listRegistriesResponse_httpStatus,
+
+    -- ** ListSchemaVersions
+    listSchemaVersions_limit,
+    listSchemaVersions_nextToken,
+    listSchemaVersions_registryName,
+    listSchemaVersions_schemaName,
+    listSchemaVersionsResponse_nextToken,
+    listSchemaVersionsResponse_schemaVersions,
+    listSchemaVersionsResponse_httpStatus,
+
+    -- ** ListSchemas
+    listSchemas_limit,
+    listSchemas_nextToken,
+    listSchemas_schemaNamePrefix,
+    listSchemas_registryName,
+    listSchemasResponse_nextToken,
+    listSchemasResponse_schemas,
+    listSchemasResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** PutCodeBinding
+    putCodeBinding_schemaVersion,
+    putCodeBinding_registryName,
+    putCodeBinding_schemaName,
+    putCodeBinding_language,
+    putCodeBindingResponse_creationDate,
+    putCodeBindingResponse_lastModified,
+    putCodeBindingResponse_schemaVersion,
+    putCodeBindingResponse_status,
+    putCodeBindingResponse_httpStatus,
+
+    -- ** PutResourcePolicy
+    putResourcePolicy_registryName,
+    putResourcePolicy_revisionId,
+    putResourcePolicy_policy,
+    putResourcePolicyResponse_policy,
+    putResourcePolicyResponse_revisionId,
+    putResourcePolicyResponse_httpStatus,
+
+    -- ** SearchSchemas
+    searchSchemas_limit,
+    searchSchemas_nextToken,
+    searchSchemas_registryName,
+    searchSchemas_keywords,
+    searchSchemasResponse_nextToken,
+    searchSchemasResponse_schemas,
+    searchSchemasResponse_httpStatus,
+
+    -- ** StartDiscoverer
+    startDiscoverer_discovererId,
+    startDiscovererResponse_discovererId,
+    startDiscovererResponse_state,
+    startDiscovererResponse_httpStatus,
+
+    -- ** StopDiscoverer
+    stopDiscoverer_discovererId,
+    stopDiscovererResponse_discovererId,
+    stopDiscovererResponse_state,
+    stopDiscovererResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- ** UntagResource
+    untagResource_tagKeys,
+    untagResource_resourceArn,
+
+    -- ** UpdateDiscoverer
+    updateDiscoverer_crossAccount,
+    updateDiscoverer_description,
+    updateDiscoverer_discovererId,
+    updateDiscovererResponse_crossAccount,
+    updateDiscovererResponse_description,
+    updateDiscovererResponse_discovererArn,
+    updateDiscovererResponse_discovererId,
+    updateDiscovererResponse_sourceArn,
+    updateDiscovererResponse_state,
+    updateDiscovererResponse_tags,
+    updateDiscovererResponse_httpStatus,
+
+    -- ** UpdateRegistry
+    updateRegistry_description,
+    updateRegistry_registryName,
+    updateRegistryResponse_description,
+    updateRegistryResponse_registryArn,
+    updateRegistryResponse_registryName,
+    updateRegistryResponse_tags,
+    updateRegistryResponse_httpStatus,
+
+    -- ** UpdateSchema
+    updateSchema_clientTokenId,
+    updateSchema_content,
+    updateSchema_description,
+    updateSchema_type,
+    updateSchema_registryName,
+    updateSchema_schemaName,
+    updateSchemaResponse_description,
+    updateSchemaResponse_lastModified,
+    updateSchemaResponse_schemaArn,
+    updateSchemaResponse_schemaName,
+    updateSchemaResponse_schemaVersion,
+    updateSchemaResponse_tags,
+    updateSchemaResponse_type,
+    updateSchemaResponse_versionCreatedDate,
+    updateSchemaResponse_httpStatus,
+
+    -- * Types
+
+    -- ** DiscovererSummary
+    discovererSummary_crossAccount,
+    discovererSummary_discovererArn,
+    discovererSummary_discovererId,
+    discovererSummary_sourceArn,
+    discovererSummary_state,
+    discovererSummary_tags,
+
+    -- ** RegistrySummary
+    registrySummary_registryArn,
+    registrySummary_registryName,
+    registrySummary_tags,
+
+    -- ** SchemaSummary
+    schemaSummary_lastModified,
+    schemaSummary_schemaArn,
+    schemaSummary_schemaName,
+    schemaSummary_tags,
+    schemaSummary_versionCount,
+
+    -- ** SchemaVersionSummary
+    schemaVersionSummary_schemaArn,
+    schemaVersionSummary_schemaName,
+    schemaVersionSummary_schemaVersion,
+    schemaVersionSummary_type,
+
+    -- ** SearchSchemaSummary
+    searchSchemaSummary_registryName,
+    searchSchemaSummary_schemaArn,
+    searchSchemaSummary_schemaName,
+    searchSchemaSummary_schemaVersions,
+
+    -- ** SearchSchemaVersionSummary
+    searchSchemaVersionSummary_createdDate,
+    searchSchemaVersionSummary_schemaVersion,
+    searchSchemaVersionSummary_type,
+  )
+where
+
+import Amazonka.Schemas.CreateDiscoverer
+import Amazonka.Schemas.CreateRegistry
+import Amazonka.Schemas.CreateSchema
+import Amazonka.Schemas.DeleteDiscoverer
+import Amazonka.Schemas.DeleteRegistry
+import Amazonka.Schemas.DeleteResourcePolicy
+import Amazonka.Schemas.DeleteSchema
+import Amazonka.Schemas.DeleteSchemaVersion
+import Amazonka.Schemas.DescribeCodeBinding
+import Amazonka.Schemas.DescribeDiscoverer
+import Amazonka.Schemas.DescribeRegistry
+import Amazonka.Schemas.DescribeSchema
+import Amazonka.Schemas.ExportSchema
+import Amazonka.Schemas.GetCodeBindingSource
+import Amazonka.Schemas.GetDiscoveredSchema
+import Amazonka.Schemas.GetResourcePolicy
+import Amazonka.Schemas.ListDiscoverers
+import Amazonka.Schemas.ListRegistries
+import Amazonka.Schemas.ListSchemaVersions
+import Amazonka.Schemas.ListSchemas
+import Amazonka.Schemas.ListTagsForResource
+import Amazonka.Schemas.PutCodeBinding
+import Amazonka.Schemas.PutResourcePolicy
+import Amazonka.Schemas.SearchSchemas
+import Amazonka.Schemas.StartDiscoverer
+import Amazonka.Schemas.StopDiscoverer
+import Amazonka.Schemas.TagResource
+import Amazonka.Schemas.Types.DiscovererSummary
+import Amazonka.Schemas.Types.RegistrySummary
+import Amazonka.Schemas.Types.SchemaSummary
+import Amazonka.Schemas.Types.SchemaVersionSummary
+import Amazonka.Schemas.Types.SearchSchemaSummary
+import Amazonka.Schemas.Types.SearchSchemaVersionSummary
+import Amazonka.Schemas.UntagResource
+import Amazonka.Schemas.UpdateDiscoverer
+import Amazonka.Schemas.UpdateRegistry
+import Amazonka.Schemas.UpdateSchema
diff --git a/gen/Amazonka/Schemas/ListDiscoverers.hs b/gen/Amazonka/Schemas/ListDiscoverers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/ListDiscoverers.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.ListDiscoverers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the discoverers.
+--
+-- This operation returns paginated results.
+module Amazonka.Schemas.ListDiscoverers
+  ( -- * Creating a Request
+    ListDiscoverers (..),
+    newListDiscoverers,
+
+    -- * Request Lenses
+    listDiscoverers_discovererIdPrefix,
+    listDiscoverers_limit,
+    listDiscoverers_nextToken,
+    listDiscoverers_sourceArnPrefix,
+
+    -- * Destructuring the Response
+    ListDiscoverersResponse (..),
+    newListDiscoverersResponse,
+
+    -- * Response Lenses
+    listDiscoverersResponse_discoverers,
+    listDiscoverersResponse_nextToken,
+    listDiscoverersResponse_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.Schemas.Types
+
+-- | /See:/ 'newListDiscoverers' smart constructor.
+data ListDiscoverers = ListDiscoverers'
+  { -- | Specifying this limits the results to only those discoverer IDs that
+    -- start with the specified prefix.
+    discovererIdPrefix :: Prelude.Maybe Prelude.Text,
+    limit :: Prelude.Maybe Prelude.Int,
+    -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifying this limits the results to only those ARNs that start with
+    -- the specified prefix.
+    sourceArnPrefix :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDiscoverers' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discovererIdPrefix', 'listDiscoverers_discovererIdPrefix' - Specifying this limits the results to only those discoverer IDs that
+-- start with the specified prefix.
+--
+-- 'limit', 'listDiscoverers_limit' - Undocumented member.
+--
+-- 'nextToken', 'listDiscoverers_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'sourceArnPrefix', 'listDiscoverers_sourceArnPrefix' - Specifying this limits the results to only those ARNs that start with
+-- the specified prefix.
+newListDiscoverers ::
+  ListDiscoverers
+newListDiscoverers =
+  ListDiscoverers'
+    { discovererIdPrefix =
+        Prelude.Nothing,
+      limit = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sourceArnPrefix = Prelude.Nothing
+    }
+
+-- | Specifying this limits the results to only those discoverer IDs that
+-- start with the specified prefix.
+listDiscoverers_discovererIdPrefix :: Lens.Lens' ListDiscoverers (Prelude.Maybe Prelude.Text)
+listDiscoverers_discovererIdPrefix = Lens.lens (\ListDiscoverers' {discovererIdPrefix} -> discovererIdPrefix) (\s@ListDiscoverers' {} a -> s {discovererIdPrefix = a} :: ListDiscoverers)
+
+-- | Undocumented member.
+listDiscoverers_limit :: Lens.Lens' ListDiscoverers (Prelude.Maybe Prelude.Int)
+listDiscoverers_limit = Lens.lens (\ListDiscoverers' {limit} -> limit) (\s@ListDiscoverers' {} a -> s {limit = a} :: ListDiscoverers)
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+listDiscoverers_nextToken :: Lens.Lens' ListDiscoverers (Prelude.Maybe Prelude.Text)
+listDiscoverers_nextToken = Lens.lens (\ListDiscoverers' {nextToken} -> nextToken) (\s@ListDiscoverers' {} a -> s {nextToken = a} :: ListDiscoverers)
+
+-- | Specifying this limits the results to only those ARNs that start with
+-- the specified prefix.
+listDiscoverers_sourceArnPrefix :: Lens.Lens' ListDiscoverers (Prelude.Maybe Prelude.Text)
+listDiscoverers_sourceArnPrefix = Lens.lens (\ListDiscoverers' {sourceArnPrefix} -> sourceArnPrefix) (\s@ListDiscoverers' {} a -> s {sourceArnPrefix = a} :: ListDiscoverers)
+
+instance Core.AWSPager ListDiscoverers where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listDiscoverersResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listDiscoverersResponse_discoverers
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listDiscoverers_nextToken
+          Lens..~ rs
+          Lens.^? listDiscoverersResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListDiscoverers where
+  type
+    AWSResponse ListDiscoverers =
+      ListDiscoverersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDiscoverersResponse'
+            Prelude.<$> (x Data..?> "Discoverers" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDiscoverers where
+  hashWithSalt _salt ListDiscoverers' {..} =
+    _salt
+      `Prelude.hashWithSalt` discovererIdPrefix
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sourceArnPrefix
+
+instance Prelude.NFData ListDiscoverers where
+  rnf ListDiscoverers' {..} =
+    Prelude.rnf discovererIdPrefix
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sourceArnPrefix
+
+instance Data.ToHeaders ListDiscoverers where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListDiscoverers where
+  toPath = Prelude.const "/v1/discoverers"
+
+instance Data.ToQuery ListDiscoverers where
+  toQuery ListDiscoverers' {..} =
+    Prelude.mconcat
+      [ "discovererIdPrefix" Data.=: discovererIdPrefix,
+        "limit" Data.=: limit,
+        "nextToken" Data.=: nextToken,
+        "sourceArnPrefix" Data.=: sourceArnPrefix
+      ]
+
+-- | /See:/ 'newListDiscoverersResponse' smart constructor.
+data ListDiscoverersResponse = ListDiscoverersResponse'
+  { -- | An array of DiscovererSummary information.
+    discoverers :: Prelude.Maybe [DiscovererSummary],
+    -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDiscoverersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discoverers', 'listDiscoverersResponse_discoverers' - An array of DiscovererSummary information.
+--
+-- 'nextToken', 'listDiscoverersResponse_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'httpStatus', 'listDiscoverersResponse_httpStatus' - The response's http status code.
+newListDiscoverersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDiscoverersResponse
+newListDiscoverersResponse pHttpStatus_ =
+  ListDiscoverersResponse'
+    { discoverers =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of DiscovererSummary information.
+listDiscoverersResponse_discoverers :: Lens.Lens' ListDiscoverersResponse (Prelude.Maybe [DiscovererSummary])
+listDiscoverersResponse_discoverers = Lens.lens (\ListDiscoverersResponse' {discoverers} -> discoverers) (\s@ListDiscoverersResponse' {} a -> s {discoverers = a} :: ListDiscoverersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+listDiscoverersResponse_nextToken :: Lens.Lens' ListDiscoverersResponse (Prelude.Maybe Prelude.Text)
+listDiscoverersResponse_nextToken = Lens.lens (\ListDiscoverersResponse' {nextToken} -> nextToken) (\s@ListDiscoverersResponse' {} a -> s {nextToken = a} :: ListDiscoverersResponse)
+
+-- | The response's http status code.
+listDiscoverersResponse_httpStatus :: Lens.Lens' ListDiscoverersResponse Prelude.Int
+listDiscoverersResponse_httpStatus = Lens.lens (\ListDiscoverersResponse' {httpStatus} -> httpStatus) (\s@ListDiscoverersResponse' {} a -> s {httpStatus = a} :: ListDiscoverersResponse)
+
+instance Prelude.NFData ListDiscoverersResponse where
+  rnf ListDiscoverersResponse' {..} =
+    Prelude.rnf discoverers
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/ListRegistries.hs b/gen/Amazonka/Schemas/ListRegistries.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/ListRegistries.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.Schemas.ListRegistries
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the registries.
+--
+-- This operation returns paginated results.
+module Amazonka.Schemas.ListRegistries
+  ( -- * Creating a Request
+    ListRegistries (..),
+    newListRegistries,
+
+    -- * Request Lenses
+    listRegistries_limit,
+    listRegistries_nextToken,
+    listRegistries_registryNamePrefix,
+    listRegistries_scope,
+
+    -- * Destructuring the Response
+    ListRegistriesResponse (..),
+    newListRegistriesResponse,
+
+    -- * Response Lenses
+    listRegistriesResponse_nextToken,
+    listRegistriesResponse_registries,
+    listRegistriesResponse_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.Schemas.Types
+
+-- | /See:/ 'newListRegistries' smart constructor.
+data ListRegistries = ListRegistries'
+  { limit :: Prelude.Maybe Prelude.Int,
+    -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifying this limits the results to only those registry names that
+    -- start with the specified prefix.
+    registryNamePrefix :: Prelude.Maybe Prelude.Text,
+    -- | Can be set to Local or AWS to limit responses to your custom registries,
+    -- or the ones provided by AWS.
+    scope :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRegistries' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'limit', 'listRegistries_limit' - Undocumented member.
+--
+-- 'nextToken', 'listRegistries_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'registryNamePrefix', 'listRegistries_registryNamePrefix' - Specifying this limits the results to only those registry names that
+-- start with the specified prefix.
+--
+-- 'scope', 'listRegistries_scope' - Can be set to Local or AWS to limit responses to your custom registries,
+-- or the ones provided by AWS.
+newListRegistries ::
+  ListRegistries
+newListRegistries =
+  ListRegistries'
+    { limit = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      registryNamePrefix = Prelude.Nothing,
+      scope = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+listRegistries_limit :: Lens.Lens' ListRegistries (Prelude.Maybe Prelude.Int)
+listRegistries_limit = Lens.lens (\ListRegistries' {limit} -> limit) (\s@ListRegistries' {} a -> s {limit = a} :: ListRegistries)
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+listRegistries_nextToken :: Lens.Lens' ListRegistries (Prelude.Maybe Prelude.Text)
+listRegistries_nextToken = Lens.lens (\ListRegistries' {nextToken} -> nextToken) (\s@ListRegistries' {} a -> s {nextToken = a} :: ListRegistries)
+
+-- | Specifying this limits the results to only those registry names that
+-- start with the specified prefix.
+listRegistries_registryNamePrefix :: Lens.Lens' ListRegistries (Prelude.Maybe Prelude.Text)
+listRegistries_registryNamePrefix = Lens.lens (\ListRegistries' {registryNamePrefix} -> registryNamePrefix) (\s@ListRegistries' {} a -> s {registryNamePrefix = a} :: ListRegistries)
+
+-- | Can be set to Local or AWS to limit responses to your custom registries,
+-- or the ones provided by AWS.
+listRegistries_scope :: Lens.Lens' ListRegistries (Prelude.Maybe Prelude.Text)
+listRegistries_scope = Lens.lens (\ListRegistries' {scope} -> scope) (\s@ListRegistries' {} a -> s {scope = a} :: ListRegistries)
+
+instance Core.AWSPager ListRegistries where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listRegistriesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listRegistriesResponse_registries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listRegistries_nextToken
+          Lens..~ rs
+          Lens.^? listRegistriesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListRegistries where
+  type
+    AWSResponse ListRegistries =
+      ListRegistriesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRegistriesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Registries" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListRegistries where
+  hashWithSalt _salt ListRegistries' {..} =
+    _salt
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` registryNamePrefix
+      `Prelude.hashWithSalt` scope
+
+instance Prelude.NFData ListRegistries where
+  rnf ListRegistries' {..} =
+    Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf registryNamePrefix
+      `Prelude.seq` Prelude.rnf scope
+
+instance Data.ToHeaders ListRegistries where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListRegistries where
+  toPath = Prelude.const "/v1/registries"
+
+instance Data.ToQuery ListRegistries where
+  toQuery ListRegistries' {..} =
+    Prelude.mconcat
+      [ "limit" Data.=: limit,
+        "nextToken" Data.=: nextToken,
+        "registryNamePrefix" Data.=: registryNamePrefix,
+        "scope" Data.=: scope
+      ]
+
+-- | /See:/ 'newListRegistriesResponse' smart constructor.
+data ListRegistriesResponse = ListRegistriesResponse'
+  { -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of registry summaries.
+    registries :: Prelude.Maybe [RegistrySummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRegistriesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRegistriesResponse_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'registries', 'listRegistriesResponse_registries' - An array of registry summaries.
+--
+-- 'httpStatus', 'listRegistriesResponse_httpStatus' - The response's http status code.
+newListRegistriesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRegistriesResponse
+newListRegistriesResponse pHttpStatus_ =
+  ListRegistriesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      registries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+listRegistriesResponse_nextToken :: Lens.Lens' ListRegistriesResponse (Prelude.Maybe Prelude.Text)
+listRegistriesResponse_nextToken = Lens.lens (\ListRegistriesResponse' {nextToken} -> nextToken) (\s@ListRegistriesResponse' {} a -> s {nextToken = a} :: ListRegistriesResponse)
+
+-- | An array of registry summaries.
+listRegistriesResponse_registries :: Lens.Lens' ListRegistriesResponse (Prelude.Maybe [RegistrySummary])
+listRegistriesResponse_registries = Lens.lens (\ListRegistriesResponse' {registries} -> registries) (\s@ListRegistriesResponse' {} a -> s {registries = a} :: ListRegistriesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRegistriesResponse_httpStatus :: Lens.Lens' ListRegistriesResponse Prelude.Int
+listRegistriesResponse_httpStatus = Lens.lens (\ListRegistriesResponse' {httpStatus} -> httpStatus) (\s@ListRegistriesResponse' {} a -> s {httpStatus = a} :: ListRegistriesResponse)
+
+instance Prelude.NFData ListRegistriesResponse where
+  rnf ListRegistriesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf registries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/ListSchemaVersions.hs b/gen/Amazonka/Schemas/ListSchemaVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/ListSchemaVersions.hs
@@ -0,0 +1,257 @@
+{-# 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.Schemas.ListSchemaVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a list of the schema versions and related information.
+--
+-- This operation returns paginated results.
+module Amazonka.Schemas.ListSchemaVersions
+  ( -- * Creating a Request
+    ListSchemaVersions (..),
+    newListSchemaVersions,
+
+    -- * Request Lenses
+    listSchemaVersions_limit,
+    listSchemaVersions_nextToken,
+    listSchemaVersions_registryName,
+    listSchemaVersions_schemaName,
+
+    -- * Destructuring the Response
+    ListSchemaVersionsResponse (..),
+    newListSchemaVersionsResponse,
+
+    -- * Response Lenses
+    listSchemaVersionsResponse_nextToken,
+    listSchemaVersionsResponse_schemaVersions,
+    listSchemaVersionsResponse_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.Schemas.Types
+
+-- | /See:/ 'newListSchemaVersions' smart constructor.
+data ListSchemaVersions = ListSchemaVersions'
+  { limit :: Prelude.Maybe Prelude.Int,
+    -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSchemaVersions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'limit', 'listSchemaVersions_limit' - Undocumented member.
+--
+-- 'nextToken', 'listSchemaVersions_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'registryName', 'listSchemaVersions_registryName' - The name of the registry.
+--
+-- 'schemaName', 'listSchemaVersions_schemaName' - The name of the schema.
+newListSchemaVersions ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  ListSchemaVersions
+newListSchemaVersions pRegistryName_ pSchemaName_ =
+  ListSchemaVersions'
+    { limit = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      registryName = pRegistryName_,
+      schemaName = pSchemaName_
+    }
+
+-- | Undocumented member.
+listSchemaVersions_limit :: Lens.Lens' ListSchemaVersions (Prelude.Maybe Prelude.Int)
+listSchemaVersions_limit = Lens.lens (\ListSchemaVersions' {limit} -> limit) (\s@ListSchemaVersions' {} a -> s {limit = a} :: ListSchemaVersions)
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+listSchemaVersions_nextToken :: Lens.Lens' ListSchemaVersions (Prelude.Maybe Prelude.Text)
+listSchemaVersions_nextToken = Lens.lens (\ListSchemaVersions' {nextToken} -> nextToken) (\s@ListSchemaVersions' {} a -> s {nextToken = a} :: ListSchemaVersions)
+
+-- | The name of the registry.
+listSchemaVersions_registryName :: Lens.Lens' ListSchemaVersions Prelude.Text
+listSchemaVersions_registryName = Lens.lens (\ListSchemaVersions' {registryName} -> registryName) (\s@ListSchemaVersions' {} a -> s {registryName = a} :: ListSchemaVersions)
+
+-- | The name of the schema.
+listSchemaVersions_schemaName :: Lens.Lens' ListSchemaVersions Prelude.Text
+listSchemaVersions_schemaName = Lens.lens (\ListSchemaVersions' {schemaName} -> schemaName) (\s@ListSchemaVersions' {} a -> s {schemaName = a} :: ListSchemaVersions)
+
+instance Core.AWSPager ListSchemaVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listSchemaVersionsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listSchemaVersionsResponse_schemaVersions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listSchemaVersions_nextToken
+          Lens..~ rs
+          Lens.^? listSchemaVersionsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListSchemaVersions where
+  type
+    AWSResponse ListSchemaVersions =
+      ListSchemaVersionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSchemaVersionsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "SchemaVersions" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSchemaVersions where
+  hashWithSalt _salt ListSchemaVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+
+instance Prelude.NFData ListSchemaVersions where
+  rnf ListSchemaVersions' {..} =
+    Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+
+instance Data.ToHeaders ListSchemaVersions where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListSchemaVersions where
+  toPath ListSchemaVersions' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName,
+        "/versions"
+      ]
+
+instance Data.ToQuery ListSchemaVersions where
+  toQuery ListSchemaVersions' {..} =
+    Prelude.mconcat
+      [ "limit" Data.=: limit,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListSchemaVersionsResponse' smart constructor.
+data ListSchemaVersionsResponse = ListSchemaVersionsResponse'
+  { -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of schema version summaries.
+    schemaVersions :: Prelude.Maybe [SchemaVersionSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSchemaVersionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSchemaVersionsResponse_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'schemaVersions', 'listSchemaVersionsResponse_schemaVersions' - An array of schema version summaries.
+--
+-- 'httpStatus', 'listSchemaVersionsResponse_httpStatus' - The response's http status code.
+newListSchemaVersionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSchemaVersionsResponse
+newListSchemaVersionsResponse pHttpStatus_ =
+  ListSchemaVersionsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      schemaVersions = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+listSchemaVersionsResponse_nextToken :: Lens.Lens' ListSchemaVersionsResponse (Prelude.Maybe Prelude.Text)
+listSchemaVersionsResponse_nextToken = Lens.lens (\ListSchemaVersionsResponse' {nextToken} -> nextToken) (\s@ListSchemaVersionsResponse' {} a -> s {nextToken = a} :: ListSchemaVersionsResponse)
+
+-- | An array of schema version summaries.
+listSchemaVersionsResponse_schemaVersions :: Lens.Lens' ListSchemaVersionsResponse (Prelude.Maybe [SchemaVersionSummary])
+listSchemaVersionsResponse_schemaVersions = Lens.lens (\ListSchemaVersionsResponse' {schemaVersions} -> schemaVersions) (\s@ListSchemaVersionsResponse' {} a -> s {schemaVersions = a} :: ListSchemaVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSchemaVersionsResponse_httpStatus :: Lens.Lens' ListSchemaVersionsResponse Prelude.Int
+listSchemaVersionsResponse_httpStatus = Lens.lens (\ListSchemaVersionsResponse' {httpStatus} -> httpStatus) (\s@ListSchemaVersionsResponse' {} a -> s {httpStatus = a} :: ListSchemaVersionsResponse)
+
+instance Prelude.NFData ListSchemaVersionsResponse where
+  rnf ListSchemaVersionsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf schemaVersions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/ListSchemas.hs b/gen/Amazonka/Schemas/ListSchemas.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/ListSchemas.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.Schemas.ListSchemas
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List the schemas.
+--
+-- This operation returns paginated results.
+module Amazonka.Schemas.ListSchemas
+  ( -- * Creating a Request
+    ListSchemas (..),
+    newListSchemas,
+
+    -- * Request Lenses
+    listSchemas_limit,
+    listSchemas_nextToken,
+    listSchemas_schemaNamePrefix,
+    listSchemas_registryName,
+
+    -- * Destructuring the Response
+    ListSchemasResponse (..),
+    newListSchemasResponse,
+
+    -- * Response Lenses
+    listSchemasResponse_nextToken,
+    listSchemasResponse_schemas,
+    listSchemasResponse_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.Schemas.Types
+
+-- | /See:/ 'newListSchemas' smart constructor.
+data ListSchemas = ListSchemas'
+  { limit :: Prelude.Maybe Prelude.Int,
+    -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Specifying this limits the results to only those schema names that start
+    -- with the specified prefix.
+    schemaNamePrefix :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSchemas' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'limit', 'listSchemas_limit' - Undocumented member.
+--
+-- 'nextToken', 'listSchemas_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'schemaNamePrefix', 'listSchemas_schemaNamePrefix' - Specifying this limits the results to only those schema names that start
+-- with the specified prefix.
+--
+-- 'registryName', 'listSchemas_registryName' - The name of the registry.
+newListSchemas ::
+  -- | 'registryName'
+  Prelude.Text ->
+  ListSchemas
+newListSchemas pRegistryName_ =
+  ListSchemas'
+    { limit = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      schemaNamePrefix = Prelude.Nothing,
+      registryName = pRegistryName_
+    }
+
+-- | Undocumented member.
+listSchemas_limit :: Lens.Lens' ListSchemas (Prelude.Maybe Prelude.Int)
+listSchemas_limit = Lens.lens (\ListSchemas' {limit} -> limit) (\s@ListSchemas' {} a -> s {limit = a} :: ListSchemas)
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+listSchemas_nextToken :: Lens.Lens' ListSchemas (Prelude.Maybe Prelude.Text)
+listSchemas_nextToken = Lens.lens (\ListSchemas' {nextToken} -> nextToken) (\s@ListSchemas' {} a -> s {nextToken = a} :: ListSchemas)
+
+-- | Specifying this limits the results to only those schema names that start
+-- with the specified prefix.
+listSchemas_schemaNamePrefix :: Lens.Lens' ListSchemas (Prelude.Maybe Prelude.Text)
+listSchemas_schemaNamePrefix = Lens.lens (\ListSchemas' {schemaNamePrefix} -> schemaNamePrefix) (\s@ListSchemas' {} a -> s {schemaNamePrefix = a} :: ListSchemas)
+
+-- | The name of the registry.
+listSchemas_registryName :: Lens.Lens' ListSchemas Prelude.Text
+listSchemas_registryName = Lens.lens (\ListSchemas' {registryName} -> registryName) (\s@ListSchemas' {} a -> s {registryName = a} :: ListSchemas)
+
+instance Core.AWSPager ListSchemas where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listSchemasResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listSchemasResponse_schemas
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listSchemas_nextToken
+          Lens..~ rs
+          Lens.^? listSchemasResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListSchemas where
+  type AWSResponse ListSchemas = ListSchemasResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListSchemasResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Schemas" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListSchemas where
+  hashWithSalt _salt ListSchemas' {..} =
+    _salt
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` schemaNamePrefix
+      `Prelude.hashWithSalt` registryName
+
+instance Prelude.NFData ListSchemas where
+  rnf ListSchemas' {..} =
+    Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf schemaNamePrefix
+      `Prelude.seq` Prelude.rnf registryName
+
+instance Data.ToHeaders ListSchemas where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListSchemas where
+  toPath ListSchemas' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas"
+      ]
+
+instance Data.ToQuery ListSchemas where
+  toQuery ListSchemas' {..} =
+    Prelude.mconcat
+      [ "limit" Data.=: limit,
+        "nextToken" Data.=: nextToken,
+        "schemaNamePrefix" Data.=: schemaNamePrefix
+      ]
+
+-- | /See:/ 'newListSchemasResponse' smart constructor.
+data ListSchemasResponse = ListSchemasResponse'
+  { -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of schema summaries.
+    schemas :: Prelude.Maybe [SchemaSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListSchemasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listSchemasResponse_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'schemas', 'listSchemasResponse_schemas' - An array of schema summaries.
+--
+-- 'httpStatus', 'listSchemasResponse_httpStatus' - The response's http status code.
+newListSchemasResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListSchemasResponse
+newListSchemasResponse pHttpStatus_ =
+  ListSchemasResponse'
+    { nextToken = Prelude.Nothing,
+      schemas = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+listSchemasResponse_nextToken :: Lens.Lens' ListSchemasResponse (Prelude.Maybe Prelude.Text)
+listSchemasResponse_nextToken = Lens.lens (\ListSchemasResponse' {nextToken} -> nextToken) (\s@ListSchemasResponse' {} a -> s {nextToken = a} :: ListSchemasResponse)
+
+-- | An array of schema summaries.
+listSchemasResponse_schemas :: Lens.Lens' ListSchemasResponse (Prelude.Maybe [SchemaSummary])
+listSchemasResponse_schemas = Lens.lens (\ListSchemasResponse' {schemas} -> schemas) (\s@ListSchemasResponse' {} a -> s {schemas = a} :: ListSchemasResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listSchemasResponse_httpStatus :: Lens.Lens' ListSchemasResponse Prelude.Int
+listSchemasResponse_httpStatus = Lens.lens (\ListSchemasResponse' {httpStatus} -> httpStatus) (\s@ListSchemasResponse' {} a -> s {httpStatus = a} :: ListSchemasResponse)
+
+instance Prelude.NFData ListSchemasResponse where
+  rnf ListSchemasResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf schemas
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/ListTagsForResource.hs b/gen/Amazonka/Schemas/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/ListTagsForResource.hs
@@ -0,0 +1,158 @@
+{-# 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.Schemas.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)
+--
+-- Get tags for resource.
+module Amazonka.Schemas.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.Schemas.Types
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The ARN of the resource.
+    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 ARN of the resource.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The ARN of the resource.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - Undocumented member.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/PutCodeBinding.hs b/gen/Amazonka/Schemas/PutCodeBinding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/PutCodeBinding.hs
@@ -0,0 +1,253 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.PutCodeBinding
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Put code binding URI
+module Amazonka.Schemas.PutCodeBinding
+  ( -- * Creating a Request
+    PutCodeBinding (..),
+    newPutCodeBinding,
+
+    -- * Request Lenses
+    putCodeBinding_schemaVersion,
+    putCodeBinding_registryName,
+    putCodeBinding_schemaName,
+    putCodeBinding_language,
+
+    -- * Destructuring the Response
+    PutCodeBindingResponse (..),
+    newPutCodeBindingResponse,
+
+    -- * Response Lenses
+    putCodeBindingResponse_creationDate,
+    putCodeBindingResponse_lastModified,
+    putCodeBindingResponse_schemaVersion,
+    putCodeBindingResponse_status,
+    putCodeBindingResponse_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.Schemas.Types
+
+-- | /See:/ 'newPutCodeBinding' smart constructor.
+data PutCodeBinding = PutCodeBinding'
+  { -- | Specifying this limits the results to only this schema version.
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text,
+    -- | The language of the code binding.
+    language :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutCodeBinding' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'schemaVersion', 'putCodeBinding_schemaVersion' - Specifying this limits the results to only this schema version.
+--
+-- 'registryName', 'putCodeBinding_registryName' - The name of the registry.
+--
+-- 'schemaName', 'putCodeBinding_schemaName' - The name of the schema.
+--
+-- 'language', 'putCodeBinding_language' - The language of the code binding.
+newPutCodeBinding ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  -- | 'language'
+  Prelude.Text ->
+  PutCodeBinding
+newPutCodeBinding
+  pRegistryName_
+  pSchemaName_
+  pLanguage_ =
+    PutCodeBinding'
+      { schemaVersion = Prelude.Nothing,
+        registryName = pRegistryName_,
+        schemaName = pSchemaName_,
+        language = pLanguage_
+      }
+
+-- | Specifying this limits the results to only this schema version.
+putCodeBinding_schemaVersion :: Lens.Lens' PutCodeBinding (Prelude.Maybe Prelude.Text)
+putCodeBinding_schemaVersion = Lens.lens (\PutCodeBinding' {schemaVersion} -> schemaVersion) (\s@PutCodeBinding' {} a -> s {schemaVersion = a} :: PutCodeBinding)
+
+-- | The name of the registry.
+putCodeBinding_registryName :: Lens.Lens' PutCodeBinding Prelude.Text
+putCodeBinding_registryName = Lens.lens (\PutCodeBinding' {registryName} -> registryName) (\s@PutCodeBinding' {} a -> s {registryName = a} :: PutCodeBinding)
+
+-- | The name of the schema.
+putCodeBinding_schemaName :: Lens.Lens' PutCodeBinding Prelude.Text
+putCodeBinding_schemaName = Lens.lens (\PutCodeBinding' {schemaName} -> schemaName) (\s@PutCodeBinding' {} a -> s {schemaName = a} :: PutCodeBinding)
+
+-- | The language of the code binding.
+putCodeBinding_language :: Lens.Lens' PutCodeBinding Prelude.Text
+putCodeBinding_language = Lens.lens (\PutCodeBinding' {language} -> language) (\s@PutCodeBinding' {} a -> s {language = a} :: PutCodeBinding)
+
+instance Core.AWSRequest PutCodeBinding where
+  type
+    AWSResponse PutCodeBinding =
+      PutCodeBindingResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutCodeBindingResponse'
+            Prelude.<$> (x Data..?> "CreationDate")
+            Prelude.<*> (x Data..?> "LastModified")
+            Prelude.<*> (x Data..?> "SchemaVersion")
+            Prelude.<*> (x Data..?> "Status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutCodeBinding where
+  hashWithSalt _salt PutCodeBinding' {..} =
+    _salt
+      `Prelude.hashWithSalt` schemaVersion
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+      `Prelude.hashWithSalt` language
+
+instance Prelude.NFData PutCodeBinding where
+  rnf PutCodeBinding' {..} =
+    Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf language
+
+instance Data.ToHeaders PutCodeBinding where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutCodeBinding where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath PutCodeBinding where
+  toPath PutCodeBinding' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName,
+        "/language/",
+        Data.toBS language
+      ]
+
+instance Data.ToQuery PutCodeBinding where
+  toQuery PutCodeBinding' {..} =
+    Prelude.mconcat
+      ["schemaVersion" Data.=: schemaVersion]
+
+-- | /See:/ 'newPutCodeBindingResponse' smart constructor.
+data PutCodeBindingResponse = PutCodeBindingResponse'
+  { -- | The time and date that the code binding was created.
+    creationDate :: Prelude.Maybe Data.ISO8601,
+    -- | The date and time that code bindings were modified.
+    lastModified :: Prelude.Maybe Data.ISO8601,
+    -- | The version number of the schema.
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The current status of code binding generation.
+    status :: Prelude.Maybe CodeGenerationStatus,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutCodeBindingResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'creationDate', 'putCodeBindingResponse_creationDate' - The time and date that the code binding was created.
+--
+-- 'lastModified', 'putCodeBindingResponse_lastModified' - The date and time that code bindings were modified.
+--
+-- 'schemaVersion', 'putCodeBindingResponse_schemaVersion' - The version number of the schema.
+--
+-- 'status', 'putCodeBindingResponse_status' - The current status of code binding generation.
+--
+-- 'httpStatus', 'putCodeBindingResponse_httpStatus' - The response's http status code.
+newPutCodeBindingResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutCodeBindingResponse
+newPutCodeBindingResponse pHttpStatus_ =
+  PutCodeBindingResponse'
+    { creationDate =
+        Prelude.Nothing,
+      lastModified = Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The time and date that the code binding was created.
+putCodeBindingResponse_creationDate :: Lens.Lens' PutCodeBindingResponse (Prelude.Maybe Prelude.UTCTime)
+putCodeBindingResponse_creationDate = Lens.lens (\PutCodeBindingResponse' {creationDate} -> creationDate) (\s@PutCodeBindingResponse' {} a -> s {creationDate = a} :: PutCodeBindingResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The date and time that code bindings were modified.
+putCodeBindingResponse_lastModified :: Lens.Lens' PutCodeBindingResponse (Prelude.Maybe Prelude.UTCTime)
+putCodeBindingResponse_lastModified = Lens.lens (\PutCodeBindingResponse' {lastModified} -> lastModified) (\s@PutCodeBindingResponse' {} a -> s {lastModified = a} :: PutCodeBindingResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The version number of the schema.
+putCodeBindingResponse_schemaVersion :: Lens.Lens' PutCodeBindingResponse (Prelude.Maybe Prelude.Text)
+putCodeBindingResponse_schemaVersion = Lens.lens (\PutCodeBindingResponse' {schemaVersion} -> schemaVersion) (\s@PutCodeBindingResponse' {} a -> s {schemaVersion = a} :: PutCodeBindingResponse)
+
+-- | The current status of code binding generation.
+putCodeBindingResponse_status :: Lens.Lens' PutCodeBindingResponse (Prelude.Maybe CodeGenerationStatus)
+putCodeBindingResponse_status = Lens.lens (\PutCodeBindingResponse' {status} -> status) (\s@PutCodeBindingResponse' {} a -> s {status = a} :: PutCodeBindingResponse)
+
+-- | The response's http status code.
+putCodeBindingResponse_httpStatus :: Lens.Lens' PutCodeBindingResponse Prelude.Int
+putCodeBindingResponse_httpStatus = Lens.lens (\PutCodeBindingResponse' {httpStatus} -> httpStatus) (\s@PutCodeBindingResponse' {} a -> s {httpStatus = a} :: PutCodeBindingResponse)
+
+instance Prelude.NFData PutCodeBindingResponse where
+  rnf PutCodeBindingResponse' {..} =
+    Prelude.rnf creationDate
+      `Prelude.seq` Prelude.rnf lastModified
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/PutResourcePolicy.hs b/gen/Amazonka/Schemas/PutResourcePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/PutResourcePolicy.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.Schemas.PutResourcePolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- The name of the policy.
+module Amazonka.Schemas.PutResourcePolicy
+  ( -- * Creating a Request
+    PutResourcePolicy (..),
+    newPutResourcePolicy,
+
+    -- * Request Lenses
+    putResourcePolicy_registryName,
+    putResourcePolicy_revisionId,
+    putResourcePolicy_policy,
+
+    -- * Destructuring the Response
+    PutResourcePolicyResponse (..),
+    newPutResourcePolicyResponse,
+
+    -- * Response Lenses
+    putResourcePolicyResponse_policy,
+    putResourcePolicyResponse_revisionId,
+    putResourcePolicyResponse_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.Schemas.Types
+
+-- | The name of the policy.
+--
+-- /See:/ 'newPutResourcePolicy' smart constructor.
+data PutResourcePolicy = PutResourcePolicy'
+  { -- | The name of the registry.
+    registryName :: Prelude.Maybe Prelude.Text,
+    -- | The revision ID of the policy.
+    revisionId :: Prelude.Maybe Prelude.Text,
+    -- | The resource-based policy.
+    policy :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourcePolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'registryName', 'putResourcePolicy_registryName' - The name of the registry.
+--
+-- 'revisionId', 'putResourcePolicy_revisionId' - The revision ID of the policy.
+--
+-- 'policy', 'putResourcePolicy_policy' - The resource-based policy.
+newPutResourcePolicy ::
+  -- | 'policy'
+  Prelude.Text ->
+  PutResourcePolicy
+newPutResourcePolicy pPolicy_ =
+  PutResourcePolicy'
+    { registryName = Prelude.Nothing,
+      revisionId = Prelude.Nothing,
+      policy = pPolicy_
+    }
+
+-- | The name of the registry.
+putResourcePolicy_registryName :: Lens.Lens' PutResourcePolicy (Prelude.Maybe Prelude.Text)
+putResourcePolicy_registryName = Lens.lens (\PutResourcePolicy' {registryName} -> registryName) (\s@PutResourcePolicy' {} a -> s {registryName = a} :: PutResourcePolicy)
+
+-- | The revision ID of the policy.
+putResourcePolicy_revisionId :: Lens.Lens' PutResourcePolicy (Prelude.Maybe Prelude.Text)
+putResourcePolicy_revisionId = Lens.lens (\PutResourcePolicy' {revisionId} -> revisionId) (\s@PutResourcePolicy' {} a -> s {revisionId = a} :: PutResourcePolicy)
+
+-- | The resource-based policy.
+putResourcePolicy_policy :: Lens.Lens' PutResourcePolicy Prelude.Text
+putResourcePolicy_policy = Lens.lens (\PutResourcePolicy' {policy} -> policy) (\s@PutResourcePolicy' {} a -> s {policy = a} :: PutResourcePolicy)
+
+instance Core.AWSRequest PutResourcePolicy where
+  type
+    AWSResponse PutResourcePolicy =
+      PutResourcePolicyResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          PutResourcePolicyResponse'
+            Prelude.<$> (x Data..?> "Policy")
+            Prelude.<*> (x Data..?> "RevisionId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutResourcePolicy where
+  hashWithSalt _salt PutResourcePolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` revisionId
+      `Prelude.hashWithSalt` policy
+
+instance Prelude.NFData PutResourcePolicy where
+  rnf PutResourcePolicy' {..} =
+    Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf revisionId
+      `Prelude.seq` Prelude.rnf policy
+
+instance Data.ToHeaders PutResourcePolicy where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutResourcePolicy where
+  toJSON PutResourcePolicy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RevisionId" Data..=) Prelude.<$> revisionId,
+            Prelude.Just ("Policy" Data..= policy)
+          ]
+      )
+
+instance Data.ToPath PutResourcePolicy where
+  toPath = Prelude.const "/v1/policy"
+
+instance Data.ToQuery PutResourcePolicy where
+  toQuery PutResourcePolicy' {..} =
+    Prelude.mconcat
+      ["registryName" Data.=: registryName]
+
+-- | /See:/ 'newPutResourcePolicyResponse' smart constructor.
+data PutResourcePolicyResponse = PutResourcePolicyResponse'
+  { -- | The resource-based policy.
+    policy :: Prelude.Maybe Prelude.Text,
+    -- | The revision ID of the policy.
+    revisionId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutResourcePolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policy', 'putResourcePolicyResponse_policy' - The resource-based policy.
+--
+-- 'revisionId', 'putResourcePolicyResponse_revisionId' - The revision ID of the policy.
+--
+-- 'httpStatus', 'putResourcePolicyResponse_httpStatus' - The response's http status code.
+newPutResourcePolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutResourcePolicyResponse
+newPutResourcePolicyResponse pHttpStatus_ =
+  PutResourcePolicyResponse'
+    { policy =
+        Prelude.Nothing,
+      revisionId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The resource-based policy.
+putResourcePolicyResponse_policy :: Lens.Lens' PutResourcePolicyResponse (Prelude.Maybe Prelude.Text)
+putResourcePolicyResponse_policy = Lens.lens (\PutResourcePolicyResponse' {policy} -> policy) (\s@PutResourcePolicyResponse' {} a -> s {policy = a} :: PutResourcePolicyResponse)
+
+-- | The revision ID of the policy.
+putResourcePolicyResponse_revisionId :: Lens.Lens' PutResourcePolicyResponse (Prelude.Maybe Prelude.Text)
+putResourcePolicyResponse_revisionId = Lens.lens (\PutResourcePolicyResponse' {revisionId} -> revisionId) (\s@PutResourcePolicyResponse' {} a -> s {revisionId = a} :: PutResourcePolicyResponse)
+
+-- | The response's http status code.
+putResourcePolicyResponse_httpStatus :: Lens.Lens' PutResourcePolicyResponse Prelude.Int
+putResourcePolicyResponse_httpStatus = Lens.lens (\PutResourcePolicyResponse' {httpStatus} -> httpStatus) (\s@PutResourcePolicyResponse' {} a -> s {httpStatus = a} :: PutResourcePolicyResponse)
+
+instance Prelude.NFData PutResourcePolicyResponse where
+  rnf PutResourcePolicyResponse' {..} =
+    Prelude.rnf policy
+      `Prelude.seq` Prelude.rnf revisionId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/SearchSchemas.hs b/gen/Amazonka/Schemas/SearchSchemas.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/SearchSchemas.hs
@@ -0,0 +1,258 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.SearchSchemas
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Search the schemas
+--
+-- This operation returns paginated results.
+module Amazonka.Schemas.SearchSchemas
+  ( -- * Creating a Request
+    SearchSchemas (..),
+    newSearchSchemas,
+
+    -- * Request Lenses
+    searchSchemas_limit,
+    searchSchemas_nextToken,
+    searchSchemas_registryName,
+    searchSchemas_keywords,
+
+    -- * Destructuring the Response
+    SearchSchemasResponse (..),
+    newSearchSchemasResponse,
+
+    -- * Response Lenses
+    searchSchemasResponse_nextToken,
+    searchSchemasResponse_schemas,
+    searchSchemasResponse_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.Schemas.Types
+
+-- | /See:/ 'newSearchSchemas' smart constructor.
+data SearchSchemas = SearchSchemas'
+  { limit :: Prelude.Maybe Prelude.Int,
+    -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | Specifying this limits the results to only schemas that include the
+    -- provided keywords.
+    keywords :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchSchemas' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'limit', 'searchSchemas_limit' - Undocumented member.
+--
+-- 'nextToken', 'searchSchemas_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'registryName', 'searchSchemas_registryName' - The name of the registry.
+--
+-- 'keywords', 'searchSchemas_keywords' - Specifying this limits the results to only schemas that include the
+-- provided keywords.
+newSearchSchemas ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'keywords'
+  Prelude.Text ->
+  SearchSchemas
+newSearchSchemas pRegistryName_ pKeywords_ =
+  SearchSchemas'
+    { limit = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      registryName = pRegistryName_,
+      keywords = pKeywords_
+    }
+
+-- | Undocumented member.
+searchSchemas_limit :: Lens.Lens' SearchSchemas (Prelude.Maybe Prelude.Int)
+searchSchemas_limit = Lens.lens (\SearchSchemas' {limit} -> limit) (\s@SearchSchemas' {} a -> s {limit = a} :: SearchSchemas)
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+searchSchemas_nextToken :: Lens.Lens' SearchSchemas (Prelude.Maybe Prelude.Text)
+searchSchemas_nextToken = Lens.lens (\SearchSchemas' {nextToken} -> nextToken) (\s@SearchSchemas' {} a -> s {nextToken = a} :: SearchSchemas)
+
+-- | The name of the registry.
+searchSchemas_registryName :: Lens.Lens' SearchSchemas Prelude.Text
+searchSchemas_registryName = Lens.lens (\SearchSchemas' {registryName} -> registryName) (\s@SearchSchemas' {} a -> s {registryName = a} :: SearchSchemas)
+
+-- | Specifying this limits the results to only schemas that include the
+-- provided keywords.
+searchSchemas_keywords :: Lens.Lens' SearchSchemas Prelude.Text
+searchSchemas_keywords = Lens.lens (\SearchSchemas' {keywords} -> keywords) (\s@SearchSchemas' {} a -> s {keywords = a} :: SearchSchemas)
+
+instance Core.AWSPager SearchSchemas where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? searchSchemasResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? searchSchemasResponse_schemas
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& searchSchemas_nextToken
+          Lens..~ rs
+          Lens.^? searchSchemasResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest SearchSchemas where
+  type
+    AWSResponse SearchSchemas =
+      SearchSchemasResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SearchSchemasResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Schemas" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SearchSchemas where
+  hashWithSalt _salt SearchSchemas' {..} =
+    _salt
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` keywords
+
+instance Prelude.NFData SearchSchemas where
+  rnf SearchSchemas' {..} =
+    Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf keywords
+
+instance Data.ToHeaders SearchSchemas where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath SearchSchemas where
+  toPath SearchSchemas' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/search"
+      ]
+
+instance Data.ToQuery SearchSchemas where
+  toQuery SearchSchemas' {..} =
+    Prelude.mconcat
+      [ "limit" Data.=: limit,
+        "nextToken" Data.=: nextToken,
+        "keywords" Data.=: keywords
+      ]
+
+-- | /See:/ 'newSearchSchemasResponse' smart constructor.
+data SearchSchemasResponse = SearchSchemasResponse'
+  { -- | The token that specifies the next page of results to return. To request
+    -- the first page, leave NextToken empty. The token will expire in 24
+    -- hours, and cannot be shared with other accounts.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array of SearchSchemaSummary information.
+    schemas :: Prelude.Maybe [SearchSchemaSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchSchemasResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'searchSchemasResponse_nextToken' - The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+--
+-- 'schemas', 'searchSchemasResponse_schemas' - An array of SearchSchemaSummary information.
+--
+-- 'httpStatus', 'searchSchemasResponse_httpStatus' - The response's http status code.
+newSearchSchemasResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SearchSchemasResponse
+newSearchSchemasResponse pHttpStatus_ =
+  SearchSchemasResponse'
+    { nextToken = Prelude.Nothing,
+      schemas = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token that specifies the next page of results to return. To request
+-- the first page, leave NextToken empty. The token will expire in 24
+-- hours, and cannot be shared with other accounts.
+searchSchemasResponse_nextToken :: Lens.Lens' SearchSchemasResponse (Prelude.Maybe Prelude.Text)
+searchSchemasResponse_nextToken = Lens.lens (\SearchSchemasResponse' {nextToken} -> nextToken) (\s@SearchSchemasResponse' {} a -> s {nextToken = a} :: SearchSchemasResponse)
+
+-- | An array of SearchSchemaSummary information.
+searchSchemasResponse_schemas :: Lens.Lens' SearchSchemasResponse (Prelude.Maybe [SearchSchemaSummary])
+searchSchemasResponse_schemas = Lens.lens (\SearchSchemasResponse' {schemas} -> schemas) (\s@SearchSchemasResponse' {} a -> s {schemas = a} :: SearchSchemasResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+searchSchemasResponse_httpStatus :: Lens.Lens' SearchSchemasResponse Prelude.Int
+searchSchemasResponse_httpStatus = Lens.lens (\SearchSchemasResponse' {httpStatus} -> httpStatus) (\s@SearchSchemasResponse' {} a -> s {httpStatus = a} :: SearchSchemasResponse)
+
+instance Prelude.NFData SearchSchemasResponse where
+  rnf SearchSchemasResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf schemas
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/StartDiscoverer.hs b/gen/Amazonka/Schemas/StartDiscoverer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/StartDiscoverer.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.StartDiscoverer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts the discoverer
+module Amazonka.Schemas.StartDiscoverer
+  ( -- * Creating a Request
+    StartDiscoverer (..),
+    newStartDiscoverer,
+
+    -- * Request Lenses
+    startDiscoverer_discovererId,
+
+    -- * Destructuring the Response
+    StartDiscovererResponse (..),
+    newStartDiscovererResponse,
+
+    -- * Response Lenses
+    startDiscovererResponse_discovererId,
+    startDiscovererResponse_state,
+    startDiscovererResponse_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.Schemas.Types
+
+-- | /See:/ 'newStartDiscoverer' smart constructor.
+data StartDiscoverer = StartDiscoverer'
+  { -- | The ID of the discoverer.
+    discovererId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartDiscoverer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discovererId', 'startDiscoverer_discovererId' - The ID of the discoverer.
+newStartDiscoverer ::
+  -- | 'discovererId'
+  Prelude.Text ->
+  StartDiscoverer
+newStartDiscoverer pDiscovererId_ =
+  StartDiscoverer' {discovererId = pDiscovererId_}
+
+-- | The ID of the discoverer.
+startDiscoverer_discovererId :: Lens.Lens' StartDiscoverer Prelude.Text
+startDiscoverer_discovererId = Lens.lens (\StartDiscoverer' {discovererId} -> discovererId) (\s@StartDiscoverer' {} a -> s {discovererId = a} :: StartDiscoverer)
+
+instance Core.AWSRequest StartDiscoverer where
+  type
+    AWSResponse StartDiscoverer =
+      StartDiscovererResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartDiscovererResponse'
+            Prelude.<$> (x Data..?> "DiscovererId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartDiscoverer where
+  hashWithSalt _salt StartDiscoverer' {..} =
+    _salt `Prelude.hashWithSalt` discovererId
+
+instance Prelude.NFData StartDiscoverer where
+  rnf StartDiscoverer' {..} = Prelude.rnf discovererId
+
+instance Data.ToHeaders StartDiscoverer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartDiscoverer where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath StartDiscoverer where
+  toPath StartDiscoverer' {..} =
+    Prelude.mconcat
+      [ "/v1/discoverers/id/",
+        Data.toBS discovererId,
+        "/start"
+      ]
+
+instance Data.ToQuery StartDiscoverer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartDiscovererResponse' smart constructor.
+data StartDiscovererResponse = StartDiscovererResponse'
+  { -- | The ID of the discoverer.
+    discovererId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the discoverer.
+    state :: Prelude.Maybe DiscovererState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartDiscovererResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discovererId', 'startDiscovererResponse_discovererId' - The ID of the discoverer.
+--
+-- 'state', 'startDiscovererResponse_state' - The state of the discoverer.
+--
+-- 'httpStatus', 'startDiscovererResponse_httpStatus' - The response's http status code.
+newStartDiscovererResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartDiscovererResponse
+newStartDiscovererResponse pHttpStatus_ =
+  StartDiscovererResponse'
+    { discovererId =
+        Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the discoverer.
+startDiscovererResponse_discovererId :: Lens.Lens' StartDiscovererResponse (Prelude.Maybe Prelude.Text)
+startDiscovererResponse_discovererId = Lens.lens (\StartDiscovererResponse' {discovererId} -> discovererId) (\s@StartDiscovererResponse' {} a -> s {discovererId = a} :: StartDiscovererResponse)
+
+-- | The state of the discoverer.
+startDiscovererResponse_state :: Lens.Lens' StartDiscovererResponse (Prelude.Maybe DiscovererState)
+startDiscovererResponse_state = Lens.lens (\StartDiscovererResponse' {state} -> state) (\s@StartDiscovererResponse' {} a -> s {state = a} :: StartDiscovererResponse)
+
+-- | The response's http status code.
+startDiscovererResponse_httpStatus :: Lens.Lens' StartDiscovererResponse Prelude.Int
+startDiscovererResponse_httpStatus = Lens.lens (\StartDiscovererResponse' {httpStatus} -> httpStatus) (\s@StartDiscovererResponse' {} a -> s {httpStatus = a} :: StartDiscovererResponse)
+
+instance Prelude.NFData StartDiscovererResponse where
+  rnf StartDiscovererResponse' {..} =
+    Prelude.rnf discovererId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/StopDiscoverer.hs b/gen/Amazonka/Schemas/StopDiscoverer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/StopDiscoverer.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.StopDiscoverer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stops the discoverer
+module Amazonka.Schemas.StopDiscoverer
+  ( -- * Creating a Request
+    StopDiscoverer (..),
+    newStopDiscoverer,
+
+    -- * Request Lenses
+    stopDiscoverer_discovererId,
+
+    -- * Destructuring the Response
+    StopDiscovererResponse (..),
+    newStopDiscovererResponse,
+
+    -- * Response Lenses
+    stopDiscovererResponse_discovererId,
+    stopDiscovererResponse_state,
+    stopDiscovererResponse_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.Schemas.Types
+
+-- | /See:/ 'newStopDiscoverer' smart constructor.
+data StopDiscoverer = StopDiscoverer'
+  { -- | The ID of the discoverer.
+    discovererId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopDiscoverer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discovererId', 'stopDiscoverer_discovererId' - The ID of the discoverer.
+newStopDiscoverer ::
+  -- | 'discovererId'
+  Prelude.Text ->
+  StopDiscoverer
+newStopDiscoverer pDiscovererId_ =
+  StopDiscoverer' {discovererId = pDiscovererId_}
+
+-- | The ID of the discoverer.
+stopDiscoverer_discovererId :: Lens.Lens' StopDiscoverer Prelude.Text
+stopDiscoverer_discovererId = Lens.lens (\StopDiscoverer' {discovererId} -> discovererId) (\s@StopDiscoverer' {} a -> s {discovererId = a} :: StopDiscoverer)
+
+instance Core.AWSRequest StopDiscoverer where
+  type
+    AWSResponse StopDiscoverer =
+      StopDiscovererResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopDiscovererResponse'
+            Prelude.<$> (x Data..?> "DiscovererId")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopDiscoverer where
+  hashWithSalt _salt StopDiscoverer' {..} =
+    _salt `Prelude.hashWithSalt` discovererId
+
+instance Prelude.NFData StopDiscoverer where
+  rnf StopDiscoverer' {..} = Prelude.rnf discovererId
+
+instance Data.ToHeaders StopDiscoverer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopDiscoverer where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath StopDiscoverer where
+  toPath StopDiscoverer' {..} =
+    Prelude.mconcat
+      [ "/v1/discoverers/id/",
+        Data.toBS discovererId,
+        "/stop"
+      ]
+
+instance Data.ToQuery StopDiscoverer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopDiscovererResponse' smart constructor.
+data StopDiscovererResponse = StopDiscovererResponse'
+  { -- | The ID of the discoverer.
+    discovererId :: Prelude.Maybe Prelude.Text,
+    -- | The state of the discoverer.
+    state :: Prelude.Maybe DiscovererState,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopDiscovererResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'discovererId', 'stopDiscovererResponse_discovererId' - The ID of the discoverer.
+--
+-- 'state', 'stopDiscovererResponse_state' - The state of the discoverer.
+--
+-- 'httpStatus', 'stopDiscovererResponse_httpStatus' - The response's http status code.
+newStopDiscovererResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopDiscovererResponse
+newStopDiscovererResponse pHttpStatus_ =
+  StopDiscovererResponse'
+    { discovererId =
+        Prelude.Nothing,
+      state = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ID of the discoverer.
+stopDiscovererResponse_discovererId :: Lens.Lens' StopDiscovererResponse (Prelude.Maybe Prelude.Text)
+stopDiscovererResponse_discovererId = Lens.lens (\StopDiscovererResponse' {discovererId} -> discovererId) (\s@StopDiscovererResponse' {} a -> s {discovererId = a} :: StopDiscovererResponse)
+
+-- | The state of the discoverer.
+stopDiscovererResponse_state :: Lens.Lens' StopDiscovererResponse (Prelude.Maybe DiscovererState)
+stopDiscovererResponse_state = Lens.lens (\StopDiscovererResponse' {state} -> state) (\s@StopDiscovererResponse' {} a -> s {state = a} :: StopDiscovererResponse)
+
+-- | The response's http status code.
+stopDiscovererResponse_httpStatus :: Lens.Lens' StopDiscovererResponse Prelude.Int
+stopDiscovererResponse_httpStatus = Lens.lens (\StopDiscovererResponse' {httpStatus} -> httpStatus) (\s@StopDiscovererResponse' {} a -> s {httpStatus = a} :: StopDiscovererResponse)
+
+instance Prelude.NFData StopDiscovererResponse where
+  rnf StopDiscovererResponse' {..} =
+    Prelude.rnf discovererId
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/TagResource.hs b/gen/Amazonka/Schemas/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/TagResource.hs
@@ -0,0 +1,144 @@
+{-# 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.Schemas.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)
+--
+-- Add tags to a resource.
+module Amazonka.Schemas.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+  )
+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.Schemas.Types
+
+-- |
+--
+-- /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The ARN of the resource.
+    resourceArn :: Prelude.Text,
+    -- | Tags associated with the resource.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The ARN of the resource.
+--
+-- 'tags', 'tagResource_tags' - Tags associated with the resource.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The ARN of the resource.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | Tags associated with the resource.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull TagResourceResponse'
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  {
+  }
+  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.
+newTagResourceResponse ::
+  TagResourceResponse
+newTagResourceResponse = TagResourceResponse'
+
+instance Prelude.NFData TagResourceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Schemas/Types.hs b/gen/Amazonka/Schemas/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types.hs
@@ -0,0 +1,254 @@
+{-# 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.Schemas.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.Schemas.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _BadRequestException,
+    _ConflictException,
+    _ForbiddenException,
+    _GoneException,
+    _InternalServerErrorException,
+    _NotFoundException,
+    _PreconditionFailedException,
+    _ServiceUnavailableException,
+    _TooManyRequestsException,
+    _UnauthorizedException,
+
+    -- * CodeGenerationStatus
+    CodeGenerationStatus (..),
+
+    -- * DiscovererState
+    DiscovererState (..),
+
+    -- * Type
+    Type (..),
+
+    -- * DiscovererSummary
+    DiscovererSummary (..),
+    newDiscovererSummary,
+    discovererSummary_crossAccount,
+    discovererSummary_discovererArn,
+    discovererSummary_discovererId,
+    discovererSummary_sourceArn,
+    discovererSummary_state,
+    discovererSummary_tags,
+
+    -- * RegistrySummary
+    RegistrySummary (..),
+    newRegistrySummary,
+    registrySummary_registryArn,
+    registrySummary_registryName,
+    registrySummary_tags,
+
+    -- * SchemaSummary
+    SchemaSummary (..),
+    newSchemaSummary,
+    schemaSummary_lastModified,
+    schemaSummary_schemaArn,
+    schemaSummary_schemaName,
+    schemaSummary_tags,
+    schemaSummary_versionCount,
+
+    -- * SchemaVersionSummary
+    SchemaVersionSummary (..),
+    newSchemaVersionSummary,
+    schemaVersionSummary_schemaArn,
+    schemaVersionSummary_schemaName,
+    schemaVersionSummary_schemaVersion,
+    schemaVersionSummary_type,
+
+    -- * SearchSchemaSummary
+    SearchSchemaSummary (..),
+    newSearchSchemaSummary,
+    searchSchemaSummary_registryName,
+    searchSchemaSummary_schemaArn,
+    searchSchemaSummary_schemaName,
+    searchSchemaSummary_schemaVersions,
+
+    -- * SearchSchemaVersionSummary
+    SearchSchemaVersionSummary (..),
+    newSearchSchemaVersionSummary,
+    searchSchemaVersionSummary_createdDate,
+    searchSchemaVersionSummary_schemaVersion,
+    searchSchemaVersionSummary_type,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.Schemas.Types.CodeGenerationStatus
+import Amazonka.Schemas.Types.DiscovererState
+import Amazonka.Schemas.Types.DiscovererSummary
+import Amazonka.Schemas.Types.RegistrySummary
+import Amazonka.Schemas.Types.SchemaSummary
+import Amazonka.Schemas.Types.SchemaVersionSummary
+import Amazonka.Schemas.Types.SearchSchemaSummary
+import Amazonka.Schemas.Types.SearchSchemaVersionSummary
+import Amazonka.Schemas.Types.Type
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2019-12-02@ of the Amazon Schemas SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "Schemas",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "schemas",
+      Core.signingName = "schemas",
+      Core.version = "2019-12-02",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "Schemas",
+      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
+
+-- | Prism for BadRequestException' errors.
+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BadRequestException =
+  Core._MatchServiceError
+    defaultService
+    "BadRequestException"
+    Prelude.. Core.hasStatus 400
+
+-- | Prism for ConflictException' errors.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | Prism for ForbiddenException' errors.
+_ForbiddenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ForbiddenException =
+  Core._MatchServiceError
+    defaultService
+    "ForbiddenException"
+    Prelude.. Core.hasStatus 403
+
+-- | Prism for GoneException' errors.
+_GoneException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_GoneException =
+  Core._MatchServiceError
+    defaultService
+    "GoneException"
+    Prelude.. Core.hasStatus 410
+
+-- | Prism for InternalServerErrorException' errors.
+_InternalServerErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerErrorException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerErrorException"
+    Prelude.. Core.hasStatus 500
+
+-- | Prism for NotFoundException' errors.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | Prism for PreconditionFailedException' errors.
+_PreconditionFailedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_PreconditionFailedException =
+  Core._MatchServiceError
+    defaultService
+    "PreconditionFailedException"
+    Prelude.. Core.hasStatus 412
+
+-- | Prism for ServiceUnavailableException' errors.
+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceUnavailableException"
+    Prelude.. Core.hasStatus 503
+
+-- | Prism for TooManyRequestsException' errors.
+_TooManyRequestsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyRequestsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyRequestsException"
+    Prelude.. Core.hasStatus 429
+
+-- | Prism for UnauthorizedException' errors.
+_UnauthorizedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnauthorizedException =
+  Core._MatchServiceError
+    defaultService
+    "UnauthorizedException"
+    Prelude.. Core.hasStatus 401
diff --git a/gen/Amazonka/Schemas/Types/CodeGenerationStatus.hs b/gen/Amazonka/Schemas/Types/CodeGenerationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/CodeGenerationStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.Types.CodeGenerationStatus
+-- 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.Schemas.Types.CodeGenerationStatus
+  ( CodeGenerationStatus
+      ( ..,
+        CodeGenerationStatus_CREATE_COMPLETE,
+        CodeGenerationStatus_CREATE_FAILED,
+        CodeGenerationStatus_CREATE_IN_PROGRESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CodeGenerationStatus = CodeGenerationStatus'
+  { fromCodeGenerationStatus ::
+      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 CodeGenerationStatus_CREATE_COMPLETE :: CodeGenerationStatus
+pattern CodeGenerationStatus_CREATE_COMPLETE = CodeGenerationStatus' "CREATE_COMPLETE"
+
+pattern CodeGenerationStatus_CREATE_FAILED :: CodeGenerationStatus
+pattern CodeGenerationStatus_CREATE_FAILED = CodeGenerationStatus' "CREATE_FAILED"
+
+pattern CodeGenerationStatus_CREATE_IN_PROGRESS :: CodeGenerationStatus
+pattern CodeGenerationStatus_CREATE_IN_PROGRESS = CodeGenerationStatus' "CREATE_IN_PROGRESS"
+
+{-# COMPLETE
+  CodeGenerationStatus_CREATE_COMPLETE,
+  CodeGenerationStatus_CREATE_FAILED,
+  CodeGenerationStatus_CREATE_IN_PROGRESS,
+  CodeGenerationStatus'
+  #-}
diff --git a/gen/Amazonka/Schemas/Types/DiscovererState.hs b/gen/Amazonka/Schemas/Types/DiscovererState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/DiscovererState.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.Schemas.Types.DiscovererState
+-- 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.Schemas.Types.DiscovererState
+  ( DiscovererState
+      ( ..,
+        DiscovererState_STARTED,
+        DiscovererState_STOPPED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DiscovererState = DiscovererState'
+  { fromDiscovererState ::
+      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 DiscovererState_STARTED :: DiscovererState
+pattern DiscovererState_STARTED = DiscovererState' "STARTED"
+
+pattern DiscovererState_STOPPED :: DiscovererState
+pattern DiscovererState_STOPPED = DiscovererState' "STOPPED"
+
+{-# COMPLETE
+  DiscovererState_STARTED,
+  DiscovererState_STOPPED,
+  DiscovererState'
+  #-}
diff --git a/gen/Amazonka/Schemas/Types/DiscovererSummary.hs b/gen/Amazonka/Schemas/Types/DiscovererSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/DiscovererSummary.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.Types.DiscovererSummary
+-- 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.Schemas.Types.DiscovererSummary 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.Schemas.Types.DiscovererState
+
+-- | /See:/ 'newDiscovererSummary' smart constructor.
+data DiscovererSummary = DiscovererSummary'
+  { -- | The Status if the discoverer will discover schemas from events sent from
+    -- another account.
+    crossAccount :: Prelude.Maybe Prelude.Bool,
+    -- | The ARN of the discoverer.
+    discovererArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the discoverer.
+    discovererId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the event bus.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The state of the discoverer.
+    state :: Prelude.Maybe DiscovererState,
+    -- | Tags associated with the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DiscovererSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'crossAccount', 'discovererSummary_crossAccount' - The Status if the discoverer will discover schemas from events sent from
+-- another account.
+--
+-- 'discovererArn', 'discovererSummary_discovererArn' - The ARN of the discoverer.
+--
+-- 'discovererId', 'discovererSummary_discovererId' - The ID of the discoverer.
+--
+-- 'sourceArn', 'discovererSummary_sourceArn' - The ARN of the event bus.
+--
+-- 'state', 'discovererSummary_state' - The state of the discoverer.
+--
+-- 'tags', 'discovererSummary_tags' - Tags associated with the resource.
+newDiscovererSummary ::
+  DiscovererSummary
+newDiscovererSummary =
+  DiscovererSummary'
+    { crossAccount = Prelude.Nothing,
+      discovererArn = Prelude.Nothing,
+      discovererId = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The Status if the discoverer will discover schemas from events sent from
+-- another account.
+discovererSummary_crossAccount :: Lens.Lens' DiscovererSummary (Prelude.Maybe Prelude.Bool)
+discovererSummary_crossAccount = Lens.lens (\DiscovererSummary' {crossAccount} -> crossAccount) (\s@DiscovererSummary' {} a -> s {crossAccount = a} :: DiscovererSummary)
+
+-- | The ARN of the discoverer.
+discovererSummary_discovererArn :: Lens.Lens' DiscovererSummary (Prelude.Maybe Prelude.Text)
+discovererSummary_discovererArn = Lens.lens (\DiscovererSummary' {discovererArn} -> discovererArn) (\s@DiscovererSummary' {} a -> s {discovererArn = a} :: DiscovererSummary)
+
+-- | The ID of the discoverer.
+discovererSummary_discovererId :: Lens.Lens' DiscovererSummary (Prelude.Maybe Prelude.Text)
+discovererSummary_discovererId = Lens.lens (\DiscovererSummary' {discovererId} -> discovererId) (\s@DiscovererSummary' {} a -> s {discovererId = a} :: DiscovererSummary)
+
+-- | The ARN of the event bus.
+discovererSummary_sourceArn :: Lens.Lens' DiscovererSummary (Prelude.Maybe Prelude.Text)
+discovererSummary_sourceArn = Lens.lens (\DiscovererSummary' {sourceArn} -> sourceArn) (\s@DiscovererSummary' {} a -> s {sourceArn = a} :: DiscovererSummary)
+
+-- | The state of the discoverer.
+discovererSummary_state :: Lens.Lens' DiscovererSummary (Prelude.Maybe DiscovererState)
+discovererSummary_state = Lens.lens (\DiscovererSummary' {state} -> state) (\s@DiscovererSummary' {} a -> s {state = a} :: DiscovererSummary)
+
+-- | Tags associated with the resource.
+discovererSummary_tags :: Lens.Lens' DiscovererSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+discovererSummary_tags = Lens.lens (\DiscovererSummary' {tags} -> tags) (\s@DiscovererSummary' {} a -> s {tags = a} :: DiscovererSummary) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DiscovererSummary where
+  parseJSON =
+    Data.withObject
+      "DiscovererSummary"
+      ( \x ->
+          DiscovererSummary'
+            Prelude.<$> (x Data..:? "CrossAccount")
+            Prelude.<*> (x Data..:? "DiscovererArn")
+            Prelude.<*> (x Data..:? "DiscovererId")
+            Prelude.<*> (x Data..:? "SourceArn")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable DiscovererSummary where
+  hashWithSalt _salt DiscovererSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` crossAccount
+      `Prelude.hashWithSalt` discovererArn
+      `Prelude.hashWithSalt` discovererId
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData DiscovererSummary where
+  rnf DiscovererSummary' {..} =
+    Prelude.rnf crossAccount
+      `Prelude.seq` Prelude.rnf discovererArn
+      `Prelude.seq` Prelude.rnf discovererId
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/Schemas/Types/RegistrySummary.hs b/gen/Amazonka/Schemas/Types/RegistrySummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/RegistrySummary.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.Types.RegistrySummary
+-- 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.Schemas.Types.RegistrySummary 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
+
+-- | /See:/ 'newRegistrySummary' smart constructor.
+data RegistrySummary = RegistrySummary'
+  { -- | The ARN of the registry.
+    registryArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Maybe Prelude.Text,
+    -- | Tags associated with the registry.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegistrySummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'registryArn', 'registrySummary_registryArn' - The ARN of the registry.
+--
+-- 'registryName', 'registrySummary_registryName' - The name of the registry.
+--
+-- 'tags', 'registrySummary_tags' - Tags associated with the registry.
+newRegistrySummary ::
+  RegistrySummary
+newRegistrySummary =
+  RegistrySummary'
+    { registryArn = Prelude.Nothing,
+      registryName = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The ARN of the registry.
+registrySummary_registryArn :: Lens.Lens' RegistrySummary (Prelude.Maybe Prelude.Text)
+registrySummary_registryArn = Lens.lens (\RegistrySummary' {registryArn} -> registryArn) (\s@RegistrySummary' {} a -> s {registryArn = a} :: RegistrySummary)
+
+-- | The name of the registry.
+registrySummary_registryName :: Lens.Lens' RegistrySummary (Prelude.Maybe Prelude.Text)
+registrySummary_registryName = Lens.lens (\RegistrySummary' {registryName} -> registryName) (\s@RegistrySummary' {} a -> s {registryName = a} :: RegistrySummary)
+
+-- | Tags associated with the registry.
+registrySummary_tags :: Lens.Lens' RegistrySummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+registrySummary_tags = Lens.lens (\RegistrySummary' {tags} -> tags) (\s@RegistrySummary' {} a -> s {tags = a} :: RegistrySummary) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON RegistrySummary where
+  parseJSON =
+    Data.withObject
+      "RegistrySummary"
+      ( \x ->
+          RegistrySummary'
+            Prelude.<$> (x Data..:? "RegistryArn")
+            Prelude.<*> (x Data..:? "RegistryName")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable RegistrySummary where
+  hashWithSalt _salt RegistrySummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` registryArn
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData RegistrySummary where
+  rnf RegistrySummary' {..} =
+    Prelude.rnf registryArn
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/Schemas/Types/SchemaSummary.hs b/gen/Amazonka/Schemas/Types/SchemaSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/SchemaSummary.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.Types.SchemaSummary
+-- 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.Schemas.Types.SchemaSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A summary of schema details.
+--
+-- /See:/ 'newSchemaSummary' smart constructor.
+data SchemaSummary = SchemaSummary'
+  { -- | The date and time that schema was modified.
+    lastModified :: Prelude.Maybe Data.ISO8601,
+    -- | The ARN of the schema.
+    schemaArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Maybe Prelude.Text,
+    -- | Tags associated with the schema.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The number of versions available for the schema.
+    versionCount :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SchemaSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lastModified', 'schemaSummary_lastModified' - The date and time that schema was modified.
+--
+-- 'schemaArn', 'schemaSummary_schemaArn' - The ARN of the schema.
+--
+-- 'schemaName', 'schemaSummary_schemaName' - The name of the schema.
+--
+-- 'tags', 'schemaSummary_tags' - Tags associated with the schema.
+--
+-- 'versionCount', 'schemaSummary_versionCount' - The number of versions available for the schema.
+newSchemaSummary ::
+  SchemaSummary
+newSchemaSummary =
+  SchemaSummary'
+    { lastModified = Prelude.Nothing,
+      schemaArn = Prelude.Nothing,
+      schemaName = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      versionCount = Prelude.Nothing
+    }
+
+-- | The date and time that schema was modified.
+schemaSummary_lastModified :: Lens.Lens' SchemaSummary (Prelude.Maybe Prelude.UTCTime)
+schemaSummary_lastModified = Lens.lens (\SchemaSummary' {lastModified} -> lastModified) (\s@SchemaSummary' {} a -> s {lastModified = a} :: SchemaSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the schema.
+schemaSummary_schemaArn :: Lens.Lens' SchemaSummary (Prelude.Maybe Prelude.Text)
+schemaSummary_schemaArn = Lens.lens (\SchemaSummary' {schemaArn} -> schemaArn) (\s@SchemaSummary' {} a -> s {schemaArn = a} :: SchemaSummary)
+
+-- | The name of the schema.
+schemaSummary_schemaName :: Lens.Lens' SchemaSummary (Prelude.Maybe Prelude.Text)
+schemaSummary_schemaName = Lens.lens (\SchemaSummary' {schemaName} -> schemaName) (\s@SchemaSummary' {} a -> s {schemaName = a} :: SchemaSummary)
+
+-- | Tags associated with the schema.
+schemaSummary_tags :: Lens.Lens' SchemaSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+schemaSummary_tags = Lens.lens (\SchemaSummary' {tags} -> tags) (\s@SchemaSummary' {} a -> s {tags = a} :: SchemaSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of versions available for the schema.
+schemaSummary_versionCount :: Lens.Lens' SchemaSummary (Prelude.Maybe Prelude.Integer)
+schemaSummary_versionCount = Lens.lens (\SchemaSummary' {versionCount} -> versionCount) (\s@SchemaSummary' {} a -> s {versionCount = a} :: SchemaSummary)
+
+instance Data.FromJSON SchemaSummary where
+  parseJSON =
+    Data.withObject
+      "SchemaSummary"
+      ( \x ->
+          SchemaSummary'
+            Prelude.<$> (x Data..:? "LastModified")
+            Prelude.<*> (x Data..:? "SchemaArn")
+            Prelude.<*> (x Data..:? "SchemaName")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "VersionCount")
+      )
+
+instance Prelude.Hashable SchemaSummary where
+  hashWithSalt _salt SchemaSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastModified
+      `Prelude.hashWithSalt` schemaArn
+      `Prelude.hashWithSalt` schemaName
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` versionCount
+
+instance Prelude.NFData SchemaSummary where
+  rnf SchemaSummary' {..} =
+    Prelude.rnf lastModified
+      `Prelude.seq` Prelude.rnf schemaArn
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf versionCount
diff --git a/gen/Amazonka/Schemas/Types/SchemaVersionSummary.hs b/gen/Amazonka/Schemas/Types/SchemaVersionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/SchemaVersionSummary.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.Types.SchemaVersionSummary
+-- 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.Schemas.Types.SchemaVersionSummary 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.Schemas.Types.Type
+
+-- | /See:/ 'newSchemaVersionSummary' smart constructor.
+data SchemaVersionSummary = SchemaVersionSummary'
+  { -- | The ARN of the schema version.
+    schemaArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the schema.
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The type of schema.
+    type' :: Prelude.Maybe Type
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SchemaVersionSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'schemaArn', 'schemaVersionSummary_schemaArn' - The ARN of the schema version.
+--
+-- 'schemaName', 'schemaVersionSummary_schemaName' - The name of the schema.
+--
+-- 'schemaVersion', 'schemaVersionSummary_schemaVersion' - The version number of the schema.
+--
+-- 'type'', 'schemaVersionSummary_type' - The type of schema.
+newSchemaVersionSummary ::
+  SchemaVersionSummary
+newSchemaVersionSummary =
+  SchemaVersionSummary'
+    { schemaArn = Prelude.Nothing,
+      schemaName = Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The ARN of the schema version.
+schemaVersionSummary_schemaArn :: Lens.Lens' SchemaVersionSummary (Prelude.Maybe Prelude.Text)
+schemaVersionSummary_schemaArn = Lens.lens (\SchemaVersionSummary' {schemaArn} -> schemaArn) (\s@SchemaVersionSummary' {} a -> s {schemaArn = a} :: SchemaVersionSummary)
+
+-- | The name of the schema.
+schemaVersionSummary_schemaName :: Lens.Lens' SchemaVersionSummary (Prelude.Maybe Prelude.Text)
+schemaVersionSummary_schemaName = Lens.lens (\SchemaVersionSummary' {schemaName} -> schemaName) (\s@SchemaVersionSummary' {} a -> s {schemaName = a} :: SchemaVersionSummary)
+
+-- | The version number of the schema.
+schemaVersionSummary_schemaVersion :: Lens.Lens' SchemaVersionSummary (Prelude.Maybe Prelude.Text)
+schemaVersionSummary_schemaVersion = Lens.lens (\SchemaVersionSummary' {schemaVersion} -> schemaVersion) (\s@SchemaVersionSummary' {} a -> s {schemaVersion = a} :: SchemaVersionSummary)
+
+-- | The type of schema.
+schemaVersionSummary_type :: Lens.Lens' SchemaVersionSummary (Prelude.Maybe Type)
+schemaVersionSummary_type = Lens.lens (\SchemaVersionSummary' {type'} -> type') (\s@SchemaVersionSummary' {} a -> s {type' = a} :: SchemaVersionSummary)
+
+instance Data.FromJSON SchemaVersionSummary where
+  parseJSON =
+    Data.withObject
+      "SchemaVersionSummary"
+      ( \x ->
+          SchemaVersionSummary'
+            Prelude.<$> (x Data..:? "SchemaArn")
+            Prelude.<*> (x Data..:? "SchemaName")
+            Prelude.<*> (x Data..:? "SchemaVersion")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable SchemaVersionSummary where
+  hashWithSalt _salt SchemaVersionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` schemaArn
+      `Prelude.hashWithSalt` schemaName
+      `Prelude.hashWithSalt` schemaVersion
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData SchemaVersionSummary where
+  rnf SchemaVersionSummary' {..} =
+    Prelude.rnf schemaArn
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/Schemas/Types/SearchSchemaSummary.hs b/gen/Amazonka/Schemas/Types/SearchSchemaSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/SearchSchemaSummary.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.Types.SearchSchemaSummary
+-- 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.Schemas.Types.SearchSchemaSummary 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.Schemas.Types.SearchSchemaVersionSummary
+
+-- | /See:/ 'newSearchSchemaSummary' smart constructor.
+data SearchSchemaSummary = SearchSchemaSummary'
+  { -- | The name of the registry.
+    registryName :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the schema.
+    schemaArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Maybe Prelude.Text,
+    -- | An array of schema version summaries.
+    schemaVersions :: Prelude.Maybe [SearchSchemaVersionSummary]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchSchemaSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'registryName', 'searchSchemaSummary_registryName' - The name of the registry.
+--
+-- 'schemaArn', 'searchSchemaSummary_schemaArn' - The ARN of the schema.
+--
+-- 'schemaName', 'searchSchemaSummary_schemaName' - The name of the schema.
+--
+-- 'schemaVersions', 'searchSchemaSummary_schemaVersions' - An array of schema version summaries.
+newSearchSchemaSummary ::
+  SearchSchemaSummary
+newSearchSchemaSummary =
+  SearchSchemaSummary'
+    { registryName =
+        Prelude.Nothing,
+      schemaArn = Prelude.Nothing,
+      schemaName = Prelude.Nothing,
+      schemaVersions = Prelude.Nothing
+    }
+
+-- | The name of the registry.
+searchSchemaSummary_registryName :: Lens.Lens' SearchSchemaSummary (Prelude.Maybe Prelude.Text)
+searchSchemaSummary_registryName = Lens.lens (\SearchSchemaSummary' {registryName} -> registryName) (\s@SearchSchemaSummary' {} a -> s {registryName = a} :: SearchSchemaSummary)
+
+-- | The ARN of the schema.
+searchSchemaSummary_schemaArn :: Lens.Lens' SearchSchemaSummary (Prelude.Maybe Prelude.Text)
+searchSchemaSummary_schemaArn = Lens.lens (\SearchSchemaSummary' {schemaArn} -> schemaArn) (\s@SearchSchemaSummary' {} a -> s {schemaArn = a} :: SearchSchemaSummary)
+
+-- | The name of the schema.
+searchSchemaSummary_schemaName :: Lens.Lens' SearchSchemaSummary (Prelude.Maybe Prelude.Text)
+searchSchemaSummary_schemaName = Lens.lens (\SearchSchemaSummary' {schemaName} -> schemaName) (\s@SearchSchemaSummary' {} a -> s {schemaName = a} :: SearchSchemaSummary)
+
+-- | An array of schema version summaries.
+searchSchemaSummary_schemaVersions :: Lens.Lens' SearchSchemaSummary (Prelude.Maybe [SearchSchemaVersionSummary])
+searchSchemaSummary_schemaVersions = Lens.lens (\SearchSchemaSummary' {schemaVersions} -> schemaVersions) (\s@SearchSchemaSummary' {} a -> s {schemaVersions = a} :: SearchSchemaSummary) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SearchSchemaSummary where
+  parseJSON =
+    Data.withObject
+      "SearchSchemaSummary"
+      ( \x ->
+          SearchSchemaSummary'
+            Prelude.<$> (x Data..:? "RegistryName")
+            Prelude.<*> (x Data..:? "SchemaArn")
+            Prelude.<*> (x Data..:? "SchemaName")
+            Prelude.<*> ( x
+                            Data..:? "SchemaVersions"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable SearchSchemaSummary where
+  hashWithSalt _salt SearchSchemaSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaArn
+      `Prelude.hashWithSalt` schemaName
+      `Prelude.hashWithSalt` schemaVersions
+
+instance Prelude.NFData SearchSchemaSummary where
+  rnf SearchSchemaSummary' {..} =
+    Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaArn
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf schemaVersions
diff --git a/gen/Amazonka/Schemas/Types/SearchSchemaVersionSummary.hs b/gen/Amazonka/Schemas/Types/SearchSchemaVersionSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/SearchSchemaVersionSummary.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.Types.SearchSchemaVersionSummary
+-- 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.Schemas.Types.SearchSchemaVersionSummary 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.Schemas.Types.Type
+
+-- | /See:/ 'newSearchSchemaVersionSummary' smart constructor.
+data SearchSchemaVersionSummary = SearchSchemaVersionSummary'
+  { -- | The date the schema version was created.
+    createdDate :: Prelude.Maybe Data.ISO8601,
+    -- | The version number of the schema
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    -- | The type of schema.
+    type' :: Prelude.Maybe Type
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SearchSchemaVersionSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdDate', 'searchSchemaVersionSummary_createdDate' - The date the schema version was created.
+--
+-- 'schemaVersion', 'searchSchemaVersionSummary_schemaVersion' - The version number of the schema
+--
+-- 'type'', 'searchSchemaVersionSummary_type' - The type of schema.
+newSearchSchemaVersionSummary ::
+  SearchSchemaVersionSummary
+newSearchSchemaVersionSummary =
+  SearchSchemaVersionSummary'
+    { createdDate =
+        Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The date the schema version was created.
+searchSchemaVersionSummary_createdDate :: Lens.Lens' SearchSchemaVersionSummary (Prelude.Maybe Prelude.UTCTime)
+searchSchemaVersionSummary_createdDate = Lens.lens (\SearchSchemaVersionSummary' {createdDate} -> createdDate) (\s@SearchSchemaVersionSummary' {} a -> s {createdDate = a} :: SearchSchemaVersionSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The version number of the schema
+searchSchemaVersionSummary_schemaVersion :: Lens.Lens' SearchSchemaVersionSummary (Prelude.Maybe Prelude.Text)
+searchSchemaVersionSummary_schemaVersion = Lens.lens (\SearchSchemaVersionSummary' {schemaVersion} -> schemaVersion) (\s@SearchSchemaVersionSummary' {} a -> s {schemaVersion = a} :: SearchSchemaVersionSummary)
+
+-- | The type of schema.
+searchSchemaVersionSummary_type :: Lens.Lens' SearchSchemaVersionSummary (Prelude.Maybe Type)
+searchSchemaVersionSummary_type = Lens.lens (\SearchSchemaVersionSummary' {type'} -> type') (\s@SearchSchemaVersionSummary' {} a -> s {type' = a} :: SearchSchemaVersionSummary)
+
+instance Data.FromJSON SearchSchemaVersionSummary where
+  parseJSON =
+    Data.withObject
+      "SearchSchemaVersionSummary"
+      ( \x ->
+          SearchSchemaVersionSummary'
+            Prelude.<$> (x Data..:? "CreatedDate")
+            Prelude.<*> (x Data..:? "SchemaVersion")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable SearchSchemaVersionSummary where
+  hashWithSalt _salt SearchSchemaVersionSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdDate
+      `Prelude.hashWithSalt` schemaVersion
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData SearchSchemaVersionSummary where
+  rnf SearchSchemaVersionSummary' {..} =
+    Prelude.rnf createdDate
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/Schemas/Types/Type.hs b/gen/Amazonka/Schemas/Types/Type.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Types/Type.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.Types.Type
+-- 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.Schemas.Types.Type
+  ( Type
+      ( ..,
+        Type_JSONSchemaDraft4,
+        Type_OpenApi3
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Type = Type' {fromType :: 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 Type_JSONSchemaDraft4 :: Type
+pattern Type_JSONSchemaDraft4 = Type' "JSONSchemaDraft4"
+
+pattern Type_OpenApi3 :: Type
+pattern Type_OpenApi3 = Type' "OpenApi3"
+
+{-# COMPLETE
+  Type_JSONSchemaDraft4,
+  Type_OpenApi3,
+  Type'
+  #-}
diff --git a/gen/Amazonka/Schemas/UntagResource.hs b/gen/Amazonka/Schemas/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/UntagResource.hs
@@ -0,0 +1,140 @@
+{-# 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.Schemas.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 a resource.
+module Amazonka.Schemas.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_tagKeys,
+    untagResource_resourceArn,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+  )
+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.Schemas.Types
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | Keys of key-value pairs.
+    tagKeys :: [Prelude.Text],
+    -- | The ARN of the resource.
+    resourceArn :: 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:
+--
+-- 'tagKeys', 'untagResource_tagKeys' - Keys of key-value pairs.
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The ARN of the resource.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { tagKeys = Prelude.mempty,
+      resourceArn = pResourceArn_
+    }
+
+-- | Keys of key-value pairs.
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+-- | The ARN of the resource.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull UntagResourceResponse'
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` tagKeys
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf tagKeys
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  {
+  }
+  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.
+newUntagResourceResponse ::
+  UntagResourceResponse
+newUntagResourceResponse = UntagResourceResponse'
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/Schemas/UpdateDiscoverer.hs b/gen/Amazonka/Schemas/UpdateDiscoverer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/UpdateDiscoverer.hs
@@ -0,0 +1,274 @@
+{-# 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.Schemas.UpdateDiscoverer
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the discoverer
+module Amazonka.Schemas.UpdateDiscoverer
+  ( -- * Creating a Request
+    UpdateDiscoverer (..),
+    newUpdateDiscoverer,
+
+    -- * Request Lenses
+    updateDiscoverer_crossAccount,
+    updateDiscoverer_description,
+    updateDiscoverer_discovererId,
+
+    -- * Destructuring the Response
+    UpdateDiscovererResponse (..),
+    newUpdateDiscovererResponse,
+
+    -- * Response Lenses
+    updateDiscovererResponse_crossAccount,
+    updateDiscovererResponse_description,
+    updateDiscovererResponse_discovererArn,
+    updateDiscovererResponse_discovererId,
+    updateDiscovererResponse_sourceArn,
+    updateDiscovererResponse_state,
+    updateDiscovererResponse_tags,
+    updateDiscovererResponse_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.Schemas.Types
+
+-- | /See:/ 'newUpdateDiscoverer' smart constructor.
+data UpdateDiscoverer = UpdateDiscoverer'
+  { -- | Support discovery of schemas in events sent to the bus from another
+    -- account. (default: true)
+    crossAccount :: Prelude.Maybe Prelude.Bool,
+    -- | The description of the discoverer to update.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the discoverer.
+    discovererId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDiscoverer' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'crossAccount', 'updateDiscoverer_crossAccount' - Support discovery of schemas in events sent to the bus from another
+-- account. (default: true)
+--
+-- 'description', 'updateDiscoverer_description' - The description of the discoverer to update.
+--
+-- 'discovererId', 'updateDiscoverer_discovererId' - The ID of the discoverer.
+newUpdateDiscoverer ::
+  -- | 'discovererId'
+  Prelude.Text ->
+  UpdateDiscoverer
+newUpdateDiscoverer pDiscovererId_ =
+  UpdateDiscoverer'
+    { crossAccount = Prelude.Nothing,
+      description = Prelude.Nothing,
+      discovererId = pDiscovererId_
+    }
+
+-- | Support discovery of schemas in events sent to the bus from another
+-- account. (default: true)
+updateDiscoverer_crossAccount :: Lens.Lens' UpdateDiscoverer (Prelude.Maybe Prelude.Bool)
+updateDiscoverer_crossAccount = Lens.lens (\UpdateDiscoverer' {crossAccount} -> crossAccount) (\s@UpdateDiscoverer' {} a -> s {crossAccount = a} :: UpdateDiscoverer)
+
+-- | The description of the discoverer to update.
+updateDiscoverer_description :: Lens.Lens' UpdateDiscoverer (Prelude.Maybe Prelude.Text)
+updateDiscoverer_description = Lens.lens (\UpdateDiscoverer' {description} -> description) (\s@UpdateDiscoverer' {} a -> s {description = a} :: UpdateDiscoverer)
+
+-- | The ID of the discoverer.
+updateDiscoverer_discovererId :: Lens.Lens' UpdateDiscoverer Prelude.Text
+updateDiscoverer_discovererId = Lens.lens (\UpdateDiscoverer' {discovererId} -> discovererId) (\s@UpdateDiscoverer' {} a -> s {discovererId = a} :: UpdateDiscoverer)
+
+instance Core.AWSRequest UpdateDiscoverer where
+  type
+    AWSResponse UpdateDiscoverer =
+      UpdateDiscovererResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateDiscovererResponse'
+            Prelude.<$> (x Data..?> "CrossAccount")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DiscovererArn")
+            Prelude.<*> (x Data..?> "DiscovererId")
+            Prelude.<*> (x Data..?> "SourceArn")
+            Prelude.<*> (x Data..?> "State")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateDiscoverer where
+  hashWithSalt _salt UpdateDiscoverer' {..} =
+    _salt
+      `Prelude.hashWithSalt` crossAccount
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` discovererId
+
+instance Prelude.NFData UpdateDiscoverer where
+  rnf UpdateDiscoverer' {..} =
+    Prelude.rnf crossAccount
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf discovererId
+
+instance Data.ToHeaders UpdateDiscoverer where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateDiscoverer where
+  toJSON UpdateDiscoverer' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CrossAccount" Data..=) Prelude.<$> crossAccount,
+            ("Description" Data..=) Prelude.<$> description
+          ]
+      )
+
+instance Data.ToPath UpdateDiscoverer where
+  toPath UpdateDiscoverer' {..} =
+    Prelude.mconcat
+      ["/v1/discoverers/id/", Data.toBS discovererId]
+
+instance Data.ToQuery UpdateDiscoverer where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDiscovererResponse' smart constructor.
+data UpdateDiscovererResponse = UpdateDiscovererResponse'
+  { -- | The Status if the discoverer will discover schemas from events sent from
+    -- another account.
+    crossAccount :: Prelude.Maybe Prelude.Bool,
+    -- | The description of the discoverer.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the discoverer.
+    discovererArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the discoverer.
+    discovererId :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the event bus.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The state of the discoverer.
+    state :: Prelude.Maybe DiscovererState,
+    -- | Tags associated with the resource.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDiscovererResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'crossAccount', 'updateDiscovererResponse_crossAccount' - The Status if the discoverer will discover schemas from events sent from
+-- another account.
+--
+-- 'description', 'updateDiscovererResponse_description' - The description of the discoverer.
+--
+-- 'discovererArn', 'updateDiscovererResponse_discovererArn' - The ARN of the discoverer.
+--
+-- 'discovererId', 'updateDiscovererResponse_discovererId' - The ID of the discoverer.
+--
+-- 'sourceArn', 'updateDiscovererResponse_sourceArn' - The ARN of the event bus.
+--
+-- 'state', 'updateDiscovererResponse_state' - The state of the discoverer.
+--
+-- 'tags', 'updateDiscovererResponse_tags' - Tags associated with the resource.
+--
+-- 'httpStatus', 'updateDiscovererResponse_httpStatus' - The response's http status code.
+newUpdateDiscovererResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateDiscovererResponse
+newUpdateDiscovererResponse pHttpStatus_ =
+  UpdateDiscovererResponse'
+    { crossAccount =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      discovererArn = Prelude.Nothing,
+      discovererId = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      state = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Status if the discoverer will discover schemas from events sent from
+-- another account.
+updateDiscovererResponse_crossAccount :: Lens.Lens' UpdateDiscovererResponse (Prelude.Maybe Prelude.Bool)
+updateDiscovererResponse_crossAccount = Lens.lens (\UpdateDiscovererResponse' {crossAccount} -> crossAccount) (\s@UpdateDiscovererResponse' {} a -> s {crossAccount = a} :: UpdateDiscovererResponse)
+
+-- | The description of the discoverer.
+updateDiscovererResponse_description :: Lens.Lens' UpdateDiscovererResponse (Prelude.Maybe Prelude.Text)
+updateDiscovererResponse_description = Lens.lens (\UpdateDiscovererResponse' {description} -> description) (\s@UpdateDiscovererResponse' {} a -> s {description = a} :: UpdateDiscovererResponse)
+
+-- | The ARN of the discoverer.
+updateDiscovererResponse_discovererArn :: Lens.Lens' UpdateDiscovererResponse (Prelude.Maybe Prelude.Text)
+updateDiscovererResponse_discovererArn = Lens.lens (\UpdateDiscovererResponse' {discovererArn} -> discovererArn) (\s@UpdateDiscovererResponse' {} a -> s {discovererArn = a} :: UpdateDiscovererResponse)
+
+-- | The ID of the discoverer.
+updateDiscovererResponse_discovererId :: Lens.Lens' UpdateDiscovererResponse (Prelude.Maybe Prelude.Text)
+updateDiscovererResponse_discovererId = Lens.lens (\UpdateDiscovererResponse' {discovererId} -> discovererId) (\s@UpdateDiscovererResponse' {} a -> s {discovererId = a} :: UpdateDiscovererResponse)
+
+-- | The ARN of the event bus.
+updateDiscovererResponse_sourceArn :: Lens.Lens' UpdateDiscovererResponse (Prelude.Maybe Prelude.Text)
+updateDiscovererResponse_sourceArn = Lens.lens (\UpdateDiscovererResponse' {sourceArn} -> sourceArn) (\s@UpdateDiscovererResponse' {} a -> s {sourceArn = a} :: UpdateDiscovererResponse)
+
+-- | The state of the discoverer.
+updateDiscovererResponse_state :: Lens.Lens' UpdateDiscovererResponse (Prelude.Maybe DiscovererState)
+updateDiscovererResponse_state = Lens.lens (\UpdateDiscovererResponse' {state} -> state) (\s@UpdateDiscovererResponse' {} a -> s {state = a} :: UpdateDiscovererResponse)
+
+-- | Tags associated with the resource.
+updateDiscovererResponse_tags :: Lens.Lens' UpdateDiscovererResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateDiscovererResponse_tags = Lens.lens (\UpdateDiscovererResponse' {tags} -> tags) (\s@UpdateDiscovererResponse' {} a -> s {tags = a} :: UpdateDiscovererResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+updateDiscovererResponse_httpStatus :: Lens.Lens' UpdateDiscovererResponse Prelude.Int
+updateDiscovererResponse_httpStatus = Lens.lens (\UpdateDiscovererResponse' {httpStatus} -> httpStatus) (\s@UpdateDiscovererResponse' {} a -> s {httpStatus = a} :: UpdateDiscovererResponse)
+
+instance Prelude.NFData UpdateDiscovererResponse where
+  rnf UpdateDiscovererResponse' {..} =
+    Prelude.rnf crossAccount
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf discovererArn
+      `Prelude.seq` Prelude.rnf discovererId
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/UpdateRegistry.hs b/gen/Amazonka/Schemas/UpdateRegistry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/UpdateRegistry.hs
@@ -0,0 +1,220 @@
+{-# 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.Schemas.UpdateRegistry
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a registry.
+module Amazonka.Schemas.UpdateRegistry
+  ( -- * Creating a Request
+    UpdateRegistry (..),
+    newUpdateRegistry,
+
+    -- * Request Lenses
+    updateRegistry_description,
+    updateRegistry_registryName,
+
+    -- * Destructuring the Response
+    UpdateRegistryResponse (..),
+    newUpdateRegistryResponse,
+
+    -- * Response Lenses
+    updateRegistryResponse_description,
+    updateRegistryResponse_registryArn,
+    updateRegistryResponse_registryName,
+    updateRegistryResponse_tags,
+    updateRegistryResponse_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.Schemas.Types
+
+-- | Updates the registry.
+--
+-- /See:/ 'newUpdateRegistry' smart constructor.
+data UpdateRegistry = UpdateRegistry'
+  { -- | The description of the registry to update.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRegistry' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updateRegistry_description' - The description of the registry to update.
+--
+-- 'registryName', 'updateRegistry_registryName' - The name of the registry.
+newUpdateRegistry ::
+  -- | 'registryName'
+  Prelude.Text ->
+  UpdateRegistry
+newUpdateRegistry pRegistryName_ =
+  UpdateRegistry'
+    { description = Prelude.Nothing,
+      registryName = pRegistryName_
+    }
+
+-- | The description of the registry to update.
+updateRegistry_description :: Lens.Lens' UpdateRegistry (Prelude.Maybe Prelude.Text)
+updateRegistry_description = Lens.lens (\UpdateRegistry' {description} -> description) (\s@UpdateRegistry' {} a -> s {description = a} :: UpdateRegistry)
+
+-- | The name of the registry.
+updateRegistry_registryName :: Lens.Lens' UpdateRegistry Prelude.Text
+updateRegistry_registryName = Lens.lens (\UpdateRegistry' {registryName} -> registryName) (\s@UpdateRegistry' {} a -> s {registryName = a} :: UpdateRegistry)
+
+instance Core.AWSRequest UpdateRegistry where
+  type
+    AWSResponse UpdateRegistry =
+      UpdateRegistryResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateRegistryResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "RegistryArn")
+            Prelude.<*> (x Data..?> "RegistryName")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateRegistry where
+  hashWithSalt _salt UpdateRegistry' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` registryName
+
+instance Prelude.NFData UpdateRegistry where
+  rnf UpdateRegistry' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf registryName
+
+instance Data.ToHeaders UpdateRegistry where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateRegistry where
+  toJSON UpdateRegistry' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Description" Data..=) Prelude.<$> description]
+      )
+
+instance Data.ToPath UpdateRegistry where
+  toPath UpdateRegistry' {..} =
+    Prelude.mconcat
+      ["/v1/registries/name/", Data.toBS registryName]
+
+instance Data.ToQuery UpdateRegistry where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateRegistryResponse' smart constructor.
+data UpdateRegistryResponse = UpdateRegistryResponse'
+  { -- | The description of the registry.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the registry.
+    registryArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the registry.
+    registryName :: Prelude.Maybe Prelude.Text,
+    -- | Tags associated with the registry.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRegistryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updateRegistryResponse_description' - The description of the registry.
+--
+-- 'registryArn', 'updateRegistryResponse_registryArn' - The ARN of the registry.
+--
+-- 'registryName', 'updateRegistryResponse_registryName' - The name of the registry.
+--
+-- 'tags', 'updateRegistryResponse_tags' - Tags associated with the registry.
+--
+-- 'httpStatus', 'updateRegistryResponse_httpStatus' - The response's http status code.
+newUpdateRegistryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateRegistryResponse
+newUpdateRegistryResponse pHttpStatus_ =
+  UpdateRegistryResponse'
+    { description =
+        Prelude.Nothing,
+      registryArn = Prelude.Nothing,
+      registryName = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The description of the registry.
+updateRegistryResponse_description :: Lens.Lens' UpdateRegistryResponse (Prelude.Maybe Prelude.Text)
+updateRegistryResponse_description = Lens.lens (\UpdateRegistryResponse' {description} -> description) (\s@UpdateRegistryResponse' {} a -> s {description = a} :: UpdateRegistryResponse)
+
+-- | The ARN of the registry.
+updateRegistryResponse_registryArn :: Lens.Lens' UpdateRegistryResponse (Prelude.Maybe Prelude.Text)
+updateRegistryResponse_registryArn = Lens.lens (\UpdateRegistryResponse' {registryArn} -> registryArn) (\s@UpdateRegistryResponse' {} a -> s {registryArn = a} :: UpdateRegistryResponse)
+
+-- | The name of the registry.
+updateRegistryResponse_registryName :: Lens.Lens' UpdateRegistryResponse (Prelude.Maybe Prelude.Text)
+updateRegistryResponse_registryName = Lens.lens (\UpdateRegistryResponse' {registryName} -> registryName) (\s@UpdateRegistryResponse' {} a -> s {registryName = a} :: UpdateRegistryResponse)
+
+-- | Tags associated with the registry.
+updateRegistryResponse_tags :: Lens.Lens' UpdateRegistryResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateRegistryResponse_tags = Lens.lens (\UpdateRegistryResponse' {tags} -> tags) (\s@UpdateRegistryResponse' {} a -> s {tags = a} :: UpdateRegistryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+updateRegistryResponse_httpStatus :: Lens.Lens' UpdateRegistryResponse Prelude.Int
+updateRegistryResponse_httpStatus = Lens.lens (\UpdateRegistryResponse' {httpStatus} -> httpStatus) (\s@UpdateRegistryResponse' {} a -> s {httpStatus = a} :: UpdateRegistryResponse)
+
+instance Prelude.NFData UpdateRegistryResponse where
+  rnf UpdateRegistryResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf registryArn
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/UpdateSchema.hs b/gen/Amazonka/Schemas/UpdateSchema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/UpdateSchema.hs
@@ -0,0 +1,323 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Schemas.UpdateSchema
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the schema definition
+--
+-- Inactive schemas will be deleted after two years.
+module Amazonka.Schemas.UpdateSchema
+  ( -- * Creating a Request
+    UpdateSchema (..),
+    newUpdateSchema,
+
+    -- * Request Lenses
+    updateSchema_clientTokenId,
+    updateSchema_content,
+    updateSchema_description,
+    updateSchema_type,
+    updateSchema_registryName,
+    updateSchema_schemaName,
+
+    -- * Destructuring the Response
+    UpdateSchemaResponse (..),
+    newUpdateSchemaResponse,
+
+    -- * Response Lenses
+    updateSchemaResponse_description,
+    updateSchemaResponse_lastModified,
+    updateSchemaResponse_schemaArn,
+    updateSchemaResponse_schemaName,
+    updateSchemaResponse_schemaVersion,
+    updateSchemaResponse_tags,
+    updateSchemaResponse_type,
+    updateSchemaResponse_versionCreatedDate,
+    updateSchemaResponse_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.Schemas.Types
+
+-- | /See:/ 'newUpdateSchema' smart constructor.
+data UpdateSchema = UpdateSchema'
+  { -- | The ID of the client token.
+    clientTokenId :: Prelude.Maybe Prelude.Text,
+    -- | The source of the schema definition.
+    content :: Prelude.Maybe Prelude.Text,
+    -- | The description of the schema.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The schema type for the events schema.
+    type' :: Prelude.Maybe Type,
+    -- | The name of the registry.
+    registryName :: Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSchema' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientTokenId', 'updateSchema_clientTokenId' - The ID of the client token.
+--
+-- 'content', 'updateSchema_content' - The source of the schema definition.
+--
+-- 'description', 'updateSchema_description' - The description of the schema.
+--
+-- 'type'', 'updateSchema_type' - The schema type for the events schema.
+--
+-- 'registryName', 'updateSchema_registryName' - The name of the registry.
+--
+-- 'schemaName', 'updateSchema_schemaName' - The name of the schema.
+newUpdateSchema ::
+  -- | 'registryName'
+  Prelude.Text ->
+  -- | 'schemaName'
+  Prelude.Text ->
+  UpdateSchema
+newUpdateSchema pRegistryName_ pSchemaName_ =
+  UpdateSchema'
+    { clientTokenId = Prelude.Nothing,
+      content = Prelude.Nothing,
+      description = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      registryName = pRegistryName_,
+      schemaName = pSchemaName_
+    }
+
+-- | The ID of the client token.
+updateSchema_clientTokenId :: Lens.Lens' UpdateSchema (Prelude.Maybe Prelude.Text)
+updateSchema_clientTokenId = Lens.lens (\UpdateSchema' {clientTokenId} -> clientTokenId) (\s@UpdateSchema' {} a -> s {clientTokenId = a} :: UpdateSchema)
+
+-- | The source of the schema definition.
+updateSchema_content :: Lens.Lens' UpdateSchema (Prelude.Maybe Prelude.Text)
+updateSchema_content = Lens.lens (\UpdateSchema' {content} -> content) (\s@UpdateSchema' {} a -> s {content = a} :: UpdateSchema)
+
+-- | The description of the schema.
+updateSchema_description :: Lens.Lens' UpdateSchema (Prelude.Maybe Prelude.Text)
+updateSchema_description = Lens.lens (\UpdateSchema' {description} -> description) (\s@UpdateSchema' {} a -> s {description = a} :: UpdateSchema)
+
+-- | The schema type for the events schema.
+updateSchema_type :: Lens.Lens' UpdateSchema (Prelude.Maybe Type)
+updateSchema_type = Lens.lens (\UpdateSchema' {type'} -> type') (\s@UpdateSchema' {} a -> s {type' = a} :: UpdateSchema)
+
+-- | The name of the registry.
+updateSchema_registryName :: Lens.Lens' UpdateSchema Prelude.Text
+updateSchema_registryName = Lens.lens (\UpdateSchema' {registryName} -> registryName) (\s@UpdateSchema' {} a -> s {registryName = a} :: UpdateSchema)
+
+-- | The name of the schema.
+updateSchema_schemaName :: Lens.Lens' UpdateSchema Prelude.Text
+updateSchema_schemaName = Lens.lens (\UpdateSchema' {schemaName} -> schemaName) (\s@UpdateSchema' {} a -> s {schemaName = a} :: UpdateSchema)
+
+instance Core.AWSRequest UpdateSchema where
+  type AWSResponse UpdateSchema = UpdateSchemaResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateSchemaResponse'
+            Prelude.<$> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "LastModified")
+            Prelude.<*> (x Data..?> "SchemaArn")
+            Prelude.<*> (x Data..?> "SchemaName")
+            Prelude.<*> (x Data..?> "SchemaVersion")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Type")
+            Prelude.<*> (x Data..?> "VersionCreatedDate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateSchema where
+  hashWithSalt _salt UpdateSchema' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientTokenId
+      `Prelude.hashWithSalt` content
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` registryName
+      `Prelude.hashWithSalt` schemaName
+
+instance Prelude.NFData UpdateSchema where
+  rnf UpdateSchema' {..} =
+    Prelude.rnf clientTokenId
+      `Prelude.seq` Prelude.rnf content
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf registryName
+      `Prelude.seq` Prelude.rnf schemaName
+
+instance Data.ToHeaders UpdateSchema where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateSchema where
+  toJSON UpdateSchema' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientTokenId" Data..=) Prelude.<$> clientTokenId,
+            ("Content" Data..=) Prelude.<$> content,
+            ("Description" Data..=) Prelude.<$> description,
+            ("Type" Data..=) Prelude.<$> type'
+          ]
+      )
+
+instance Data.ToPath UpdateSchema where
+  toPath UpdateSchema' {..} =
+    Prelude.mconcat
+      [ "/v1/registries/name/",
+        Data.toBS registryName,
+        "/schemas/name/",
+        Data.toBS schemaName
+      ]
+
+instance Data.ToQuery UpdateSchema where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateSchemaResponse' smart constructor.
+data UpdateSchemaResponse = UpdateSchemaResponse'
+  { -- | The description of the schema.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The date and time that schema was modified.
+    lastModified :: Prelude.Maybe Data.ISO8601,
+    -- | The ARN of the schema.
+    schemaArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the schema.
+    schemaName :: Prelude.Maybe Prelude.Text,
+    -- | The version number of the schema
+    schemaVersion :: Prelude.Maybe Prelude.Text,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The type of the schema.
+    type' :: Prelude.Maybe Prelude.Text,
+    -- | The date the schema version was created.
+    versionCreatedDate :: Prelude.Maybe Data.ISO8601,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateSchemaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updateSchemaResponse_description' - The description of the schema.
+--
+-- 'lastModified', 'updateSchemaResponse_lastModified' - The date and time that schema was modified.
+--
+-- 'schemaArn', 'updateSchemaResponse_schemaArn' - The ARN of the schema.
+--
+-- 'schemaName', 'updateSchemaResponse_schemaName' - The name of the schema.
+--
+-- 'schemaVersion', 'updateSchemaResponse_schemaVersion' - The version number of the schema
+--
+-- 'tags', 'updateSchemaResponse_tags' - Undocumented member.
+--
+-- 'type'', 'updateSchemaResponse_type' - The type of the schema.
+--
+-- 'versionCreatedDate', 'updateSchemaResponse_versionCreatedDate' - The date the schema version was created.
+--
+-- 'httpStatus', 'updateSchemaResponse_httpStatus' - The response's http status code.
+newUpdateSchemaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateSchemaResponse
+newUpdateSchemaResponse pHttpStatus_ =
+  UpdateSchemaResponse'
+    { description =
+        Prelude.Nothing,
+      lastModified = Prelude.Nothing,
+      schemaArn = Prelude.Nothing,
+      schemaName = Prelude.Nothing,
+      schemaVersion = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      versionCreatedDate = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The description of the schema.
+updateSchemaResponse_description :: Lens.Lens' UpdateSchemaResponse (Prelude.Maybe Prelude.Text)
+updateSchemaResponse_description = Lens.lens (\UpdateSchemaResponse' {description} -> description) (\s@UpdateSchemaResponse' {} a -> s {description = a} :: UpdateSchemaResponse)
+
+-- | The date and time that schema was modified.
+updateSchemaResponse_lastModified :: Lens.Lens' UpdateSchemaResponse (Prelude.Maybe Prelude.UTCTime)
+updateSchemaResponse_lastModified = Lens.lens (\UpdateSchemaResponse' {lastModified} -> lastModified) (\s@UpdateSchemaResponse' {} a -> s {lastModified = a} :: UpdateSchemaResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the schema.
+updateSchemaResponse_schemaArn :: Lens.Lens' UpdateSchemaResponse (Prelude.Maybe Prelude.Text)
+updateSchemaResponse_schemaArn = Lens.lens (\UpdateSchemaResponse' {schemaArn} -> schemaArn) (\s@UpdateSchemaResponse' {} a -> s {schemaArn = a} :: UpdateSchemaResponse)
+
+-- | The name of the schema.
+updateSchemaResponse_schemaName :: Lens.Lens' UpdateSchemaResponse (Prelude.Maybe Prelude.Text)
+updateSchemaResponse_schemaName = Lens.lens (\UpdateSchemaResponse' {schemaName} -> schemaName) (\s@UpdateSchemaResponse' {} a -> s {schemaName = a} :: UpdateSchemaResponse)
+
+-- | The version number of the schema
+updateSchemaResponse_schemaVersion :: Lens.Lens' UpdateSchemaResponse (Prelude.Maybe Prelude.Text)
+updateSchemaResponse_schemaVersion = Lens.lens (\UpdateSchemaResponse' {schemaVersion} -> schemaVersion) (\s@UpdateSchemaResponse' {} a -> s {schemaVersion = a} :: UpdateSchemaResponse)
+
+-- | Undocumented member.
+updateSchemaResponse_tags :: Lens.Lens' UpdateSchemaResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateSchemaResponse_tags = Lens.lens (\UpdateSchemaResponse' {tags} -> tags) (\s@UpdateSchemaResponse' {} a -> s {tags = a} :: UpdateSchemaResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of the schema.
+updateSchemaResponse_type :: Lens.Lens' UpdateSchemaResponse (Prelude.Maybe Prelude.Text)
+updateSchemaResponse_type = Lens.lens (\UpdateSchemaResponse' {type'} -> type') (\s@UpdateSchemaResponse' {} a -> s {type' = a} :: UpdateSchemaResponse)
+
+-- | The date the schema version was created.
+updateSchemaResponse_versionCreatedDate :: Lens.Lens' UpdateSchemaResponse (Prelude.Maybe Prelude.UTCTime)
+updateSchemaResponse_versionCreatedDate = Lens.lens (\UpdateSchemaResponse' {versionCreatedDate} -> versionCreatedDate) (\s@UpdateSchemaResponse' {} a -> s {versionCreatedDate = a} :: UpdateSchemaResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+updateSchemaResponse_httpStatus :: Lens.Lens' UpdateSchemaResponse Prelude.Int
+updateSchemaResponse_httpStatus = Lens.lens (\UpdateSchemaResponse' {httpStatus} -> httpStatus) (\s@UpdateSchemaResponse' {} a -> s {httpStatus = a} :: UpdateSchemaResponse)
+
+instance Prelude.NFData UpdateSchemaResponse where
+  rnf UpdateSchemaResponse' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf lastModified
+      `Prelude.seq` Prelude.rnf schemaArn
+      `Prelude.seq` Prelude.rnf schemaName
+      `Prelude.seq` Prelude.rnf schemaVersion
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf versionCreatedDate
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Schemas/Waiters.hs b/gen/Amazonka/Schemas/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Schemas/Waiters.hs
@@ -0,0 +1,60 @@
+{-# 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.Schemas.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.Schemas.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.Schemas.DescribeCodeBinding
+import Amazonka.Schemas.Lens
+import Amazonka.Schemas.Types
+
+-- | Polls 'Amazonka.Schemas.DescribeCodeBinding' every 2 seconds until a successful state is reached. An error is returned after 30 failed checks.
+newCodeBindingExists :: Core.Wait DescribeCodeBinding
+newCodeBindingExists =
+  Core.Wait
+    { Core.name = "CodeBindingExists",
+      Core.attempts = 30,
+      Core.delay = 2,
+      Core.acceptors =
+        [ Core.matchAll
+            "CREATE_COMPLETE"
+            Core.AcceptSuccess
+            ( describeCodeBindingResponse_status
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "CREATE_IN_PROGRESS"
+            Core.AcceptRetry
+            ( describeCodeBindingResponse_status
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "CREATE_FAILED"
+            Core.AcceptFailure
+            ( describeCodeBindingResponse_status
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchError
+            "NotFoundException"
+            Core.AcceptFailure
+        ]
+    }
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.Schemas
+import Test.Amazonka.Schemas.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "Schemas"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/Schemas.hs b/test/Test/Amazonka/Gen/Schemas.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/Schemas.hs
@@ -0,0 +1,658 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.Schemas
+-- 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.Schemas where
+
+import Amazonka.Schemas
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.Schemas.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"
+--         [ requestCreateDiscoverer $
+--             newCreateDiscoverer
+--
+--         , requestCreateRegistry $
+--             newCreateRegistry
+--
+--         , requestCreateSchema $
+--             newCreateSchema
+--
+--         , requestDeleteDiscoverer $
+--             newDeleteDiscoverer
+--
+--         , requestDeleteRegistry $
+--             newDeleteRegistry
+--
+--         , requestDeleteResourcePolicy $
+--             newDeleteResourcePolicy
+--
+--         , requestDeleteSchema $
+--             newDeleteSchema
+--
+--         , requestDeleteSchemaVersion $
+--             newDeleteSchemaVersion
+--
+--         , requestDescribeCodeBinding $
+--             newDescribeCodeBinding
+--
+--         , requestDescribeDiscoverer $
+--             newDescribeDiscoverer
+--
+--         , requestDescribeRegistry $
+--             newDescribeRegistry
+--
+--         , requestDescribeSchema $
+--             newDescribeSchema
+--
+--         , requestExportSchema $
+--             newExportSchema
+--
+--         , requestGetCodeBindingSource $
+--             newGetCodeBindingSource
+--
+--         , requestGetDiscoveredSchema $
+--             newGetDiscoveredSchema
+--
+--         , requestGetResourcePolicy $
+--             newGetResourcePolicy
+--
+--         , requestListDiscoverers $
+--             newListDiscoverers
+--
+--         , requestListRegistries $
+--             newListRegistries
+--
+--         , requestListSchemaVersions $
+--             newListSchemaVersions
+--
+--         , requestListSchemas $
+--             newListSchemas
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestPutCodeBinding $
+--             newPutCodeBinding
+--
+--         , requestPutResourcePolicy $
+--             newPutResourcePolicy
+--
+--         , requestSearchSchemas $
+--             newSearchSchemas
+--
+--         , requestStartDiscoverer $
+--             newStartDiscoverer
+--
+--         , requestStopDiscoverer $
+--             newStopDiscoverer
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateDiscoverer $
+--             newUpdateDiscoverer
+--
+--         , requestUpdateRegistry $
+--             newUpdateRegistry
+--
+--         , requestUpdateSchema $
+--             newUpdateSchema
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreateDiscoverer $
+--             newCreateDiscovererResponse
+--
+--         , responseCreateRegistry $
+--             newCreateRegistryResponse
+--
+--         , responseCreateSchema $
+--             newCreateSchemaResponse
+--
+--         , responseDeleteDiscoverer $
+--             newDeleteDiscovererResponse
+--
+--         , responseDeleteRegistry $
+--             newDeleteRegistryResponse
+--
+--         , responseDeleteResourcePolicy $
+--             newDeleteResourcePolicyResponse
+--
+--         , responseDeleteSchema $
+--             newDeleteSchemaResponse
+--
+--         , responseDeleteSchemaVersion $
+--             newDeleteSchemaVersionResponse
+--
+--         , responseDescribeCodeBinding $
+--             newDescribeCodeBindingResponse
+--
+--         , responseDescribeDiscoverer $
+--             newDescribeDiscovererResponse
+--
+--         , responseDescribeRegistry $
+--             newDescribeRegistryResponse
+--
+--         , responseDescribeSchema $
+--             newDescribeSchemaResponse
+--
+--         , responseExportSchema $
+--             newExportSchemaResponse
+--
+--         , responseGetCodeBindingSource $
+--             newGetCodeBindingSourceResponse
+--
+--         , responseGetDiscoveredSchema $
+--             newGetDiscoveredSchemaResponse
+--
+--         , responseGetResourcePolicy $
+--             newGetResourcePolicyResponse
+--
+--         , responseListDiscoverers $
+--             newListDiscoverersResponse
+--
+--         , responseListRegistries $
+--             newListRegistriesResponse
+--
+--         , responseListSchemaVersions $
+--             newListSchemaVersionsResponse
+--
+--         , responseListSchemas $
+--             newListSchemasResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responsePutCodeBinding $
+--             newPutCodeBindingResponse
+--
+--         , responsePutResourcePolicy $
+--             newPutResourcePolicyResponse
+--
+--         , responseSearchSchemas $
+--             newSearchSchemasResponse
+--
+--         , responseStartDiscoverer $
+--             newStartDiscovererResponse
+--
+--         , responseStopDiscoverer $
+--             newStopDiscovererResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateDiscoverer $
+--             newUpdateDiscovererResponse
+--
+--         , responseUpdateRegistry $
+--             newUpdateRegistryResponse
+--
+--         , responseUpdateSchema $
+--             newUpdateSchemaResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreateDiscoverer :: CreateDiscoverer -> TestTree
+requestCreateDiscoverer =
+  req
+    "CreateDiscoverer"
+    "fixture/CreateDiscoverer.yaml"
+
+requestCreateRegistry :: CreateRegistry -> TestTree
+requestCreateRegistry =
+  req
+    "CreateRegistry"
+    "fixture/CreateRegistry.yaml"
+
+requestCreateSchema :: CreateSchema -> TestTree
+requestCreateSchema =
+  req
+    "CreateSchema"
+    "fixture/CreateSchema.yaml"
+
+requestDeleteDiscoverer :: DeleteDiscoverer -> TestTree
+requestDeleteDiscoverer =
+  req
+    "DeleteDiscoverer"
+    "fixture/DeleteDiscoverer.yaml"
+
+requestDeleteRegistry :: DeleteRegistry -> TestTree
+requestDeleteRegistry =
+  req
+    "DeleteRegistry"
+    "fixture/DeleteRegistry.yaml"
+
+requestDeleteResourcePolicy :: DeleteResourcePolicy -> TestTree
+requestDeleteResourcePolicy =
+  req
+    "DeleteResourcePolicy"
+    "fixture/DeleteResourcePolicy.yaml"
+
+requestDeleteSchema :: DeleteSchema -> TestTree
+requestDeleteSchema =
+  req
+    "DeleteSchema"
+    "fixture/DeleteSchema.yaml"
+
+requestDeleteSchemaVersion :: DeleteSchemaVersion -> TestTree
+requestDeleteSchemaVersion =
+  req
+    "DeleteSchemaVersion"
+    "fixture/DeleteSchemaVersion.yaml"
+
+requestDescribeCodeBinding :: DescribeCodeBinding -> TestTree
+requestDescribeCodeBinding =
+  req
+    "DescribeCodeBinding"
+    "fixture/DescribeCodeBinding.yaml"
+
+requestDescribeDiscoverer :: DescribeDiscoverer -> TestTree
+requestDescribeDiscoverer =
+  req
+    "DescribeDiscoverer"
+    "fixture/DescribeDiscoverer.yaml"
+
+requestDescribeRegistry :: DescribeRegistry -> TestTree
+requestDescribeRegistry =
+  req
+    "DescribeRegistry"
+    "fixture/DescribeRegistry.yaml"
+
+requestDescribeSchema :: DescribeSchema -> TestTree
+requestDescribeSchema =
+  req
+    "DescribeSchema"
+    "fixture/DescribeSchema.yaml"
+
+requestExportSchema :: ExportSchema -> TestTree
+requestExportSchema =
+  req
+    "ExportSchema"
+    "fixture/ExportSchema.yaml"
+
+requestGetCodeBindingSource :: GetCodeBindingSource -> TestTree
+requestGetCodeBindingSource =
+  req
+    "GetCodeBindingSource"
+    "fixture/GetCodeBindingSource.yaml"
+
+requestGetDiscoveredSchema :: GetDiscoveredSchema -> TestTree
+requestGetDiscoveredSchema =
+  req
+    "GetDiscoveredSchema"
+    "fixture/GetDiscoveredSchema.yaml"
+
+requestGetResourcePolicy :: GetResourcePolicy -> TestTree
+requestGetResourcePolicy =
+  req
+    "GetResourcePolicy"
+    "fixture/GetResourcePolicy.yaml"
+
+requestListDiscoverers :: ListDiscoverers -> TestTree
+requestListDiscoverers =
+  req
+    "ListDiscoverers"
+    "fixture/ListDiscoverers.yaml"
+
+requestListRegistries :: ListRegistries -> TestTree
+requestListRegistries =
+  req
+    "ListRegistries"
+    "fixture/ListRegistries.yaml"
+
+requestListSchemaVersions :: ListSchemaVersions -> TestTree
+requestListSchemaVersions =
+  req
+    "ListSchemaVersions"
+    "fixture/ListSchemaVersions.yaml"
+
+requestListSchemas :: ListSchemas -> TestTree
+requestListSchemas =
+  req
+    "ListSchemas"
+    "fixture/ListSchemas.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestPutCodeBinding :: PutCodeBinding -> TestTree
+requestPutCodeBinding =
+  req
+    "PutCodeBinding"
+    "fixture/PutCodeBinding.yaml"
+
+requestPutResourcePolicy :: PutResourcePolicy -> TestTree
+requestPutResourcePolicy =
+  req
+    "PutResourcePolicy"
+    "fixture/PutResourcePolicy.yaml"
+
+requestSearchSchemas :: SearchSchemas -> TestTree
+requestSearchSchemas =
+  req
+    "SearchSchemas"
+    "fixture/SearchSchemas.yaml"
+
+requestStartDiscoverer :: StartDiscoverer -> TestTree
+requestStartDiscoverer =
+  req
+    "StartDiscoverer"
+    "fixture/StartDiscoverer.yaml"
+
+requestStopDiscoverer :: StopDiscoverer -> TestTree
+requestStopDiscoverer =
+  req
+    "StopDiscoverer"
+    "fixture/StopDiscoverer.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateDiscoverer :: UpdateDiscoverer -> TestTree
+requestUpdateDiscoverer =
+  req
+    "UpdateDiscoverer"
+    "fixture/UpdateDiscoverer.yaml"
+
+requestUpdateRegistry :: UpdateRegistry -> TestTree
+requestUpdateRegistry =
+  req
+    "UpdateRegistry"
+    "fixture/UpdateRegistry.yaml"
+
+requestUpdateSchema :: UpdateSchema -> TestTree
+requestUpdateSchema =
+  req
+    "UpdateSchema"
+    "fixture/UpdateSchema.yaml"
+
+-- Responses
+
+responseCreateDiscoverer :: CreateDiscovererResponse -> TestTree
+responseCreateDiscoverer =
+  res
+    "CreateDiscovererResponse"
+    "fixture/CreateDiscovererResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateDiscoverer)
+
+responseCreateRegistry :: CreateRegistryResponse -> TestTree
+responseCreateRegistry =
+  res
+    "CreateRegistryResponse"
+    "fixture/CreateRegistryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateRegistry)
+
+responseCreateSchema :: CreateSchemaResponse -> TestTree
+responseCreateSchema =
+  res
+    "CreateSchemaResponse"
+    "fixture/CreateSchemaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateSchema)
+
+responseDeleteDiscoverer :: DeleteDiscovererResponse -> TestTree
+responseDeleteDiscoverer =
+  res
+    "DeleteDiscovererResponse"
+    "fixture/DeleteDiscovererResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDiscoverer)
+
+responseDeleteRegistry :: DeleteRegistryResponse -> TestTree
+responseDeleteRegistry =
+  res
+    "DeleteRegistryResponse"
+    "fixture/DeleteRegistryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteRegistry)
+
+responseDeleteResourcePolicy :: DeleteResourcePolicyResponse -> TestTree
+responseDeleteResourcePolicy =
+  res
+    "DeleteResourcePolicyResponse"
+    "fixture/DeleteResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteResourcePolicy)
+
+responseDeleteSchema :: DeleteSchemaResponse -> TestTree
+responseDeleteSchema =
+  res
+    "DeleteSchemaResponse"
+    "fixture/DeleteSchemaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSchema)
+
+responseDeleteSchemaVersion :: DeleteSchemaVersionResponse -> TestTree
+responseDeleteSchemaVersion =
+  res
+    "DeleteSchemaVersionResponse"
+    "fixture/DeleteSchemaVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteSchemaVersion)
+
+responseDescribeCodeBinding :: DescribeCodeBindingResponse -> TestTree
+responseDescribeCodeBinding =
+  res
+    "DescribeCodeBindingResponse"
+    "fixture/DescribeCodeBindingResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeCodeBinding)
+
+responseDescribeDiscoverer :: DescribeDiscovererResponse -> TestTree
+responseDescribeDiscoverer =
+  res
+    "DescribeDiscovererResponse"
+    "fixture/DescribeDiscovererResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDiscoverer)
+
+responseDescribeRegistry :: DescribeRegistryResponse -> TestTree
+responseDescribeRegistry =
+  res
+    "DescribeRegistryResponse"
+    "fixture/DescribeRegistryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeRegistry)
+
+responseDescribeSchema :: DescribeSchemaResponse -> TestTree
+responseDescribeSchema =
+  res
+    "DescribeSchemaResponse"
+    "fixture/DescribeSchemaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeSchema)
+
+responseExportSchema :: ExportSchemaResponse -> TestTree
+responseExportSchema =
+  res
+    "ExportSchemaResponse"
+    "fixture/ExportSchemaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ExportSchema)
+
+responseGetCodeBindingSource :: GetCodeBindingSourceResponse -> TestTree
+responseGetCodeBindingSource =
+  res
+    "GetCodeBindingSourceResponse"
+    "fixture/GetCodeBindingSourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCodeBindingSource)
+
+responseGetDiscoveredSchema :: GetDiscoveredSchemaResponse -> TestTree
+responseGetDiscoveredSchema =
+  res
+    "GetDiscoveredSchemaResponse"
+    "fixture/GetDiscoveredSchemaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDiscoveredSchema)
+
+responseGetResourcePolicy :: GetResourcePolicyResponse -> TestTree
+responseGetResourcePolicy =
+  res
+    "GetResourcePolicyResponse"
+    "fixture/GetResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetResourcePolicy)
+
+responseListDiscoverers :: ListDiscoverersResponse -> TestTree
+responseListDiscoverers =
+  res
+    "ListDiscoverersResponse"
+    "fixture/ListDiscoverersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDiscoverers)
+
+responseListRegistries :: ListRegistriesResponse -> TestTree
+responseListRegistries =
+  res
+    "ListRegistriesResponse"
+    "fixture/ListRegistriesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRegistries)
+
+responseListSchemaVersions :: ListSchemaVersionsResponse -> TestTree
+responseListSchemaVersions =
+  res
+    "ListSchemaVersionsResponse"
+    "fixture/ListSchemaVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSchemaVersions)
+
+responseListSchemas :: ListSchemasResponse -> TestTree
+responseListSchemas =
+  res
+    "ListSchemasResponse"
+    "fixture/ListSchemasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListSchemas)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responsePutCodeBinding :: PutCodeBindingResponse -> TestTree
+responsePutCodeBinding =
+  res
+    "PutCodeBindingResponse"
+    "fixture/PutCodeBindingResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutCodeBinding)
+
+responsePutResourcePolicy :: PutResourcePolicyResponse -> TestTree
+responsePutResourcePolicy =
+  res
+    "PutResourcePolicyResponse"
+    "fixture/PutResourcePolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutResourcePolicy)
+
+responseSearchSchemas :: SearchSchemasResponse -> TestTree
+responseSearchSchemas =
+  res
+    "SearchSchemasResponse"
+    "fixture/SearchSchemasResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SearchSchemas)
+
+responseStartDiscoverer :: StartDiscovererResponse -> TestTree
+responseStartDiscoverer =
+  res
+    "StartDiscovererResponse"
+    "fixture/StartDiscovererResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartDiscoverer)
+
+responseStopDiscoverer :: StopDiscovererResponse -> TestTree
+responseStopDiscoverer =
+  res
+    "StopDiscovererResponse"
+    "fixture/StopDiscovererResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopDiscoverer)
+
+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)
+
+responseUpdateDiscoverer :: UpdateDiscovererResponse -> TestTree
+responseUpdateDiscoverer =
+  res
+    "UpdateDiscovererResponse"
+    "fixture/UpdateDiscovererResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDiscoverer)
+
+responseUpdateRegistry :: UpdateRegistryResponse -> TestTree
+responseUpdateRegistry =
+  res
+    "UpdateRegistryResponse"
+    "fixture/UpdateRegistryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateRegistry)
+
+responseUpdateSchema :: UpdateSchemaResponse -> TestTree
+responseUpdateSchema =
+  res
+    "UpdateSchemaResponse"
+    "fixture/UpdateSchemaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateSchema)
diff --git a/test/Test/Amazonka/Schemas.hs b/test/Test/Amazonka/Schemas.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Schemas.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.Schemas
+-- 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.Schemas
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/Schemas/Internal.hs b/test/Test/Amazonka/Schemas/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Schemas/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.Schemas.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.Schemas.Internal where
