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 CodeGuru Reviewer SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2019-09-19@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-codeguru-reviewer)
+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.CodeGuruReviewer](http://hackage.haskell.org/package/amazonka-codeguru-reviewer/docs/Amazonka-CodeGuruReviewer.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-codeguru-reviewer` 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-codeguru-reviewer.cabal b/amazonka-codeguru-reviewer.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-codeguru-reviewer.cabal
@@ -0,0 +1,134 @@
+cabal-version:      2.2
+name:               amazonka-codeguru-reviewer
+version:            2.0
+synopsis:           Amazon CodeGuru Reviewer 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-09-19@ 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.CodeGuruReviewer.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.CodeGuruReviewer" 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-codeguru-reviewer
+
+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.CodeGuruReviewer
+    Amazonka.CodeGuruReviewer.AssociateRepository
+    Amazonka.CodeGuruReviewer.CreateCodeReview
+    Amazonka.CodeGuruReviewer.DescribeCodeReview
+    Amazonka.CodeGuruReviewer.DescribeRecommendationFeedback
+    Amazonka.CodeGuruReviewer.DescribeRepositoryAssociation
+    Amazonka.CodeGuruReviewer.DisassociateRepository
+    Amazonka.CodeGuruReviewer.Lens
+    Amazonka.CodeGuruReviewer.ListCodeReviews
+    Amazonka.CodeGuruReviewer.ListRecommendationFeedback
+    Amazonka.CodeGuruReviewer.ListRecommendations
+    Amazonka.CodeGuruReviewer.ListRepositoryAssociations
+    Amazonka.CodeGuruReviewer.ListTagsForResource
+    Amazonka.CodeGuruReviewer.PutRecommendationFeedback
+    Amazonka.CodeGuruReviewer.TagResource
+    Amazonka.CodeGuruReviewer.Types
+    Amazonka.CodeGuruReviewer.Types.AnalysisType
+    Amazonka.CodeGuruReviewer.Types.BranchDiffSourceCodeType
+    Amazonka.CodeGuruReviewer.Types.CodeArtifacts
+    Amazonka.CodeGuruReviewer.Types.CodeCommitRepository
+    Amazonka.CodeGuruReviewer.Types.CodeReview
+    Amazonka.CodeGuruReviewer.Types.CodeReviewSummary
+    Amazonka.CodeGuruReviewer.Types.CodeReviewType
+    Amazonka.CodeGuruReviewer.Types.CommitDiffSourceCodeType
+    Amazonka.CodeGuruReviewer.Types.ConfigFileState
+    Amazonka.CodeGuruReviewer.Types.EncryptionOption
+    Amazonka.CodeGuruReviewer.Types.EventInfo
+    Amazonka.CodeGuruReviewer.Types.JobState
+    Amazonka.CodeGuruReviewer.Types.KMSKeyDetails
+    Amazonka.CodeGuruReviewer.Types.Metrics
+    Amazonka.CodeGuruReviewer.Types.MetricsSummary
+    Amazonka.CodeGuruReviewer.Types.ProviderType
+    Amazonka.CodeGuruReviewer.Types.Reaction
+    Amazonka.CodeGuruReviewer.Types.RecommendationCategory
+    Amazonka.CodeGuruReviewer.Types.RecommendationFeedback
+    Amazonka.CodeGuruReviewer.Types.RecommendationFeedbackSummary
+    Amazonka.CodeGuruReviewer.Types.RecommendationSummary
+    Amazonka.CodeGuruReviewer.Types.Repository
+    Amazonka.CodeGuruReviewer.Types.RepositoryAnalysis
+    Amazonka.CodeGuruReviewer.Types.RepositoryAssociation
+    Amazonka.CodeGuruReviewer.Types.RepositoryAssociationState
+    Amazonka.CodeGuruReviewer.Types.RepositoryAssociationSummary
+    Amazonka.CodeGuruReviewer.Types.RepositoryHeadSourceCodeType
+    Amazonka.CodeGuruReviewer.Types.RequestMetadata
+    Amazonka.CodeGuruReviewer.Types.RuleMetadata
+    Amazonka.CodeGuruReviewer.Types.S3BucketRepository
+    Amazonka.CodeGuruReviewer.Types.S3Repository
+    Amazonka.CodeGuruReviewer.Types.S3RepositoryDetails
+    Amazonka.CodeGuruReviewer.Types.Severity
+    Amazonka.CodeGuruReviewer.Types.SourceCodeType
+    Amazonka.CodeGuruReviewer.Types.ThirdPartySourceRepository
+    Amazonka.CodeGuruReviewer.Types.Type
+    Amazonka.CodeGuruReviewer.Types.VendorName
+    Amazonka.CodeGuruReviewer.UntagResource
+    Amazonka.CodeGuruReviewer.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-codeguru-reviewer-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.CodeGuruReviewer
+    Test.Amazonka.CodeGuruReviewer.Internal
+    Test.Amazonka.Gen.CodeGuruReviewer
+
+  build-depends:
+    , amazonka-codeguru-reviewer
+    , amazonka-core               >=2.0 && <2.1
+    , amazonka-test               >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/AssociateRepository.yaml b/fixture/AssociateRepository.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateRepository.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/AssociateRepositoryResponse.proto b/fixture/AssociateRepositoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AssociateRepositoryResponse.proto
diff --git a/fixture/CreateCodeReview.yaml b/fixture/CreateCodeReview.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCodeReview.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/CreateCodeReviewResponse.proto b/fixture/CreateCodeReviewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateCodeReviewResponse.proto
diff --git a/fixture/DescribeCodeReview.yaml b/fixture/DescribeCodeReview.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCodeReview.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/DescribeCodeReviewResponse.proto b/fixture/DescribeCodeReviewResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCodeReviewResponse.proto
diff --git a/fixture/DescribeRecommendationFeedback.yaml b/fixture/DescribeRecommendationFeedback.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRecommendationFeedback.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/DescribeRecommendationFeedbackResponse.proto b/fixture/DescribeRecommendationFeedbackResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRecommendationFeedbackResponse.proto
diff --git a/fixture/DescribeRepositoryAssociation.yaml b/fixture/DescribeRepositoryAssociation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRepositoryAssociation.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/DescribeRepositoryAssociationResponse.proto b/fixture/DescribeRepositoryAssociationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRepositoryAssociationResponse.proto
diff --git a/fixture/DisassociateRepository.yaml b/fixture/DisassociateRepository.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateRepository.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/DisassociateRepositoryResponse.proto b/fixture/DisassociateRepositoryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DisassociateRepositoryResponse.proto
diff --git a/fixture/ListCodeReviews.yaml b/fixture/ListCodeReviews.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListCodeReviews.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/ListCodeReviewsResponse.proto b/fixture/ListCodeReviewsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListCodeReviewsResponse.proto
diff --git a/fixture/ListRecommendationFeedback.yaml b/fixture/ListRecommendationFeedback.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRecommendationFeedback.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/ListRecommendationFeedbackResponse.proto b/fixture/ListRecommendationFeedbackResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRecommendationFeedbackResponse.proto
diff --git a/fixture/ListRecommendations.yaml b/fixture/ListRecommendations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRecommendations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/ListRecommendationsResponse.proto b/fixture/ListRecommendationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRecommendationsResponse.proto
diff --git a/fixture/ListRepositoryAssociations.yaml b/fixture/ListRepositoryAssociations.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRepositoryAssociations.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/ListRepositoryAssociationsResponse.proto b/fixture/ListRepositoryAssociationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRepositoryAssociationsResponse.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/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/PutRecommendationFeedback.yaml b/fixture/PutRecommendationFeedback.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutRecommendationFeedback.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/PutRecommendationFeedbackResponse.proto b/fixture/PutRecommendationFeedbackResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutRecommendationFeedbackResponse.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/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.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/codeguru-reviewer/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codeguru-reviewer.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Amazonka/CodeGuruReviewer.hs b/gen/Amazonka/CodeGuruReviewer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer.hs
@@ -0,0 +1,338 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer
+-- 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-09-19@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- This section provides documentation for the Amazon CodeGuru Reviewer API
+-- operations. CodeGuru Reviewer is a service that uses program analysis
+-- and machine learning to detect potential defects that are difficult for
+-- developers to find and recommends fixes in your Java and Python code.
+--
+-- By proactively detecting and providing recommendations for addressing
+-- code defects and implementing best practices, CodeGuru Reviewer improves
+-- the overall quality and maintainability of your code base during the
+-- code review stage. For more information about CodeGuru Reviewer, see the
+-- /<https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html Amazon CodeGuru Reviewer User Guide>./
+--
+-- To improve the security of your CodeGuru Reviewer API calls, you can
+-- establish a private connection between your VPC and CodeGuru Reviewer by
+-- creating an /interface VPC endpoint/. For more information, see
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/vpc-interface-endpoints.html CodeGuru Reviewer and interface VPC endpoints (Amazon Web Services PrivateLink)>
+-- in the /Amazon CodeGuru Reviewer User Guide/.
+module Amazonka.CodeGuruReviewer
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- ** CodeReviewCompleted
+    newCodeReviewCompleted,
+
+    -- ** RepositoryAssociationSucceeded
+    newRepositoryAssociationSucceeded,
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateRepository
+    AssociateRepository (AssociateRepository'),
+    newAssociateRepository,
+    AssociateRepositoryResponse (AssociateRepositoryResponse'),
+    newAssociateRepositoryResponse,
+
+    -- ** CreateCodeReview
+    CreateCodeReview (CreateCodeReview'),
+    newCreateCodeReview,
+    CreateCodeReviewResponse (CreateCodeReviewResponse'),
+    newCreateCodeReviewResponse,
+
+    -- ** DescribeCodeReview
+    DescribeCodeReview (DescribeCodeReview'),
+    newDescribeCodeReview,
+    DescribeCodeReviewResponse (DescribeCodeReviewResponse'),
+    newDescribeCodeReviewResponse,
+
+    -- ** DescribeRecommendationFeedback
+    DescribeRecommendationFeedback (DescribeRecommendationFeedback'),
+    newDescribeRecommendationFeedback,
+    DescribeRecommendationFeedbackResponse (DescribeRecommendationFeedbackResponse'),
+    newDescribeRecommendationFeedbackResponse,
+
+    -- ** DescribeRepositoryAssociation
+    DescribeRepositoryAssociation (DescribeRepositoryAssociation'),
+    newDescribeRepositoryAssociation,
+    DescribeRepositoryAssociationResponse (DescribeRepositoryAssociationResponse'),
+    newDescribeRepositoryAssociationResponse,
+
+    -- ** DisassociateRepository
+    DisassociateRepository (DisassociateRepository'),
+    newDisassociateRepository,
+    DisassociateRepositoryResponse (DisassociateRepositoryResponse'),
+    newDisassociateRepositoryResponse,
+
+    -- ** ListCodeReviews
+    ListCodeReviews (ListCodeReviews'),
+    newListCodeReviews,
+    ListCodeReviewsResponse (ListCodeReviewsResponse'),
+    newListCodeReviewsResponse,
+
+    -- ** ListRecommendationFeedback
+    ListRecommendationFeedback (ListRecommendationFeedback'),
+    newListRecommendationFeedback,
+    ListRecommendationFeedbackResponse (ListRecommendationFeedbackResponse'),
+    newListRecommendationFeedbackResponse,
+
+    -- ** ListRecommendations
+    ListRecommendations (ListRecommendations'),
+    newListRecommendations,
+    ListRecommendationsResponse (ListRecommendationsResponse'),
+    newListRecommendationsResponse,
+
+    -- ** ListRepositoryAssociations (Paginated)
+    ListRepositoryAssociations (ListRepositoryAssociations'),
+    newListRepositoryAssociations,
+    ListRepositoryAssociationsResponse (ListRepositoryAssociationsResponse'),
+    newListRepositoryAssociationsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** PutRecommendationFeedback
+    PutRecommendationFeedback (PutRecommendationFeedback'),
+    newPutRecommendationFeedback,
+    PutRecommendationFeedbackResponse (PutRecommendationFeedbackResponse'),
+    newPutRecommendationFeedbackResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- * Types
+
+    -- ** AnalysisType
+    AnalysisType (..),
+
+    -- ** ConfigFileState
+    ConfigFileState (..),
+
+    -- ** EncryptionOption
+    EncryptionOption (..),
+
+    -- ** JobState
+    JobState (..),
+
+    -- ** ProviderType
+    ProviderType (..),
+
+    -- ** Reaction
+    Reaction (..),
+
+    -- ** RecommendationCategory
+    RecommendationCategory (..),
+
+    -- ** RepositoryAssociationState
+    RepositoryAssociationState (..),
+
+    -- ** Severity
+    Severity (..),
+
+    -- ** Type
+    Type (..),
+
+    -- ** VendorName
+    VendorName (..),
+
+    -- ** BranchDiffSourceCodeType
+    BranchDiffSourceCodeType (BranchDiffSourceCodeType'),
+    newBranchDiffSourceCodeType,
+
+    -- ** CodeArtifacts
+    CodeArtifacts (CodeArtifacts'),
+    newCodeArtifacts,
+
+    -- ** CodeCommitRepository
+    CodeCommitRepository (CodeCommitRepository'),
+    newCodeCommitRepository,
+
+    -- ** CodeReview
+    CodeReview (CodeReview'),
+    newCodeReview,
+
+    -- ** CodeReviewSummary
+    CodeReviewSummary (CodeReviewSummary'),
+    newCodeReviewSummary,
+
+    -- ** CodeReviewType
+    CodeReviewType (CodeReviewType'),
+    newCodeReviewType,
+
+    -- ** CommitDiffSourceCodeType
+    CommitDiffSourceCodeType (CommitDiffSourceCodeType'),
+    newCommitDiffSourceCodeType,
+
+    -- ** EventInfo
+    EventInfo (EventInfo'),
+    newEventInfo,
+
+    -- ** KMSKeyDetails
+    KMSKeyDetails (KMSKeyDetails'),
+    newKMSKeyDetails,
+
+    -- ** Metrics
+    Metrics (Metrics'),
+    newMetrics,
+
+    -- ** MetricsSummary
+    MetricsSummary (MetricsSummary'),
+    newMetricsSummary,
+
+    -- ** RecommendationFeedback
+    RecommendationFeedback (RecommendationFeedback'),
+    newRecommendationFeedback,
+
+    -- ** RecommendationFeedbackSummary
+    RecommendationFeedbackSummary (RecommendationFeedbackSummary'),
+    newRecommendationFeedbackSummary,
+
+    -- ** RecommendationSummary
+    RecommendationSummary (RecommendationSummary'),
+    newRecommendationSummary,
+
+    -- ** Repository
+    Repository (Repository'),
+    newRepository,
+
+    -- ** RepositoryAnalysis
+    RepositoryAnalysis (RepositoryAnalysis'),
+    newRepositoryAnalysis,
+
+    -- ** RepositoryAssociation
+    RepositoryAssociation (RepositoryAssociation'),
+    newRepositoryAssociation,
+
+    -- ** RepositoryAssociationSummary
+    RepositoryAssociationSummary (RepositoryAssociationSummary'),
+    newRepositoryAssociationSummary,
+
+    -- ** RepositoryHeadSourceCodeType
+    RepositoryHeadSourceCodeType (RepositoryHeadSourceCodeType'),
+    newRepositoryHeadSourceCodeType,
+
+    -- ** RequestMetadata
+    RequestMetadata (RequestMetadata'),
+    newRequestMetadata,
+
+    -- ** RuleMetadata
+    RuleMetadata (RuleMetadata'),
+    newRuleMetadata,
+
+    -- ** S3BucketRepository
+    S3BucketRepository (S3BucketRepository'),
+    newS3BucketRepository,
+
+    -- ** S3Repository
+    S3Repository (S3Repository'),
+    newS3Repository,
+
+    -- ** S3RepositoryDetails
+    S3RepositoryDetails (S3RepositoryDetails'),
+    newS3RepositoryDetails,
+
+    -- ** SourceCodeType
+    SourceCodeType (SourceCodeType'),
+    newSourceCodeType,
+
+    -- ** ThirdPartySourceRepository
+    ThirdPartySourceRepository (ThirdPartySourceRepository'),
+    newThirdPartySourceRepository,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.AssociateRepository
+import Amazonka.CodeGuruReviewer.CreateCodeReview
+import Amazonka.CodeGuruReviewer.DescribeCodeReview
+import Amazonka.CodeGuruReviewer.DescribeRecommendationFeedback
+import Amazonka.CodeGuruReviewer.DescribeRepositoryAssociation
+import Amazonka.CodeGuruReviewer.DisassociateRepository
+import Amazonka.CodeGuruReviewer.Lens
+import Amazonka.CodeGuruReviewer.ListCodeReviews
+import Amazonka.CodeGuruReviewer.ListRecommendationFeedback
+import Amazonka.CodeGuruReviewer.ListRecommendations
+import Amazonka.CodeGuruReviewer.ListRepositoryAssociations
+import Amazonka.CodeGuruReviewer.ListTagsForResource
+import Amazonka.CodeGuruReviewer.PutRecommendationFeedback
+import Amazonka.CodeGuruReviewer.TagResource
+import Amazonka.CodeGuruReviewer.Types
+import Amazonka.CodeGuruReviewer.UntagResource
+import Amazonka.CodeGuruReviewer.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 'CodeGuruReviewer'.
+
+-- $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/CodeGuruReviewer/AssociateRepository.hs b/gen/Amazonka/CodeGuruReviewer/AssociateRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/AssociateRepository.hs
@@ -0,0 +1,327 @@
+{-# 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.CodeGuruReviewer.AssociateRepository
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use to associate an Amazon Web Services CodeCommit repository or a
+-- repository managed by Amazon Web Services CodeStar Connections with
+-- Amazon CodeGuru Reviewer. When you associate a repository, CodeGuru
+-- Reviewer reviews source code changes in the repository\'s pull requests
+-- and provides automatic recommendations. You can view recommendations
+-- using the CodeGuru Reviewer console. For more information, see
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/recommendations.html Recommendations in Amazon CodeGuru Reviewer>
+-- in the /Amazon CodeGuru Reviewer User Guide./
+--
+-- If you associate a CodeCommit or S3 repository, it must be in the same
+-- Amazon Web Services Region and Amazon Web Services account where its
+-- CodeGuru Reviewer code reviews are configured.
+--
+-- Bitbucket and GitHub Enterprise Server repositories are managed by
+-- Amazon Web Services CodeStar Connections to connect to CodeGuru
+-- Reviewer. For more information, see
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/getting-started-associate-repository.html Associate a repository>
+-- in the /Amazon CodeGuru Reviewer User Guide./
+--
+-- You cannot use the CodeGuru Reviewer SDK or the Amazon Web Services CLI
+-- to associate a GitHub repository with Amazon CodeGuru Reviewer. To
+-- associate a GitHub repository, use the console. For more information,
+-- see
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/getting-started-with-guru.html Getting started with CodeGuru Reviewer>
+-- in the /CodeGuru Reviewer User Guide./
+module Amazonka.CodeGuruReviewer.AssociateRepository
+  ( -- * Creating a Request
+    AssociateRepository (..),
+    newAssociateRepository,
+
+    -- * Request Lenses
+    associateRepository_clientRequestToken,
+    associateRepository_kmsKeyDetails,
+    associateRepository_tags,
+    associateRepository_repository,
+
+    -- * Destructuring the Response
+    AssociateRepositoryResponse (..),
+    newAssociateRepositoryResponse,
+
+    -- * Response Lenses
+    associateRepositoryResponse_repositoryAssociation,
+    associateRepositoryResponse_tags,
+    associateRepositoryResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateRepository' smart constructor.
+data AssociateRepository = AssociateRepository'
+  { -- | Amazon CodeGuru Reviewer uses this value to prevent the accidental
+    -- creation of duplicate repository associations if there are failures and
+    -- retries.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A @KMSKeyDetails@ object that contains:
+    --
+    -- -   The encryption option for this repository association. It is either
+    --     owned by Amazon Web Services Key Management Service (KMS)
+    --     (@AWS_OWNED_CMK@) or customer managed (@CUSTOMER_MANAGED_CMK@).
+    --
+    -- -   The ID of the Amazon Web Services KMS key that is associated with
+    --     this repository association.
+    kmsKeyDetails :: Prelude.Maybe KMSKeyDetails,
+    -- | An array of key-value pairs used to tag an associated repository. A tag
+    -- is a custom attribute label with two parts:
+    --
+    -- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+    --     @Secret@). Tag keys are case sensitive.
+    --
+    -- -   An optional field known as a /tag value/ (for example,
+    --     @111122223333@, @Production@, or a team name). Omitting the tag
+    --     value is the same as using an empty string. Like tag keys, tag
+    --     values are case sensitive.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The repository to associate.
+    repository :: Repository
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateRepository' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'associateRepository_clientRequestToken' - Amazon CodeGuru Reviewer uses this value to prevent the accidental
+-- creation of duplicate repository associations if there are failures and
+-- retries.
+--
+-- 'kmsKeyDetails', 'associateRepository_kmsKeyDetails' - A @KMSKeyDetails@ object that contains:
+--
+-- -   The encryption option for this repository association. It is either
+--     owned by Amazon Web Services Key Management Service (KMS)
+--     (@AWS_OWNED_CMK@) or customer managed (@CUSTOMER_MANAGED_CMK@).
+--
+-- -   The ID of the Amazon Web Services KMS key that is associated with
+--     this repository association.
+--
+-- 'tags', 'associateRepository_tags' - An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+--
+-- 'repository', 'associateRepository_repository' - The repository to associate.
+newAssociateRepository ::
+  -- | 'repository'
+  Repository ->
+  AssociateRepository
+newAssociateRepository pRepository_ =
+  AssociateRepository'
+    { clientRequestToken =
+        Prelude.Nothing,
+      kmsKeyDetails = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      repository = pRepository_
+    }
+
+-- | Amazon CodeGuru Reviewer uses this value to prevent the accidental
+-- creation of duplicate repository associations if there are failures and
+-- retries.
+associateRepository_clientRequestToken :: Lens.Lens' AssociateRepository (Prelude.Maybe Prelude.Text)
+associateRepository_clientRequestToken = Lens.lens (\AssociateRepository' {clientRequestToken} -> clientRequestToken) (\s@AssociateRepository' {} a -> s {clientRequestToken = a} :: AssociateRepository)
+
+-- | A @KMSKeyDetails@ object that contains:
+--
+-- -   The encryption option for this repository association. It is either
+--     owned by Amazon Web Services Key Management Service (KMS)
+--     (@AWS_OWNED_CMK@) or customer managed (@CUSTOMER_MANAGED_CMK@).
+--
+-- -   The ID of the Amazon Web Services KMS key that is associated with
+--     this repository association.
+associateRepository_kmsKeyDetails :: Lens.Lens' AssociateRepository (Prelude.Maybe KMSKeyDetails)
+associateRepository_kmsKeyDetails = Lens.lens (\AssociateRepository' {kmsKeyDetails} -> kmsKeyDetails) (\s@AssociateRepository' {} a -> s {kmsKeyDetails = a} :: AssociateRepository)
+
+-- | An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+associateRepository_tags :: Lens.Lens' AssociateRepository (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+associateRepository_tags = Lens.lens (\AssociateRepository' {tags} -> tags) (\s@AssociateRepository' {} a -> s {tags = a} :: AssociateRepository) Prelude.. Lens.mapping Lens.coerced
+
+-- | The repository to associate.
+associateRepository_repository :: Lens.Lens' AssociateRepository Repository
+associateRepository_repository = Lens.lens (\AssociateRepository' {repository} -> repository) (\s@AssociateRepository' {} a -> s {repository = a} :: AssociateRepository)
+
+instance Core.AWSRequest AssociateRepository where
+  type
+    AWSResponse AssociateRepository =
+      AssociateRepositoryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AssociateRepositoryResponse'
+            Prelude.<$> (x Data..?> "RepositoryAssociation")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AssociateRepository where
+  hashWithSalt _salt AssociateRepository' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` kmsKeyDetails
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` repository
+
+instance Prelude.NFData AssociateRepository where
+  rnf AssociateRepository' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf kmsKeyDetails
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf repository
+
+instance Data.ToHeaders AssociateRepository where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON AssociateRepository where
+  toJSON AssociateRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("KMSKeyDetails" Data..=) Prelude.<$> kmsKeyDetails,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Repository" Data..= repository)
+          ]
+      )
+
+instance Data.ToPath AssociateRepository where
+  toPath = Prelude.const "/associations"
+
+instance Data.ToQuery AssociateRepository where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateRepositoryResponse' smart constructor.
+data AssociateRepositoryResponse = AssociateRepositoryResponse'
+  { -- | Information about the repository association.
+    repositoryAssociation :: Prelude.Maybe RepositoryAssociation,
+    -- | An array of key-value pairs used to tag an associated repository. A tag
+    -- is a custom attribute label with two parts:
+    --
+    -- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+    --     @Secret@). Tag keys are case sensitive.
+    --
+    -- -   An optional field known as a /tag value/ (for example,
+    --     @111122223333@, @Production@, or a team name). Omitting the tag
+    --     value is the same as using an empty string. Like tag keys, tag
+    --     values are case sensitive.
+    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 'AssociateRepositoryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'repositoryAssociation', 'associateRepositoryResponse_repositoryAssociation' - Information about the repository association.
+--
+-- 'tags', 'associateRepositoryResponse_tags' - An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+--
+-- 'httpStatus', 'associateRepositoryResponse_httpStatus' - The response's http status code.
+newAssociateRepositoryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateRepositoryResponse
+newAssociateRepositoryResponse pHttpStatus_ =
+  AssociateRepositoryResponse'
+    { repositoryAssociation =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the repository association.
+associateRepositoryResponse_repositoryAssociation :: Lens.Lens' AssociateRepositoryResponse (Prelude.Maybe RepositoryAssociation)
+associateRepositoryResponse_repositoryAssociation = Lens.lens (\AssociateRepositoryResponse' {repositoryAssociation} -> repositoryAssociation) (\s@AssociateRepositoryResponse' {} a -> s {repositoryAssociation = a} :: AssociateRepositoryResponse)
+
+-- | An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+associateRepositoryResponse_tags :: Lens.Lens' AssociateRepositoryResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+associateRepositoryResponse_tags = Lens.lens (\AssociateRepositoryResponse' {tags} -> tags) (\s@AssociateRepositoryResponse' {} a -> s {tags = a} :: AssociateRepositoryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+associateRepositoryResponse_httpStatus :: Lens.Lens' AssociateRepositoryResponse Prelude.Int
+associateRepositoryResponse_httpStatus = Lens.lens (\AssociateRepositoryResponse' {httpStatus} -> httpStatus) (\s@AssociateRepositoryResponse' {} a -> s {httpStatus = a} :: AssociateRepositoryResponse)
+
+instance Prelude.NFData AssociateRepositoryResponse where
+  rnf AssociateRepositoryResponse' {..} =
+    Prelude.rnf repositoryAssociation
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/CreateCodeReview.hs b/gen/Amazonka/CodeGuruReviewer/CreateCodeReview.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/CreateCodeReview.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.CodeGuruReviewer.CreateCodeReview
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Use to create a code review with a
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReviewType.html CodeReviewType>
+-- of @RepositoryAnalysis@. This type of code review analyzes all code
+-- under a specified branch in an associated repository. @PullRequest@ code
+-- reviews are automatically triggered by a pull request.
+module Amazonka.CodeGuruReviewer.CreateCodeReview
+  ( -- * Creating a Request
+    CreateCodeReview (..),
+    newCreateCodeReview,
+
+    -- * Request Lenses
+    createCodeReview_clientRequestToken,
+    createCodeReview_name,
+    createCodeReview_repositoryAssociationArn,
+    createCodeReview_type,
+
+    -- * Destructuring the Response
+    CreateCodeReviewResponse (..),
+    newCreateCodeReviewResponse,
+
+    -- * Response Lenses
+    createCodeReviewResponse_codeReview,
+    createCodeReviewResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateCodeReview' smart constructor.
+data CreateCodeReview = CreateCodeReview'
+  { -- | Amazon CodeGuru Reviewer uses this value to prevent the accidental
+    -- creation of duplicate code reviews if there are failures and retries.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | The name of the code review. The name of each code review in your Amazon
+    -- Web Services account must be unique.
+    name :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+    -- object. You can retrieve this ARN by calling
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+    --
+    -- A code review can only be created on an associated repository. This is
+    -- the ARN of the associated repository.
+    repositoryAssociationArn :: Prelude.Text,
+    -- | The type of code review to create. This is specified using a
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReviewType.html CodeReviewType>
+    -- object. You can create a code review only of type @RepositoryAnalysis@.
+    type' :: CodeReviewType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCodeReview' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createCodeReview_clientRequestToken' - Amazon CodeGuru Reviewer uses this value to prevent the accidental
+-- creation of duplicate code reviews if there are failures and retries.
+--
+-- 'name', 'createCodeReview_name' - The name of the code review. The name of each code review in your Amazon
+-- Web Services account must be unique.
+--
+-- 'repositoryAssociationArn', 'createCodeReview_repositoryAssociationArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+--
+-- A code review can only be created on an associated repository. This is
+-- the ARN of the associated repository.
+--
+-- 'type'', 'createCodeReview_type' - The type of code review to create. This is specified using a
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReviewType.html CodeReviewType>
+-- object. You can create a code review only of type @RepositoryAnalysis@.
+newCreateCodeReview ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'repositoryAssociationArn'
+  Prelude.Text ->
+  -- | 'type''
+  CodeReviewType ->
+  CreateCodeReview
+newCreateCodeReview
+  pName_
+  pRepositoryAssociationArn_
+  pType_ =
+    CreateCodeReview'
+      { clientRequestToken =
+          Prelude.Nothing,
+        name = pName_,
+        repositoryAssociationArn =
+          pRepositoryAssociationArn_,
+        type' = pType_
+      }
+
+-- | Amazon CodeGuru Reviewer uses this value to prevent the accidental
+-- creation of duplicate code reviews if there are failures and retries.
+createCodeReview_clientRequestToken :: Lens.Lens' CreateCodeReview (Prelude.Maybe Prelude.Text)
+createCodeReview_clientRequestToken = Lens.lens (\CreateCodeReview' {clientRequestToken} -> clientRequestToken) (\s@CreateCodeReview' {} a -> s {clientRequestToken = a} :: CreateCodeReview)
+
+-- | The name of the code review. The name of each code review in your Amazon
+-- Web Services account must be unique.
+createCodeReview_name :: Lens.Lens' CreateCodeReview Prelude.Text
+createCodeReview_name = Lens.lens (\CreateCodeReview' {name} -> name) (\s@CreateCodeReview' {} a -> s {name = a} :: CreateCodeReview)
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+--
+-- A code review can only be created on an associated repository. This is
+-- the ARN of the associated repository.
+createCodeReview_repositoryAssociationArn :: Lens.Lens' CreateCodeReview Prelude.Text
+createCodeReview_repositoryAssociationArn = Lens.lens (\CreateCodeReview' {repositoryAssociationArn} -> repositoryAssociationArn) (\s@CreateCodeReview' {} a -> s {repositoryAssociationArn = a} :: CreateCodeReview)
+
+-- | The type of code review to create. This is specified using a
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReviewType.html CodeReviewType>
+-- object. You can create a code review only of type @RepositoryAnalysis@.
+createCodeReview_type :: Lens.Lens' CreateCodeReview CodeReviewType
+createCodeReview_type = Lens.lens (\CreateCodeReview' {type'} -> type') (\s@CreateCodeReview' {} a -> s {type' = a} :: CreateCodeReview)
+
+instance Core.AWSRequest CreateCodeReview where
+  type
+    AWSResponse CreateCodeReview =
+      CreateCodeReviewResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateCodeReviewResponse'
+            Prelude.<$> (x Data..?> "CodeReview")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateCodeReview where
+  hashWithSalt _salt CreateCodeReview' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` repositoryAssociationArn
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CreateCodeReview where
+  rnf CreateCodeReview' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf repositoryAssociationArn
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders CreateCodeReview where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateCodeReview where
+  toJSON CreateCodeReview' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("Name" Data..= name),
+            Prelude.Just
+              ( "RepositoryAssociationArn"
+                  Data..= repositoryAssociationArn
+              ),
+            Prelude.Just ("Type" Data..= type')
+          ]
+      )
+
+instance Data.ToPath CreateCodeReview where
+  toPath = Prelude.const "/codereviews"
+
+instance Data.ToQuery CreateCodeReview where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateCodeReviewResponse' smart constructor.
+data CreateCodeReviewResponse = CreateCodeReviewResponse'
+  { codeReview :: Prelude.Maybe CodeReview,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCodeReviewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'codeReview', 'createCodeReviewResponse_codeReview' - Undocumented member.
+--
+-- 'httpStatus', 'createCodeReviewResponse_httpStatus' - The response's http status code.
+newCreateCodeReviewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateCodeReviewResponse
+newCreateCodeReviewResponse pHttpStatus_ =
+  CreateCodeReviewResponse'
+    { codeReview =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+createCodeReviewResponse_codeReview :: Lens.Lens' CreateCodeReviewResponse (Prelude.Maybe CodeReview)
+createCodeReviewResponse_codeReview = Lens.lens (\CreateCodeReviewResponse' {codeReview} -> codeReview) (\s@CreateCodeReviewResponse' {} a -> s {codeReview = a} :: CreateCodeReviewResponse)
+
+-- | The response's http status code.
+createCodeReviewResponse_httpStatus :: Lens.Lens' CreateCodeReviewResponse Prelude.Int
+createCodeReviewResponse_httpStatus = Lens.lens (\CreateCodeReviewResponse' {httpStatus} -> httpStatus) (\s@CreateCodeReviewResponse' {} a -> s {httpStatus = a} :: CreateCodeReviewResponse)
+
+instance Prelude.NFData CreateCodeReviewResponse where
+  rnf CreateCodeReviewResponse' {..} =
+    Prelude.rnf codeReview
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/DescribeCodeReview.hs b/gen/Amazonka/CodeGuruReviewer/DescribeCodeReview.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/DescribeCodeReview.hs
@@ -0,0 +1,170 @@
+{-# 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.CodeGuruReviewer.DescribeCodeReview
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the metadata associated with the code review along with its
+-- status.
+module Amazonka.CodeGuruReviewer.DescribeCodeReview
+  ( -- * Creating a Request
+    DescribeCodeReview (..),
+    newDescribeCodeReview,
+
+    -- * Request Lenses
+    describeCodeReview_codeReviewArn,
+
+    -- * Destructuring the Response
+    DescribeCodeReviewResponse (..),
+    newDescribeCodeReviewResponse,
+
+    -- * Response Lenses
+    describeCodeReviewResponse_codeReview,
+    describeCodeReviewResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeCodeReview' smart constructor.
+data DescribeCodeReview = DescribeCodeReview'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+    -- object.
+    codeReviewArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCodeReview' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'codeReviewArn', 'describeCodeReview_codeReviewArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+newDescribeCodeReview ::
+  -- | 'codeReviewArn'
+  Prelude.Text ->
+  DescribeCodeReview
+newDescribeCodeReview pCodeReviewArn_ =
+  DescribeCodeReview'
+    { codeReviewArn =
+        pCodeReviewArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+describeCodeReview_codeReviewArn :: Lens.Lens' DescribeCodeReview Prelude.Text
+describeCodeReview_codeReviewArn = Lens.lens (\DescribeCodeReview' {codeReviewArn} -> codeReviewArn) (\s@DescribeCodeReview' {} a -> s {codeReviewArn = a} :: DescribeCodeReview)
+
+instance Core.AWSRequest DescribeCodeReview where
+  type
+    AWSResponse DescribeCodeReview =
+      DescribeCodeReviewResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeCodeReviewResponse'
+            Prelude.<$> (x Data..?> "CodeReview")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeCodeReview where
+  hashWithSalt _salt DescribeCodeReview' {..} =
+    _salt `Prelude.hashWithSalt` codeReviewArn
+
+instance Prelude.NFData DescribeCodeReview where
+  rnf DescribeCodeReview' {..} =
+    Prelude.rnf codeReviewArn
+
+instance Data.ToHeaders DescribeCodeReview where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeCodeReview where
+  toPath DescribeCodeReview' {..} =
+    Prelude.mconcat
+      ["/codereviews/", Data.toBS codeReviewArn]
+
+instance Data.ToQuery DescribeCodeReview where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeCodeReviewResponse' smart constructor.
+data DescribeCodeReviewResponse = DescribeCodeReviewResponse'
+  { -- | Information about the code review.
+    codeReview :: Prelude.Maybe CodeReview,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCodeReviewResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'codeReview', 'describeCodeReviewResponse_codeReview' - Information about the code review.
+--
+-- 'httpStatus', 'describeCodeReviewResponse_httpStatus' - The response's http status code.
+newDescribeCodeReviewResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeCodeReviewResponse
+newDescribeCodeReviewResponse pHttpStatus_ =
+  DescribeCodeReviewResponse'
+    { codeReview =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the code review.
+describeCodeReviewResponse_codeReview :: Lens.Lens' DescribeCodeReviewResponse (Prelude.Maybe CodeReview)
+describeCodeReviewResponse_codeReview = Lens.lens (\DescribeCodeReviewResponse' {codeReview} -> codeReview) (\s@DescribeCodeReviewResponse' {} a -> s {codeReview = a} :: DescribeCodeReviewResponse)
+
+-- | The response's http status code.
+describeCodeReviewResponse_httpStatus :: Lens.Lens' DescribeCodeReviewResponse Prelude.Int
+describeCodeReviewResponse_httpStatus = Lens.lens (\DescribeCodeReviewResponse' {httpStatus} -> httpStatus) (\s@DescribeCodeReviewResponse' {} a -> s {httpStatus = a} :: DescribeCodeReviewResponse)
+
+instance Prelude.NFData DescribeCodeReviewResponse where
+  rnf DescribeCodeReviewResponse' {..} =
+    Prelude.rnf codeReview
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/DescribeRecommendationFeedback.hs b/gen/Amazonka/CodeGuruReviewer/DescribeRecommendationFeedback.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/DescribeRecommendationFeedback.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.DescribeRecommendationFeedback
+-- 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 customer feedback for a CodeGuru Reviewer recommendation.
+module Amazonka.CodeGuruReviewer.DescribeRecommendationFeedback
+  ( -- * Creating a Request
+    DescribeRecommendationFeedback (..),
+    newDescribeRecommendationFeedback,
+
+    -- * Request Lenses
+    describeRecommendationFeedback_userId,
+    describeRecommendationFeedback_codeReviewArn,
+    describeRecommendationFeedback_recommendationId,
+
+    -- * Destructuring the Response
+    DescribeRecommendationFeedbackResponse (..),
+    newDescribeRecommendationFeedbackResponse,
+
+    -- * Response Lenses
+    describeRecommendationFeedbackResponse_recommendationFeedback,
+    describeRecommendationFeedbackResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeRecommendationFeedback' smart constructor.
+data DescribeRecommendationFeedback = DescribeRecommendationFeedback'
+  { -- | Optional parameter to describe the feedback for a given user. If this is
+    -- not supplied, it defaults to the user making the request.
+    --
+    -- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+    -- Services account ID or an Amazon Resource Name (ARN). For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+    -- in the /Amazon Web Services Identity and Access Management User Guide/.
+    userId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+    -- object.
+    codeReviewArn :: Prelude.Text,
+    -- | The recommendation ID that can be used to track the provided
+    -- recommendations and then to collect the feedback.
+    recommendationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeRecommendationFeedback' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'userId', 'describeRecommendationFeedback_userId' - Optional parameter to describe the feedback for a given user. If this is
+-- not supplied, it defaults to the user making the request.
+--
+-- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+-- Services account ID or an Amazon Resource Name (ARN). For more
+-- information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+--
+-- 'codeReviewArn', 'describeRecommendationFeedback_codeReviewArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+--
+-- 'recommendationId', 'describeRecommendationFeedback_recommendationId' - The recommendation ID that can be used to track the provided
+-- recommendations and then to collect the feedback.
+newDescribeRecommendationFeedback ::
+  -- | 'codeReviewArn'
+  Prelude.Text ->
+  -- | 'recommendationId'
+  Prelude.Text ->
+  DescribeRecommendationFeedback
+newDescribeRecommendationFeedback
+  pCodeReviewArn_
+  pRecommendationId_ =
+    DescribeRecommendationFeedback'
+      { userId =
+          Prelude.Nothing,
+        codeReviewArn = pCodeReviewArn_,
+        recommendationId = pRecommendationId_
+      }
+
+-- | Optional parameter to describe the feedback for a given user. If this is
+-- not supplied, it defaults to the user making the request.
+--
+-- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+-- Services account ID or an Amazon Resource Name (ARN). For more
+-- information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+describeRecommendationFeedback_userId :: Lens.Lens' DescribeRecommendationFeedback (Prelude.Maybe Prelude.Text)
+describeRecommendationFeedback_userId = Lens.lens (\DescribeRecommendationFeedback' {userId} -> userId) (\s@DescribeRecommendationFeedback' {} a -> s {userId = a} :: DescribeRecommendationFeedback)
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+describeRecommendationFeedback_codeReviewArn :: Lens.Lens' DescribeRecommendationFeedback Prelude.Text
+describeRecommendationFeedback_codeReviewArn = Lens.lens (\DescribeRecommendationFeedback' {codeReviewArn} -> codeReviewArn) (\s@DescribeRecommendationFeedback' {} a -> s {codeReviewArn = a} :: DescribeRecommendationFeedback)
+
+-- | The recommendation ID that can be used to track the provided
+-- recommendations and then to collect the feedback.
+describeRecommendationFeedback_recommendationId :: Lens.Lens' DescribeRecommendationFeedback Prelude.Text
+describeRecommendationFeedback_recommendationId = Lens.lens (\DescribeRecommendationFeedback' {recommendationId} -> recommendationId) (\s@DescribeRecommendationFeedback' {} a -> s {recommendationId = a} :: DescribeRecommendationFeedback)
+
+instance
+  Core.AWSRequest
+    DescribeRecommendationFeedback
+  where
+  type
+    AWSResponse DescribeRecommendationFeedback =
+      DescribeRecommendationFeedbackResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeRecommendationFeedbackResponse'
+            Prelude.<$> (x Data..?> "RecommendationFeedback")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeRecommendationFeedback
+  where
+  hashWithSalt
+    _salt
+    DescribeRecommendationFeedback' {..} =
+      _salt
+        `Prelude.hashWithSalt` userId
+        `Prelude.hashWithSalt` codeReviewArn
+        `Prelude.hashWithSalt` recommendationId
+
+instance
+  Prelude.NFData
+    DescribeRecommendationFeedback
+  where
+  rnf DescribeRecommendationFeedback' {..} =
+    Prelude.rnf userId
+      `Prelude.seq` Prelude.rnf codeReviewArn
+      `Prelude.seq` Prelude.rnf recommendationId
+
+instance
+  Data.ToHeaders
+    DescribeRecommendationFeedback
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeRecommendationFeedback where
+  toPath DescribeRecommendationFeedback' {..} =
+    Prelude.mconcat
+      ["/feedback/", Data.toBS codeReviewArn]
+
+instance Data.ToQuery DescribeRecommendationFeedback where
+  toQuery DescribeRecommendationFeedback' {..} =
+    Prelude.mconcat
+      [ "UserId" Data.=: userId,
+        "RecommendationId" Data.=: recommendationId
+      ]
+
+-- | /See:/ 'newDescribeRecommendationFeedbackResponse' smart constructor.
+data DescribeRecommendationFeedbackResponse = DescribeRecommendationFeedbackResponse'
+  { -- | The recommendation feedback given by the user.
+    recommendationFeedback :: Prelude.Maybe RecommendationFeedback,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeRecommendationFeedbackResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'recommendationFeedback', 'describeRecommendationFeedbackResponse_recommendationFeedback' - The recommendation feedback given by the user.
+--
+-- 'httpStatus', 'describeRecommendationFeedbackResponse_httpStatus' - The response's http status code.
+newDescribeRecommendationFeedbackResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeRecommendationFeedbackResponse
+newDescribeRecommendationFeedbackResponse
+  pHttpStatus_ =
+    DescribeRecommendationFeedbackResponse'
+      { recommendationFeedback =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The recommendation feedback given by the user.
+describeRecommendationFeedbackResponse_recommendationFeedback :: Lens.Lens' DescribeRecommendationFeedbackResponse (Prelude.Maybe RecommendationFeedback)
+describeRecommendationFeedbackResponse_recommendationFeedback = Lens.lens (\DescribeRecommendationFeedbackResponse' {recommendationFeedback} -> recommendationFeedback) (\s@DescribeRecommendationFeedbackResponse' {} a -> s {recommendationFeedback = a} :: DescribeRecommendationFeedbackResponse)
+
+-- | The response's http status code.
+describeRecommendationFeedbackResponse_httpStatus :: Lens.Lens' DescribeRecommendationFeedbackResponse Prelude.Int
+describeRecommendationFeedbackResponse_httpStatus = Lens.lens (\DescribeRecommendationFeedbackResponse' {httpStatus} -> httpStatus) (\s@DescribeRecommendationFeedbackResponse' {} a -> s {httpStatus = a} :: DescribeRecommendationFeedbackResponse)
+
+instance
+  Prelude.NFData
+    DescribeRecommendationFeedbackResponse
+  where
+  rnf DescribeRecommendationFeedbackResponse' {..} =
+    Prelude.rnf recommendationFeedback
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/DescribeRepositoryAssociation.hs b/gen/Amazonka/CodeGuruReviewer/DescribeRepositoryAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/DescribeRepositoryAssociation.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.DescribeRepositoryAssociation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object that contains information about the requested repository
+-- association.
+module Amazonka.CodeGuruReviewer.DescribeRepositoryAssociation
+  ( -- * Creating a Request
+    DescribeRepositoryAssociation (..),
+    newDescribeRepositoryAssociation,
+
+    -- * Request Lenses
+    describeRepositoryAssociation_associationArn,
+
+    -- * Destructuring the Response
+    DescribeRepositoryAssociationResponse (..),
+    newDescribeRepositoryAssociationResponse,
+
+    -- * Response Lenses
+    describeRepositoryAssociationResponse_repositoryAssociation,
+    describeRepositoryAssociationResponse_tags,
+    describeRepositoryAssociationResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeRepositoryAssociation' smart constructor.
+data DescribeRepositoryAssociation = DescribeRepositoryAssociation'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+    -- object. You can retrieve this ARN by calling
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+    associationArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeRepositoryAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associationArn', 'describeRepositoryAssociation_associationArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+newDescribeRepositoryAssociation ::
+  -- | 'associationArn'
+  Prelude.Text ->
+  DescribeRepositoryAssociation
+newDescribeRepositoryAssociation pAssociationArn_ =
+  DescribeRepositoryAssociation'
+    { associationArn =
+        pAssociationArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+describeRepositoryAssociation_associationArn :: Lens.Lens' DescribeRepositoryAssociation Prelude.Text
+describeRepositoryAssociation_associationArn = Lens.lens (\DescribeRepositoryAssociation' {associationArn} -> associationArn) (\s@DescribeRepositoryAssociation' {} a -> s {associationArn = a} :: DescribeRepositoryAssociation)
+
+instance
+  Core.AWSRequest
+    DescribeRepositoryAssociation
+  where
+  type
+    AWSResponse DescribeRepositoryAssociation =
+      DescribeRepositoryAssociationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeRepositoryAssociationResponse'
+            Prelude.<$> (x Data..?> "RepositoryAssociation")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeRepositoryAssociation
+  where
+  hashWithSalt _salt DescribeRepositoryAssociation' {..} =
+    _salt `Prelude.hashWithSalt` associationArn
+
+instance Prelude.NFData DescribeRepositoryAssociation where
+  rnf DescribeRepositoryAssociation' {..} =
+    Prelude.rnf associationArn
+
+instance Data.ToHeaders DescribeRepositoryAssociation where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeRepositoryAssociation where
+  toPath DescribeRepositoryAssociation' {..} =
+    Prelude.mconcat
+      ["/associations/", Data.toBS associationArn]
+
+instance Data.ToQuery DescribeRepositoryAssociation where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeRepositoryAssociationResponse' smart constructor.
+data DescribeRepositoryAssociationResponse = DescribeRepositoryAssociationResponse'
+  { -- | Information about the repository association.
+    repositoryAssociation :: Prelude.Maybe RepositoryAssociation,
+    -- | An array of key-value pairs used to tag an associated repository. A tag
+    -- is a custom attribute label with two parts:
+    --
+    -- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+    --     @Secret@). Tag keys are case sensitive.
+    --
+    -- -   An optional field known as a /tag value/ (for example,
+    --     @111122223333@, @Production@, or a team name). Omitting the tag
+    --     value is the same as using an empty string. Like tag keys, tag
+    --     values are case sensitive.
+    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 'DescribeRepositoryAssociationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'repositoryAssociation', 'describeRepositoryAssociationResponse_repositoryAssociation' - Information about the repository association.
+--
+-- 'tags', 'describeRepositoryAssociationResponse_tags' - An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+--
+-- 'httpStatus', 'describeRepositoryAssociationResponse_httpStatus' - The response's http status code.
+newDescribeRepositoryAssociationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeRepositoryAssociationResponse
+newDescribeRepositoryAssociationResponse pHttpStatus_ =
+  DescribeRepositoryAssociationResponse'
+    { repositoryAssociation =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the repository association.
+describeRepositoryAssociationResponse_repositoryAssociation :: Lens.Lens' DescribeRepositoryAssociationResponse (Prelude.Maybe RepositoryAssociation)
+describeRepositoryAssociationResponse_repositoryAssociation = Lens.lens (\DescribeRepositoryAssociationResponse' {repositoryAssociation} -> repositoryAssociation) (\s@DescribeRepositoryAssociationResponse' {} a -> s {repositoryAssociation = a} :: DescribeRepositoryAssociationResponse)
+
+-- | An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+describeRepositoryAssociationResponse_tags :: Lens.Lens' DescribeRepositoryAssociationResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeRepositoryAssociationResponse_tags = Lens.lens (\DescribeRepositoryAssociationResponse' {tags} -> tags) (\s@DescribeRepositoryAssociationResponse' {} a -> s {tags = a} :: DescribeRepositoryAssociationResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeRepositoryAssociationResponse_httpStatus :: Lens.Lens' DescribeRepositoryAssociationResponse Prelude.Int
+describeRepositoryAssociationResponse_httpStatus = Lens.lens (\DescribeRepositoryAssociationResponse' {httpStatus} -> httpStatus) (\s@DescribeRepositoryAssociationResponse' {} a -> s {httpStatus = a} :: DescribeRepositoryAssociationResponse)
+
+instance
+  Prelude.NFData
+    DescribeRepositoryAssociationResponse
+  where
+  rnf DescribeRepositoryAssociationResponse' {..} =
+    Prelude.rnf repositoryAssociation
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/DisassociateRepository.hs b/gen/Amazonka/CodeGuruReviewer/DisassociateRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/DisassociateRepository.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.CodeGuruReviewer.DisassociateRepository
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the association between Amazon CodeGuru Reviewer and a
+-- repository.
+module Amazonka.CodeGuruReviewer.DisassociateRepository
+  ( -- * Creating a Request
+    DisassociateRepository (..),
+    newDisassociateRepository,
+
+    -- * Request Lenses
+    disassociateRepository_associationArn,
+
+    -- * Destructuring the Response
+    DisassociateRepositoryResponse (..),
+    newDisassociateRepositoryResponse,
+
+    -- * Response Lenses
+    disassociateRepositoryResponse_repositoryAssociation,
+    disassociateRepositoryResponse_tags,
+    disassociateRepositoryResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateRepository' smart constructor.
+data DisassociateRepository = DisassociateRepository'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+    -- object. You can retrieve this ARN by calling
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+    associationArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateRepository' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associationArn', 'disassociateRepository_associationArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+newDisassociateRepository ::
+  -- | 'associationArn'
+  Prelude.Text ->
+  DisassociateRepository
+newDisassociateRepository pAssociationArn_ =
+  DisassociateRepository'
+    { associationArn =
+        pAssociationArn_
+    }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+disassociateRepository_associationArn :: Lens.Lens' DisassociateRepository Prelude.Text
+disassociateRepository_associationArn = Lens.lens (\DisassociateRepository' {associationArn} -> associationArn) (\s@DisassociateRepository' {} a -> s {associationArn = a} :: DisassociateRepository)
+
+instance Core.AWSRequest DisassociateRepository where
+  type
+    AWSResponse DisassociateRepository =
+      DisassociateRepositoryResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DisassociateRepositoryResponse'
+            Prelude.<$> (x Data..?> "RepositoryAssociation")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DisassociateRepository where
+  hashWithSalt _salt DisassociateRepository' {..} =
+    _salt `Prelude.hashWithSalt` associationArn
+
+instance Prelude.NFData DisassociateRepository where
+  rnf DisassociateRepository' {..} =
+    Prelude.rnf associationArn
+
+instance Data.ToHeaders DisassociateRepository where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DisassociateRepository where
+  toPath DisassociateRepository' {..} =
+    Prelude.mconcat
+      ["/associations/", Data.toBS associationArn]
+
+instance Data.ToQuery DisassociateRepository where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateRepositoryResponse' smart constructor.
+data DisassociateRepositoryResponse = DisassociateRepositoryResponse'
+  { -- | Information about the disassociated repository.
+    repositoryAssociation :: Prelude.Maybe RepositoryAssociation,
+    -- | An array of key-value pairs used to tag an associated repository. A tag
+    -- is a custom attribute label with two parts:
+    --
+    -- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+    --     @Secret@). Tag keys are case sensitive.
+    --
+    -- -   An optional field known as a /tag value/ (for example,
+    --     @111122223333@, @Production@, or a team name). Omitting the tag
+    --     value is the same as using an empty string. Like tag keys, tag
+    --     values are case sensitive.
+    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 'DisassociateRepositoryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'repositoryAssociation', 'disassociateRepositoryResponse_repositoryAssociation' - Information about the disassociated repository.
+--
+-- 'tags', 'disassociateRepositoryResponse_tags' - An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+--
+-- 'httpStatus', 'disassociateRepositoryResponse_httpStatus' - The response's http status code.
+newDisassociateRepositoryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateRepositoryResponse
+newDisassociateRepositoryResponse pHttpStatus_ =
+  DisassociateRepositoryResponse'
+    { repositoryAssociation =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the disassociated repository.
+disassociateRepositoryResponse_repositoryAssociation :: Lens.Lens' DisassociateRepositoryResponse (Prelude.Maybe RepositoryAssociation)
+disassociateRepositoryResponse_repositoryAssociation = Lens.lens (\DisassociateRepositoryResponse' {repositoryAssociation} -> repositoryAssociation) (\s@DisassociateRepositoryResponse' {} a -> s {repositoryAssociation = a} :: DisassociateRepositoryResponse)
+
+-- | An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+disassociateRepositoryResponse_tags :: Lens.Lens' DisassociateRepositoryResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+disassociateRepositoryResponse_tags = Lens.lens (\DisassociateRepositoryResponse' {tags} -> tags) (\s@DisassociateRepositoryResponse' {} a -> s {tags = a} :: DisassociateRepositoryResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+disassociateRepositoryResponse_httpStatus :: Lens.Lens' DisassociateRepositoryResponse Prelude.Int
+disassociateRepositoryResponse_httpStatus = Lens.lens (\DisassociateRepositoryResponse' {httpStatus} -> httpStatus) (\s@DisassociateRepositoryResponse' {} a -> s {httpStatus = a} :: DisassociateRepositoryResponse)
+
+instance
+  Prelude.NFData
+    DisassociateRepositoryResponse
+  where
+  rnf DisassociateRepositoryResponse' {..} =
+    Prelude.rnf repositoryAssociation
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/Lens.hs b/gen/Amazonka/CodeGuruReviewer/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Lens.hs
@@ -0,0 +1,329 @@
+{-# 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.CodeGuruReviewer.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.CodeGuruReviewer.Lens
+  ( -- * Operations
+
+    -- ** AssociateRepository
+    associateRepository_clientRequestToken,
+    associateRepository_kmsKeyDetails,
+    associateRepository_tags,
+    associateRepository_repository,
+    associateRepositoryResponse_repositoryAssociation,
+    associateRepositoryResponse_tags,
+    associateRepositoryResponse_httpStatus,
+
+    -- ** CreateCodeReview
+    createCodeReview_clientRequestToken,
+    createCodeReview_name,
+    createCodeReview_repositoryAssociationArn,
+    createCodeReview_type,
+    createCodeReviewResponse_codeReview,
+    createCodeReviewResponse_httpStatus,
+
+    -- ** DescribeCodeReview
+    describeCodeReview_codeReviewArn,
+    describeCodeReviewResponse_codeReview,
+    describeCodeReviewResponse_httpStatus,
+
+    -- ** DescribeRecommendationFeedback
+    describeRecommendationFeedback_userId,
+    describeRecommendationFeedback_codeReviewArn,
+    describeRecommendationFeedback_recommendationId,
+    describeRecommendationFeedbackResponse_recommendationFeedback,
+    describeRecommendationFeedbackResponse_httpStatus,
+
+    -- ** DescribeRepositoryAssociation
+    describeRepositoryAssociation_associationArn,
+    describeRepositoryAssociationResponse_repositoryAssociation,
+    describeRepositoryAssociationResponse_tags,
+    describeRepositoryAssociationResponse_httpStatus,
+
+    -- ** DisassociateRepository
+    disassociateRepository_associationArn,
+    disassociateRepositoryResponse_repositoryAssociation,
+    disassociateRepositoryResponse_tags,
+    disassociateRepositoryResponse_httpStatus,
+
+    -- ** ListCodeReviews
+    listCodeReviews_maxResults,
+    listCodeReviews_nextToken,
+    listCodeReviews_providerTypes,
+    listCodeReviews_repositoryNames,
+    listCodeReviews_states,
+    listCodeReviews_type,
+    listCodeReviewsResponse_codeReviewSummaries,
+    listCodeReviewsResponse_nextToken,
+    listCodeReviewsResponse_httpStatus,
+
+    -- ** ListRecommendationFeedback
+    listRecommendationFeedback_maxResults,
+    listRecommendationFeedback_nextToken,
+    listRecommendationFeedback_recommendationIds,
+    listRecommendationFeedback_userIds,
+    listRecommendationFeedback_codeReviewArn,
+    listRecommendationFeedbackResponse_nextToken,
+    listRecommendationFeedbackResponse_recommendationFeedbackSummaries,
+    listRecommendationFeedbackResponse_httpStatus,
+
+    -- ** ListRecommendations
+    listRecommendations_maxResults,
+    listRecommendations_nextToken,
+    listRecommendations_codeReviewArn,
+    listRecommendationsResponse_nextToken,
+    listRecommendationsResponse_recommendationSummaries,
+    listRecommendationsResponse_httpStatus,
+
+    -- ** ListRepositoryAssociations
+    listRepositoryAssociations_maxResults,
+    listRepositoryAssociations_names,
+    listRepositoryAssociations_nextToken,
+    listRepositoryAssociations_owners,
+    listRepositoryAssociations_providerTypes,
+    listRepositoryAssociations_states,
+    listRepositoryAssociationsResponse_nextToken,
+    listRepositoryAssociationsResponse_repositoryAssociationSummaries,
+    listRepositoryAssociationsResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** PutRecommendationFeedback
+    putRecommendationFeedback_codeReviewArn,
+    putRecommendationFeedback_recommendationId,
+    putRecommendationFeedback_reactions,
+    putRecommendationFeedbackResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- * Types
+
+    -- ** BranchDiffSourceCodeType
+    branchDiffSourceCodeType_sourceBranchName,
+    branchDiffSourceCodeType_destinationBranchName,
+
+    -- ** CodeArtifacts
+    codeArtifacts_buildArtifactsObjectKey,
+    codeArtifacts_sourceCodeArtifactsObjectKey,
+
+    -- ** CodeCommitRepository
+    codeCommitRepository_name,
+
+    -- ** CodeReview
+    codeReview_analysisTypes,
+    codeReview_associationArn,
+    codeReview_codeReviewArn,
+    codeReview_configFileState,
+    codeReview_createdTimeStamp,
+    codeReview_lastUpdatedTimeStamp,
+    codeReview_metrics,
+    codeReview_name,
+    codeReview_owner,
+    codeReview_providerType,
+    codeReview_pullRequestId,
+    codeReview_repositoryName,
+    codeReview_sourceCodeType,
+    codeReview_state,
+    codeReview_stateReason,
+    codeReview_type,
+
+    -- ** CodeReviewSummary
+    codeReviewSummary_codeReviewArn,
+    codeReviewSummary_createdTimeStamp,
+    codeReviewSummary_lastUpdatedTimeStamp,
+    codeReviewSummary_metricsSummary,
+    codeReviewSummary_name,
+    codeReviewSummary_owner,
+    codeReviewSummary_providerType,
+    codeReviewSummary_pullRequestId,
+    codeReviewSummary_repositoryName,
+    codeReviewSummary_sourceCodeType,
+    codeReviewSummary_state,
+    codeReviewSummary_type,
+
+    -- ** CodeReviewType
+    codeReviewType_analysisTypes,
+    codeReviewType_repositoryAnalysis,
+
+    -- ** CommitDiffSourceCodeType
+    commitDiffSourceCodeType_destinationCommit,
+    commitDiffSourceCodeType_mergeBaseCommit,
+    commitDiffSourceCodeType_sourceCommit,
+
+    -- ** EventInfo
+    eventInfo_name,
+    eventInfo_state,
+
+    -- ** KMSKeyDetails
+    kmsKeyDetails_encryptionOption,
+    kmsKeyDetails_kmsKeyId,
+
+    -- ** Metrics
+    metrics_findingsCount,
+    metrics_meteredLinesOfCodeCount,
+    metrics_suppressedLinesOfCodeCount,
+
+    -- ** MetricsSummary
+    metricsSummary_findingsCount,
+    metricsSummary_meteredLinesOfCodeCount,
+    metricsSummary_suppressedLinesOfCodeCount,
+
+    -- ** RecommendationFeedback
+    recommendationFeedback_codeReviewArn,
+    recommendationFeedback_createdTimeStamp,
+    recommendationFeedback_lastUpdatedTimeStamp,
+    recommendationFeedback_reactions,
+    recommendationFeedback_recommendationId,
+    recommendationFeedback_userId,
+
+    -- ** RecommendationFeedbackSummary
+    recommendationFeedbackSummary_reactions,
+    recommendationFeedbackSummary_recommendationId,
+    recommendationFeedbackSummary_userId,
+
+    -- ** RecommendationSummary
+    recommendationSummary_description,
+    recommendationSummary_endLine,
+    recommendationSummary_filePath,
+    recommendationSummary_recommendationCategory,
+    recommendationSummary_recommendationId,
+    recommendationSummary_ruleMetadata,
+    recommendationSummary_severity,
+    recommendationSummary_startLine,
+
+    -- ** Repository
+    repository_bitbucket,
+    repository_codeCommit,
+    repository_gitHubEnterpriseServer,
+    repository_s3Bucket,
+
+    -- ** RepositoryAnalysis
+    repositoryAnalysis_repositoryHead,
+    repositoryAnalysis_sourceCodeType,
+
+    -- ** RepositoryAssociation
+    repositoryAssociation_associationArn,
+    repositoryAssociation_associationId,
+    repositoryAssociation_connectionArn,
+    repositoryAssociation_createdTimeStamp,
+    repositoryAssociation_kmsKeyDetails,
+    repositoryAssociation_lastUpdatedTimeStamp,
+    repositoryAssociation_name,
+    repositoryAssociation_owner,
+    repositoryAssociation_providerType,
+    repositoryAssociation_s3RepositoryDetails,
+    repositoryAssociation_state,
+    repositoryAssociation_stateReason,
+
+    -- ** RepositoryAssociationSummary
+    repositoryAssociationSummary_associationArn,
+    repositoryAssociationSummary_associationId,
+    repositoryAssociationSummary_connectionArn,
+    repositoryAssociationSummary_lastUpdatedTimeStamp,
+    repositoryAssociationSummary_name,
+    repositoryAssociationSummary_owner,
+    repositoryAssociationSummary_providerType,
+    repositoryAssociationSummary_state,
+
+    -- ** RepositoryHeadSourceCodeType
+    repositoryHeadSourceCodeType_branchName,
+
+    -- ** RequestMetadata
+    requestMetadata_eventInfo,
+    requestMetadata_requestId,
+    requestMetadata_requester,
+    requestMetadata_vendorName,
+
+    -- ** RuleMetadata
+    ruleMetadata_longDescription,
+    ruleMetadata_ruleId,
+    ruleMetadata_ruleName,
+    ruleMetadata_ruleTags,
+    ruleMetadata_shortDescription,
+
+    -- ** S3BucketRepository
+    s3BucketRepository_details,
+    s3BucketRepository_name,
+
+    -- ** S3Repository
+    s3Repository_name,
+    s3Repository_bucketName,
+
+    -- ** S3RepositoryDetails
+    s3RepositoryDetails_bucketName,
+    s3RepositoryDetails_codeArtifacts,
+
+    -- ** SourceCodeType
+    sourceCodeType_branchDiff,
+    sourceCodeType_commitDiff,
+    sourceCodeType_repositoryHead,
+    sourceCodeType_requestMetadata,
+    sourceCodeType_s3BucketRepository,
+
+    -- ** ThirdPartySourceRepository
+    thirdPartySourceRepository_name,
+    thirdPartySourceRepository_connectionArn,
+    thirdPartySourceRepository_owner,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.AssociateRepository
+import Amazonka.CodeGuruReviewer.CreateCodeReview
+import Amazonka.CodeGuruReviewer.DescribeCodeReview
+import Amazonka.CodeGuruReviewer.DescribeRecommendationFeedback
+import Amazonka.CodeGuruReviewer.DescribeRepositoryAssociation
+import Amazonka.CodeGuruReviewer.DisassociateRepository
+import Amazonka.CodeGuruReviewer.ListCodeReviews
+import Amazonka.CodeGuruReviewer.ListRecommendationFeedback
+import Amazonka.CodeGuruReviewer.ListRecommendations
+import Amazonka.CodeGuruReviewer.ListRepositoryAssociations
+import Amazonka.CodeGuruReviewer.ListTagsForResource
+import Amazonka.CodeGuruReviewer.PutRecommendationFeedback
+import Amazonka.CodeGuruReviewer.TagResource
+import Amazonka.CodeGuruReviewer.Types.BranchDiffSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.CodeArtifacts
+import Amazonka.CodeGuruReviewer.Types.CodeCommitRepository
+import Amazonka.CodeGuruReviewer.Types.CodeReview
+import Amazonka.CodeGuruReviewer.Types.CodeReviewSummary
+import Amazonka.CodeGuruReviewer.Types.CodeReviewType
+import Amazonka.CodeGuruReviewer.Types.CommitDiffSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.EventInfo
+import Amazonka.CodeGuruReviewer.Types.KMSKeyDetails
+import Amazonka.CodeGuruReviewer.Types.Metrics
+import Amazonka.CodeGuruReviewer.Types.MetricsSummary
+import Amazonka.CodeGuruReviewer.Types.RecommendationFeedback
+import Amazonka.CodeGuruReviewer.Types.RecommendationFeedbackSummary
+import Amazonka.CodeGuruReviewer.Types.RecommendationSummary
+import Amazonka.CodeGuruReviewer.Types.Repository
+import Amazonka.CodeGuruReviewer.Types.RepositoryAnalysis
+import Amazonka.CodeGuruReviewer.Types.RepositoryAssociation
+import Amazonka.CodeGuruReviewer.Types.RepositoryAssociationSummary
+import Amazonka.CodeGuruReviewer.Types.RepositoryHeadSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.RequestMetadata
+import Amazonka.CodeGuruReviewer.Types.RuleMetadata
+import Amazonka.CodeGuruReviewer.Types.S3BucketRepository
+import Amazonka.CodeGuruReviewer.Types.S3Repository
+import Amazonka.CodeGuruReviewer.Types.S3RepositoryDetails
+import Amazonka.CodeGuruReviewer.Types.SourceCodeType
+import Amazonka.CodeGuruReviewer.Types.ThirdPartySourceRepository
+import Amazonka.CodeGuruReviewer.UntagResource
diff --git a/gen/Amazonka/CodeGuruReviewer/ListCodeReviews.hs b/gen/Amazonka/CodeGuruReviewer/ListCodeReviews.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/ListCodeReviews.hs
@@ -0,0 +1,312 @@
+{-# 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.CodeGuruReviewer.ListCodeReviews
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the code reviews that the customer has created in the past 90
+-- days.
+module Amazonka.CodeGuruReviewer.ListCodeReviews
+  ( -- * Creating a Request
+    ListCodeReviews (..),
+    newListCodeReviews,
+
+    -- * Request Lenses
+    listCodeReviews_maxResults,
+    listCodeReviews_nextToken,
+    listCodeReviews_providerTypes,
+    listCodeReviews_repositoryNames,
+    listCodeReviews_states,
+    listCodeReviews_type,
+
+    -- * Destructuring the Response
+    ListCodeReviewsResponse (..),
+    newListCodeReviewsResponse,
+
+    -- * Response Lenses
+    listCodeReviewsResponse_codeReviewSummaries,
+    listCodeReviewsResponse_nextToken,
+    listCodeReviewsResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListCodeReviews' smart constructor.
+data ListCodeReviews = ListCodeReviews'
+  { -- | The maximum number of results that are returned per call. The default is
+    -- 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If @nextToken@ is returned, there are more results available. The value
+    -- of @nextToken@ is a unique pagination token for each page. Make the call
+    -- again using the returned token to retrieve the next page. Keep all other
+    -- arguments unchanged.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of provider types for filtering that needs to be applied before
+    -- displaying the result. For example, @providerTypes=[GitHub]@ lists code
+    -- reviews from GitHub.
+    providerTypes :: Prelude.Maybe (Prelude.NonEmpty ProviderType),
+    -- | List of repository names for filtering that needs to be applied before
+    -- displaying the result.
+    repositoryNames :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | List of states for filtering that needs to be applied before displaying
+    -- the result. For example, @states=[Pending]@ lists code reviews in the
+    -- Pending state.
+    --
+    -- The valid code review states are:
+    --
+    -- -   @Completed@: The code review is complete.
+    --
+    -- -   @Pending@: The code review started and has not completed or failed.
+    --
+    -- -   @Failed@: The code review failed.
+    --
+    -- -   @Deleting@: The code review is being deleted.
+    states :: Prelude.Maybe (Prelude.NonEmpty JobState),
+    -- | The type of code reviews to list in the response.
+    type' :: Type
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCodeReviews' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listCodeReviews_maxResults' - The maximum number of results that are returned per call. The default is
+-- 100.
+--
+-- 'nextToken', 'listCodeReviews_nextToken' - If @nextToken@ is returned, there are more results available. The value
+-- of @nextToken@ is a unique pagination token for each page. Make the call
+-- again using the returned token to retrieve the next page. Keep all other
+-- arguments unchanged.
+--
+-- 'providerTypes', 'listCodeReviews_providerTypes' - List of provider types for filtering that needs to be applied before
+-- displaying the result. For example, @providerTypes=[GitHub]@ lists code
+-- reviews from GitHub.
+--
+-- 'repositoryNames', 'listCodeReviews_repositoryNames' - List of repository names for filtering that needs to be applied before
+-- displaying the result.
+--
+-- 'states', 'listCodeReviews_states' - List of states for filtering that needs to be applied before displaying
+-- the result. For example, @states=[Pending]@ lists code reviews in the
+-- Pending state.
+--
+-- The valid code review states are:
+--
+-- -   @Completed@: The code review is complete.
+--
+-- -   @Pending@: The code review started and has not completed or failed.
+--
+-- -   @Failed@: The code review failed.
+--
+-- -   @Deleting@: The code review is being deleted.
+--
+-- 'type'', 'listCodeReviews_type' - The type of code reviews to list in the response.
+newListCodeReviews ::
+  -- | 'type''
+  Type ->
+  ListCodeReviews
+newListCodeReviews pType_ =
+  ListCodeReviews'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      providerTypes = Prelude.Nothing,
+      repositoryNames = Prelude.Nothing,
+      states = Prelude.Nothing,
+      type' = pType_
+    }
+
+-- | The maximum number of results that are returned per call. The default is
+-- 100.
+listCodeReviews_maxResults :: Lens.Lens' ListCodeReviews (Prelude.Maybe Prelude.Natural)
+listCodeReviews_maxResults = Lens.lens (\ListCodeReviews' {maxResults} -> maxResults) (\s@ListCodeReviews' {} a -> s {maxResults = a} :: ListCodeReviews)
+
+-- | If @nextToken@ is returned, there are more results available. The value
+-- of @nextToken@ is a unique pagination token for each page. Make the call
+-- again using the returned token to retrieve the next page. Keep all other
+-- arguments unchanged.
+listCodeReviews_nextToken :: Lens.Lens' ListCodeReviews (Prelude.Maybe Prelude.Text)
+listCodeReviews_nextToken = Lens.lens (\ListCodeReviews' {nextToken} -> nextToken) (\s@ListCodeReviews' {} a -> s {nextToken = a} :: ListCodeReviews)
+
+-- | List of provider types for filtering that needs to be applied before
+-- displaying the result. For example, @providerTypes=[GitHub]@ lists code
+-- reviews from GitHub.
+listCodeReviews_providerTypes :: Lens.Lens' ListCodeReviews (Prelude.Maybe (Prelude.NonEmpty ProviderType))
+listCodeReviews_providerTypes = Lens.lens (\ListCodeReviews' {providerTypes} -> providerTypes) (\s@ListCodeReviews' {} a -> s {providerTypes = a} :: ListCodeReviews) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of repository names for filtering that needs to be applied before
+-- displaying the result.
+listCodeReviews_repositoryNames :: Lens.Lens' ListCodeReviews (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listCodeReviews_repositoryNames = Lens.lens (\ListCodeReviews' {repositoryNames} -> repositoryNames) (\s@ListCodeReviews' {} a -> s {repositoryNames = a} :: ListCodeReviews) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of states for filtering that needs to be applied before displaying
+-- the result. For example, @states=[Pending]@ lists code reviews in the
+-- Pending state.
+--
+-- The valid code review states are:
+--
+-- -   @Completed@: The code review is complete.
+--
+-- -   @Pending@: The code review started and has not completed or failed.
+--
+-- -   @Failed@: The code review failed.
+--
+-- -   @Deleting@: The code review is being deleted.
+listCodeReviews_states :: Lens.Lens' ListCodeReviews (Prelude.Maybe (Prelude.NonEmpty JobState))
+listCodeReviews_states = Lens.lens (\ListCodeReviews' {states} -> states) (\s@ListCodeReviews' {} a -> s {states = a} :: ListCodeReviews) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of code reviews to list in the response.
+listCodeReviews_type :: Lens.Lens' ListCodeReviews Type
+listCodeReviews_type = Lens.lens (\ListCodeReviews' {type'} -> type') (\s@ListCodeReviews' {} a -> s {type' = a} :: ListCodeReviews)
+
+instance Core.AWSRequest ListCodeReviews where
+  type
+    AWSResponse ListCodeReviews =
+      ListCodeReviewsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListCodeReviewsResponse'
+            Prelude.<$> ( x
+                            Data..?> "CodeReviewSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListCodeReviews where
+  hashWithSalt _salt ListCodeReviews' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` providerTypes
+      `Prelude.hashWithSalt` repositoryNames
+      `Prelude.hashWithSalt` states
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData ListCodeReviews where
+  rnf ListCodeReviews' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf providerTypes
+      `Prelude.seq` Prelude.rnf repositoryNames
+      `Prelude.seq` Prelude.rnf states
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToHeaders ListCodeReviews where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListCodeReviews where
+  toPath = Prelude.const "/codereviews"
+
+instance Data.ToQuery ListCodeReviews where
+  toQuery ListCodeReviews' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "ProviderTypes"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> providerTypes
+            ),
+        "RepositoryNames"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> repositoryNames
+            ),
+        "States"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> states),
+        "Type" Data.=: type'
+      ]
+
+-- | /See:/ 'newListCodeReviewsResponse' smart constructor.
+data ListCodeReviewsResponse = ListCodeReviewsResponse'
+  { -- | A list of code reviews that meet the criteria of the request.
+    codeReviewSummaries :: Prelude.Maybe [CodeReviewSummary],
+    -- | Pagination token.
+    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 'ListCodeReviewsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'codeReviewSummaries', 'listCodeReviewsResponse_codeReviewSummaries' - A list of code reviews that meet the criteria of the request.
+--
+-- 'nextToken', 'listCodeReviewsResponse_nextToken' - Pagination token.
+--
+-- 'httpStatus', 'listCodeReviewsResponse_httpStatus' - The response's http status code.
+newListCodeReviewsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCodeReviewsResponse
+newListCodeReviewsResponse pHttpStatus_ =
+  ListCodeReviewsResponse'
+    { codeReviewSummaries =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of code reviews that meet the criteria of the request.
+listCodeReviewsResponse_codeReviewSummaries :: Lens.Lens' ListCodeReviewsResponse (Prelude.Maybe [CodeReviewSummary])
+listCodeReviewsResponse_codeReviewSummaries = Lens.lens (\ListCodeReviewsResponse' {codeReviewSummaries} -> codeReviewSummaries) (\s@ListCodeReviewsResponse' {} a -> s {codeReviewSummaries = a} :: ListCodeReviewsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Pagination token.
+listCodeReviewsResponse_nextToken :: Lens.Lens' ListCodeReviewsResponse (Prelude.Maybe Prelude.Text)
+listCodeReviewsResponse_nextToken = Lens.lens (\ListCodeReviewsResponse' {nextToken} -> nextToken) (\s@ListCodeReviewsResponse' {} a -> s {nextToken = a} :: ListCodeReviewsResponse)
+
+-- | The response's http status code.
+listCodeReviewsResponse_httpStatus :: Lens.Lens' ListCodeReviewsResponse Prelude.Int
+listCodeReviewsResponse_httpStatus = Lens.lens (\ListCodeReviewsResponse' {httpStatus} -> httpStatus) (\s@ListCodeReviewsResponse' {} a -> s {httpStatus = a} :: ListCodeReviewsResponse)
+
+instance Prelude.NFData ListCodeReviewsResponse where
+  rnf ListCodeReviewsResponse' {..} =
+    Prelude.rnf codeReviewSummaries
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/ListRecommendationFeedback.hs b/gen/Amazonka/CodeGuruReviewer/ListRecommendationFeedback.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/ListRecommendationFeedback.hs
@@ -0,0 +1,300 @@
+{-# 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.CodeGuruReviewer.ListRecommendationFeedback
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RecommendationFeedbackSummary.html RecommendationFeedbackSummary>
+-- objects that contain customer recommendation feedback for all CodeGuru
+-- Reviewer users.
+module Amazonka.CodeGuruReviewer.ListRecommendationFeedback
+  ( -- * Creating a Request
+    ListRecommendationFeedback (..),
+    newListRecommendationFeedback,
+
+    -- * Request Lenses
+    listRecommendationFeedback_maxResults,
+    listRecommendationFeedback_nextToken,
+    listRecommendationFeedback_recommendationIds,
+    listRecommendationFeedback_userIds,
+    listRecommendationFeedback_codeReviewArn,
+
+    -- * Destructuring the Response
+    ListRecommendationFeedbackResponse (..),
+    newListRecommendationFeedbackResponse,
+
+    -- * Response Lenses
+    listRecommendationFeedbackResponse_nextToken,
+    listRecommendationFeedbackResponse_recommendationFeedbackSummaries,
+    listRecommendationFeedbackResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListRecommendationFeedback' smart constructor.
+data ListRecommendationFeedback = ListRecommendationFeedback'
+  { -- | The maximum number of results that are returned per call. The default is
+    -- 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | If @nextToken@ is returned, there are more results available. The value
+    -- of @nextToken@ is a unique pagination token for each page. Make the call
+    -- again using the returned token to retrieve the next page. Keep all other
+    -- arguments unchanged.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Used to query the recommendation feedback for a given recommendation.
+    recommendationIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | An Amazon Web Services user\'s account ID or Amazon Resource Name (ARN).
+    -- Use this ID to query the recommendation feedback for a code review from
+    -- that user.
+    --
+    -- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+    -- Services account ID or an Amazon Resource Name (ARN). For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+    -- in the /Amazon Web Services Identity and Access Management User Guide/.
+    userIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+    -- object.
+    codeReviewArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRecommendationFeedback' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listRecommendationFeedback_maxResults' - The maximum number of results that are returned per call. The default is
+-- 100.
+--
+-- 'nextToken', 'listRecommendationFeedback_nextToken' - If @nextToken@ is returned, there are more results available. The value
+-- of @nextToken@ is a unique pagination token for each page. Make the call
+-- again using the returned token to retrieve the next page. Keep all other
+-- arguments unchanged.
+--
+-- 'recommendationIds', 'listRecommendationFeedback_recommendationIds' - Used to query the recommendation feedback for a given recommendation.
+--
+-- 'userIds', 'listRecommendationFeedback_userIds' - An Amazon Web Services user\'s account ID or Amazon Resource Name (ARN).
+-- Use this ID to query the recommendation feedback for a code review from
+-- that user.
+--
+-- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+-- Services account ID or an Amazon Resource Name (ARN). For more
+-- information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+--
+-- 'codeReviewArn', 'listRecommendationFeedback_codeReviewArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+newListRecommendationFeedback ::
+  -- | 'codeReviewArn'
+  Prelude.Text ->
+  ListRecommendationFeedback
+newListRecommendationFeedback pCodeReviewArn_ =
+  ListRecommendationFeedback'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      recommendationIds = Prelude.Nothing,
+      userIds = Prelude.Nothing,
+      codeReviewArn = pCodeReviewArn_
+    }
+
+-- | The maximum number of results that are returned per call. The default is
+-- 100.
+listRecommendationFeedback_maxResults :: Lens.Lens' ListRecommendationFeedback (Prelude.Maybe Prelude.Natural)
+listRecommendationFeedback_maxResults = Lens.lens (\ListRecommendationFeedback' {maxResults} -> maxResults) (\s@ListRecommendationFeedback' {} a -> s {maxResults = a} :: ListRecommendationFeedback)
+
+-- | If @nextToken@ is returned, there are more results available. The value
+-- of @nextToken@ is a unique pagination token for each page. Make the call
+-- again using the returned token to retrieve the next page. Keep all other
+-- arguments unchanged.
+listRecommendationFeedback_nextToken :: Lens.Lens' ListRecommendationFeedback (Prelude.Maybe Prelude.Text)
+listRecommendationFeedback_nextToken = Lens.lens (\ListRecommendationFeedback' {nextToken} -> nextToken) (\s@ListRecommendationFeedback' {} a -> s {nextToken = a} :: ListRecommendationFeedback)
+
+-- | Used to query the recommendation feedback for a given recommendation.
+listRecommendationFeedback_recommendationIds :: Lens.Lens' ListRecommendationFeedback (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listRecommendationFeedback_recommendationIds = Lens.lens (\ListRecommendationFeedback' {recommendationIds} -> recommendationIds) (\s@ListRecommendationFeedback' {} a -> s {recommendationIds = a} :: ListRecommendationFeedback) Prelude.. Lens.mapping Lens.coerced
+
+-- | An Amazon Web Services user\'s account ID or Amazon Resource Name (ARN).
+-- Use this ID to query the recommendation feedback for a code review from
+-- that user.
+--
+-- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+-- Services account ID or an Amazon Resource Name (ARN). For more
+-- information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+listRecommendationFeedback_userIds :: Lens.Lens' ListRecommendationFeedback (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listRecommendationFeedback_userIds = Lens.lens (\ListRecommendationFeedback' {userIds} -> userIds) (\s@ListRecommendationFeedback' {} a -> s {userIds = a} :: ListRecommendationFeedback) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+listRecommendationFeedback_codeReviewArn :: Lens.Lens' ListRecommendationFeedback Prelude.Text
+listRecommendationFeedback_codeReviewArn = Lens.lens (\ListRecommendationFeedback' {codeReviewArn} -> codeReviewArn) (\s@ListRecommendationFeedback' {} a -> s {codeReviewArn = a} :: ListRecommendationFeedback)
+
+instance Core.AWSRequest ListRecommendationFeedback where
+  type
+    AWSResponse ListRecommendationFeedback =
+      ListRecommendationFeedbackResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRecommendationFeedbackResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "RecommendationFeedbackSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListRecommendationFeedback where
+  hashWithSalt _salt ListRecommendationFeedback' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` recommendationIds
+      `Prelude.hashWithSalt` userIds
+      `Prelude.hashWithSalt` codeReviewArn
+
+instance Prelude.NFData ListRecommendationFeedback where
+  rnf ListRecommendationFeedback' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf recommendationIds
+      `Prelude.seq` Prelude.rnf userIds
+      `Prelude.seq` Prelude.rnf codeReviewArn
+
+instance Data.ToHeaders ListRecommendationFeedback where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListRecommendationFeedback where
+  toPath ListRecommendationFeedback' {..} =
+    Prelude.mconcat
+      [ "/feedback/",
+        Data.toBS codeReviewArn,
+        "/RecommendationFeedback"
+      ]
+
+instance Data.ToQuery ListRecommendationFeedback where
+  toQuery ListRecommendationFeedback' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken,
+        "RecommendationIds"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> recommendationIds
+            ),
+        "UserIds"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> userIds)
+      ]
+
+-- | /See:/ 'newListRecommendationFeedbackResponse' smart constructor.
+data ListRecommendationFeedbackResponse = ListRecommendationFeedbackResponse'
+  { -- | If @nextToken@ is returned, there are more results available. The value
+    -- of @nextToken@ is a unique pagination token for each page. Make the call
+    -- again using the returned token to retrieve the next page. Keep all other
+    -- arguments unchanged.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Recommendation feedback summaries corresponding to the code review ARN.
+    recommendationFeedbackSummaries :: Prelude.Maybe [RecommendationFeedbackSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRecommendationFeedbackResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRecommendationFeedbackResponse_nextToken' - If @nextToken@ is returned, there are more results available. The value
+-- of @nextToken@ is a unique pagination token for each page. Make the call
+-- again using the returned token to retrieve the next page. Keep all other
+-- arguments unchanged.
+--
+-- 'recommendationFeedbackSummaries', 'listRecommendationFeedbackResponse_recommendationFeedbackSummaries' - Recommendation feedback summaries corresponding to the code review ARN.
+--
+-- 'httpStatus', 'listRecommendationFeedbackResponse_httpStatus' - The response's http status code.
+newListRecommendationFeedbackResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRecommendationFeedbackResponse
+newListRecommendationFeedbackResponse pHttpStatus_ =
+  ListRecommendationFeedbackResponse'
+    { nextToken =
+        Prelude.Nothing,
+      recommendationFeedbackSummaries =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If @nextToken@ is returned, there are more results available. The value
+-- of @nextToken@ is a unique pagination token for each page. Make the call
+-- again using the returned token to retrieve the next page. Keep all other
+-- arguments unchanged.
+listRecommendationFeedbackResponse_nextToken :: Lens.Lens' ListRecommendationFeedbackResponse (Prelude.Maybe Prelude.Text)
+listRecommendationFeedbackResponse_nextToken = Lens.lens (\ListRecommendationFeedbackResponse' {nextToken} -> nextToken) (\s@ListRecommendationFeedbackResponse' {} a -> s {nextToken = a} :: ListRecommendationFeedbackResponse)
+
+-- | Recommendation feedback summaries corresponding to the code review ARN.
+listRecommendationFeedbackResponse_recommendationFeedbackSummaries :: Lens.Lens' ListRecommendationFeedbackResponse (Prelude.Maybe [RecommendationFeedbackSummary])
+listRecommendationFeedbackResponse_recommendationFeedbackSummaries = Lens.lens (\ListRecommendationFeedbackResponse' {recommendationFeedbackSummaries} -> recommendationFeedbackSummaries) (\s@ListRecommendationFeedbackResponse' {} a -> s {recommendationFeedbackSummaries = a} :: ListRecommendationFeedbackResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRecommendationFeedbackResponse_httpStatus :: Lens.Lens' ListRecommendationFeedbackResponse Prelude.Int
+listRecommendationFeedbackResponse_httpStatus = Lens.lens (\ListRecommendationFeedbackResponse' {httpStatus} -> httpStatus) (\s@ListRecommendationFeedbackResponse' {} a -> s {httpStatus = a} :: ListRecommendationFeedbackResponse)
+
+instance
+  Prelude.NFData
+    ListRecommendationFeedbackResponse
+  where
+  rnf ListRecommendationFeedbackResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf recommendationFeedbackSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/ListRecommendations.hs b/gen/Amazonka/CodeGuruReviewer/ListRecommendations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/ListRecommendations.hs
@@ -0,0 +1,218 @@
+{-# 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.CodeGuruReviewer.ListRecommendations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the list of all recommendations for a completed code review.
+module Amazonka.CodeGuruReviewer.ListRecommendations
+  ( -- * Creating a Request
+    ListRecommendations (..),
+    newListRecommendations,
+
+    -- * Request Lenses
+    listRecommendations_maxResults,
+    listRecommendations_nextToken,
+    listRecommendations_codeReviewArn,
+
+    -- * Destructuring the Response
+    ListRecommendationsResponse (..),
+    newListRecommendationsResponse,
+
+    -- * Response Lenses
+    listRecommendationsResponse_nextToken,
+    listRecommendationsResponse_recommendationSummaries,
+    listRecommendationsResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListRecommendations' smart constructor.
+data ListRecommendations = ListRecommendations'
+  { -- | The maximum number of results that are returned per call. The default is
+    -- 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Pagination token.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+    -- object.
+    codeReviewArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRecommendations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listRecommendations_maxResults' - The maximum number of results that are returned per call. The default is
+-- 100.
+--
+-- 'nextToken', 'listRecommendations_nextToken' - Pagination token.
+--
+-- 'codeReviewArn', 'listRecommendations_codeReviewArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+newListRecommendations ::
+  -- | 'codeReviewArn'
+  Prelude.Text ->
+  ListRecommendations
+newListRecommendations pCodeReviewArn_ =
+  ListRecommendations'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      codeReviewArn = pCodeReviewArn_
+    }
+
+-- | The maximum number of results that are returned per call. The default is
+-- 100.
+listRecommendations_maxResults :: Lens.Lens' ListRecommendations (Prelude.Maybe Prelude.Natural)
+listRecommendations_maxResults = Lens.lens (\ListRecommendations' {maxResults} -> maxResults) (\s@ListRecommendations' {} a -> s {maxResults = a} :: ListRecommendations)
+
+-- | Pagination token.
+listRecommendations_nextToken :: Lens.Lens' ListRecommendations (Prelude.Maybe Prelude.Text)
+listRecommendations_nextToken = Lens.lens (\ListRecommendations' {nextToken} -> nextToken) (\s@ListRecommendations' {} a -> s {nextToken = a} :: ListRecommendations)
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+listRecommendations_codeReviewArn :: Lens.Lens' ListRecommendations Prelude.Text
+listRecommendations_codeReviewArn = Lens.lens (\ListRecommendations' {codeReviewArn} -> codeReviewArn) (\s@ListRecommendations' {} a -> s {codeReviewArn = a} :: ListRecommendations)
+
+instance Core.AWSRequest ListRecommendations where
+  type
+    AWSResponse ListRecommendations =
+      ListRecommendationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRecommendationsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "RecommendationSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListRecommendations where
+  hashWithSalt _salt ListRecommendations' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` codeReviewArn
+
+instance Prelude.NFData ListRecommendations where
+  rnf ListRecommendations' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf codeReviewArn
+
+instance Data.ToHeaders ListRecommendations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListRecommendations where
+  toPath ListRecommendations' {..} =
+    Prelude.mconcat
+      [ "/codereviews/",
+        Data.toBS codeReviewArn,
+        "/Recommendations"
+      ]
+
+instance Data.ToQuery ListRecommendations where
+  toQuery ListRecommendations' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListRecommendationsResponse' smart constructor.
+data ListRecommendationsResponse = ListRecommendationsResponse'
+  { -- | Pagination token.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of recommendations for the requested code review.
+    recommendationSummaries :: Prelude.Maybe [RecommendationSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRecommendationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRecommendationsResponse_nextToken' - Pagination token.
+--
+-- 'recommendationSummaries', 'listRecommendationsResponse_recommendationSummaries' - List of recommendations for the requested code review.
+--
+-- 'httpStatus', 'listRecommendationsResponse_httpStatus' - The response's http status code.
+newListRecommendationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRecommendationsResponse
+newListRecommendationsResponse pHttpStatus_ =
+  ListRecommendationsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      recommendationSummaries = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Pagination token.
+listRecommendationsResponse_nextToken :: Lens.Lens' ListRecommendationsResponse (Prelude.Maybe Prelude.Text)
+listRecommendationsResponse_nextToken = Lens.lens (\ListRecommendationsResponse' {nextToken} -> nextToken) (\s@ListRecommendationsResponse' {} a -> s {nextToken = a} :: ListRecommendationsResponse)
+
+-- | List of recommendations for the requested code review.
+listRecommendationsResponse_recommendationSummaries :: Lens.Lens' ListRecommendationsResponse (Prelude.Maybe [RecommendationSummary])
+listRecommendationsResponse_recommendationSummaries = Lens.lens (\ListRecommendationsResponse' {recommendationSummaries} -> recommendationSummaries) (\s@ListRecommendationsResponse' {} a -> s {recommendationSummaries = a} :: ListRecommendationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRecommendationsResponse_httpStatus :: Lens.Lens' ListRecommendationsResponse Prelude.Int
+listRecommendationsResponse_httpStatus = Lens.lens (\ListRecommendationsResponse' {httpStatus} -> httpStatus) (\s@ListRecommendationsResponse' {} a -> s {httpStatus = a} :: ListRecommendationsResponse)
+
+instance Prelude.NFData ListRecommendationsResponse where
+  rnf ListRecommendationsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf recommendationSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/ListRepositoryAssociations.hs b/gen/Amazonka/CodeGuruReviewer/ListRepositoryAssociations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/ListRepositoryAssociations.hs
@@ -0,0 +1,445 @@
+{-# 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.CodeGuruReviewer.ListRepositoryAssociations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociationSummary.html RepositoryAssociationSummary>
+-- objects that contain summary information about a repository association.
+-- You can filter the returned list by
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociationSummary.html#reviewer-Type-RepositoryAssociationSummary-ProviderType ProviderType>,
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociationSummary.html#reviewer-Type-RepositoryAssociationSummary-Name Name>,
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociationSummary.html#reviewer-Type-RepositoryAssociationSummary-State State>,
+-- and
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociationSummary.html#reviewer-Type-RepositoryAssociationSummary-Owner Owner>.
+--
+-- This operation returns paginated results.
+module Amazonka.CodeGuruReviewer.ListRepositoryAssociations
+  ( -- * Creating a Request
+    ListRepositoryAssociations (..),
+    newListRepositoryAssociations,
+
+    -- * Request Lenses
+    listRepositoryAssociations_maxResults,
+    listRepositoryAssociations_names,
+    listRepositoryAssociations_nextToken,
+    listRepositoryAssociations_owners,
+    listRepositoryAssociations_providerTypes,
+    listRepositoryAssociations_states,
+
+    -- * Destructuring the Response
+    ListRepositoryAssociationsResponse (..),
+    newListRepositoryAssociationsResponse,
+
+    -- * Response Lenses
+    listRepositoryAssociationsResponse_nextToken,
+    listRepositoryAssociationsResponse_repositoryAssociationSummaries,
+    listRepositoryAssociationsResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListRepositoryAssociations' smart constructor.
+data ListRepositoryAssociations = ListRepositoryAssociations'
+  { -- | The maximum number of repository association results returned by
+    -- @ListRepositoryAssociations@ in paginated output. When this parameter is
+    -- used, @ListRepositoryAssociations@ only returns @maxResults@ results in
+    -- a single page with a @nextToken@ response element. The remaining results
+    -- of the initial request can be seen by sending another
+    -- @ListRepositoryAssociations@ request with the returned @nextToken@
+    -- value. This value can be between 1 and 100. If this parameter is not
+    -- used, @ListRepositoryAssociations@ returns up to 100 results and a
+    -- @nextToken@ value if applicable.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | List of repository names to use as a filter.
+    names :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The @nextToken@ value returned from a previous paginated
+    -- @ListRepositoryAssociations@ request where @maxResults@ was used and the
+    -- results exceeded the value of that parameter. Pagination continues from
+    -- the end of the previous results that returned the @nextToken@ value.
+    --
+    -- Treat this token as an opaque identifier that is only used to retrieve
+    -- the next items in a list and not for other programmatic purposes.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | List of owners to use as a filter. For Amazon Web Services CodeCommit,
+    -- it is the name of the CodeCommit account that was used to associate the
+    -- repository. For other repository source providers, such as Bitbucket and
+    -- GitHub Enterprise Server, this is name of the account that was used to
+    -- associate the repository.
+    owners :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | List of provider types to use as a filter.
+    providerTypes :: Prelude.Maybe (Prelude.NonEmpty ProviderType),
+    -- | List of repository association states to use as a filter.
+    --
+    -- The valid repository association states are:
+    --
+    -- -   __Associated__: The repository association is complete.
+    --
+    -- -   __Associating__: CodeGuru Reviewer is:
+    --
+    --     -   Setting up pull request notifications. This is required for pull
+    --         requests to trigger a CodeGuru Reviewer review.
+    --
+    --         If your repository @ProviderType@ is @GitHub@,
+    --         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+    --         creates webhooks in your repository to trigger CodeGuru Reviewer
+    --         reviews. If you delete these webhooks, reviews of code in your
+    --         repository cannot be triggered.
+    --
+    --     -   Setting up source code access. This is required for CodeGuru
+    --         Reviewer to securely clone code in your repository.
+    --
+    -- -   __Failed__: The repository failed to associate or disassociate.
+    --
+    -- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+    --     pull request notifications and source code access.
+    --
+    -- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+    --     repository. You can create a new association with this repository if
+    --     you want to review source code in it later. You can control access
+    --     to code reviews created in anassociated repository with tags after
+    --     it has been disassociated. For more information, see
+    --     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+    --     in the /Amazon CodeGuru Reviewer User Guide/.
+    states :: Prelude.Maybe (Prelude.NonEmpty RepositoryAssociationState)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRepositoryAssociations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listRepositoryAssociations_maxResults' - The maximum number of repository association results returned by
+-- @ListRepositoryAssociations@ in paginated output. When this parameter is
+-- used, @ListRepositoryAssociations@ only returns @maxResults@ results in
+-- a single page with a @nextToken@ response element. The remaining results
+-- of the initial request can be seen by sending another
+-- @ListRepositoryAssociations@ request with the returned @nextToken@
+-- value. This value can be between 1 and 100. If this parameter is not
+-- used, @ListRepositoryAssociations@ returns up to 100 results and a
+-- @nextToken@ value if applicable.
+--
+-- 'names', 'listRepositoryAssociations_names' - List of repository names to use as a filter.
+--
+-- 'nextToken', 'listRepositoryAssociations_nextToken' - The @nextToken@ value returned from a previous paginated
+-- @ListRepositoryAssociations@ request where @maxResults@ was used and the
+-- results exceeded the value of that parameter. Pagination continues from
+-- the end of the previous results that returned the @nextToken@ value.
+--
+-- Treat this token as an opaque identifier that is only used to retrieve
+-- the next items in a list and not for other programmatic purposes.
+--
+-- 'owners', 'listRepositoryAssociations_owners' - List of owners to use as a filter. For Amazon Web Services CodeCommit,
+-- it is the name of the CodeCommit account that was used to associate the
+-- repository. For other repository source providers, such as Bitbucket and
+-- GitHub Enterprise Server, this is name of the account that was used to
+-- associate the repository.
+--
+-- 'providerTypes', 'listRepositoryAssociations_providerTypes' - List of provider types to use as a filter.
+--
+-- 'states', 'listRepositoryAssociations_states' - List of repository association states to use as a filter.
+--
+-- The valid repository association states are:
+--
+-- -   __Associated__: The repository association is complete.
+--
+-- -   __Associating__: CodeGuru Reviewer is:
+--
+--     -   Setting up pull request notifications. This is required for pull
+--         requests to trigger a CodeGuru Reviewer review.
+--
+--         If your repository @ProviderType@ is @GitHub@,
+--         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+--         creates webhooks in your repository to trigger CodeGuru Reviewer
+--         reviews. If you delete these webhooks, reviews of code in your
+--         repository cannot be triggered.
+--
+--     -   Setting up source code access. This is required for CodeGuru
+--         Reviewer to securely clone code in your repository.
+--
+-- -   __Failed__: The repository failed to associate or disassociate.
+--
+-- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+--     pull request notifications and source code access.
+--
+-- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+--     repository. You can create a new association with this repository if
+--     you want to review source code in it later. You can control access
+--     to code reviews created in anassociated repository with tags after
+--     it has been disassociated. For more information, see
+--     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+--     in the /Amazon CodeGuru Reviewer User Guide/.
+newListRepositoryAssociations ::
+  ListRepositoryAssociations
+newListRepositoryAssociations =
+  ListRepositoryAssociations'
+    { maxResults =
+        Prelude.Nothing,
+      names = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      owners = Prelude.Nothing,
+      providerTypes = Prelude.Nothing,
+      states = Prelude.Nothing
+    }
+
+-- | The maximum number of repository association results returned by
+-- @ListRepositoryAssociations@ in paginated output. When this parameter is
+-- used, @ListRepositoryAssociations@ only returns @maxResults@ results in
+-- a single page with a @nextToken@ response element. The remaining results
+-- of the initial request can be seen by sending another
+-- @ListRepositoryAssociations@ request with the returned @nextToken@
+-- value. This value can be between 1 and 100. If this parameter is not
+-- used, @ListRepositoryAssociations@ returns up to 100 results and a
+-- @nextToken@ value if applicable.
+listRepositoryAssociations_maxResults :: Lens.Lens' ListRepositoryAssociations (Prelude.Maybe Prelude.Natural)
+listRepositoryAssociations_maxResults = Lens.lens (\ListRepositoryAssociations' {maxResults} -> maxResults) (\s@ListRepositoryAssociations' {} a -> s {maxResults = a} :: ListRepositoryAssociations)
+
+-- | List of repository names to use as a filter.
+listRepositoryAssociations_names :: Lens.Lens' ListRepositoryAssociations (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listRepositoryAssociations_names = Lens.lens (\ListRepositoryAssociations' {names} -> names) (\s@ListRepositoryAssociations' {} a -> s {names = a} :: ListRepositoryAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | The @nextToken@ value returned from a previous paginated
+-- @ListRepositoryAssociations@ request where @maxResults@ was used and the
+-- results exceeded the value of that parameter. Pagination continues from
+-- the end of the previous results that returned the @nextToken@ value.
+--
+-- Treat this token as an opaque identifier that is only used to retrieve
+-- the next items in a list and not for other programmatic purposes.
+listRepositoryAssociations_nextToken :: Lens.Lens' ListRepositoryAssociations (Prelude.Maybe Prelude.Text)
+listRepositoryAssociations_nextToken = Lens.lens (\ListRepositoryAssociations' {nextToken} -> nextToken) (\s@ListRepositoryAssociations' {} a -> s {nextToken = a} :: ListRepositoryAssociations)
+
+-- | List of owners to use as a filter. For Amazon Web Services CodeCommit,
+-- it is the name of the CodeCommit account that was used to associate the
+-- repository. For other repository source providers, such as Bitbucket and
+-- GitHub Enterprise Server, this is name of the account that was used to
+-- associate the repository.
+listRepositoryAssociations_owners :: Lens.Lens' ListRepositoryAssociations (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+listRepositoryAssociations_owners = Lens.lens (\ListRepositoryAssociations' {owners} -> owners) (\s@ListRepositoryAssociations' {} a -> s {owners = a} :: ListRepositoryAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of provider types to use as a filter.
+listRepositoryAssociations_providerTypes :: Lens.Lens' ListRepositoryAssociations (Prelude.Maybe (Prelude.NonEmpty ProviderType))
+listRepositoryAssociations_providerTypes = Lens.lens (\ListRepositoryAssociations' {providerTypes} -> providerTypes) (\s@ListRepositoryAssociations' {} a -> s {providerTypes = a} :: ListRepositoryAssociations) Prelude.. Lens.mapping Lens.coerced
+
+-- | List of repository association states to use as a filter.
+--
+-- The valid repository association states are:
+--
+-- -   __Associated__: The repository association is complete.
+--
+-- -   __Associating__: CodeGuru Reviewer is:
+--
+--     -   Setting up pull request notifications. This is required for pull
+--         requests to trigger a CodeGuru Reviewer review.
+--
+--         If your repository @ProviderType@ is @GitHub@,
+--         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+--         creates webhooks in your repository to trigger CodeGuru Reviewer
+--         reviews. If you delete these webhooks, reviews of code in your
+--         repository cannot be triggered.
+--
+--     -   Setting up source code access. This is required for CodeGuru
+--         Reviewer to securely clone code in your repository.
+--
+-- -   __Failed__: The repository failed to associate or disassociate.
+--
+-- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+--     pull request notifications and source code access.
+--
+-- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+--     repository. You can create a new association with this repository if
+--     you want to review source code in it later. You can control access
+--     to code reviews created in anassociated repository with tags after
+--     it has been disassociated. For more information, see
+--     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+--     in the /Amazon CodeGuru Reviewer User Guide/.
+listRepositoryAssociations_states :: Lens.Lens' ListRepositoryAssociations (Prelude.Maybe (Prelude.NonEmpty RepositoryAssociationState))
+listRepositoryAssociations_states = Lens.lens (\ListRepositoryAssociations' {states} -> states) (\s@ListRepositoryAssociations' {} a -> s {states = a} :: ListRepositoryAssociations) Prelude.. Lens.mapping Lens.coerced
+
+instance Core.AWSPager ListRepositoryAssociations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listRepositoryAssociationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listRepositoryAssociationsResponse_repositoryAssociationSummaries
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listRepositoryAssociations_nextToken
+          Lens..~ rs
+          Lens.^? listRepositoryAssociationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListRepositoryAssociations where
+  type
+    AWSResponse ListRepositoryAssociations =
+      ListRepositoryAssociationsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRepositoryAssociationsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> ( x
+                            Data..?> "RepositoryAssociationSummaries"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListRepositoryAssociations where
+  hashWithSalt _salt ListRepositoryAssociations' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` names
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` owners
+      `Prelude.hashWithSalt` providerTypes
+      `Prelude.hashWithSalt` states
+
+instance Prelude.NFData ListRepositoryAssociations where
+  rnf ListRepositoryAssociations' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf names
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf owners
+      `Prelude.seq` Prelude.rnf providerTypes
+      `Prelude.seq` Prelude.rnf states
+
+instance Data.ToHeaders ListRepositoryAssociations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListRepositoryAssociations where
+  toPath = Prelude.const "/associations"
+
+instance Data.ToQuery ListRepositoryAssociations where
+  toQuery ListRepositoryAssociations' {..} =
+    Prelude.mconcat
+      [ "MaxResults" Data.=: maxResults,
+        "Name"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> names),
+        "NextToken" Data.=: nextToken,
+        "Owner"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> owners),
+        "ProviderType"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> providerTypes
+            ),
+        "State"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> states)
+      ]
+
+-- | /See:/ 'newListRepositoryAssociationsResponse' smart constructor.
+data ListRepositoryAssociationsResponse = ListRepositoryAssociationsResponse'
+  { -- | The @nextToken@ value to include in a future @ListRecommendations@
+    -- request. When the results of a @ListRecommendations@ request exceed
+    -- @maxResults@, this value can be used to retrieve the next page of
+    -- results. This value is @null@ when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of repository associations that meet the criteria of the request.
+    repositoryAssociationSummaries :: Prelude.Maybe [RepositoryAssociationSummary],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRepositoryAssociationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRepositoryAssociationsResponse_nextToken' - The @nextToken@ value to include in a future @ListRecommendations@
+-- request. When the results of a @ListRecommendations@ request exceed
+-- @maxResults@, this value can be used to retrieve the next page of
+-- results. This value is @null@ when there are no more results to return.
+--
+-- 'repositoryAssociationSummaries', 'listRepositoryAssociationsResponse_repositoryAssociationSummaries' - A list of repository associations that meet the criteria of the request.
+--
+-- 'httpStatus', 'listRepositoryAssociationsResponse_httpStatus' - The response's http status code.
+newListRepositoryAssociationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRepositoryAssociationsResponse
+newListRepositoryAssociationsResponse pHttpStatus_ =
+  ListRepositoryAssociationsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      repositoryAssociationSummaries =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The @nextToken@ value to include in a future @ListRecommendations@
+-- request. When the results of a @ListRecommendations@ request exceed
+-- @maxResults@, this value can be used to retrieve the next page of
+-- results. This value is @null@ when there are no more results to return.
+listRepositoryAssociationsResponse_nextToken :: Lens.Lens' ListRepositoryAssociationsResponse (Prelude.Maybe Prelude.Text)
+listRepositoryAssociationsResponse_nextToken = Lens.lens (\ListRepositoryAssociationsResponse' {nextToken} -> nextToken) (\s@ListRepositoryAssociationsResponse' {} a -> s {nextToken = a} :: ListRepositoryAssociationsResponse)
+
+-- | A list of repository associations that meet the criteria of the request.
+listRepositoryAssociationsResponse_repositoryAssociationSummaries :: Lens.Lens' ListRepositoryAssociationsResponse (Prelude.Maybe [RepositoryAssociationSummary])
+listRepositoryAssociationsResponse_repositoryAssociationSummaries = Lens.lens (\ListRepositoryAssociationsResponse' {repositoryAssociationSummaries} -> repositoryAssociationSummaries) (\s@ListRepositoryAssociationsResponse' {} a -> s {repositoryAssociationSummaries = a} :: ListRepositoryAssociationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listRepositoryAssociationsResponse_httpStatus :: Lens.Lens' ListRepositoryAssociationsResponse Prelude.Int
+listRepositoryAssociationsResponse_httpStatus = Lens.lens (\ListRepositoryAssociationsResponse' {httpStatus} -> httpStatus) (\s@ListRepositoryAssociationsResponse' {} a -> s {httpStatus = a} :: ListRepositoryAssociationsResponse)
+
+instance
+  Prelude.NFData
+    ListRepositoryAssociationsResponse
+  where
+  rnf ListRepositoryAssociationsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf repositoryAssociationSummaries
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/ListTagsForResource.hs b/gen/Amazonka/CodeGuruReviewer/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/ListTagsForResource.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the list of tags associated with an associated repository
+-- resource.
+module Amazonka.CodeGuruReviewer.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+    -- object. You can retrieve this ARN by calling
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+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'
+  { -- | An array of key-value pairs used to tag an associated repository. A tag
+    -- is a custom attribute label with two parts:
+    --
+    -- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+    --     @Secret@). Tag keys are case sensitive.
+    --
+    -- -   An optional field known as a /tag value/ (for example,
+    --     @111122223333@, @Production@, or a team name). Omitting the tag
+    --     value is the same as using an empty string. Like tag keys, tag
+    --     values are case sensitive.
+    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' - An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+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/CodeGuruReviewer/PutRecommendationFeedback.hs b/gen/Amazonka/CodeGuruReviewer/PutRecommendationFeedback.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/PutRecommendationFeedback.hs
@@ -0,0 +1,207 @@
+{-# 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.CodeGuruReviewer.PutRecommendationFeedback
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stores customer feedback for a CodeGuru Reviewer recommendation. When
+-- this API is called again with different reactions the previous feedback
+-- is overwritten.
+module Amazonka.CodeGuruReviewer.PutRecommendationFeedback
+  ( -- * Creating a Request
+    PutRecommendationFeedback (..),
+    newPutRecommendationFeedback,
+
+    -- * Request Lenses
+    putRecommendationFeedback_codeReviewArn,
+    putRecommendationFeedback_recommendationId,
+    putRecommendationFeedback_reactions,
+
+    -- * Destructuring the Response
+    PutRecommendationFeedbackResponse (..),
+    newPutRecommendationFeedbackResponse,
+
+    -- * Response Lenses
+    putRecommendationFeedbackResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newPutRecommendationFeedback' smart constructor.
+data PutRecommendationFeedback = PutRecommendationFeedback'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+    -- object.
+    codeReviewArn :: Prelude.Text,
+    -- | The recommendation ID that can be used to track the provided
+    -- recommendations and then to collect the feedback.
+    recommendationId :: Prelude.Text,
+    -- | List for storing reactions. Reactions are utf-8 text code for emojis. If
+    -- you send an empty list it clears all your feedback.
+    reactions :: [Reaction]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutRecommendationFeedback' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'codeReviewArn', 'putRecommendationFeedback_codeReviewArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+--
+-- 'recommendationId', 'putRecommendationFeedback_recommendationId' - The recommendation ID that can be used to track the provided
+-- recommendations and then to collect the feedback.
+--
+-- 'reactions', 'putRecommendationFeedback_reactions' - List for storing reactions. Reactions are utf-8 text code for emojis. If
+-- you send an empty list it clears all your feedback.
+newPutRecommendationFeedback ::
+  -- | 'codeReviewArn'
+  Prelude.Text ->
+  -- | 'recommendationId'
+  Prelude.Text ->
+  PutRecommendationFeedback
+newPutRecommendationFeedback
+  pCodeReviewArn_
+  pRecommendationId_ =
+    PutRecommendationFeedback'
+      { codeReviewArn =
+          pCodeReviewArn_,
+        recommendationId = pRecommendationId_,
+        reactions = Prelude.mempty
+      }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+putRecommendationFeedback_codeReviewArn :: Lens.Lens' PutRecommendationFeedback Prelude.Text
+putRecommendationFeedback_codeReviewArn = Lens.lens (\PutRecommendationFeedback' {codeReviewArn} -> codeReviewArn) (\s@PutRecommendationFeedback' {} a -> s {codeReviewArn = a} :: PutRecommendationFeedback)
+
+-- | The recommendation ID that can be used to track the provided
+-- recommendations and then to collect the feedback.
+putRecommendationFeedback_recommendationId :: Lens.Lens' PutRecommendationFeedback Prelude.Text
+putRecommendationFeedback_recommendationId = Lens.lens (\PutRecommendationFeedback' {recommendationId} -> recommendationId) (\s@PutRecommendationFeedback' {} a -> s {recommendationId = a} :: PutRecommendationFeedback)
+
+-- | List for storing reactions. Reactions are utf-8 text code for emojis. If
+-- you send an empty list it clears all your feedback.
+putRecommendationFeedback_reactions :: Lens.Lens' PutRecommendationFeedback [Reaction]
+putRecommendationFeedback_reactions = Lens.lens (\PutRecommendationFeedback' {reactions} -> reactions) (\s@PutRecommendationFeedback' {} a -> s {reactions = a} :: PutRecommendationFeedback) Prelude.. Lens.coerced
+
+instance Core.AWSRequest PutRecommendationFeedback where
+  type
+    AWSResponse PutRecommendationFeedback =
+      PutRecommendationFeedbackResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          PutRecommendationFeedbackResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutRecommendationFeedback where
+  hashWithSalt _salt PutRecommendationFeedback' {..} =
+    _salt
+      `Prelude.hashWithSalt` codeReviewArn
+      `Prelude.hashWithSalt` recommendationId
+      `Prelude.hashWithSalt` reactions
+
+instance Prelude.NFData PutRecommendationFeedback where
+  rnf PutRecommendationFeedback' {..} =
+    Prelude.rnf codeReviewArn
+      `Prelude.seq` Prelude.rnf recommendationId
+      `Prelude.seq` Prelude.rnf reactions
+
+instance Data.ToHeaders PutRecommendationFeedback where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON PutRecommendationFeedback where
+  toJSON PutRecommendationFeedback' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CodeReviewArn" Data..= codeReviewArn),
+            Prelude.Just
+              ("RecommendationId" Data..= recommendationId),
+            Prelude.Just ("Reactions" Data..= reactions)
+          ]
+      )
+
+instance Data.ToPath PutRecommendationFeedback where
+  toPath = Prelude.const "/feedback"
+
+instance Data.ToQuery PutRecommendationFeedback where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newPutRecommendationFeedbackResponse' smart constructor.
+data PutRecommendationFeedbackResponse = PutRecommendationFeedbackResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutRecommendationFeedbackResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'putRecommendationFeedbackResponse_httpStatus' - The response's http status code.
+newPutRecommendationFeedbackResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutRecommendationFeedbackResponse
+newPutRecommendationFeedbackResponse pHttpStatus_ =
+  PutRecommendationFeedbackResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+putRecommendationFeedbackResponse_httpStatus :: Lens.Lens' PutRecommendationFeedbackResponse Prelude.Int
+putRecommendationFeedbackResponse_httpStatus = Lens.lens (\PutRecommendationFeedbackResponse' {httpStatus} -> httpStatus) (\s@PutRecommendationFeedbackResponse' {} a -> s {httpStatus = a} :: PutRecommendationFeedbackResponse)
+
+instance
+  Prelude.NFData
+    PutRecommendationFeedbackResponse
+  where
+  rnf PutRecommendationFeedbackResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/TagResource.hs b/gen/Amazonka/CodeGuruReviewer/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/TagResource.hs
@@ -0,0 +1,199 @@
+{-# 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.CodeGuruReviewer.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds one or more tags to an associated repository.
+module Amazonka.CodeGuruReviewer.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+    -- object. You can retrieve this ARN by calling
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+    resourceArn :: Prelude.Text,
+    -- | An array of key-value pairs used to tag an associated repository. A tag
+    -- is a custom attribute label with two parts:
+    --
+    -- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+    --     @Secret@). Tag keys are case sensitive.
+    --
+    -- -   An optional field known as a /tag value/ (for example,
+    --     @111122223333@, @Production@, or a team name). Omitting the tag
+    --     value is the same as using an empty string. Like tag keys, tag
+    --     values are case sensitive.
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+--
+-- 'tags', 'tagResource_tags' - An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | An array of key-value pairs used to tag an associated repository. A tag
+-- is a custom attribute label with two parts:
+--
+-- -   A /tag key/ (for example, @CostCenter@, @Environment@, @Project@, or
+--     @Secret@). Tag keys are case sensitive.
+--
+-- -   An optional field known as a /tag value/ (for example,
+--     @111122223333@, @Production@, or a team name). Omitting the tag
+--     value is the same as using an empty string. Like tag keys, tag
+--     values are case sensitive.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/Types.hs b/gen/Amazonka/CodeGuruReviewer/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types.hs
@@ -0,0 +1,452 @@
+{-# 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.CodeGuruReviewer.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.CodeGuruReviewer.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _NotFoundException,
+    _ResourceNotFoundException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * AnalysisType
+    AnalysisType (..),
+
+    -- * ConfigFileState
+    ConfigFileState (..),
+
+    -- * EncryptionOption
+    EncryptionOption (..),
+
+    -- * JobState
+    JobState (..),
+
+    -- * ProviderType
+    ProviderType (..),
+
+    -- * Reaction
+    Reaction (..),
+
+    -- * RecommendationCategory
+    RecommendationCategory (..),
+
+    -- * RepositoryAssociationState
+    RepositoryAssociationState (..),
+
+    -- * Severity
+    Severity (..),
+
+    -- * Type
+    Type (..),
+
+    -- * VendorName
+    VendorName (..),
+
+    -- * BranchDiffSourceCodeType
+    BranchDiffSourceCodeType (..),
+    newBranchDiffSourceCodeType,
+    branchDiffSourceCodeType_sourceBranchName,
+    branchDiffSourceCodeType_destinationBranchName,
+
+    -- * CodeArtifacts
+    CodeArtifacts (..),
+    newCodeArtifacts,
+    codeArtifacts_buildArtifactsObjectKey,
+    codeArtifacts_sourceCodeArtifactsObjectKey,
+
+    -- * CodeCommitRepository
+    CodeCommitRepository (..),
+    newCodeCommitRepository,
+    codeCommitRepository_name,
+
+    -- * CodeReview
+    CodeReview (..),
+    newCodeReview,
+    codeReview_analysisTypes,
+    codeReview_associationArn,
+    codeReview_codeReviewArn,
+    codeReview_configFileState,
+    codeReview_createdTimeStamp,
+    codeReview_lastUpdatedTimeStamp,
+    codeReview_metrics,
+    codeReview_name,
+    codeReview_owner,
+    codeReview_providerType,
+    codeReview_pullRequestId,
+    codeReview_repositoryName,
+    codeReview_sourceCodeType,
+    codeReview_state,
+    codeReview_stateReason,
+    codeReview_type,
+
+    -- * CodeReviewSummary
+    CodeReviewSummary (..),
+    newCodeReviewSummary,
+    codeReviewSummary_codeReviewArn,
+    codeReviewSummary_createdTimeStamp,
+    codeReviewSummary_lastUpdatedTimeStamp,
+    codeReviewSummary_metricsSummary,
+    codeReviewSummary_name,
+    codeReviewSummary_owner,
+    codeReviewSummary_providerType,
+    codeReviewSummary_pullRequestId,
+    codeReviewSummary_repositoryName,
+    codeReviewSummary_sourceCodeType,
+    codeReviewSummary_state,
+    codeReviewSummary_type,
+
+    -- * CodeReviewType
+    CodeReviewType (..),
+    newCodeReviewType,
+    codeReviewType_analysisTypes,
+    codeReviewType_repositoryAnalysis,
+
+    -- * CommitDiffSourceCodeType
+    CommitDiffSourceCodeType (..),
+    newCommitDiffSourceCodeType,
+    commitDiffSourceCodeType_destinationCommit,
+    commitDiffSourceCodeType_mergeBaseCommit,
+    commitDiffSourceCodeType_sourceCommit,
+
+    -- * EventInfo
+    EventInfo (..),
+    newEventInfo,
+    eventInfo_name,
+    eventInfo_state,
+
+    -- * KMSKeyDetails
+    KMSKeyDetails (..),
+    newKMSKeyDetails,
+    kmsKeyDetails_encryptionOption,
+    kmsKeyDetails_kmsKeyId,
+
+    -- * Metrics
+    Metrics (..),
+    newMetrics,
+    metrics_findingsCount,
+    metrics_meteredLinesOfCodeCount,
+    metrics_suppressedLinesOfCodeCount,
+
+    -- * MetricsSummary
+    MetricsSummary (..),
+    newMetricsSummary,
+    metricsSummary_findingsCount,
+    metricsSummary_meteredLinesOfCodeCount,
+    metricsSummary_suppressedLinesOfCodeCount,
+
+    -- * RecommendationFeedback
+    RecommendationFeedback (..),
+    newRecommendationFeedback,
+    recommendationFeedback_codeReviewArn,
+    recommendationFeedback_createdTimeStamp,
+    recommendationFeedback_lastUpdatedTimeStamp,
+    recommendationFeedback_reactions,
+    recommendationFeedback_recommendationId,
+    recommendationFeedback_userId,
+
+    -- * RecommendationFeedbackSummary
+    RecommendationFeedbackSummary (..),
+    newRecommendationFeedbackSummary,
+    recommendationFeedbackSummary_reactions,
+    recommendationFeedbackSummary_recommendationId,
+    recommendationFeedbackSummary_userId,
+
+    -- * RecommendationSummary
+    RecommendationSummary (..),
+    newRecommendationSummary,
+    recommendationSummary_description,
+    recommendationSummary_endLine,
+    recommendationSummary_filePath,
+    recommendationSummary_recommendationCategory,
+    recommendationSummary_recommendationId,
+    recommendationSummary_ruleMetadata,
+    recommendationSummary_severity,
+    recommendationSummary_startLine,
+
+    -- * Repository
+    Repository (..),
+    newRepository,
+    repository_bitbucket,
+    repository_codeCommit,
+    repository_gitHubEnterpriseServer,
+    repository_s3Bucket,
+
+    -- * RepositoryAnalysis
+    RepositoryAnalysis (..),
+    newRepositoryAnalysis,
+    repositoryAnalysis_repositoryHead,
+    repositoryAnalysis_sourceCodeType,
+
+    -- * RepositoryAssociation
+    RepositoryAssociation (..),
+    newRepositoryAssociation,
+    repositoryAssociation_associationArn,
+    repositoryAssociation_associationId,
+    repositoryAssociation_connectionArn,
+    repositoryAssociation_createdTimeStamp,
+    repositoryAssociation_kmsKeyDetails,
+    repositoryAssociation_lastUpdatedTimeStamp,
+    repositoryAssociation_name,
+    repositoryAssociation_owner,
+    repositoryAssociation_providerType,
+    repositoryAssociation_s3RepositoryDetails,
+    repositoryAssociation_state,
+    repositoryAssociation_stateReason,
+
+    -- * RepositoryAssociationSummary
+    RepositoryAssociationSummary (..),
+    newRepositoryAssociationSummary,
+    repositoryAssociationSummary_associationArn,
+    repositoryAssociationSummary_associationId,
+    repositoryAssociationSummary_connectionArn,
+    repositoryAssociationSummary_lastUpdatedTimeStamp,
+    repositoryAssociationSummary_name,
+    repositoryAssociationSummary_owner,
+    repositoryAssociationSummary_providerType,
+    repositoryAssociationSummary_state,
+
+    -- * RepositoryHeadSourceCodeType
+    RepositoryHeadSourceCodeType (..),
+    newRepositoryHeadSourceCodeType,
+    repositoryHeadSourceCodeType_branchName,
+
+    -- * RequestMetadata
+    RequestMetadata (..),
+    newRequestMetadata,
+    requestMetadata_eventInfo,
+    requestMetadata_requestId,
+    requestMetadata_requester,
+    requestMetadata_vendorName,
+
+    -- * RuleMetadata
+    RuleMetadata (..),
+    newRuleMetadata,
+    ruleMetadata_longDescription,
+    ruleMetadata_ruleId,
+    ruleMetadata_ruleName,
+    ruleMetadata_ruleTags,
+    ruleMetadata_shortDescription,
+
+    -- * S3BucketRepository
+    S3BucketRepository (..),
+    newS3BucketRepository,
+    s3BucketRepository_details,
+    s3BucketRepository_name,
+
+    -- * S3Repository
+    S3Repository (..),
+    newS3Repository,
+    s3Repository_name,
+    s3Repository_bucketName,
+
+    -- * S3RepositoryDetails
+    S3RepositoryDetails (..),
+    newS3RepositoryDetails,
+    s3RepositoryDetails_bucketName,
+    s3RepositoryDetails_codeArtifacts,
+
+    -- * SourceCodeType
+    SourceCodeType (..),
+    newSourceCodeType,
+    sourceCodeType_branchDiff,
+    sourceCodeType_commitDiff,
+    sourceCodeType_repositoryHead,
+    sourceCodeType_requestMetadata,
+    sourceCodeType_s3BucketRepository,
+
+    -- * ThirdPartySourceRepository
+    ThirdPartySourceRepository (..),
+    newThirdPartySourceRepository,
+    thirdPartySourceRepository_name,
+    thirdPartySourceRepository_connectionArn,
+    thirdPartySourceRepository_owner,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types.AnalysisType
+import Amazonka.CodeGuruReviewer.Types.BranchDiffSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.CodeArtifacts
+import Amazonka.CodeGuruReviewer.Types.CodeCommitRepository
+import Amazonka.CodeGuruReviewer.Types.CodeReview
+import Amazonka.CodeGuruReviewer.Types.CodeReviewSummary
+import Amazonka.CodeGuruReviewer.Types.CodeReviewType
+import Amazonka.CodeGuruReviewer.Types.CommitDiffSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.ConfigFileState
+import Amazonka.CodeGuruReviewer.Types.EncryptionOption
+import Amazonka.CodeGuruReviewer.Types.EventInfo
+import Amazonka.CodeGuruReviewer.Types.JobState
+import Amazonka.CodeGuruReviewer.Types.KMSKeyDetails
+import Amazonka.CodeGuruReviewer.Types.Metrics
+import Amazonka.CodeGuruReviewer.Types.MetricsSummary
+import Amazonka.CodeGuruReviewer.Types.ProviderType
+import Amazonka.CodeGuruReviewer.Types.Reaction
+import Amazonka.CodeGuruReviewer.Types.RecommendationCategory
+import Amazonka.CodeGuruReviewer.Types.RecommendationFeedback
+import Amazonka.CodeGuruReviewer.Types.RecommendationFeedbackSummary
+import Amazonka.CodeGuruReviewer.Types.RecommendationSummary
+import Amazonka.CodeGuruReviewer.Types.Repository
+import Amazonka.CodeGuruReviewer.Types.RepositoryAnalysis
+import Amazonka.CodeGuruReviewer.Types.RepositoryAssociation
+import Amazonka.CodeGuruReviewer.Types.RepositoryAssociationState
+import Amazonka.CodeGuruReviewer.Types.RepositoryAssociationSummary
+import Amazonka.CodeGuruReviewer.Types.RepositoryHeadSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.RequestMetadata
+import Amazonka.CodeGuruReviewer.Types.RuleMetadata
+import Amazonka.CodeGuruReviewer.Types.S3BucketRepository
+import Amazonka.CodeGuruReviewer.Types.S3Repository
+import Amazonka.CodeGuruReviewer.Types.S3RepositoryDetails
+import Amazonka.CodeGuruReviewer.Types.Severity
+import Amazonka.CodeGuruReviewer.Types.SourceCodeType
+import Amazonka.CodeGuruReviewer.Types.ThirdPartySourceRepository
+import Amazonka.CodeGuruReviewer.Types.Type
+import Amazonka.CodeGuruReviewer.Types.VendorName
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2019-09-19@ of the Amazon CodeGuru Reviewer SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "CodeGuruReviewer",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "codeguru-reviewer",
+      Core.signingName = "codeguru-reviewer",
+      Core.version = "2019-09-19",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "CodeGuruReviewer",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | You do not have sufficient access to perform this action.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+    Prelude.. Core.hasStatus 403
+
+-- | The requested operation would cause a conflict with the current state of
+-- a service resource associated with the request. Resolve the conflict
+-- before retrying this request.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | The server encountered an internal error and is unable to complete the
+-- request.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+    Prelude.. Core.hasStatus 500
+
+-- | The resource specified in the request was not found.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The resource specified in the request was not found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request was denied due to request throttling.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | The input fails to satisfy the specified constraints.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/AnalysisType.hs b/gen/Amazonka/CodeGuruReviewer/Types/AnalysisType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/AnalysisType.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.CodeGuruReviewer.Types.AnalysisType
+-- 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.CodeGuruReviewer.Types.AnalysisType
+  ( AnalysisType
+      ( ..,
+        AnalysisType_CodeQuality,
+        AnalysisType_Security
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AnalysisType = AnalysisType'
+  { fromAnalysisType ::
+      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 AnalysisType_CodeQuality :: AnalysisType
+pattern AnalysisType_CodeQuality = AnalysisType' "CodeQuality"
+
+pattern AnalysisType_Security :: AnalysisType
+pattern AnalysisType_Security = AnalysisType' "Security"
+
+{-# COMPLETE
+  AnalysisType_CodeQuality,
+  AnalysisType_Security,
+  AnalysisType'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/BranchDiffSourceCodeType.hs b/gen/Amazonka/CodeGuruReviewer/Types/BranchDiffSourceCodeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/BranchDiffSourceCodeType.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.CodeGuruReviewer.Types.BranchDiffSourceCodeType
+-- 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.CodeGuruReviewer.Types.BranchDiffSourceCodeType 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 type of
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies a code diff between a source and destination branch in an
+-- associated repository.
+--
+-- /See:/ 'newBranchDiffSourceCodeType' smart constructor.
+data BranchDiffSourceCodeType = BranchDiffSourceCodeType'
+  { -- | The source branch for a diff in an associated repository.
+    sourceBranchName :: Prelude.Text,
+    -- | The destination branch for a diff in an associated repository.
+    destinationBranchName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BranchDiffSourceCodeType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sourceBranchName', 'branchDiffSourceCodeType_sourceBranchName' - The source branch for a diff in an associated repository.
+--
+-- 'destinationBranchName', 'branchDiffSourceCodeType_destinationBranchName' - The destination branch for a diff in an associated repository.
+newBranchDiffSourceCodeType ::
+  -- | 'sourceBranchName'
+  Prelude.Text ->
+  -- | 'destinationBranchName'
+  Prelude.Text ->
+  BranchDiffSourceCodeType
+newBranchDiffSourceCodeType
+  pSourceBranchName_
+  pDestinationBranchName_ =
+    BranchDiffSourceCodeType'
+      { sourceBranchName =
+          pSourceBranchName_,
+        destinationBranchName = pDestinationBranchName_
+      }
+
+-- | The source branch for a diff in an associated repository.
+branchDiffSourceCodeType_sourceBranchName :: Lens.Lens' BranchDiffSourceCodeType Prelude.Text
+branchDiffSourceCodeType_sourceBranchName = Lens.lens (\BranchDiffSourceCodeType' {sourceBranchName} -> sourceBranchName) (\s@BranchDiffSourceCodeType' {} a -> s {sourceBranchName = a} :: BranchDiffSourceCodeType)
+
+-- | The destination branch for a diff in an associated repository.
+branchDiffSourceCodeType_destinationBranchName :: Lens.Lens' BranchDiffSourceCodeType Prelude.Text
+branchDiffSourceCodeType_destinationBranchName = Lens.lens (\BranchDiffSourceCodeType' {destinationBranchName} -> destinationBranchName) (\s@BranchDiffSourceCodeType' {} a -> s {destinationBranchName = a} :: BranchDiffSourceCodeType)
+
+instance Data.FromJSON BranchDiffSourceCodeType where
+  parseJSON =
+    Data.withObject
+      "BranchDiffSourceCodeType"
+      ( \x ->
+          BranchDiffSourceCodeType'
+            Prelude.<$> (x Data..: "SourceBranchName")
+            Prelude.<*> (x Data..: "DestinationBranchName")
+      )
+
+instance Prelude.Hashable BranchDiffSourceCodeType where
+  hashWithSalt _salt BranchDiffSourceCodeType' {..} =
+    _salt
+      `Prelude.hashWithSalt` sourceBranchName
+      `Prelude.hashWithSalt` destinationBranchName
+
+instance Prelude.NFData BranchDiffSourceCodeType where
+  rnf BranchDiffSourceCodeType' {..} =
+    Prelude.rnf sourceBranchName
+      `Prelude.seq` Prelude.rnf destinationBranchName
+
+instance Data.ToJSON BranchDiffSourceCodeType where
+  toJSON BranchDiffSourceCodeType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("SourceBranchName" Data..= sourceBranchName),
+            Prelude.Just
+              ( "DestinationBranchName"
+                  Data..= destinationBranchName
+              )
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/CodeArtifacts.hs b/gen/Amazonka/CodeGuruReviewer/Types/CodeArtifacts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/CodeArtifacts.hs
@@ -0,0 +1,123 @@
+{-# 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.CodeGuruReviewer.Types.CodeArtifacts
+-- 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.CodeGuruReviewer.Types.CodeArtifacts 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
+
+-- | Code artifacts are source code artifacts and build artifacts used in a
+-- repository analysis or a pull request review.
+--
+-- -   Source code artifacts are source code files in a Git repository that
+--     are compressed into a .zip file.
+--
+-- -   Build artifacts are .jar or .class files that are compressed in a
+--     .zip file.
+--
+-- /See:/ 'newCodeArtifacts' smart constructor.
+data CodeArtifacts = CodeArtifacts'
+  { -- | The S3 object key for a build artifacts .zip file that contains .jar or
+    -- .class files. This is required for a code review with security analysis.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-cicd.html Create code reviews with GitHub Actions>
+    -- in the /Amazon CodeGuru Reviewer User Guide/.
+    buildArtifactsObjectKey :: Prelude.Maybe Prelude.Text,
+    -- | The S3 object key for a source code .zip file. This is required for all
+    -- code reviews.
+    sourceCodeArtifactsObjectKey :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CodeArtifacts' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'buildArtifactsObjectKey', 'codeArtifacts_buildArtifactsObjectKey' - The S3 object key for a build artifacts .zip file that contains .jar or
+-- .class files. This is required for a code review with security analysis.
+-- For more information, see
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-cicd.html Create code reviews with GitHub Actions>
+-- in the /Amazon CodeGuru Reviewer User Guide/.
+--
+-- 'sourceCodeArtifactsObjectKey', 'codeArtifacts_sourceCodeArtifactsObjectKey' - The S3 object key for a source code .zip file. This is required for all
+-- code reviews.
+newCodeArtifacts ::
+  -- | 'sourceCodeArtifactsObjectKey'
+  Prelude.Text ->
+  CodeArtifacts
+newCodeArtifacts pSourceCodeArtifactsObjectKey_ =
+  CodeArtifacts'
+    { buildArtifactsObjectKey =
+        Prelude.Nothing,
+      sourceCodeArtifactsObjectKey =
+        pSourceCodeArtifactsObjectKey_
+    }
+
+-- | The S3 object key for a build artifacts .zip file that contains .jar or
+-- .class files. This is required for a code review with security analysis.
+-- For more information, see
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-cicd.html Create code reviews with GitHub Actions>
+-- in the /Amazon CodeGuru Reviewer User Guide/.
+codeArtifacts_buildArtifactsObjectKey :: Lens.Lens' CodeArtifacts (Prelude.Maybe Prelude.Text)
+codeArtifacts_buildArtifactsObjectKey = Lens.lens (\CodeArtifacts' {buildArtifactsObjectKey} -> buildArtifactsObjectKey) (\s@CodeArtifacts' {} a -> s {buildArtifactsObjectKey = a} :: CodeArtifacts)
+
+-- | The S3 object key for a source code .zip file. This is required for all
+-- code reviews.
+codeArtifacts_sourceCodeArtifactsObjectKey :: Lens.Lens' CodeArtifacts Prelude.Text
+codeArtifacts_sourceCodeArtifactsObjectKey = Lens.lens (\CodeArtifacts' {sourceCodeArtifactsObjectKey} -> sourceCodeArtifactsObjectKey) (\s@CodeArtifacts' {} a -> s {sourceCodeArtifactsObjectKey = a} :: CodeArtifacts)
+
+instance Data.FromJSON CodeArtifacts where
+  parseJSON =
+    Data.withObject
+      "CodeArtifacts"
+      ( \x ->
+          CodeArtifacts'
+            Prelude.<$> (x Data..:? "BuildArtifactsObjectKey")
+            Prelude.<*> (x Data..: "SourceCodeArtifactsObjectKey")
+      )
+
+instance Prelude.Hashable CodeArtifacts where
+  hashWithSalt _salt CodeArtifacts' {..} =
+    _salt
+      `Prelude.hashWithSalt` buildArtifactsObjectKey
+      `Prelude.hashWithSalt` sourceCodeArtifactsObjectKey
+
+instance Prelude.NFData CodeArtifacts where
+  rnf CodeArtifacts' {..} =
+    Prelude.rnf buildArtifactsObjectKey
+      `Prelude.seq` Prelude.rnf sourceCodeArtifactsObjectKey
+
+instance Data.ToJSON CodeArtifacts where
+  toJSON CodeArtifacts' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BuildArtifactsObjectKey" Data..=)
+              Prelude.<$> buildArtifactsObjectKey,
+            Prelude.Just
+              ( "SourceCodeArtifactsObjectKey"
+                  Data..= sourceCodeArtifactsObjectKey
+              )
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/CodeCommitRepository.hs b/gen/Amazonka/CodeGuruReviewer/Types/CodeCommitRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/CodeCommitRepository.hs
@@ -0,0 +1,80 @@
+{-# 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.CodeGuruReviewer.Types.CodeCommitRepository
+-- 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.CodeGuruReviewer.Types.CodeCommitRepository where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an Amazon Web Services CodeCommit repository. The
+-- CodeCommit repository must be in the same Amazon Web Services Region and
+-- Amazon Web Services account where its CodeGuru Reviewer code reviews are
+-- configured.
+--
+-- /See:/ 'newCodeCommitRepository' smart constructor.
+data CodeCommitRepository = CodeCommitRepository'
+  { -- | The name of the Amazon Web Services CodeCommit repository. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetRepository.html#CodeCommit-GetRepository-request-repositoryName repositoryName>
+    -- in the /Amazon Web Services CodeCommit API Reference/.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CodeCommitRepository' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'codeCommitRepository_name' - The name of the Amazon Web Services CodeCommit repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetRepository.html#CodeCommit-GetRepository-request-repositoryName repositoryName>
+-- in the /Amazon Web Services CodeCommit API Reference/.
+newCodeCommitRepository ::
+  -- | 'name'
+  Prelude.Text ->
+  CodeCommitRepository
+newCodeCommitRepository pName_ =
+  CodeCommitRepository' {name = pName_}
+
+-- | The name of the Amazon Web Services CodeCommit repository. For more
+-- information, see
+-- <https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetRepository.html#CodeCommit-GetRepository-request-repositoryName repositoryName>
+-- in the /Amazon Web Services CodeCommit API Reference/.
+codeCommitRepository_name :: Lens.Lens' CodeCommitRepository Prelude.Text
+codeCommitRepository_name = Lens.lens (\CodeCommitRepository' {name} -> name) (\s@CodeCommitRepository' {} a -> s {name = a} :: CodeCommitRepository)
+
+instance Prelude.Hashable CodeCommitRepository where
+  hashWithSalt _salt CodeCommitRepository' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CodeCommitRepository where
+  rnf CodeCommitRepository' {..} = Prelude.rnf name
+
+instance Data.ToJSON CodeCommitRepository where
+  toJSON CodeCommitRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Name" Data..= name)]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/CodeReview.hs b/gen/Amazonka/CodeGuruReviewer/Types/CodeReview.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/CodeReview.hs
@@ -0,0 +1,341 @@
+{-# 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.CodeGuruReviewer.Types.CodeReview
+-- 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.CodeGuruReviewer.Types.CodeReview where
+
+import Amazonka.CodeGuruReviewer.Types.AnalysisType
+import Amazonka.CodeGuruReviewer.Types.ConfigFileState
+import Amazonka.CodeGuruReviewer.Types.JobState
+import Amazonka.CodeGuruReviewer.Types.Metrics
+import Amazonka.CodeGuruReviewer.Types.ProviderType
+import Amazonka.CodeGuruReviewer.Types.SourceCodeType
+import Amazonka.CodeGuruReviewer.Types.Type
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a code review. A code review belongs to the associated
+-- repository that contains the reviewed code.
+--
+-- /See:/ 'newCodeReview' smart constructor.
+data CodeReview = CodeReview'
+  { -- | The types of analysis performed during a repository analysis or a pull
+    -- request review. You can specify either @Security@, @CodeQuality@, or
+    -- both.
+    analysisTypes :: Prelude.Maybe [AnalysisType],
+    -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+    -- that contains the reviewed source code. You can retrieve associated
+    -- repository ARNs by calling
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+    associationArn :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+    -- object.
+    codeReviewArn :: Prelude.Maybe Prelude.Text,
+    -- | The state of the @aws-codeguru-reviewer.yml@ configuration file that
+    -- allows the configuration of the CodeGuru Reviewer analysis. The file
+    -- either exists, doesn\'t exist, or exists with errors at the root
+    -- directory of your repository.
+    configFileState :: Prelude.Maybe ConfigFileState,
+    -- | The time, in milliseconds since the epoch, when the code review was
+    -- created.
+    createdTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | The time, in milliseconds since the epoch, when the code review was last
+    -- updated.
+    lastUpdatedTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | The statistics from the code review.
+    metrics :: Prelude.Maybe Metrics,
+    -- | The name of the code review.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The owner of the repository. For an Amazon Web Services CodeCommit
+    -- repository, this is the Amazon Web Services account ID of the account
+    -- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+    -- Bitbucket repository, this is the username for the account that owns the
+    -- repository. For an S3 repository, it can be the username or Amazon Web
+    -- Services account ID.
+    owner :: Prelude.Maybe Prelude.Text,
+    -- | The type of repository that contains the reviewed code (for example,
+    -- GitHub or Bitbucket).
+    providerType :: Prelude.Maybe ProviderType,
+    -- | The pull request ID for the code review.
+    pullRequestId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the repository.
+    repositoryName :: Prelude.Maybe Prelude.Text,
+    -- | The type of the source code for the code review.
+    sourceCodeType :: Prelude.Maybe SourceCodeType,
+    -- | The valid code review states are:
+    --
+    -- -   @Completed@: The code review is complete.
+    --
+    -- -   @Pending@: The code review started and has not completed or failed.
+    --
+    -- -   @Failed@: The code review failed.
+    --
+    -- -   @Deleting@: The code review is being deleted.
+    state :: Prelude.Maybe JobState,
+    -- | The reason for the state of the code review.
+    stateReason :: Prelude.Maybe Prelude.Text,
+    -- | The type of code review.
+    type' :: Prelude.Maybe Type
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CodeReview' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisTypes', 'codeReview_analysisTypes' - The types of analysis performed during a repository analysis or a pull
+-- request review. You can specify either @Security@, @CodeQuality@, or
+-- both.
+--
+-- 'associationArn', 'codeReview_associationArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- that contains the reviewed source code. You can retrieve associated
+-- repository ARNs by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+--
+-- 'codeReviewArn', 'codeReview_codeReviewArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+--
+-- 'configFileState', 'codeReview_configFileState' - The state of the @aws-codeguru-reviewer.yml@ configuration file that
+-- allows the configuration of the CodeGuru Reviewer analysis. The file
+-- either exists, doesn\'t exist, or exists with errors at the root
+-- directory of your repository.
+--
+-- 'createdTimeStamp', 'codeReview_createdTimeStamp' - The time, in milliseconds since the epoch, when the code review was
+-- created.
+--
+-- 'lastUpdatedTimeStamp', 'codeReview_lastUpdatedTimeStamp' - The time, in milliseconds since the epoch, when the code review was last
+-- updated.
+--
+-- 'metrics', 'codeReview_metrics' - The statistics from the code review.
+--
+-- 'name', 'codeReview_name' - The name of the code review.
+--
+-- 'owner', 'codeReview_owner' - The owner of the repository. For an Amazon Web Services CodeCommit
+-- repository, this is the Amazon Web Services account ID of the account
+-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, it can be the username or Amazon Web
+-- Services account ID.
+--
+-- 'providerType', 'codeReview_providerType' - The type of repository that contains the reviewed code (for example,
+-- GitHub or Bitbucket).
+--
+-- 'pullRequestId', 'codeReview_pullRequestId' - The pull request ID for the code review.
+--
+-- 'repositoryName', 'codeReview_repositoryName' - The name of the repository.
+--
+-- 'sourceCodeType', 'codeReview_sourceCodeType' - The type of the source code for the code review.
+--
+-- 'state', 'codeReview_state' - The valid code review states are:
+--
+-- -   @Completed@: The code review is complete.
+--
+-- -   @Pending@: The code review started and has not completed or failed.
+--
+-- -   @Failed@: The code review failed.
+--
+-- -   @Deleting@: The code review is being deleted.
+--
+-- 'stateReason', 'codeReview_stateReason' - The reason for the state of the code review.
+--
+-- 'type'', 'codeReview_type' - The type of code review.
+newCodeReview ::
+  CodeReview
+newCodeReview =
+  CodeReview'
+    { analysisTypes = Prelude.Nothing,
+      associationArn = Prelude.Nothing,
+      codeReviewArn = Prelude.Nothing,
+      configFileState = Prelude.Nothing,
+      createdTimeStamp = Prelude.Nothing,
+      lastUpdatedTimeStamp = Prelude.Nothing,
+      metrics = Prelude.Nothing,
+      name = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      providerType = Prelude.Nothing,
+      pullRequestId = Prelude.Nothing,
+      repositoryName = Prelude.Nothing,
+      sourceCodeType = Prelude.Nothing,
+      state = Prelude.Nothing,
+      stateReason = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The types of analysis performed during a repository analysis or a pull
+-- request review. You can specify either @Security@, @CodeQuality@, or
+-- both.
+codeReview_analysisTypes :: Lens.Lens' CodeReview (Prelude.Maybe [AnalysisType])
+codeReview_analysisTypes = Lens.lens (\CodeReview' {analysisTypes} -> analysisTypes) (\s@CodeReview' {} a -> s {analysisTypes = a} :: CodeReview) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- that contains the reviewed source code. You can retrieve associated
+-- repository ARNs by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+codeReview_associationArn :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.Text)
+codeReview_associationArn = Lens.lens (\CodeReview' {associationArn} -> associationArn) (\s@CodeReview' {} a -> s {associationArn = a} :: CodeReview)
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+codeReview_codeReviewArn :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.Text)
+codeReview_codeReviewArn = Lens.lens (\CodeReview' {codeReviewArn} -> codeReviewArn) (\s@CodeReview' {} a -> s {codeReviewArn = a} :: CodeReview)
+
+-- | The state of the @aws-codeguru-reviewer.yml@ configuration file that
+-- allows the configuration of the CodeGuru Reviewer analysis. The file
+-- either exists, doesn\'t exist, or exists with errors at the root
+-- directory of your repository.
+codeReview_configFileState :: Lens.Lens' CodeReview (Prelude.Maybe ConfigFileState)
+codeReview_configFileState = Lens.lens (\CodeReview' {configFileState} -> configFileState) (\s@CodeReview' {} a -> s {configFileState = a} :: CodeReview)
+
+-- | The time, in milliseconds since the epoch, when the code review was
+-- created.
+codeReview_createdTimeStamp :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.UTCTime)
+codeReview_createdTimeStamp = Lens.lens (\CodeReview' {createdTimeStamp} -> createdTimeStamp) (\s@CodeReview' {} a -> s {createdTimeStamp = a} :: CodeReview) Prelude.. Lens.mapping Data._Time
+
+-- | The time, in milliseconds since the epoch, when the code review was last
+-- updated.
+codeReview_lastUpdatedTimeStamp :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.UTCTime)
+codeReview_lastUpdatedTimeStamp = Lens.lens (\CodeReview' {lastUpdatedTimeStamp} -> lastUpdatedTimeStamp) (\s@CodeReview' {} a -> s {lastUpdatedTimeStamp = a} :: CodeReview) Prelude.. Lens.mapping Data._Time
+
+-- | The statistics from the code review.
+codeReview_metrics :: Lens.Lens' CodeReview (Prelude.Maybe Metrics)
+codeReview_metrics = Lens.lens (\CodeReview' {metrics} -> metrics) (\s@CodeReview' {} a -> s {metrics = a} :: CodeReview)
+
+-- | The name of the code review.
+codeReview_name :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.Text)
+codeReview_name = Lens.lens (\CodeReview' {name} -> name) (\s@CodeReview' {} a -> s {name = a} :: CodeReview)
+
+-- | The owner of the repository. For an Amazon Web Services CodeCommit
+-- repository, this is the Amazon Web Services account ID of the account
+-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, it can be the username or Amazon Web
+-- Services account ID.
+codeReview_owner :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.Text)
+codeReview_owner = Lens.lens (\CodeReview' {owner} -> owner) (\s@CodeReview' {} a -> s {owner = a} :: CodeReview)
+
+-- | The type of repository that contains the reviewed code (for example,
+-- GitHub or Bitbucket).
+codeReview_providerType :: Lens.Lens' CodeReview (Prelude.Maybe ProviderType)
+codeReview_providerType = Lens.lens (\CodeReview' {providerType} -> providerType) (\s@CodeReview' {} a -> s {providerType = a} :: CodeReview)
+
+-- | The pull request ID for the code review.
+codeReview_pullRequestId :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.Text)
+codeReview_pullRequestId = Lens.lens (\CodeReview' {pullRequestId} -> pullRequestId) (\s@CodeReview' {} a -> s {pullRequestId = a} :: CodeReview)
+
+-- | The name of the repository.
+codeReview_repositoryName :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.Text)
+codeReview_repositoryName = Lens.lens (\CodeReview' {repositoryName} -> repositoryName) (\s@CodeReview' {} a -> s {repositoryName = a} :: CodeReview)
+
+-- | The type of the source code for the code review.
+codeReview_sourceCodeType :: Lens.Lens' CodeReview (Prelude.Maybe SourceCodeType)
+codeReview_sourceCodeType = Lens.lens (\CodeReview' {sourceCodeType} -> sourceCodeType) (\s@CodeReview' {} a -> s {sourceCodeType = a} :: CodeReview)
+
+-- | The valid code review states are:
+--
+-- -   @Completed@: The code review is complete.
+--
+-- -   @Pending@: The code review started and has not completed or failed.
+--
+-- -   @Failed@: The code review failed.
+--
+-- -   @Deleting@: The code review is being deleted.
+codeReview_state :: Lens.Lens' CodeReview (Prelude.Maybe JobState)
+codeReview_state = Lens.lens (\CodeReview' {state} -> state) (\s@CodeReview' {} a -> s {state = a} :: CodeReview)
+
+-- | The reason for the state of the code review.
+codeReview_stateReason :: Lens.Lens' CodeReview (Prelude.Maybe Prelude.Text)
+codeReview_stateReason = Lens.lens (\CodeReview' {stateReason} -> stateReason) (\s@CodeReview' {} a -> s {stateReason = a} :: CodeReview)
+
+-- | The type of code review.
+codeReview_type :: Lens.Lens' CodeReview (Prelude.Maybe Type)
+codeReview_type = Lens.lens (\CodeReview' {type'} -> type') (\s@CodeReview' {} a -> s {type' = a} :: CodeReview)
+
+instance Data.FromJSON CodeReview where
+  parseJSON =
+    Data.withObject
+      "CodeReview"
+      ( \x ->
+          CodeReview'
+            Prelude.<$> (x Data..:? "AnalysisTypes" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "AssociationArn")
+            Prelude.<*> (x Data..:? "CodeReviewArn")
+            Prelude.<*> (x Data..:? "ConfigFileState")
+            Prelude.<*> (x Data..:? "CreatedTimeStamp")
+            Prelude.<*> (x Data..:? "LastUpdatedTimeStamp")
+            Prelude.<*> (x Data..:? "Metrics")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "ProviderType")
+            Prelude.<*> (x Data..:? "PullRequestId")
+            Prelude.<*> (x Data..:? "RepositoryName")
+            Prelude.<*> (x Data..:? "SourceCodeType")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "StateReason")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable CodeReview where
+  hashWithSalt _salt CodeReview' {..} =
+    _salt
+      `Prelude.hashWithSalt` analysisTypes
+      `Prelude.hashWithSalt` associationArn
+      `Prelude.hashWithSalt` codeReviewArn
+      `Prelude.hashWithSalt` configFileState
+      `Prelude.hashWithSalt` createdTimeStamp
+      `Prelude.hashWithSalt` lastUpdatedTimeStamp
+      `Prelude.hashWithSalt` metrics
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` providerType
+      `Prelude.hashWithSalt` pullRequestId
+      `Prelude.hashWithSalt` repositoryName
+      `Prelude.hashWithSalt` sourceCodeType
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` stateReason
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CodeReview where
+  rnf CodeReview' {..} =
+    Prelude.rnf analysisTypes
+      `Prelude.seq` Prelude.rnf associationArn
+      `Prelude.seq` Prelude.rnf codeReviewArn
+      `Prelude.seq` Prelude.rnf configFileState
+      `Prelude.seq` Prelude.rnf createdTimeStamp
+      `Prelude.seq` Prelude.rnf lastUpdatedTimeStamp
+      `Prelude.seq` Prelude.rnf metrics
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf providerType
+      `Prelude.seq` Prelude.rnf pullRequestId
+      `Prelude.seq` Prelude.rnf repositoryName
+      `Prelude.seq` Prelude.rnf sourceCodeType
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf stateReason
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/CodeReviewSummary.hs b/gen/Amazonka/CodeGuruReviewer/Types/CodeReviewSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/CodeReviewSummary.hs
@@ -0,0 +1,265 @@
+{-# 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.CodeGuruReviewer.Types.CodeReviewSummary
+-- 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.CodeGuruReviewer.Types.CodeReviewSummary where
+
+import Amazonka.CodeGuruReviewer.Types.JobState
+import Amazonka.CodeGuruReviewer.Types.MetricsSummary
+import Amazonka.CodeGuruReviewer.Types.ProviderType
+import Amazonka.CodeGuruReviewer.Types.SourceCodeType
+import Amazonka.CodeGuruReviewer.Types.Type
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the summary of the code review.
+--
+-- /See:/ 'newCodeReviewSummary' smart constructor.
+data CodeReviewSummary = CodeReviewSummary'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+    -- object.
+    codeReviewArn :: Prelude.Maybe Prelude.Text,
+    -- | The time, in milliseconds since the epoch, when the code review was
+    -- created.
+    createdTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | The time, in milliseconds since the epoch, when the code review was last
+    -- updated.
+    lastUpdatedTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | The statistics from the code review.
+    metricsSummary :: Prelude.Maybe MetricsSummary,
+    -- | The name of the code review.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The owner of the repository. For an Amazon Web Services CodeCommit
+    -- repository, this is the Amazon Web Services account ID of the account
+    -- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+    -- Bitbucket repository, this is the username for the account that owns the
+    -- repository. For an S3 repository, it can be the username or Amazon Web
+    -- Services account ID.
+    owner :: Prelude.Maybe Prelude.Text,
+    -- | The provider type of the repository association.
+    providerType :: Prelude.Maybe ProviderType,
+    -- | The pull request ID for the code review.
+    pullRequestId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the repository.
+    repositoryName :: Prelude.Maybe Prelude.Text,
+    sourceCodeType :: Prelude.Maybe SourceCodeType,
+    -- | The state of the code review.
+    --
+    -- The valid code review states are:
+    --
+    -- -   @Completed@: The code review is complete.
+    --
+    -- -   @Pending@: The code review started and has not completed or failed.
+    --
+    -- -   @Failed@: The code review failed.
+    --
+    -- -   @Deleting@: The code review is being deleted.
+    state :: Prelude.Maybe JobState,
+    -- | The type of the code review.
+    type' :: Prelude.Maybe Type
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CodeReviewSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'codeReviewArn', 'codeReviewSummary_codeReviewArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+--
+-- 'createdTimeStamp', 'codeReviewSummary_createdTimeStamp' - The time, in milliseconds since the epoch, when the code review was
+-- created.
+--
+-- 'lastUpdatedTimeStamp', 'codeReviewSummary_lastUpdatedTimeStamp' - The time, in milliseconds since the epoch, when the code review was last
+-- updated.
+--
+-- 'metricsSummary', 'codeReviewSummary_metricsSummary' - The statistics from the code review.
+--
+-- 'name', 'codeReviewSummary_name' - The name of the code review.
+--
+-- 'owner', 'codeReviewSummary_owner' - The owner of the repository. For an Amazon Web Services CodeCommit
+-- repository, this is the Amazon Web Services account ID of the account
+-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, it can be the username or Amazon Web
+-- Services account ID.
+--
+-- 'providerType', 'codeReviewSummary_providerType' - The provider type of the repository association.
+--
+-- 'pullRequestId', 'codeReviewSummary_pullRequestId' - The pull request ID for the code review.
+--
+-- 'repositoryName', 'codeReviewSummary_repositoryName' - The name of the repository.
+--
+-- 'sourceCodeType', 'codeReviewSummary_sourceCodeType' - Undocumented member.
+--
+-- 'state', 'codeReviewSummary_state' - The state of the code review.
+--
+-- The valid code review states are:
+--
+-- -   @Completed@: The code review is complete.
+--
+-- -   @Pending@: The code review started and has not completed or failed.
+--
+-- -   @Failed@: The code review failed.
+--
+-- -   @Deleting@: The code review is being deleted.
+--
+-- 'type'', 'codeReviewSummary_type' - The type of the code review.
+newCodeReviewSummary ::
+  CodeReviewSummary
+newCodeReviewSummary =
+  CodeReviewSummary'
+    { codeReviewArn = Prelude.Nothing,
+      createdTimeStamp = Prelude.Nothing,
+      lastUpdatedTimeStamp = Prelude.Nothing,
+      metricsSummary = Prelude.Nothing,
+      name = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      providerType = Prelude.Nothing,
+      pullRequestId = Prelude.Nothing,
+      repositoryName = Prelude.Nothing,
+      sourceCodeType = Prelude.Nothing,
+      state = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+codeReviewSummary_codeReviewArn :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
+codeReviewSummary_codeReviewArn = Lens.lens (\CodeReviewSummary' {codeReviewArn} -> codeReviewArn) (\s@CodeReviewSummary' {} a -> s {codeReviewArn = a} :: CodeReviewSummary)
+
+-- | The time, in milliseconds since the epoch, when the code review was
+-- created.
+codeReviewSummary_createdTimeStamp :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.UTCTime)
+codeReviewSummary_createdTimeStamp = Lens.lens (\CodeReviewSummary' {createdTimeStamp} -> createdTimeStamp) (\s@CodeReviewSummary' {} a -> s {createdTimeStamp = a} :: CodeReviewSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The time, in milliseconds since the epoch, when the code review was last
+-- updated.
+codeReviewSummary_lastUpdatedTimeStamp :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.UTCTime)
+codeReviewSummary_lastUpdatedTimeStamp = Lens.lens (\CodeReviewSummary' {lastUpdatedTimeStamp} -> lastUpdatedTimeStamp) (\s@CodeReviewSummary' {} a -> s {lastUpdatedTimeStamp = a} :: CodeReviewSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The statistics from the code review.
+codeReviewSummary_metricsSummary :: Lens.Lens' CodeReviewSummary (Prelude.Maybe MetricsSummary)
+codeReviewSummary_metricsSummary = Lens.lens (\CodeReviewSummary' {metricsSummary} -> metricsSummary) (\s@CodeReviewSummary' {} a -> s {metricsSummary = a} :: CodeReviewSummary)
+
+-- | The name of the code review.
+codeReviewSummary_name :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
+codeReviewSummary_name = Lens.lens (\CodeReviewSummary' {name} -> name) (\s@CodeReviewSummary' {} a -> s {name = a} :: CodeReviewSummary)
+
+-- | The owner of the repository. For an Amazon Web Services CodeCommit
+-- repository, this is the Amazon Web Services account ID of the account
+-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, it can be the username or Amazon Web
+-- Services account ID.
+codeReviewSummary_owner :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
+codeReviewSummary_owner = Lens.lens (\CodeReviewSummary' {owner} -> owner) (\s@CodeReviewSummary' {} a -> s {owner = a} :: CodeReviewSummary)
+
+-- | The provider type of the repository association.
+codeReviewSummary_providerType :: Lens.Lens' CodeReviewSummary (Prelude.Maybe ProviderType)
+codeReviewSummary_providerType = Lens.lens (\CodeReviewSummary' {providerType} -> providerType) (\s@CodeReviewSummary' {} a -> s {providerType = a} :: CodeReviewSummary)
+
+-- | The pull request ID for the code review.
+codeReviewSummary_pullRequestId :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
+codeReviewSummary_pullRequestId = Lens.lens (\CodeReviewSummary' {pullRequestId} -> pullRequestId) (\s@CodeReviewSummary' {} a -> s {pullRequestId = a} :: CodeReviewSummary)
+
+-- | The name of the repository.
+codeReviewSummary_repositoryName :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Prelude.Text)
+codeReviewSummary_repositoryName = Lens.lens (\CodeReviewSummary' {repositoryName} -> repositoryName) (\s@CodeReviewSummary' {} a -> s {repositoryName = a} :: CodeReviewSummary)
+
+-- | Undocumented member.
+codeReviewSummary_sourceCodeType :: Lens.Lens' CodeReviewSummary (Prelude.Maybe SourceCodeType)
+codeReviewSummary_sourceCodeType = Lens.lens (\CodeReviewSummary' {sourceCodeType} -> sourceCodeType) (\s@CodeReviewSummary' {} a -> s {sourceCodeType = a} :: CodeReviewSummary)
+
+-- | The state of the code review.
+--
+-- The valid code review states are:
+--
+-- -   @Completed@: The code review is complete.
+--
+-- -   @Pending@: The code review started and has not completed or failed.
+--
+-- -   @Failed@: The code review failed.
+--
+-- -   @Deleting@: The code review is being deleted.
+codeReviewSummary_state :: Lens.Lens' CodeReviewSummary (Prelude.Maybe JobState)
+codeReviewSummary_state = Lens.lens (\CodeReviewSummary' {state} -> state) (\s@CodeReviewSummary' {} a -> s {state = a} :: CodeReviewSummary)
+
+-- | The type of the code review.
+codeReviewSummary_type :: Lens.Lens' CodeReviewSummary (Prelude.Maybe Type)
+codeReviewSummary_type = Lens.lens (\CodeReviewSummary' {type'} -> type') (\s@CodeReviewSummary' {} a -> s {type' = a} :: CodeReviewSummary)
+
+instance Data.FromJSON CodeReviewSummary where
+  parseJSON =
+    Data.withObject
+      "CodeReviewSummary"
+      ( \x ->
+          CodeReviewSummary'
+            Prelude.<$> (x Data..:? "CodeReviewArn")
+            Prelude.<*> (x Data..:? "CreatedTimeStamp")
+            Prelude.<*> (x Data..:? "LastUpdatedTimeStamp")
+            Prelude.<*> (x Data..:? "MetricsSummary")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "ProviderType")
+            Prelude.<*> (x Data..:? "PullRequestId")
+            Prelude.<*> (x Data..:? "RepositoryName")
+            Prelude.<*> (x Data..:? "SourceCodeType")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable CodeReviewSummary where
+  hashWithSalt _salt CodeReviewSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` codeReviewArn
+      `Prelude.hashWithSalt` createdTimeStamp
+      `Prelude.hashWithSalt` lastUpdatedTimeStamp
+      `Prelude.hashWithSalt` metricsSummary
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` providerType
+      `Prelude.hashWithSalt` pullRequestId
+      `Prelude.hashWithSalt` repositoryName
+      `Prelude.hashWithSalt` sourceCodeType
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData CodeReviewSummary where
+  rnf CodeReviewSummary' {..} =
+    Prelude.rnf codeReviewArn
+      `Prelude.seq` Prelude.rnf createdTimeStamp
+      `Prelude.seq` Prelude.rnf lastUpdatedTimeStamp
+      `Prelude.seq` Prelude.rnf metricsSummary
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf providerType
+      `Prelude.seq` Prelude.rnf pullRequestId
+      `Prelude.seq` Prelude.rnf repositoryName
+      `Prelude.seq` Prelude.rnf sourceCodeType
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/CodeReviewType.hs b/gen/Amazonka/CodeGuruReviewer/Types/CodeReviewType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/CodeReviewType.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.CodeGuruReviewer.Types.CodeReviewType
+-- 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.CodeGuruReviewer.Types.CodeReviewType where
+
+import Amazonka.CodeGuruReviewer.Types.AnalysisType
+import Amazonka.CodeGuruReviewer.Types.RepositoryAnalysis
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The type of a code review. There are two code review types:
+--
+-- -   @PullRequest@ - A code review that is automatically triggered by a
+--     pull request on an associated repository.
+--
+-- -   @RepositoryAnalysis@ - A code review that analyzes all code under a
+--     specified branch in an associated repository. The associated
+--     repository is specified using its ARN in
+--     <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CreateCodeReview CreateCodeReview>.
+--
+-- /See:/ 'newCodeReviewType' smart constructor.
+data CodeReviewType = CodeReviewType'
+  { -- | They types of analysis performed during a repository analysis or a pull
+    -- request review. You can specify either @Security@, @CodeQuality@, or
+    -- both.
+    analysisTypes :: Prelude.Maybe [AnalysisType],
+    -- | A code review that analyzes all code under a specified branch in an
+    -- associated repository. The associated repository is specified using its
+    -- ARN in
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CreateCodeReview CreateCodeReview>.
+    repositoryAnalysis :: RepositoryAnalysis
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CodeReviewType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'analysisTypes', 'codeReviewType_analysisTypes' - They types of analysis performed during a repository analysis or a pull
+-- request review. You can specify either @Security@, @CodeQuality@, or
+-- both.
+--
+-- 'repositoryAnalysis', 'codeReviewType_repositoryAnalysis' - A code review that analyzes all code under a specified branch in an
+-- associated repository. The associated repository is specified using its
+-- ARN in
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CreateCodeReview CreateCodeReview>.
+newCodeReviewType ::
+  -- | 'repositoryAnalysis'
+  RepositoryAnalysis ->
+  CodeReviewType
+newCodeReviewType pRepositoryAnalysis_ =
+  CodeReviewType'
+    { analysisTypes = Prelude.Nothing,
+      repositoryAnalysis = pRepositoryAnalysis_
+    }
+
+-- | They types of analysis performed during a repository analysis or a pull
+-- request review. You can specify either @Security@, @CodeQuality@, or
+-- both.
+codeReviewType_analysisTypes :: Lens.Lens' CodeReviewType (Prelude.Maybe [AnalysisType])
+codeReviewType_analysisTypes = Lens.lens (\CodeReviewType' {analysisTypes} -> analysisTypes) (\s@CodeReviewType' {} a -> s {analysisTypes = a} :: CodeReviewType) Prelude.. Lens.mapping Lens.coerced
+
+-- | A code review that analyzes all code under a specified branch in an
+-- associated repository. The associated repository is specified using its
+-- ARN in
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CreateCodeReview CreateCodeReview>.
+codeReviewType_repositoryAnalysis :: Lens.Lens' CodeReviewType RepositoryAnalysis
+codeReviewType_repositoryAnalysis = Lens.lens (\CodeReviewType' {repositoryAnalysis} -> repositoryAnalysis) (\s@CodeReviewType' {} a -> s {repositoryAnalysis = a} :: CodeReviewType)
+
+instance Prelude.Hashable CodeReviewType where
+  hashWithSalt _salt CodeReviewType' {..} =
+    _salt
+      `Prelude.hashWithSalt` analysisTypes
+      `Prelude.hashWithSalt` repositoryAnalysis
+
+instance Prelude.NFData CodeReviewType where
+  rnf CodeReviewType' {..} =
+    Prelude.rnf analysisTypes
+      `Prelude.seq` Prelude.rnf repositoryAnalysis
+
+instance Data.ToJSON CodeReviewType where
+  toJSON CodeReviewType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AnalysisTypes" Data..=) Prelude.<$> analysisTypes,
+            Prelude.Just
+              ("RepositoryAnalysis" Data..= repositoryAnalysis)
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/CommitDiffSourceCodeType.hs b/gen/Amazonka/CodeGuruReviewer/Types/CommitDiffSourceCodeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/CommitDiffSourceCodeType.hs
@@ -0,0 +1,119 @@
+{-# 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.CodeGuruReviewer.Types.CommitDiffSourceCodeType
+-- 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.CodeGuruReviewer.Types.CommitDiffSourceCodeType 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 type of
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies the commit diff for a pull request on an associated
+-- repository. The @SourceCommit@ and @DestinationCommit@ fields are
+-- required to do a pull request code review.
+--
+-- /See:/ 'newCommitDiffSourceCodeType' smart constructor.
+data CommitDiffSourceCodeType = CommitDiffSourceCodeType'
+  { -- | The SHA of the destination commit used to generate a commit diff. This
+    -- field is required for a pull request code review.
+    destinationCommit :: Prelude.Maybe Prelude.Text,
+    -- | The SHA of the merge base of a commit.
+    mergeBaseCommit :: Prelude.Maybe Prelude.Text,
+    -- | The SHA of the source commit used to generate a commit diff. This field
+    -- is required for a pull request code review.
+    sourceCommit :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CommitDiffSourceCodeType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationCommit', 'commitDiffSourceCodeType_destinationCommit' - The SHA of the destination commit used to generate a commit diff. This
+-- field is required for a pull request code review.
+--
+-- 'mergeBaseCommit', 'commitDiffSourceCodeType_mergeBaseCommit' - The SHA of the merge base of a commit.
+--
+-- 'sourceCommit', 'commitDiffSourceCodeType_sourceCommit' - The SHA of the source commit used to generate a commit diff. This field
+-- is required for a pull request code review.
+newCommitDiffSourceCodeType ::
+  CommitDiffSourceCodeType
+newCommitDiffSourceCodeType =
+  CommitDiffSourceCodeType'
+    { destinationCommit =
+        Prelude.Nothing,
+      mergeBaseCommit = Prelude.Nothing,
+      sourceCommit = Prelude.Nothing
+    }
+
+-- | The SHA of the destination commit used to generate a commit diff. This
+-- field is required for a pull request code review.
+commitDiffSourceCodeType_destinationCommit :: Lens.Lens' CommitDiffSourceCodeType (Prelude.Maybe Prelude.Text)
+commitDiffSourceCodeType_destinationCommit = Lens.lens (\CommitDiffSourceCodeType' {destinationCommit} -> destinationCommit) (\s@CommitDiffSourceCodeType' {} a -> s {destinationCommit = a} :: CommitDiffSourceCodeType)
+
+-- | The SHA of the merge base of a commit.
+commitDiffSourceCodeType_mergeBaseCommit :: Lens.Lens' CommitDiffSourceCodeType (Prelude.Maybe Prelude.Text)
+commitDiffSourceCodeType_mergeBaseCommit = Lens.lens (\CommitDiffSourceCodeType' {mergeBaseCommit} -> mergeBaseCommit) (\s@CommitDiffSourceCodeType' {} a -> s {mergeBaseCommit = a} :: CommitDiffSourceCodeType)
+
+-- | The SHA of the source commit used to generate a commit diff. This field
+-- is required for a pull request code review.
+commitDiffSourceCodeType_sourceCommit :: Lens.Lens' CommitDiffSourceCodeType (Prelude.Maybe Prelude.Text)
+commitDiffSourceCodeType_sourceCommit = Lens.lens (\CommitDiffSourceCodeType' {sourceCommit} -> sourceCommit) (\s@CommitDiffSourceCodeType' {} a -> s {sourceCommit = a} :: CommitDiffSourceCodeType)
+
+instance Data.FromJSON CommitDiffSourceCodeType where
+  parseJSON =
+    Data.withObject
+      "CommitDiffSourceCodeType"
+      ( \x ->
+          CommitDiffSourceCodeType'
+            Prelude.<$> (x Data..:? "DestinationCommit")
+            Prelude.<*> (x Data..:? "MergeBaseCommit")
+            Prelude.<*> (x Data..:? "SourceCommit")
+      )
+
+instance Prelude.Hashable CommitDiffSourceCodeType where
+  hashWithSalt _salt CommitDiffSourceCodeType' {..} =
+    _salt
+      `Prelude.hashWithSalt` destinationCommit
+      `Prelude.hashWithSalt` mergeBaseCommit
+      `Prelude.hashWithSalt` sourceCommit
+
+instance Prelude.NFData CommitDiffSourceCodeType where
+  rnf CommitDiffSourceCodeType' {..} =
+    Prelude.rnf destinationCommit
+      `Prelude.seq` Prelude.rnf mergeBaseCommit
+      `Prelude.seq` Prelude.rnf sourceCommit
+
+instance Data.ToJSON CommitDiffSourceCodeType where
+  toJSON CommitDiffSourceCodeType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DestinationCommit" Data..=)
+              Prelude.<$> destinationCommit,
+            ("MergeBaseCommit" Data..=)
+              Prelude.<$> mergeBaseCommit,
+            ("SourceCommit" Data..=) Prelude.<$> sourceCommit
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/ConfigFileState.hs b/gen/Amazonka/CodeGuruReviewer/Types/ConfigFileState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/ConfigFileState.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.CodeGuruReviewer.Types.ConfigFileState
+-- 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.CodeGuruReviewer.Types.ConfigFileState
+  ( ConfigFileState
+      ( ..,
+        ConfigFileState_Absent,
+        ConfigFileState_Present,
+        ConfigFileState_PresentWithErrors
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConfigFileState = ConfigFileState'
+  { fromConfigFileState ::
+      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 ConfigFileState_Absent :: ConfigFileState
+pattern ConfigFileState_Absent = ConfigFileState' "Absent"
+
+pattern ConfigFileState_Present :: ConfigFileState
+pattern ConfigFileState_Present = ConfigFileState' "Present"
+
+pattern ConfigFileState_PresentWithErrors :: ConfigFileState
+pattern ConfigFileState_PresentWithErrors = ConfigFileState' "PresentWithErrors"
+
+{-# COMPLETE
+  ConfigFileState_Absent,
+  ConfigFileState_Present,
+  ConfigFileState_PresentWithErrors,
+  ConfigFileState'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/EncryptionOption.hs b/gen/Amazonka/CodeGuruReviewer/Types/EncryptionOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/EncryptionOption.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.CodeGuruReviewer.Types.EncryptionOption
+-- 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.CodeGuruReviewer.Types.EncryptionOption
+  ( EncryptionOption
+      ( ..,
+        EncryptionOption_AWS_OWNED_CMK,
+        EncryptionOption_CUSTOMER_MANAGED_CMK
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EncryptionOption = EncryptionOption'
+  { fromEncryptionOption ::
+      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 EncryptionOption_AWS_OWNED_CMK :: EncryptionOption
+pattern EncryptionOption_AWS_OWNED_CMK = EncryptionOption' "AWS_OWNED_CMK"
+
+pattern EncryptionOption_CUSTOMER_MANAGED_CMK :: EncryptionOption
+pattern EncryptionOption_CUSTOMER_MANAGED_CMK = EncryptionOption' "CUSTOMER_MANAGED_CMK"
+
+{-# COMPLETE
+  EncryptionOption_AWS_OWNED_CMK,
+  EncryptionOption_CUSTOMER_MANAGED_CMK,
+  EncryptionOption'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/EventInfo.hs b/gen/Amazonka/CodeGuruReviewer/Types/EventInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/EventInfo.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.EventInfo
+-- 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.CodeGuruReviewer.Types.EventInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an event. The event might be a push, pull request,
+-- scheduled request, or another type of event.
+--
+-- /See:/ 'newEventInfo' smart constructor.
+data EventInfo = EventInfo'
+  { -- | The name of the event. The possible names are @pull_request@,
+    -- @workflow_dispatch@, @schedule@, and @push@
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The state of an event. The state might be open, closed, or another
+    -- state.
+    state :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'eventInfo_name' - The name of the event. The possible names are @pull_request@,
+-- @workflow_dispatch@, @schedule@, and @push@
+--
+-- 'state', 'eventInfo_state' - The state of an event. The state might be open, closed, or another
+-- state.
+newEventInfo ::
+  EventInfo
+newEventInfo =
+  EventInfo'
+    { name = Prelude.Nothing,
+      state = Prelude.Nothing
+    }
+
+-- | The name of the event. The possible names are @pull_request@,
+-- @workflow_dispatch@, @schedule@, and @push@
+eventInfo_name :: Lens.Lens' EventInfo (Prelude.Maybe Prelude.Text)
+eventInfo_name = Lens.lens (\EventInfo' {name} -> name) (\s@EventInfo' {} a -> s {name = a} :: EventInfo)
+
+-- | The state of an event. The state might be open, closed, or another
+-- state.
+eventInfo_state :: Lens.Lens' EventInfo (Prelude.Maybe Prelude.Text)
+eventInfo_state = Lens.lens (\EventInfo' {state} -> state) (\s@EventInfo' {} a -> s {state = a} :: EventInfo)
+
+instance Data.FromJSON EventInfo where
+  parseJSON =
+    Data.withObject
+      "EventInfo"
+      ( \x ->
+          EventInfo'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "State")
+      )
+
+instance Prelude.Hashable EventInfo where
+  hashWithSalt _salt EventInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData EventInfo where
+  rnf EventInfo' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf state
+
+instance Data.ToJSON EventInfo where
+  toJSON EventInfo' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("State" Data..=) Prelude.<$> state
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/JobState.hs b/gen/Amazonka/CodeGuruReviewer/Types/JobState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/JobState.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.JobState
+-- 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.CodeGuruReviewer.Types.JobState
+  ( JobState
+      ( ..,
+        JobState_Completed,
+        JobState_Deleting,
+        JobState_Failed,
+        JobState_Pending
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype JobState = JobState'
+  { fromJobState ::
+      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 JobState_Completed :: JobState
+pattern JobState_Completed = JobState' "Completed"
+
+pattern JobState_Deleting :: JobState
+pattern JobState_Deleting = JobState' "Deleting"
+
+pattern JobState_Failed :: JobState
+pattern JobState_Failed = JobState' "Failed"
+
+pattern JobState_Pending :: JobState
+pattern JobState_Pending = JobState' "Pending"
+
+{-# COMPLETE
+  JobState_Completed,
+  JobState_Deleting,
+  JobState_Failed,
+  JobState_Pending,
+  JobState'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/KMSKeyDetails.hs b/gen/Amazonka/CodeGuruReviewer/Types/KMSKeyDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/KMSKeyDetails.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.CodeGuruReviewer.Types.KMSKeyDetails
+-- 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.CodeGuruReviewer.Types.KMSKeyDetails where
+
+import Amazonka.CodeGuruReviewer.Types.EncryptionOption
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An object that contains:
+--
+-- -   The encryption option for a repository association. It is either
+--     owned by Amazon Web Services Key Management Service (KMS)
+--     (@AWS_OWNED_CMK@) or customer managed (@CUSTOMER_MANAGED_CMK@).
+--
+-- -   The ID of the Amazon Web Services KMS key that is associated with a
+--     repository association.
+--
+-- /See:/ 'newKMSKeyDetails' smart constructor.
+data KMSKeyDetails = KMSKeyDetails'
+  { -- | The encryption option for a repository association. It is either owned
+    -- by Amazon Web Services Key Management Service (KMS) (@AWS_OWNED_CMK@) or
+    -- customer managed (@CUSTOMER_MANAGED_CMK@).
+    encryptionOption :: Prelude.Maybe EncryptionOption,
+    -- | The ID of the Amazon Web Services KMS key that is associated with a
+    -- repository association.
+    kmsKeyId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KMSKeyDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'encryptionOption', 'kmsKeyDetails_encryptionOption' - The encryption option for a repository association. It is either owned
+-- by Amazon Web Services Key Management Service (KMS) (@AWS_OWNED_CMK@) or
+-- customer managed (@CUSTOMER_MANAGED_CMK@).
+--
+-- 'kmsKeyId', 'kmsKeyDetails_kmsKeyId' - The ID of the Amazon Web Services KMS key that is associated with a
+-- repository association.
+newKMSKeyDetails ::
+  KMSKeyDetails
+newKMSKeyDetails =
+  KMSKeyDetails'
+    { encryptionOption = Prelude.Nothing,
+      kmsKeyId = Prelude.Nothing
+    }
+
+-- | The encryption option for a repository association. It is either owned
+-- by Amazon Web Services Key Management Service (KMS) (@AWS_OWNED_CMK@) or
+-- customer managed (@CUSTOMER_MANAGED_CMK@).
+kmsKeyDetails_encryptionOption :: Lens.Lens' KMSKeyDetails (Prelude.Maybe EncryptionOption)
+kmsKeyDetails_encryptionOption = Lens.lens (\KMSKeyDetails' {encryptionOption} -> encryptionOption) (\s@KMSKeyDetails' {} a -> s {encryptionOption = a} :: KMSKeyDetails)
+
+-- | The ID of the Amazon Web Services KMS key that is associated with a
+-- repository association.
+kmsKeyDetails_kmsKeyId :: Lens.Lens' KMSKeyDetails (Prelude.Maybe Prelude.Text)
+kmsKeyDetails_kmsKeyId = Lens.lens (\KMSKeyDetails' {kmsKeyId} -> kmsKeyId) (\s@KMSKeyDetails' {} a -> s {kmsKeyId = a} :: KMSKeyDetails)
+
+instance Data.FromJSON KMSKeyDetails where
+  parseJSON =
+    Data.withObject
+      "KMSKeyDetails"
+      ( \x ->
+          KMSKeyDetails'
+            Prelude.<$> (x Data..:? "EncryptionOption")
+            Prelude.<*> (x Data..:? "KMSKeyId")
+      )
+
+instance Prelude.Hashable KMSKeyDetails where
+  hashWithSalt _salt KMSKeyDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` encryptionOption
+      `Prelude.hashWithSalt` kmsKeyId
+
+instance Prelude.NFData KMSKeyDetails where
+  rnf KMSKeyDetails' {..} =
+    Prelude.rnf encryptionOption
+      `Prelude.seq` Prelude.rnf kmsKeyId
+
+instance Data.ToJSON KMSKeyDetails where
+  toJSON KMSKeyDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EncryptionOption" Data..=)
+              Prelude.<$> encryptionOption,
+            ("KMSKeyId" Data..=) Prelude.<$> kmsKeyId
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/Metrics.hs b/gen/Amazonka/CodeGuruReviewer/Types/Metrics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/Metrics.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.Metrics
+-- 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.CodeGuruReviewer.Types.Metrics where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the statistics from the code review.
+--
+-- /See:/ 'newMetrics' smart constructor.
+data Metrics = Metrics'
+  { -- | Total number of recommendations found in the code review.
+    findingsCount :: Prelude.Maybe Prelude.Integer,
+    -- | @MeteredLinesOfCodeCount@ is the number of lines of code in the
+    -- repository where the code review happened. This does not include
+    -- non-code lines such as comments and blank lines.
+    meteredLinesOfCodeCount :: Prelude.Maybe Prelude.Integer,
+    -- | @SuppressedLinesOfCodeCount@ is the number of lines of code in the
+    -- repository where the code review happened that CodeGuru Reviewer did not
+    -- analyze. The lines suppressed in the analysis is based on the
+    -- @excludeFiles@ variable in the @aws-codeguru-reviewer.yml@ file. This
+    -- number does not include non-code lines such as comments and blank lines.
+    suppressedLinesOfCodeCount :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Metrics' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'findingsCount', 'metrics_findingsCount' - Total number of recommendations found in the code review.
+--
+-- 'meteredLinesOfCodeCount', 'metrics_meteredLinesOfCodeCount' - @MeteredLinesOfCodeCount@ is the number of lines of code in the
+-- repository where the code review happened. This does not include
+-- non-code lines such as comments and blank lines.
+--
+-- 'suppressedLinesOfCodeCount', 'metrics_suppressedLinesOfCodeCount' - @SuppressedLinesOfCodeCount@ is the number of lines of code in the
+-- repository where the code review happened that CodeGuru Reviewer did not
+-- analyze. The lines suppressed in the analysis is based on the
+-- @excludeFiles@ variable in the @aws-codeguru-reviewer.yml@ file. This
+-- number does not include non-code lines such as comments and blank lines.
+newMetrics ::
+  Metrics
+newMetrics =
+  Metrics'
+    { findingsCount = Prelude.Nothing,
+      meteredLinesOfCodeCount = Prelude.Nothing,
+      suppressedLinesOfCodeCount = Prelude.Nothing
+    }
+
+-- | Total number of recommendations found in the code review.
+metrics_findingsCount :: Lens.Lens' Metrics (Prelude.Maybe Prelude.Integer)
+metrics_findingsCount = Lens.lens (\Metrics' {findingsCount} -> findingsCount) (\s@Metrics' {} a -> s {findingsCount = a} :: Metrics)
+
+-- | @MeteredLinesOfCodeCount@ is the number of lines of code in the
+-- repository where the code review happened. This does not include
+-- non-code lines such as comments and blank lines.
+metrics_meteredLinesOfCodeCount :: Lens.Lens' Metrics (Prelude.Maybe Prelude.Integer)
+metrics_meteredLinesOfCodeCount = Lens.lens (\Metrics' {meteredLinesOfCodeCount} -> meteredLinesOfCodeCount) (\s@Metrics' {} a -> s {meteredLinesOfCodeCount = a} :: Metrics)
+
+-- | @SuppressedLinesOfCodeCount@ is the number of lines of code in the
+-- repository where the code review happened that CodeGuru Reviewer did not
+-- analyze. The lines suppressed in the analysis is based on the
+-- @excludeFiles@ variable in the @aws-codeguru-reviewer.yml@ file. This
+-- number does not include non-code lines such as comments and blank lines.
+metrics_suppressedLinesOfCodeCount :: Lens.Lens' Metrics (Prelude.Maybe Prelude.Integer)
+metrics_suppressedLinesOfCodeCount = Lens.lens (\Metrics' {suppressedLinesOfCodeCount} -> suppressedLinesOfCodeCount) (\s@Metrics' {} a -> s {suppressedLinesOfCodeCount = a} :: Metrics)
+
+instance Data.FromJSON Metrics where
+  parseJSON =
+    Data.withObject
+      "Metrics"
+      ( \x ->
+          Metrics'
+            Prelude.<$> (x Data..:? "FindingsCount")
+            Prelude.<*> (x Data..:? "MeteredLinesOfCodeCount")
+            Prelude.<*> (x Data..:? "SuppressedLinesOfCodeCount")
+      )
+
+instance Prelude.Hashable Metrics where
+  hashWithSalt _salt Metrics' {..} =
+    _salt
+      `Prelude.hashWithSalt` findingsCount
+      `Prelude.hashWithSalt` meteredLinesOfCodeCount
+      `Prelude.hashWithSalt` suppressedLinesOfCodeCount
+
+instance Prelude.NFData Metrics where
+  rnf Metrics' {..} =
+    Prelude.rnf findingsCount
+      `Prelude.seq` Prelude.rnf meteredLinesOfCodeCount
+      `Prelude.seq` Prelude.rnf suppressedLinesOfCodeCount
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/MetricsSummary.hs b/gen/Amazonka/CodeGuruReviewer/Types/MetricsSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/MetricsSummary.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.MetricsSummary
+-- 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.CodeGuruReviewer.Types.MetricsSummary where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about metrics summaries.
+--
+-- /See:/ 'newMetricsSummary' smart constructor.
+data MetricsSummary = MetricsSummary'
+  { -- | Total number of recommendations found in the code review.
+    findingsCount :: Prelude.Maybe Prelude.Integer,
+    -- | Lines of code metered in the code review. For the initial code review
+    -- pull request and all subsequent revisions, this includes all lines of
+    -- code in the files added to the pull request. In subsequent revisions,
+    -- for files that already existed in the pull request, this includes only
+    -- the changed lines of code. In both cases, this does not include non-code
+    -- lines such as comments and import statements. For example, if you submit
+    -- a pull request containing 5 files, each with 500 lines of code, and in a
+    -- subsequent revision you added a new file with 200 lines of code, and
+    -- also modified a total of 25 lines across the initial 5 files,
+    -- @MeteredLinesOfCodeCount@ includes the first 5 files (5 * 500 = 2,500
+    -- lines), the new file (200 lines) and the 25 changed lines of code for a
+    -- total of 2,725 lines of code.
+    meteredLinesOfCodeCount :: Prelude.Maybe Prelude.Integer,
+    -- | Lines of code suppressed in the code review based on the @excludeFiles@
+    -- element in the @aws-codeguru-reviewer.yml@ file. For full repository
+    -- analyses, this number includes all lines of code in the files that are
+    -- suppressed. For pull requests, this number only includes the /changed/
+    -- lines of code that are suppressed. In both cases, this number does not
+    -- include non-code lines such as comments and import statements. For
+    -- example, if you initiate a full repository analysis on a repository
+    -- containing 5 files, each file with 100 lines of code, and 2 files are
+    -- listed as excluded in the @aws-codeguru-reviewer.yml@ file, then
+    -- @SuppressedLinesOfCodeCount@ returns 200 (2 * 100) as the total number
+    -- of lines of code suppressed. However, if you submit a pull request for
+    -- the same repository, then @SuppressedLinesOfCodeCount@ only includes the
+    -- lines in the 2 files that changed. If only 1 of the 2 files changed in
+    -- the pull request, then @SuppressedLinesOfCodeCount@ returns 100 (1 *
+    -- 100) as the total number of lines of code suppressed.
+    suppressedLinesOfCodeCount :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MetricsSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'findingsCount', 'metricsSummary_findingsCount' - Total number of recommendations found in the code review.
+--
+-- 'meteredLinesOfCodeCount', 'metricsSummary_meteredLinesOfCodeCount' - Lines of code metered in the code review. For the initial code review
+-- pull request and all subsequent revisions, this includes all lines of
+-- code in the files added to the pull request. In subsequent revisions,
+-- for files that already existed in the pull request, this includes only
+-- the changed lines of code. In both cases, this does not include non-code
+-- lines such as comments and import statements. For example, if you submit
+-- a pull request containing 5 files, each with 500 lines of code, and in a
+-- subsequent revision you added a new file with 200 lines of code, and
+-- also modified a total of 25 lines across the initial 5 files,
+-- @MeteredLinesOfCodeCount@ includes the first 5 files (5 * 500 = 2,500
+-- lines), the new file (200 lines) and the 25 changed lines of code for a
+-- total of 2,725 lines of code.
+--
+-- 'suppressedLinesOfCodeCount', 'metricsSummary_suppressedLinesOfCodeCount' - Lines of code suppressed in the code review based on the @excludeFiles@
+-- element in the @aws-codeguru-reviewer.yml@ file. For full repository
+-- analyses, this number includes all lines of code in the files that are
+-- suppressed. For pull requests, this number only includes the /changed/
+-- lines of code that are suppressed. In both cases, this number does not
+-- include non-code lines such as comments and import statements. For
+-- example, if you initiate a full repository analysis on a repository
+-- containing 5 files, each file with 100 lines of code, and 2 files are
+-- listed as excluded in the @aws-codeguru-reviewer.yml@ file, then
+-- @SuppressedLinesOfCodeCount@ returns 200 (2 * 100) as the total number
+-- of lines of code suppressed. However, if you submit a pull request for
+-- the same repository, then @SuppressedLinesOfCodeCount@ only includes the
+-- lines in the 2 files that changed. If only 1 of the 2 files changed in
+-- the pull request, then @SuppressedLinesOfCodeCount@ returns 100 (1 *
+-- 100) as the total number of lines of code suppressed.
+newMetricsSummary ::
+  MetricsSummary
+newMetricsSummary =
+  MetricsSummary'
+    { findingsCount = Prelude.Nothing,
+      meteredLinesOfCodeCount = Prelude.Nothing,
+      suppressedLinesOfCodeCount = Prelude.Nothing
+    }
+
+-- | Total number of recommendations found in the code review.
+metricsSummary_findingsCount :: Lens.Lens' MetricsSummary (Prelude.Maybe Prelude.Integer)
+metricsSummary_findingsCount = Lens.lens (\MetricsSummary' {findingsCount} -> findingsCount) (\s@MetricsSummary' {} a -> s {findingsCount = a} :: MetricsSummary)
+
+-- | Lines of code metered in the code review. For the initial code review
+-- pull request and all subsequent revisions, this includes all lines of
+-- code in the files added to the pull request. In subsequent revisions,
+-- for files that already existed in the pull request, this includes only
+-- the changed lines of code. In both cases, this does not include non-code
+-- lines such as comments and import statements. For example, if you submit
+-- a pull request containing 5 files, each with 500 lines of code, and in a
+-- subsequent revision you added a new file with 200 lines of code, and
+-- also modified a total of 25 lines across the initial 5 files,
+-- @MeteredLinesOfCodeCount@ includes the first 5 files (5 * 500 = 2,500
+-- lines), the new file (200 lines) and the 25 changed lines of code for a
+-- total of 2,725 lines of code.
+metricsSummary_meteredLinesOfCodeCount :: Lens.Lens' MetricsSummary (Prelude.Maybe Prelude.Integer)
+metricsSummary_meteredLinesOfCodeCount = Lens.lens (\MetricsSummary' {meteredLinesOfCodeCount} -> meteredLinesOfCodeCount) (\s@MetricsSummary' {} a -> s {meteredLinesOfCodeCount = a} :: MetricsSummary)
+
+-- | Lines of code suppressed in the code review based on the @excludeFiles@
+-- element in the @aws-codeguru-reviewer.yml@ file. For full repository
+-- analyses, this number includes all lines of code in the files that are
+-- suppressed. For pull requests, this number only includes the /changed/
+-- lines of code that are suppressed. In both cases, this number does not
+-- include non-code lines such as comments and import statements. For
+-- example, if you initiate a full repository analysis on a repository
+-- containing 5 files, each file with 100 lines of code, and 2 files are
+-- listed as excluded in the @aws-codeguru-reviewer.yml@ file, then
+-- @SuppressedLinesOfCodeCount@ returns 200 (2 * 100) as the total number
+-- of lines of code suppressed. However, if you submit a pull request for
+-- the same repository, then @SuppressedLinesOfCodeCount@ only includes the
+-- lines in the 2 files that changed. If only 1 of the 2 files changed in
+-- the pull request, then @SuppressedLinesOfCodeCount@ returns 100 (1 *
+-- 100) as the total number of lines of code suppressed.
+metricsSummary_suppressedLinesOfCodeCount :: Lens.Lens' MetricsSummary (Prelude.Maybe Prelude.Integer)
+metricsSummary_suppressedLinesOfCodeCount = Lens.lens (\MetricsSummary' {suppressedLinesOfCodeCount} -> suppressedLinesOfCodeCount) (\s@MetricsSummary' {} a -> s {suppressedLinesOfCodeCount = a} :: MetricsSummary)
+
+instance Data.FromJSON MetricsSummary where
+  parseJSON =
+    Data.withObject
+      "MetricsSummary"
+      ( \x ->
+          MetricsSummary'
+            Prelude.<$> (x Data..:? "FindingsCount")
+            Prelude.<*> (x Data..:? "MeteredLinesOfCodeCount")
+            Prelude.<*> (x Data..:? "SuppressedLinesOfCodeCount")
+      )
+
+instance Prelude.Hashable MetricsSummary where
+  hashWithSalt _salt MetricsSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` findingsCount
+      `Prelude.hashWithSalt` meteredLinesOfCodeCount
+      `Prelude.hashWithSalt` suppressedLinesOfCodeCount
+
+instance Prelude.NFData MetricsSummary where
+  rnf MetricsSummary' {..} =
+    Prelude.rnf findingsCount
+      `Prelude.seq` Prelude.rnf meteredLinesOfCodeCount
+      `Prelude.seq` Prelude.rnf suppressedLinesOfCodeCount
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/ProviderType.hs b/gen/Amazonka/CodeGuruReviewer/Types/ProviderType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/ProviderType.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.ProviderType
+-- 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.CodeGuruReviewer.Types.ProviderType
+  ( ProviderType
+      ( ..,
+        ProviderType_Bitbucket,
+        ProviderType_CodeCommit,
+        ProviderType_GitHub,
+        ProviderType_GitHubEnterpriseServer,
+        ProviderType_S3Bucket
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ProviderType = ProviderType'
+  { fromProviderType ::
+      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 ProviderType_Bitbucket :: ProviderType
+pattern ProviderType_Bitbucket = ProviderType' "Bitbucket"
+
+pattern ProviderType_CodeCommit :: ProviderType
+pattern ProviderType_CodeCommit = ProviderType' "CodeCommit"
+
+pattern ProviderType_GitHub :: ProviderType
+pattern ProviderType_GitHub = ProviderType' "GitHub"
+
+pattern ProviderType_GitHubEnterpriseServer :: ProviderType
+pattern ProviderType_GitHubEnterpriseServer = ProviderType' "GitHubEnterpriseServer"
+
+pattern ProviderType_S3Bucket :: ProviderType
+pattern ProviderType_S3Bucket = ProviderType' "S3Bucket"
+
+{-# COMPLETE
+  ProviderType_Bitbucket,
+  ProviderType_CodeCommit,
+  ProviderType_GitHub,
+  ProviderType_GitHubEnterpriseServer,
+  ProviderType_S3Bucket,
+  ProviderType'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/Reaction.hs b/gen/Amazonka/CodeGuruReviewer/Types/Reaction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/Reaction.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.CodeGuruReviewer.Types.Reaction
+-- 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.CodeGuruReviewer.Types.Reaction
+  ( Reaction
+      ( ..,
+        Reaction_ThumbsDown,
+        Reaction_ThumbsUp
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Reaction = Reaction'
+  { fromReaction ::
+      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 Reaction_ThumbsDown :: Reaction
+pattern Reaction_ThumbsDown = Reaction' "ThumbsDown"
+
+pattern Reaction_ThumbsUp :: Reaction
+pattern Reaction_ThumbsUp = Reaction' "ThumbsUp"
+
+{-# COMPLETE
+  Reaction_ThumbsDown,
+  Reaction_ThumbsUp,
+  Reaction'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RecommendationCategory.hs b/gen/Amazonka/CodeGuruReviewer/Types/RecommendationCategory.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RecommendationCategory.hs
@@ -0,0 +1,116 @@
+{-# 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.CodeGuruReviewer.Types.RecommendationCategory
+-- 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.CodeGuruReviewer.Types.RecommendationCategory
+  ( RecommendationCategory
+      ( ..,
+        RecommendationCategory_AWSBestPractices,
+        RecommendationCategory_AWSCloudFormationIssues,
+        RecommendationCategory_CodeInconsistencies,
+        RecommendationCategory_CodeMaintenanceIssues,
+        RecommendationCategory_ConcurrencyIssues,
+        RecommendationCategory_DuplicateCode,
+        RecommendationCategory_InputValidations,
+        RecommendationCategory_JavaBestPractices,
+        RecommendationCategory_PythonBestPractices,
+        RecommendationCategory_ResourceLeaks,
+        RecommendationCategory_SecurityIssues
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RecommendationCategory = RecommendationCategory'
+  { fromRecommendationCategory ::
+      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 RecommendationCategory_AWSBestPractices :: RecommendationCategory
+pattern RecommendationCategory_AWSBestPractices = RecommendationCategory' "AWSBestPractices"
+
+pattern RecommendationCategory_AWSCloudFormationIssues :: RecommendationCategory
+pattern RecommendationCategory_AWSCloudFormationIssues = RecommendationCategory' "AWSCloudFormationIssues"
+
+pattern RecommendationCategory_CodeInconsistencies :: RecommendationCategory
+pattern RecommendationCategory_CodeInconsistencies = RecommendationCategory' "CodeInconsistencies"
+
+pattern RecommendationCategory_CodeMaintenanceIssues :: RecommendationCategory
+pattern RecommendationCategory_CodeMaintenanceIssues = RecommendationCategory' "CodeMaintenanceIssues"
+
+pattern RecommendationCategory_ConcurrencyIssues :: RecommendationCategory
+pattern RecommendationCategory_ConcurrencyIssues = RecommendationCategory' "ConcurrencyIssues"
+
+pattern RecommendationCategory_DuplicateCode :: RecommendationCategory
+pattern RecommendationCategory_DuplicateCode = RecommendationCategory' "DuplicateCode"
+
+pattern RecommendationCategory_InputValidations :: RecommendationCategory
+pattern RecommendationCategory_InputValidations = RecommendationCategory' "InputValidations"
+
+pattern RecommendationCategory_JavaBestPractices :: RecommendationCategory
+pattern RecommendationCategory_JavaBestPractices = RecommendationCategory' "JavaBestPractices"
+
+pattern RecommendationCategory_PythonBestPractices :: RecommendationCategory
+pattern RecommendationCategory_PythonBestPractices = RecommendationCategory' "PythonBestPractices"
+
+pattern RecommendationCategory_ResourceLeaks :: RecommendationCategory
+pattern RecommendationCategory_ResourceLeaks = RecommendationCategory' "ResourceLeaks"
+
+pattern RecommendationCategory_SecurityIssues :: RecommendationCategory
+pattern RecommendationCategory_SecurityIssues = RecommendationCategory' "SecurityIssues"
+
+{-# COMPLETE
+  RecommendationCategory_AWSBestPractices,
+  RecommendationCategory_AWSCloudFormationIssues,
+  RecommendationCategory_CodeInconsistencies,
+  RecommendationCategory_CodeMaintenanceIssues,
+  RecommendationCategory_ConcurrencyIssues,
+  RecommendationCategory_DuplicateCode,
+  RecommendationCategory_InputValidations,
+  RecommendationCategory_JavaBestPractices,
+  RecommendationCategory_PythonBestPractices,
+  RecommendationCategory_ResourceLeaks,
+  RecommendationCategory_SecurityIssues,
+  RecommendationCategory'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RecommendationFeedback.hs b/gen/Amazonka/CodeGuruReviewer/Types/RecommendationFeedback.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RecommendationFeedback.hs
@@ -0,0 +1,164 @@
+{-# 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.CodeGuruReviewer.Types.RecommendationFeedback
+-- 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.CodeGuruReviewer.Types.RecommendationFeedback where
+
+import Amazonka.CodeGuruReviewer.Types.Reaction
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about the recommendation feedback.
+--
+-- /See:/ 'newRecommendationFeedback' smart constructor.
+data RecommendationFeedback = RecommendationFeedback'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+    -- object.
+    codeReviewArn :: Prelude.Maybe Prelude.Text,
+    -- | The time at which the feedback was created.
+    createdTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | The time at which the feedback was last updated.
+    lastUpdatedTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | List for storing reactions. Reactions are utf-8 text code for emojis.
+    -- You can send an empty list to clear off all your feedback.
+    reactions :: Prelude.Maybe [Reaction],
+    -- | The recommendation ID that can be used to track the provided
+    -- recommendations. Later on it can be used to collect the feedback.
+    recommendationId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the user that made the API call.
+    --
+    -- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+    -- Services account ID or an Amazon Resource Name (ARN). For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+    -- in the /Amazon Web Services Identity and Access Management User Guide/.
+    userId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationFeedback' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'codeReviewArn', 'recommendationFeedback_codeReviewArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+--
+-- 'createdTimeStamp', 'recommendationFeedback_createdTimeStamp' - The time at which the feedback was created.
+--
+-- 'lastUpdatedTimeStamp', 'recommendationFeedback_lastUpdatedTimeStamp' - The time at which the feedback was last updated.
+--
+-- 'reactions', 'recommendationFeedback_reactions' - List for storing reactions. Reactions are utf-8 text code for emojis.
+-- You can send an empty list to clear off all your feedback.
+--
+-- 'recommendationId', 'recommendationFeedback_recommendationId' - The recommendation ID that can be used to track the provided
+-- recommendations. Later on it can be used to collect the feedback.
+--
+-- 'userId', 'recommendationFeedback_userId' - The ID of the user that made the API call.
+--
+-- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+-- Services account ID or an Amazon Resource Name (ARN). For more
+-- information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+newRecommendationFeedback ::
+  RecommendationFeedback
+newRecommendationFeedback =
+  RecommendationFeedback'
+    { codeReviewArn =
+        Prelude.Nothing,
+      createdTimeStamp = Prelude.Nothing,
+      lastUpdatedTimeStamp = Prelude.Nothing,
+      reactions = Prelude.Nothing,
+      recommendationId = Prelude.Nothing,
+      userId = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CodeReview.html CodeReview>
+-- object.
+recommendationFeedback_codeReviewArn :: Lens.Lens' RecommendationFeedback (Prelude.Maybe Prelude.Text)
+recommendationFeedback_codeReviewArn = Lens.lens (\RecommendationFeedback' {codeReviewArn} -> codeReviewArn) (\s@RecommendationFeedback' {} a -> s {codeReviewArn = a} :: RecommendationFeedback)
+
+-- | The time at which the feedback was created.
+recommendationFeedback_createdTimeStamp :: Lens.Lens' RecommendationFeedback (Prelude.Maybe Prelude.UTCTime)
+recommendationFeedback_createdTimeStamp = Lens.lens (\RecommendationFeedback' {createdTimeStamp} -> createdTimeStamp) (\s@RecommendationFeedback' {} a -> s {createdTimeStamp = a} :: RecommendationFeedback) Prelude.. Lens.mapping Data._Time
+
+-- | The time at which the feedback was last updated.
+recommendationFeedback_lastUpdatedTimeStamp :: Lens.Lens' RecommendationFeedback (Prelude.Maybe Prelude.UTCTime)
+recommendationFeedback_lastUpdatedTimeStamp = Lens.lens (\RecommendationFeedback' {lastUpdatedTimeStamp} -> lastUpdatedTimeStamp) (\s@RecommendationFeedback' {} a -> s {lastUpdatedTimeStamp = a} :: RecommendationFeedback) Prelude.. Lens.mapping Data._Time
+
+-- | List for storing reactions. Reactions are utf-8 text code for emojis.
+-- You can send an empty list to clear off all your feedback.
+recommendationFeedback_reactions :: Lens.Lens' RecommendationFeedback (Prelude.Maybe [Reaction])
+recommendationFeedback_reactions = Lens.lens (\RecommendationFeedback' {reactions} -> reactions) (\s@RecommendationFeedback' {} a -> s {reactions = a} :: RecommendationFeedback) Prelude.. Lens.mapping Lens.coerced
+
+-- | The recommendation ID that can be used to track the provided
+-- recommendations. Later on it can be used to collect the feedback.
+recommendationFeedback_recommendationId :: Lens.Lens' RecommendationFeedback (Prelude.Maybe Prelude.Text)
+recommendationFeedback_recommendationId = Lens.lens (\RecommendationFeedback' {recommendationId} -> recommendationId) (\s@RecommendationFeedback' {} a -> s {recommendationId = a} :: RecommendationFeedback)
+
+-- | The ID of the user that made the API call.
+--
+-- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+-- Services account ID or an Amazon Resource Name (ARN). For more
+-- information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+recommendationFeedback_userId :: Lens.Lens' RecommendationFeedback (Prelude.Maybe Prelude.Text)
+recommendationFeedback_userId = Lens.lens (\RecommendationFeedback' {userId} -> userId) (\s@RecommendationFeedback' {} a -> s {userId = a} :: RecommendationFeedback)
+
+instance Data.FromJSON RecommendationFeedback where
+  parseJSON =
+    Data.withObject
+      "RecommendationFeedback"
+      ( \x ->
+          RecommendationFeedback'
+            Prelude.<$> (x Data..:? "CodeReviewArn")
+            Prelude.<*> (x Data..:? "CreatedTimeStamp")
+            Prelude.<*> (x Data..:? "LastUpdatedTimeStamp")
+            Prelude.<*> (x Data..:? "Reactions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "RecommendationId")
+            Prelude.<*> (x Data..:? "UserId")
+      )
+
+instance Prelude.Hashable RecommendationFeedback where
+  hashWithSalt _salt RecommendationFeedback' {..} =
+    _salt
+      `Prelude.hashWithSalt` codeReviewArn
+      `Prelude.hashWithSalt` createdTimeStamp
+      `Prelude.hashWithSalt` lastUpdatedTimeStamp
+      `Prelude.hashWithSalt` reactions
+      `Prelude.hashWithSalt` recommendationId
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData RecommendationFeedback where
+  rnf RecommendationFeedback' {..} =
+    Prelude.rnf codeReviewArn
+      `Prelude.seq` Prelude.rnf createdTimeStamp
+      `Prelude.seq` Prelude.rnf lastUpdatedTimeStamp
+      `Prelude.seq` Prelude.rnf reactions
+      `Prelude.seq` Prelude.rnf recommendationId
+      `Prelude.seq` Prelude.rnf userId
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RecommendationFeedbackSummary.hs b/gen/Amazonka/CodeGuruReviewer/Types/RecommendationFeedbackSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RecommendationFeedbackSummary.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.RecommendationFeedbackSummary
+-- 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.CodeGuruReviewer.Types.RecommendationFeedbackSummary where
+
+import Amazonka.CodeGuruReviewer.Types.Reaction
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about recommendation feedback summaries.
+--
+-- /See:/ 'newRecommendationFeedbackSummary' smart constructor.
+data RecommendationFeedbackSummary = RecommendationFeedbackSummary'
+  { -- | List for storing reactions. Reactions are utf-8 text code for emojis.
+    reactions :: Prelude.Maybe [Reaction],
+    -- | The recommendation ID that can be used to track the provided
+    -- recommendations. Later on it can be used to collect the feedback.
+    recommendationId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the user that gave the feedback.
+    --
+    -- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+    -- Services account ID or an Amazon Resource Name (ARN). For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+    -- in the /Amazon Web Services Identity and Access Management User Guide/.
+    userId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationFeedbackSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'reactions', 'recommendationFeedbackSummary_reactions' - List for storing reactions. Reactions are utf-8 text code for emojis.
+--
+-- 'recommendationId', 'recommendationFeedbackSummary_recommendationId' - The recommendation ID that can be used to track the provided
+-- recommendations. Later on it can be used to collect the feedback.
+--
+-- 'userId', 'recommendationFeedbackSummary_userId' - The ID of the user that gave the feedback.
+--
+-- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+-- Services account ID or an Amazon Resource Name (ARN). For more
+-- information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+newRecommendationFeedbackSummary ::
+  RecommendationFeedbackSummary
+newRecommendationFeedbackSummary =
+  RecommendationFeedbackSummary'
+    { reactions =
+        Prelude.Nothing,
+      recommendationId = Prelude.Nothing,
+      userId = Prelude.Nothing
+    }
+
+-- | List for storing reactions. Reactions are utf-8 text code for emojis.
+recommendationFeedbackSummary_reactions :: Lens.Lens' RecommendationFeedbackSummary (Prelude.Maybe [Reaction])
+recommendationFeedbackSummary_reactions = Lens.lens (\RecommendationFeedbackSummary' {reactions} -> reactions) (\s@RecommendationFeedbackSummary' {} a -> s {reactions = a} :: RecommendationFeedbackSummary) Prelude.. Lens.mapping Lens.coerced
+
+-- | The recommendation ID that can be used to track the provided
+-- recommendations. Later on it can be used to collect the feedback.
+recommendationFeedbackSummary_recommendationId :: Lens.Lens' RecommendationFeedbackSummary (Prelude.Maybe Prelude.Text)
+recommendationFeedbackSummary_recommendationId = Lens.lens (\RecommendationFeedbackSummary' {recommendationId} -> recommendationId) (\s@RecommendationFeedbackSummary' {} a -> s {recommendationId = a} :: RecommendationFeedbackSummary)
+
+-- | The ID of the user that gave the feedback.
+--
+-- The @UserId@ is an IAM principal that can be specified as an Amazon Web
+-- Services account ID or an Amazon Resource Name (ARN). For more
+-- information, see
+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying Specifying a Principal>
+-- in the /Amazon Web Services Identity and Access Management User Guide/.
+recommendationFeedbackSummary_userId :: Lens.Lens' RecommendationFeedbackSummary (Prelude.Maybe Prelude.Text)
+recommendationFeedbackSummary_userId = Lens.lens (\RecommendationFeedbackSummary' {userId} -> userId) (\s@RecommendationFeedbackSummary' {} a -> s {userId = a} :: RecommendationFeedbackSummary)
+
+instance Data.FromJSON RecommendationFeedbackSummary where
+  parseJSON =
+    Data.withObject
+      "RecommendationFeedbackSummary"
+      ( \x ->
+          RecommendationFeedbackSummary'
+            Prelude.<$> (x Data..:? "Reactions" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "RecommendationId")
+            Prelude.<*> (x Data..:? "UserId")
+      )
+
+instance
+  Prelude.Hashable
+    RecommendationFeedbackSummary
+  where
+  hashWithSalt _salt RecommendationFeedbackSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` reactions
+      `Prelude.hashWithSalt` recommendationId
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData RecommendationFeedbackSummary where
+  rnf RecommendationFeedbackSummary' {..} =
+    Prelude.rnf reactions
+      `Prelude.seq` Prelude.rnf recommendationId
+      `Prelude.seq` Prelude.rnf userId
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RecommendationSummary.hs b/gen/Amazonka/CodeGuruReviewer/Types/RecommendationSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RecommendationSummary.hs
@@ -0,0 +1,187 @@
+{-# 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.CodeGuruReviewer.Types.RecommendationSummary
+-- 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.CodeGuruReviewer.Types.RecommendationSummary where
+
+import Amazonka.CodeGuruReviewer.Types.RecommendationCategory
+import Amazonka.CodeGuruReviewer.Types.RuleMetadata
+import Amazonka.CodeGuruReviewer.Types.Severity
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about recommendations.
+--
+-- /See:/ 'newRecommendationSummary' smart constructor.
+data RecommendationSummary = RecommendationSummary'
+  { -- | A description of the recommendation generated by CodeGuru Reviewer for
+    -- the lines of code between the start line and the end line.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Last line where the recommendation is applicable in the source commit or
+    -- source branch. For a single line comment the start line and end line
+    -- values are the same.
+    endLine :: Prelude.Maybe Prelude.Int,
+    -- | Name of the file on which a recommendation is provided.
+    filePath :: Prelude.Maybe Prelude.Text,
+    -- | The type of a recommendation.
+    recommendationCategory :: Prelude.Maybe RecommendationCategory,
+    -- | The recommendation ID that can be used to track the provided
+    -- recommendations. Later on it can be used to collect the feedback.
+    recommendationId :: Prelude.Maybe Prelude.Text,
+    -- | Metadata about a rule. Rule metadata includes an ID, a name, a list of
+    -- tags, and a short and long description. CodeGuru Reviewer uses rules to
+    -- analyze code. A rule\'s recommendation is included in analysis results
+    -- if code is detected that violates the rule.
+    ruleMetadata :: Prelude.Maybe RuleMetadata,
+    -- | The severity of the issue in the code that generated this
+    -- recommendation.
+    severity :: Prelude.Maybe Severity,
+    -- | Start line from where the recommendation is applicable in the source
+    -- commit or source branch.
+    startLine :: Prelude.Maybe Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecommendationSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'recommendationSummary_description' - A description of the recommendation generated by CodeGuru Reviewer for
+-- the lines of code between the start line and the end line.
+--
+-- 'endLine', 'recommendationSummary_endLine' - Last line where the recommendation is applicable in the source commit or
+-- source branch. For a single line comment the start line and end line
+-- values are the same.
+--
+-- 'filePath', 'recommendationSummary_filePath' - Name of the file on which a recommendation is provided.
+--
+-- 'recommendationCategory', 'recommendationSummary_recommendationCategory' - The type of a recommendation.
+--
+-- 'recommendationId', 'recommendationSummary_recommendationId' - The recommendation ID that can be used to track the provided
+-- recommendations. Later on it can be used to collect the feedback.
+--
+-- 'ruleMetadata', 'recommendationSummary_ruleMetadata' - Metadata about a rule. Rule metadata includes an ID, a name, a list of
+-- tags, and a short and long description. CodeGuru Reviewer uses rules to
+-- analyze code. A rule\'s recommendation is included in analysis results
+-- if code is detected that violates the rule.
+--
+-- 'severity', 'recommendationSummary_severity' - The severity of the issue in the code that generated this
+-- recommendation.
+--
+-- 'startLine', 'recommendationSummary_startLine' - Start line from where the recommendation is applicable in the source
+-- commit or source branch.
+newRecommendationSummary ::
+  RecommendationSummary
+newRecommendationSummary =
+  RecommendationSummary'
+    { description =
+        Prelude.Nothing,
+      endLine = Prelude.Nothing,
+      filePath = Prelude.Nothing,
+      recommendationCategory = Prelude.Nothing,
+      recommendationId = Prelude.Nothing,
+      ruleMetadata = Prelude.Nothing,
+      severity = Prelude.Nothing,
+      startLine = Prelude.Nothing
+    }
+
+-- | A description of the recommendation generated by CodeGuru Reviewer for
+-- the lines of code between the start line and the end line.
+recommendationSummary_description :: Lens.Lens' RecommendationSummary (Prelude.Maybe Prelude.Text)
+recommendationSummary_description = Lens.lens (\RecommendationSummary' {description} -> description) (\s@RecommendationSummary' {} a -> s {description = a} :: RecommendationSummary)
+
+-- | Last line where the recommendation is applicable in the source commit or
+-- source branch. For a single line comment the start line and end line
+-- values are the same.
+recommendationSummary_endLine :: Lens.Lens' RecommendationSummary (Prelude.Maybe Prelude.Int)
+recommendationSummary_endLine = Lens.lens (\RecommendationSummary' {endLine} -> endLine) (\s@RecommendationSummary' {} a -> s {endLine = a} :: RecommendationSummary)
+
+-- | Name of the file on which a recommendation is provided.
+recommendationSummary_filePath :: Lens.Lens' RecommendationSummary (Prelude.Maybe Prelude.Text)
+recommendationSummary_filePath = Lens.lens (\RecommendationSummary' {filePath} -> filePath) (\s@RecommendationSummary' {} a -> s {filePath = a} :: RecommendationSummary)
+
+-- | The type of a recommendation.
+recommendationSummary_recommendationCategory :: Lens.Lens' RecommendationSummary (Prelude.Maybe RecommendationCategory)
+recommendationSummary_recommendationCategory = Lens.lens (\RecommendationSummary' {recommendationCategory} -> recommendationCategory) (\s@RecommendationSummary' {} a -> s {recommendationCategory = a} :: RecommendationSummary)
+
+-- | The recommendation ID that can be used to track the provided
+-- recommendations. Later on it can be used to collect the feedback.
+recommendationSummary_recommendationId :: Lens.Lens' RecommendationSummary (Prelude.Maybe Prelude.Text)
+recommendationSummary_recommendationId = Lens.lens (\RecommendationSummary' {recommendationId} -> recommendationId) (\s@RecommendationSummary' {} a -> s {recommendationId = a} :: RecommendationSummary)
+
+-- | Metadata about a rule. Rule metadata includes an ID, a name, a list of
+-- tags, and a short and long description. CodeGuru Reviewer uses rules to
+-- analyze code. A rule\'s recommendation is included in analysis results
+-- if code is detected that violates the rule.
+recommendationSummary_ruleMetadata :: Lens.Lens' RecommendationSummary (Prelude.Maybe RuleMetadata)
+recommendationSummary_ruleMetadata = Lens.lens (\RecommendationSummary' {ruleMetadata} -> ruleMetadata) (\s@RecommendationSummary' {} a -> s {ruleMetadata = a} :: RecommendationSummary)
+
+-- | The severity of the issue in the code that generated this
+-- recommendation.
+recommendationSummary_severity :: Lens.Lens' RecommendationSummary (Prelude.Maybe Severity)
+recommendationSummary_severity = Lens.lens (\RecommendationSummary' {severity} -> severity) (\s@RecommendationSummary' {} a -> s {severity = a} :: RecommendationSummary)
+
+-- | Start line from where the recommendation is applicable in the source
+-- commit or source branch.
+recommendationSummary_startLine :: Lens.Lens' RecommendationSummary (Prelude.Maybe Prelude.Int)
+recommendationSummary_startLine = Lens.lens (\RecommendationSummary' {startLine} -> startLine) (\s@RecommendationSummary' {} a -> s {startLine = a} :: RecommendationSummary)
+
+instance Data.FromJSON RecommendationSummary where
+  parseJSON =
+    Data.withObject
+      "RecommendationSummary"
+      ( \x ->
+          RecommendationSummary'
+            Prelude.<$> (x Data..:? "Description")
+            Prelude.<*> (x Data..:? "EndLine")
+            Prelude.<*> (x Data..:? "FilePath")
+            Prelude.<*> (x Data..:? "RecommendationCategory")
+            Prelude.<*> (x Data..:? "RecommendationId")
+            Prelude.<*> (x Data..:? "RuleMetadata")
+            Prelude.<*> (x Data..:? "Severity")
+            Prelude.<*> (x Data..:? "StartLine")
+      )
+
+instance Prelude.Hashable RecommendationSummary where
+  hashWithSalt _salt RecommendationSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` endLine
+      `Prelude.hashWithSalt` filePath
+      `Prelude.hashWithSalt` recommendationCategory
+      `Prelude.hashWithSalt` recommendationId
+      `Prelude.hashWithSalt` ruleMetadata
+      `Prelude.hashWithSalt` severity
+      `Prelude.hashWithSalt` startLine
+
+instance Prelude.NFData RecommendationSummary where
+  rnf RecommendationSummary' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf endLine
+      `Prelude.seq` Prelude.rnf filePath
+      `Prelude.seq` Prelude.rnf recommendationCategory
+      `Prelude.seq` Prelude.rnf recommendationId
+      `Prelude.seq` Prelude.rnf ruleMetadata
+      `Prelude.seq` Prelude.rnf severity
+      `Prelude.seq` Prelude.rnf startLine
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/Repository.hs b/gen/Amazonka/CodeGuruReviewer/Types/Repository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/Repository.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.Repository
+-- 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.CodeGuruReviewer.Types.Repository where
+
+import Amazonka.CodeGuruReviewer.Types.CodeCommitRepository
+import Amazonka.CodeGuruReviewer.Types.S3Repository
+import Amazonka.CodeGuruReviewer.Types.ThirdPartySourceRepository
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an associated Amazon Web Services CodeCommit
+-- repository or an associated repository that is managed by Amazon Web
+-- Services CodeStar Connections (for example, Bitbucket). This
+-- @Repository@ object is not used if your source code is in an associated
+-- GitHub repository.
+--
+-- /See:/ 'newRepository' smart constructor.
+data Repository = Repository'
+  { -- | Information about a Bitbucket repository.
+    bitbucket :: Prelude.Maybe ThirdPartySourceRepository,
+    -- | Information about an Amazon Web Services CodeCommit repository.
+    codeCommit :: Prelude.Maybe CodeCommitRepository,
+    -- | Information about a GitHub Enterprise Server repository.
+    gitHubEnterpriseServer :: Prelude.Maybe ThirdPartySourceRepository,
+    s3Bucket :: Prelude.Maybe S3Repository
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Repository' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bitbucket', 'repository_bitbucket' - Information about a Bitbucket repository.
+--
+-- 'codeCommit', 'repository_codeCommit' - Information about an Amazon Web Services CodeCommit repository.
+--
+-- 'gitHubEnterpriseServer', 'repository_gitHubEnterpriseServer' - Information about a GitHub Enterprise Server repository.
+--
+-- 's3Bucket', 'repository_s3Bucket' - Undocumented member.
+newRepository ::
+  Repository
+newRepository =
+  Repository'
+    { bitbucket = Prelude.Nothing,
+      codeCommit = Prelude.Nothing,
+      gitHubEnterpriseServer = Prelude.Nothing,
+      s3Bucket = Prelude.Nothing
+    }
+
+-- | Information about a Bitbucket repository.
+repository_bitbucket :: Lens.Lens' Repository (Prelude.Maybe ThirdPartySourceRepository)
+repository_bitbucket = Lens.lens (\Repository' {bitbucket} -> bitbucket) (\s@Repository' {} a -> s {bitbucket = a} :: Repository)
+
+-- | Information about an Amazon Web Services CodeCommit repository.
+repository_codeCommit :: Lens.Lens' Repository (Prelude.Maybe CodeCommitRepository)
+repository_codeCommit = Lens.lens (\Repository' {codeCommit} -> codeCommit) (\s@Repository' {} a -> s {codeCommit = a} :: Repository)
+
+-- | Information about a GitHub Enterprise Server repository.
+repository_gitHubEnterpriseServer :: Lens.Lens' Repository (Prelude.Maybe ThirdPartySourceRepository)
+repository_gitHubEnterpriseServer = Lens.lens (\Repository' {gitHubEnterpriseServer} -> gitHubEnterpriseServer) (\s@Repository' {} a -> s {gitHubEnterpriseServer = a} :: Repository)
+
+-- | Undocumented member.
+repository_s3Bucket :: Lens.Lens' Repository (Prelude.Maybe S3Repository)
+repository_s3Bucket = Lens.lens (\Repository' {s3Bucket} -> s3Bucket) (\s@Repository' {} a -> s {s3Bucket = a} :: Repository)
+
+instance Prelude.Hashable Repository where
+  hashWithSalt _salt Repository' {..} =
+    _salt
+      `Prelude.hashWithSalt` bitbucket
+      `Prelude.hashWithSalt` codeCommit
+      `Prelude.hashWithSalt` gitHubEnterpriseServer
+      `Prelude.hashWithSalt` s3Bucket
+
+instance Prelude.NFData Repository where
+  rnf Repository' {..} =
+    Prelude.rnf bitbucket
+      `Prelude.seq` Prelude.rnf codeCommit
+      `Prelude.seq` Prelude.rnf gitHubEnterpriseServer
+      `Prelude.seq` Prelude.rnf s3Bucket
+
+instance Data.ToJSON Repository where
+  toJSON Repository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Bitbucket" Data..=) Prelude.<$> bitbucket,
+            ("CodeCommit" Data..=) Prelude.<$> codeCommit,
+            ("GitHubEnterpriseServer" Data..=)
+              Prelude.<$> gitHubEnterpriseServer,
+            ("S3Bucket" Data..=) Prelude.<$> s3Bucket
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAnalysis.hs b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAnalysis.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.CodeGuruReviewer.Types.RepositoryAnalysis
+-- 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.CodeGuruReviewer.Types.RepositoryAnalysis where
+
+import Amazonka.CodeGuruReviewer.Types.RepositoryHeadSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.SourceCodeType
+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 code review type that analyzes all code under a specified branch in an
+-- associated repository. The associated repository is specified using its
+-- ARN when you call
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_CreateCodeReview CreateCodeReview>.
+--
+-- /See:/ 'newRepositoryAnalysis' smart constructor.
+data RepositoryAnalysis = RepositoryAnalysis'
+  { -- | A
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+    -- that specifies the tip of a branch in an associated repository.
+    repositoryHead :: Prelude.Maybe RepositoryHeadSourceCodeType,
+    sourceCodeType :: Prelude.Maybe SourceCodeType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RepositoryAnalysis' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'repositoryHead', 'repositoryAnalysis_repositoryHead' - A
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies the tip of a branch in an associated repository.
+--
+-- 'sourceCodeType', 'repositoryAnalysis_sourceCodeType' - Undocumented member.
+newRepositoryAnalysis ::
+  RepositoryAnalysis
+newRepositoryAnalysis =
+  RepositoryAnalysis'
+    { repositoryHead =
+        Prelude.Nothing,
+      sourceCodeType = Prelude.Nothing
+    }
+
+-- | A
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies the tip of a branch in an associated repository.
+repositoryAnalysis_repositoryHead :: Lens.Lens' RepositoryAnalysis (Prelude.Maybe RepositoryHeadSourceCodeType)
+repositoryAnalysis_repositoryHead = Lens.lens (\RepositoryAnalysis' {repositoryHead} -> repositoryHead) (\s@RepositoryAnalysis' {} a -> s {repositoryHead = a} :: RepositoryAnalysis)
+
+-- | Undocumented member.
+repositoryAnalysis_sourceCodeType :: Lens.Lens' RepositoryAnalysis (Prelude.Maybe SourceCodeType)
+repositoryAnalysis_sourceCodeType = Lens.lens (\RepositoryAnalysis' {sourceCodeType} -> sourceCodeType) (\s@RepositoryAnalysis' {} a -> s {sourceCodeType = a} :: RepositoryAnalysis)
+
+instance Prelude.Hashable RepositoryAnalysis where
+  hashWithSalt _salt RepositoryAnalysis' {..} =
+    _salt
+      `Prelude.hashWithSalt` repositoryHead
+      `Prelude.hashWithSalt` sourceCodeType
+
+instance Prelude.NFData RepositoryAnalysis where
+  rnf RepositoryAnalysis' {..} =
+    Prelude.rnf repositoryHead
+      `Prelude.seq` Prelude.rnf sourceCodeType
+
+instance Data.ToJSON RepositoryAnalysis where
+  toJSON RepositoryAnalysis' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RepositoryHead" Data..=)
+              Prelude.<$> repositoryHead,
+            ("SourceCodeType" Data..=)
+              Prelude.<$> sourceCodeType
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociation.hs b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociation.hs
@@ -0,0 +1,360 @@
+{-# 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.CodeGuruReviewer.Types.RepositoryAssociation
+-- 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.CodeGuruReviewer.Types.RepositoryAssociation where
+
+import Amazonka.CodeGuruReviewer.Types.KMSKeyDetails
+import Amazonka.CodeGuruReviewer.Types.ProviderType
+import Amazonka.CodeGuruReviewer.Types.RepositoryAssociationState
+import Amazonka.CodeGuruReviewer.Types.S3RepositoryDetails
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a repository association. The
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_DescribeRepositoryAssociation.html DescribeRepositoryAssociation>
+-- operation returns a @RepositoryAssociation@ object.
+--
+-- /See:/ 'newRepositoryAssociation' smart constructor.
+data RepositoryAssociation = RepositoryAssociation'
+  { -- | The Amazon Resource Name (ARN) identifying the repository association.
+    associationArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the repository association.
+    associationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+    -- Connections connection. Its format is
+    -- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+    -- in the /Amazon Web Services CodeStar Connections API Reference/.
+    connectionArn :: Prelude.Maybe Prelude.Text,
+    -- | The time, in milliseconds since the epoch, when the repository
+    -- association was created.
+    createdTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | A @KMSKeyDetails@ object that contains:
+    --
+    -- -   The encryption option for this repository association. It is either
+    --     owned by Amazon Web Services Key Management Service (KMS)
+    --     (@AWS_OWNED_CMK@) or customer managed (@CUSTOMER_MANAGED_CMK@).
+    --
+    -- -   The ID of the Amazon Web Services KMS key that is associated with
+    --     this repository association.
+    kmsKeyDetails :: Prelude.Maybe KMSKeyDetails,
+    -- | The time, in milliseconds since the epoch, when the repository
+    -- association was last updated.
+    lastUpdatedTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | The name of the repository.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The owner of the repository. For an Amazon Web Services CodeCommit
+    -- repository, this is the Amazon Web Services account ID of the account
+    -- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+    -- Bitbucket repository, this is the username for the account that owns the
+    -- repository. For an S3 repository, it can be the username or Amazon Web
+    -- Services account ID.
+    owner :: Prelude.Maybe Prelude.Text,
+    -- | The provider type of the repository association.
+    providerType :: Prelude.Maybe ProviderType,
+    s3RepositoryDetails :: Prelude.Maybe S3RepositoryDetails,
+    -- | The state of the repository association.
+    --
+    -- The valid repository association states are:
+    --
+    -- -   __Associated__: The repository association is complete.
+    --
+    -- -   __Associating__: CodeGuru Reviewer is:
+    --
+    --     -   Setting up pull request notifications. This is required for pull
+    --         requests to trigger a CodeGuru Reviewer review.
+    --
+    --         If your repository @ProviderType@ is @GitHub@,
+    --         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+    --         creates webhooks in your repository to trigger CodeGuru Reviewer
+    --         reviews. If you delete these webhooks, reviews of code in your
+    --         repository cannot be triggered.
+    --
+    --     -   Setting up source code access. This is required for CodeGuru
+    --         Reviewer to securely clone code in your repository.
+    --
+    -- -   __Failed__: The repository failed to associate or disassociate.
+    --
+    -- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+    --     pull request notifications and source code access.
+    --
+    -- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+    --     repository. You can create a new association with this repository if
+    --     you want to review source code in it later. You can control access
+    --     to code reviews created in anassociated repository with tags after
+    --     it has been disassociated. For more information, see
+    --     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+    --     in the /Amazon CodeGuru Reviewer User Guide/.
+    state :: Prelude.Maybe RepositoryAssociationState,
+    -- | A description of why the repository association is in the current state.
+    stateReason :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RepositoryAssociation' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associationArn', 'repositoryAssociation_associationArn' - The Amazon Resource Name (ARN) identifying the repository association.
+--
+-- 'associationId', 'repositoryAssociation_associationId' - The ID of the repository association.
+--
+-- 'connectionArn', 'repositoryAssociation_connectionArn' - The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+-- Connections connection. Its format is
+-- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+-- For more information, see
+-- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+-- in the /Amazon Web Services CodeStar Connections API Reference/.
+--
+-- 'createdTimeStamp', 'repositoryAssociation_createdTimeStamp' - The time, in milliseconds since the epoch, when the repository
+-- association was created.
+--
+-- 'kmsKeyDetails', 'repositoryAssociation_kmsKeyDetails' - A @KMSKeyDetails@ object that contains:
+--
+-- -   The encryption option for this repository association. It is either
+--     owned by Amazon Web Services Key Management Service (KMS)
+--     (@AWS_OWNED_CMK@) or customer managed (@CUSTOMER_MANAGED_CMK@).
+--
+-- -   The ID of the Amazon Web Services KMS key that is associated with
+--     this repository association.
+--
+-- 'lastUpdatedTimeStamp', 'repositoryAssociation_lastUpdatedTimeStamp' - The time, in milliseconds since the epoch, when the repository
+-- association was last updated.
+--
+-- 'name', 'repositoryAssociation_name' - The name of the repository.
+--
+-- 'owner', 'repositoryAssociation_owner' - The owner of the repository. For an Amazon Web Services CodeCommit
+-- repository, this is the Amazon Web Services account ID of the account
+-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, it can be the username or Amazon Web
+-- Services account ID.
+--
+-- 'providerType', 'repositoryAssociation_providerType' - The provider type of the repository association.
+--
+-- 's3RepositoryDetails', 'repositoryAssociation_s3RepositoryDetails' - Undocumented member.
+--
+-- 'state', 'repositoryAssociation_state' - The state of the repository association.
+--
+-- The valid repository association states are:
+--
+-- -   __Associated__: The repository association is complete.
+--
+-- -   __Associating__: CodeGuru Reviewer is:
+--
+--     -   Setting up pull request notifications. This is required for pull
+--         requests to trigger a CodeGuru Reviewer review.
+--
+--         If your repository @ProviderType@ is @GitHub@,
+--         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+--         creates webhooks in your repository to trigger CodeGuru Reviewer
+--         reviews. If you delete these webhooks, reviews of code in your
+--         repository cannot be triggered.
+--
+--     -   Setting up source code access. This is required for CodeGuru
+--         Reviewer to securely clone code in your repository.
+--
+-- -   __Failed__: The repository failed to associate or disassociate.
+--
+-- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+--     pull request notifications and source code access.
+--
+-- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+--     repository. You can create a new association with this repository if
+--     you want to review source code in it later. You can control access
+--     to code reviews created in anassociated repository with tags after
+--     it has been disassociated. For more information, see
+--     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+--     in the /Amazon CodeGuru Reviewer User Guide/.
+--
+-- 'stateReason', 'repositoryAssociation_stateReason' - A description of why the repository association is in the current state.
+newRepositoryAssociation ::
+  RepositoryAssociation
+newRepositoryAssociation =
+  RepositoryAssociation'
+    { associationArn =
+        Prelude.Nothing,
+      associationId = Prelude.Nothing,
+      connectionArn = Prelude.Nothing,
+      createdTimeStamp = Prelude.Nothing,
+      kmsKeyDetails = Prelude.Nothing,
+      lastUpdatedTimeStamp = Prelude.Nothing,
+      name = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      providerType = Prelude.Nothing,
+      s3RepositoryDetails = Prelude.Nothing,
+      state = Prelude.Nothing,
+      stateReason = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) identifying the repository association.
+repositoryAssociation_associationArn :: Lens.Lens' RepositoryAssociation (Prelude.Maybe Prelude.Text)
+repositoryAssociation_associationArn = Lens.lens (\RepositoryAssociation' {associationArn} -> associationArn) (\s@RepositoryAssociation' {} a -> s {associationArn = a} :: RepositoryAssociation)
+
+-- | The ID of the repository association.
+repositoryAssociation_associationId :: Lens.Lens' RepositoryAssociation (Prelude.Maybe Prelude.Text)
+repositoryAssociation_associationId = Lens.lens (\RepositoryAssociation' {associationId} -> associationId) (\s@RepositoryAssociation' {} a -> s {associationId = a} :: RepositoryAssociation)
+
+-- | The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+-- Connections connection. Its format is
+-- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+-- For more information, see
+-- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+-- in the /Amazon Web Services CodeStar Connections API Reference/.
+repositoryAssociation_connectionArn :: Lens.Lens' RepositoryAssociation (Prelude.Maybe Prelude.Text)
+repositoryAssociation_connectionArn = Lens.lens (\RepositoryAssociation' {connectionArn} -> connectionArn) (\s@RepositoryAssociation' {} a -> s {connectionArn = a} :: RepositoryAssociation)
+
+-- | The time, in milliseconds since the epoch, when the repository
+-- association was created.
+repositoryAssociation_createdTimeStamp :: Lens.Lens' RepositoryAssociation (Prelude.Maybe Prelude.UTCTime)
+repositoryAssociation_createdTimeStamp = Lens.lens (\RepositoryAssociation' {createdTimeStamp} -> createdTimeStamp) (\s@RepositoryAssociation' {} a -> s {createdTimeStamp = a} :: RepositoryAssociation) Prelude.. Lens.mapping Data._Time
+
+-- | A @KMSKeyDetails@ object that contains:
+--
+-- -   The encryption option for this repository association. It is either
+--     owned by Amazon Web Services Key Management Service (KMS)
+--     (@AWS_OWNED_CMK@) or customer managed (@CUSTOMER_MANAGED_CMK@).
+--
+-- -   The ID of the Amazon Web Services KMS key that is associated with
+--     this repository association.
+repositoryAssociation_kmsKeyDetails :: Lens.Lens' RepositoryAssociation (Prelude.Maybe KMSKeyDetails)
+repositoryAssociation_kmsKeyDetails = Lens.lens (\RepositoryAssociation' {kmsKeyDetails} -> kmsKeyDetails) (\s@RepositoryAssociation' {} a -> s {kmsKeyDetails = a} :: RepositoryAssociation)
+
+-- | The time, in milliseconds since the epoch, when the repository
+-- association was last updated.
+repositoryAssociation_lastUpdatedTimeStamp :: Lens.Lens' RepositoryAssociation (Prelude.Maybe Prelude.UTCTime)
+repositoryAssociation_lastUpdatedTimeStamp = Lens.lens (\RepositoryAssociation' {lastUpdatedTimeStamp} -> lastUpdatedTimeStamp) (\s@RepositoryAssociation' {} a -> s {lastUpdatedTimeStamp = a} :: RepositoryAssociation) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the repository.
+repositoryAssociation_name :: Lens.Lens' RepositoryAssociation (Prelude.Maybe Prelude.Text)
+repositoryAssociation_name = Lens.lens (\RepositoryAssociation' {name} -> name) (\s@RepositoryAssociation' {} a -> s {name = a} :: RepositoryAssociation)
+
+-- | The owner of the repository. For an Amazon Web Services CodeCommit
+-- repository, this is the Amazon Web Services account ID of the account
+-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, it can be the username or Amazon Web
+-- Services account ID.
+repositoryAssociation_owner :: Lens.Lens' RepositoryAssociation (Prelude.Maybe Prelude.Text)
+repositoryAssociation_owner = Lens.lens (\RepositoryAssociation' {owner} -> owner) (\s@RepositoryAssociation' {} a -> s {owner = a} :: RepositoryAssociation)
+
+-- | The provider type of the repository association.
+repositoryAssociation_providerType :: Lens.Lens' RepositoryAssociation (Prelude.Maybe ProviderType)
+repositoryAssociation_providerType = Lens.lens (\RepositoryAssociation' {providerType} -> providerType) (\s@RepositoryAssociation' {} a -> s {providerType = a} :: RepositoryAssociation)
+
+-- | Undocumented member.
+repositoryAssociation_s3RepositoryDetails :: Lens.Lens' RepositoryAssociation (Prelude.Maybe S3RepositoryDetails)
+repositoryAssociation_s3RepositoryDetails = Lens.lens (\RepositoryAssociation' {s3RepositoryDetails} -> s3RepositoryDetails) (\s@RepositoryAssociation' {} a -> s {s3RepositoryDetails = a} :: RepositoryAssociation)
+
+-- | The state of the repository association.
+--
+-- The valid repository association states are:
+--
+-- -   __Associated__: The repository association is complete.
+--
+-- -   __Associating__: CodeGuru Reviewer is:
+--
+--     -   Setting up pull request notifications. This is required for pull
+--         requests to trigger a CodeGuru Reviewer review.
+--
+--         If your repository @ProviderType@ is @GitHub@,
+--         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+--         creates webhooks in your repository to trigger CodeGuru Reviewer
+--         reviews. If you delete these webhooks, reviews of code in your
+--         repository cannot be triggered.
+--
+--     -   Setting up source code access. This is required for CodeGuru
+--         Reviewer to securely clone code in your repository.
+--
+-- -   __Failed__: The repository failed to associate or disassociate.
+--
+-- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+--     pull request notifications and source code access.
+--
+-- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+--     repository. You can create a new association with this repository if
+--     you want to review source code in it later. You can control access
+--     to code reviews created in anassociated repository with tags after
+--     it has been disassociated. For more information, see
+--     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+--     in the /Amazon CodeGuru Reviewer User Guide/.
+repositoryAssociation_state :: Lens.Lens' RepositoryAssociation (Prelude.Maybe RepositoryAssociationState)
+repositoryAssociation_state = Lens.lens (\RepositoryAssociation' {state} -> state) (\s@RepositoryAssociation' {} a -> s {state = a} :: RepositoryAssociation)
+
+-- | A description of why the repository association is in the current state.
+repositoryAssociation_stateReason :: Lens.Lens' RepositoryAssociation (Prelude.Maybe Prelude.Text)
+repositoryAssociation_stateReason = Lens.lens (\RepositoryAssociation' {stateReason} -> stateReason) (\s@RepositoryAssociation' {} a -> s {stateReason = a} :: RepositoryAssociation)
+
+instance Data.FromJSON RepositoryAssociation where
+  parseJSON =
+    Data.withObject
+      "RepositoryAssociation"
+      ( \x ->
+          RepositoryAssociation'
+            Prelude.<$> (x Data..:? "AssociationArn")
+            Prelude.<*> (x Data..:? "AssociationId")
+            Prelude.<*> (x Data..:? "ConnectionArn")
+            Prelude.<*> (x Data..:? "CreatedTimeStamp")
+            Prelude.<*> (x Data..:? "KMSKeyDetails")
+            Prelude.<*> (x Data..:? "LastUpdatedTimeStamp")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "ProviderType")
+            Prelude.<*> (x Data..:? "S3RepositoryDetails")
+            Prelude.<*> (x Data..:? "State")
+            Prelude.<*> (x Data..:? "StateReason")
+      )
+
+instance Prelude.Hashable RepositoryAssociation where
+  hashWithSalt _salt RepositoryAssociation' {..} =
+    _salt
+      `Prelude.hashWithSalt` associationArn
+      `Prelude.hashWithSalt` associationId
+      `Prelude.hashWithSalt` connectionArn
+      `Prelude.hashWithSalt` createdTimeStamp
+      `Prelude.hashWithSalt` kmsKeyDetails
+      `Prelude.hashWithSalt` lastUpdatedTimeStamp
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` providerType
+      `Prelude.hashWithSalt` s3RepositoryDetails
+      `Prelude.hashWithSalt` state
+      `Prelude.hashWithSalt` stateReason
+
+instance Prelude.NFData RepositoryAssociation where
+  rnf RepositoryAssociation' {..} =
+    Prelude.rnf associationArn
+      `Prelude.seq` Prelude.rnf associationId
+      `Prelude.seq` Prelude.rnf connectionArn
+      `Prelude.seq` Prelude.rnf createdTimeStamp
+      `Prelude.seq` Prelude.rnf kmsKeyDetails
+      `Prelude.seq` Prelude.rnf lastUpdatedTimeStamp
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf providerType
+      `Prelude.seq` Prelude.rnf s3RepositoryDetails
+      `Prelude.seq` Prelude.rnf state
+      `Prelude.seq` Prelude.rnf stateReason
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociationState.hs b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociationState.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.RepositoryAssociationState
+-- 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.CodeGuruReviewer.Types.RepositoryAssociationState
+  ( RepositoryAssociationState
+      ( ..,
+        RepositoryAssociationState_Associated,
+        RepositoryAssociationState_Associating,
+        RepositoryAssociationState_Disassociated,
+        RepositoryAssociationState_Disassociating,
+        RepositoryAssociationState_Failed
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RepositoryAssociationState = RepositoryAssociationState'
+  { fromRepositoryAssociationState ::
+      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 RepositoryAssociationState_Associated :: RepositoryAssociationState
+pattern RepositoryAssociationState_Associated = RepositoryAssociationState' "Associated"
+
+pattern RepositoryAssociationState_Associating :: RepositoryAssociationState
+pattern RepositoryAssociationState_Associating = RepositoryAssociationState' "Associating"
+
+pattern RepositoryAssociationState_Disassociated :: RepositoryAssociationState
+pattern RepositoryAssociationState_Disassociated = RepositoryAssociationState' "Disassociated"
+
+pattern RepositoryAssociationState_Disassociating :: RepositoryAssociationState
+pattern RepositoryAssociationState_Disassociating = RepositoryAssociationState' "Disassociating"
+
+pattern RepositoryAssociationState_Failed :: RepositoryAssociationState
+pattern RepositoryAssociationState_Failed = RepositoryAssociationState' "Failed"
+
+{-# COMPLETE
+  RepositoryAssociationState_Associated,
+  RepositoryAssociationState_Associating,
+  RepositoryAssociationState_Disassociated,
+  RepositoryAssociationState_Disassociating,
+  RepositoryAssociationState_Failed,
+  RepositoryAssociationState'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociationSummary.hs b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociationSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryAssociationSummary.hs
@@ -0,0 +1,299 @@
+{-# 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.CodeGuruReviewer.Types.RepositoryAssociationSummary
+-- 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.CodeGuruReviewer.Types.RepositoryAssociationSummary where
+
+import Amazonka.CodeGuruReviewer.Types.ProviderType
+import Amazonka.CodeGuruReviewer.Types.RepositoryAssociationState
+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
+
+-- | Summary information about a repository association. The
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>
+-- operation returns a list of @RepositoryAssociationSummary@ objects.
+--
+-- /See:/ 'newRepositoryAssociationSummary' smart constructor.
+data RepositoryAssociationSummary = RepositoryAssociationSummary'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+    -- object. You can retrieve this ARN by calling
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+    associationArn :: Prelude.Maybe Prelude.Text,
+    -- | The repository association ID.
+    associationId :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+    -- Connections connection. Its format is
+    -- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+    -- in the /Amazon Web Services CodeStar Connections API Reference/.
+    connectionArn :: Prelude.Maybe Prelude.Text,
+    -- | The time, in milliseconds since the epoch, since the repository
+    -- association was last updated.
+    lastUpdatedTimeStamp :: Prelude.Maybe Data.POSIX,
+    -- | The name of the repository association.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The owner of the repository. For an Amazon Web Services CodeCommit
+    -- repository, this is the Amazon Web Services account ID of the account
+    -- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+    -- Bitbucket repository, this is the username for the account that owns the
+    -- repository. For an S3 repository, it can be the username or Amazon Web
+    -- Services account ID.
+    owner :: Prelude.Maybe Prelude.Text,
+    -- | The provider type of the repository association.
+    providerType :: Prelude.Maybe ProviderType,
+    -- | The state of the repository association.
+    --
+    -- The valid repository association states are:
+    --
+    -- -   __Associated__: The repository association is complete.
+    --
+    -- -   __Associating__: CodeGuru Reviewer is:
+    --
+    --     -   Setting up pull request notifications. This is required for pull
+    --         requests to trigger a CodeGuru Reviewer review.
+    --
+    --         If your repository @ProviderType@ is @GitHub@,
+    --         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+    --         creates webhooks in your repository to trigger CodeGuru Reviewer
+    --         reviews. If you delete these webhooks, reviews of code in your
+    --         repository cannot be triggered.
+    --
+    --     -   Setting up source code access. This is required for CodeGuru
+    --         Reviewer to securely clone code in your repository.
+    --
+    -- -   __Failed__: The repository failed to associate or disassociate.
+    --
+    -- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+    --     pull request notifications and source code access.
+    --
+    -- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+    --     repository. You can create a new association with this repository if
+    --     you want to review source code in it later. You can control access
+    --     to code reviews created in anassociated repository with tags after
+    --     it has been disassociated. For more information, see
+    --     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+    --     in the /Amazon CodeGuru Reviewer User Guide/.
+    state :: Prelude.Maybe RepositoryAssociationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RepositoryAssociationSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'associationArn', 'repositoryAssociationSummary_associationArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+--
+-- 'associationId', 'repositoryAssociationSummary_associationId' - The repository association ID.
+--
+-- 'connectionArn', 'repositoryAssociationSummary_connectionArn' - The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+-- Connections connection. Its format is
+-- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+-- For more information, see
+-- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+-- in the /Amazon Web Services CodeStar Connections API Reference/.
+--
+-- 'lastUpdatedTimeStamp', 'repositoryAssociationSummary_lastUpdatedTimeStamp' - The time, in milliseconds since the epoch, since the repository
+-- association was last updated.
+--
+-- 'name', 'repositoryAssociationSummary_name' - The name of the repository association.
+--
+-- 'owner', 'repositoryAssociationSummary_owner' - The owner of the repository. For an Amazon Web Services CodeCommit
+-- repository, this is the Amazon Web Services account ID of the account
+-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, it can be the username or Amazon Web
+-- Services account ID.
+--
+-- 'providerType', 'repositoryAssociationSummary_providerType' - The provider type of the repository association.
+--
+-- 'state', 'repositoryAssociationSummary_state' - The state of the repository association.
+--
+-- The valid repository association states are:
+--
+-- -   __Associated__: The repository association is complete.
+--
+-- -   __Associating__: CodeGuru Reviewer is:
+--
+--     -   Setting up pull request notifications. This is required for pull
+--         requests to trigger a CodeGuru Reviewer review.
+--
+--         If your repository @ProviderType@ is @GitHub@,
+--         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+--         creates webhooks in your repository to trigger CodeGuru Reviewer
+--         reviews. If you delete these webhooks, reviews of code in your
+--         repository cannot be triggered.
+--
+--     -   Setting up source code access. This is required for CodeGuru
+--         Reviewer to securely clone code in your repository.
+--
+-- -   __Failed__: The repository failed to associate or disassociate.
+--
+-- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+--     pull request notifications and source code access.
+--
+-- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+--     repository. You can create a new association with this repository if
+--     you want to review source code in it later. You can control access
+--     to code reviews created in anassociated repository with tags after
+--     it has been disassociated. For more information, see
+--     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+--     in the /Amazon CodeGuru Reviewer User Guide/.
+newRepositoryAssociationSummary ::
+  RepositoryAssociationSummary
+newRepositoryAssociationSummary =
+  RepositoryAssociationSummary'
+    { associationArn =
+        Prelude.Nothing,
+      associationId = Prelude.Nothing,
+      connectionArn = Prelude.Nothing,
+      lastUpdatedTimeStamp = Prelude.Nothing,
+      name = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      providerType = Prelude.Nothing,
+      state = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+repositoryAssociationSummary_associationArn :: Lens.Lens' RepositoryAssociationSummary (Prelude.Maybe Prelude.Text)
+repositoryAssociationSummary_associationArn = Lens.lens (\RepositoryAssociationSummary' {associationArn} -> associationArn) (\s@RepositoryAssociationSummary' {} a -> s {associationArn = a} :: RepositoryAssociationSummary)
+
+-- | The repository association ID.
+repositoryAssociationSummary_associationId :: Lens.Lens' RepositoryAssociationSummary (Prelude.Maybe Prelude.Text)
+repositoryAssociationSummary_associationId = Lens.lens (\RepositoryAssociationSummary' {associationId} -> associationId) (\s@RepositoryAssociationSummary' {} a -> s {associationId = a} :: RepositoryAssociationSummary)
+
+-- | The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+-- Connections connection. Its format is
+-- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+-- For more information, see
+-- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+-- in the /Amazon Web Services CodeStar Connections API Reference/.
+repositoryAssociationSummary_connectionArn :: Lens.Lens' RepositoryAssociationSummary (Prelude.Maybe Prelude.Text)
+repositoryAssociationSummary_connectionArn = Lens.lens (\RepositoryAssociationSummary' {connectionArn} -> connectionArn) (\s@RepositoryAssociationSummary' {} a -> s {connectionArn = a} :: RepositoryAssociationSummary)
+
+-- | The time, in milliseconds since the epoch, since the repository
+-- association was last updated.
+repositoryAssociationSummary_lastUpdatedTimeStamp :: Lens.Lens' RepositoryAssociationSummary (Prelude.Maybe Prelude.UTCTime)
+repositoryAssociationSummary_lastUpdatedTimeStamp = Lens.lens (\RepositoryAssociationSummary' {lastUpdatedTimeStamp} -> lastUpdatedTimeStamp) (\s@RepositoryAssociationSummary' {} a -> s {lastUpdatedTimeStamp = a} :: RepositoryAssociationSummary) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the repository association.
+repositoryAssociationSummary_name :: Lens.Lens' RepositoryAssociationSummary (Prelude.Maybe Prelude.Text)
+repositoryAssociationSummary_name = Lens.lens (\RepositoryAssociationSummary' {name} -> name) (\s@RepositoryAssociationSummary' {} a -> s {name = a} :: RepositoryAssociationSummary)
+
+-- | The owner of the repository. For an Amazon Web Services CodeCommit
+-- repository, this is the Amazon Web Services account ID of the account
+-- that owns the repository. For a GitHub, GitHub Enterprise Server, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, it can be the username or Amazon Web
+-- Services account ID.
+repositoryAssociationSummary_owner :: Lens.Lens' RepositoryAssociationSummary (Prelude.Maybe Prelude.Text)
+repositoryAssociationSummary_owner = Lens.lens (\RepositoryAssociationSummary' {owner} -> owner) (\s@RepositoryAssociationSummary' {} a -> s {owner = a} :: RepositoryAssociationSummary)
+
+-- | The provider type of the repository association.
+repositoryAssociationSummary_providerType :: Lens.Lens' RepositoryAssociationSummary (Prelude.Maybe ProviderType)
+repositoryAssociationSummary_providerType = Lens.lens (\RepositoryAssociationSummary' {providerType} -> providerType) (\s@RepositoryAssociationSummary' {} a -> s {providerType = a} :: RepositoryAssociationSummary)
+
+-- | The state of the repository association.
+--
+-- The valid repository association states are:
+--
+-- -   __Associated__: The repository association is complete.
+--
+-- -   __Associating__: CodeGuru Reviewer is:
+--
+--     -   Setting up pull request notifications. This is required for pull
+--         requests to trigger a CodeGuru Reviewer review.
+--
+--         If your repository @ProviderType@ is @GitHub@,
+--         @GitHub Enterprise Server@, or @Bitbucket@, CodeGuru Reviewer
+--         creates webhooks in your repository to trigger CodeGuru Reviewer
+--         reviews. If you delete these webhooks, reviews of code in your
+--         repository cannot be triggered.
+--
+--     -   Setting up source code access. This is required for CodeGuru
+--         Reviewer to securely clone code in your repository.
+--
+-- -   __Failed__: The repository failed to associate or disassociate.
+--
+-- -   __Disassociating__: CodeGuru Reviewer is removing the repository\'s
+--     pull request notifications and source code access.
+--
+-- -   __Disassociated__: CodeGuru Reviewer successfully disassociated the
+--     repository. You can create a new association with this repository if
+--     you want to review source code in it later. You can control access
+--     to code reviews created in anassociated repository with tags after
+--     it has been disassociated. For more information, see
+--     <https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/auth-and-access-control-using-tags.html Using tags to control access to associated repositories>
+--     in the /Amazon CodeGuru Reviewer User Guide/.
+repositoryAssociationSummary_state :: Lens.Lens' RepositoryAssociationSummary (Prelude.Maybe RepositoryAssociationState)
+repositoryAssociationSummary_state = Lens.lens (\RepositoryAssociationSummary' {state} -> state) (\s@RepositoryAssociationSummary' {} a -> s {state = a} :: RepositoryAssociationSummary)
+
+instance Data.FromJSON RepositoryAssociationSummary where
+  parseJSON =
+    Data.withObject
+      "RepositoryAssociationSummary"
+      ( \x ->
+          RepositoryAssociationSummary'
+            Prelude.<$> (x Data..:? "AssociationArn")
+            Prelude.<*> (x Data..:? "AssociationId")
+            Prelude.<*> (x Data..:? "ConnectionArn")
+            Prelude.<*> (x Data..:? "LastUpdatedTimeStamp")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "ProviderType")
+            Prelude.<*> (x Data..:? "State")
+      )
+
+instance
+  Prelude.Hashable
+    RepositoryAssociationSummary
+  where
+  hashWithSalt _salt RepositoryAssociationSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` associationArn
+      `Prelude.hashWithSalt` associationId
+      `Prelude.hashWithSalt` connectionArn
+      `Prelude.hashWithSalt` lastUpdatedTimeStamp
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` providerType
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData RepositoryAssociationSummary where
+  rnf RepositoryAssociationSummary' {..} =
+    Prelude.rnf associationArn
+      `Prelude.seq` Prelude.rnf associationId
+      `Prelude.seq` Prelude.rnf connectionArn
+      `Prelude.seq` Prelude.rnf lastUpdatedTimeStamp
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf providerType
+      `Prelude.seq` Prelude.rnf state
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RepositoryHeadSourceCodeType.hs b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryHeadSourceCodeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RepositoryHeadSourceCodeType.hs
@@ -0,0 +1,89 @@
+{-# 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.CodeGuruReviewer.Types.RepositoryHeadSourceCodeType
+-- 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.CodeGuruReviewer.Types.RepositoryHeadSourceCodeType 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
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies the tip of a branch in an associated repository.
+--
+-- /See:/ 'newRepositoryHeadSourceCodeType' smart constructor.
+data RepositoryHeadSourceCodeType = RepositoryHeadSourceCodeType'
+  { -- | The name of the branch in an associated repository. The
+    -- @RepositoryHeadSourceCodeType@ specifies the tip of this branch.
+    branchName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RepositoryHeadSourceCodeType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'branchName', 'repositoryHeadSourceCodeType_branchName' - The name of the branch in an associated repository. The
+-- @RepositoryHeadSourceCodeType@ specifies the tip of this branch.
+newRepositoryHeadSourceCodeType ::
+  -- | 'branchName'
+  Prelude.Text ->
+  RepositoryHeadSourceCodeType
+newRepositoryHeadSourceCodeType pBranchName_ =
+  RepositoryHeadSourceCodeType'
+    { branchName =
+        pBranchName_
+    }
+
+-- | The name of the branch in an associated repository. The
+-- @RepositoryHeadSourceCodeType@ specifies the tip of this branch.
+repositoryHeadSourceCodeType_branchName :: Lens.Lens' RepositoryHeadSourceCodeType Prelude.Text
+repositoryHeadSourceCodeType_branchName = Lens.lens (\RepositoryHeadSourceCodeType' {branchName} -> branchName) (\s@RepositoryHeadSourceCodeType' {} a -> s {branchName = a} :: RepositoryHeadSourceCodeType)
+
+instance Data.FromJSON RepositoryHeadSourceCodeType where
+  parseJSON =
+    Data.withObject
+      "RepositoryHeadSourceCodeType"
+      ( \x ->
+          RepositoryHeadSourceCodeType'
+            Prelude.<$> (x Data..: "BranchName")
+      )
+
+instance
+  Prelude.Hashable
+    RepositoryHeadSourceCodeType
+  where
+  hashWithSalt _salt RepositoryHeadSourceCodeType' {..} =
+    _salt `Prelude.hashWithSalt` branchName
+
+instance Prelude.NFData RepositoryHeadSourceCodeType where
+  rnf RepositoryHeadSourceCodeType' {..} =
+    Prelude.rnf branchName
+
+instance Data.ToJSON RepositoryHeadSourceCodeType where
+  toJSON RepositoryHeadSourceCodeType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("BranchName" Data..= branchName)]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RequestMetadata.hs b/gen/Amazonka/CodeGuruReviewer/Types/RequestMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RequestMetadata.hs
@@ -0,0 +1,146 @@
+{-# 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.CodeGuruReviewer.Types.RequestMetadata
+-- 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.CodeGuruReviewer.Types.RequestMetadata where
+
+import Amazonka.CodeGuruReviewer.Types.EventInfo
+import Amazonka.CodeGuruReviewer.Types.VendorName
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Metadata that is associated with a code review. This applies to both
+-- pull request and repository analysis code reviews.
+--
+-- /See:/ 'newRequestMetadata' smart constructor.
+data RequestMetadata = RequestMetadata'
+  { -- | Information about the event associated with a code review.
+    eventInfo :: Prelude.Maybe EventInfo,
+    -- | The ID of the request. This is required for a pull request code review.
+    requestId :: Prelude.Maybe Prelude.Text,
+    -- | An identifier, such as a name or account ID, that is associated with the
+    -- requester. The @Requester@ is used to capture the @author\/actor@ name
+    -- of the event request.
+    requester :: Prelude.Maybe Prelude.Text,
+    -- | The name of the repository vendor used to upload code to an S3 bucket
+    -- for a CI\/CD code review. For example, if code and artifacts are
+    -- uploaded to an S3 bucket for a CI\/CD code review by GitHub scripts from
+    -- a GitHub repository, then the repository association\'s @ProviderType@
+    -- is @S3Bucket@ and the CI\/CD repository vendor name is GitHub. For more
+    -- information, see the definition for @ProviderType@ in
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>.
+    vendorName :: Prelude.Maybe VendorName
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RequestMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'eventInfo', 'requestMetadata_eventInfo' - Information about the event associated with a code review.
+--
+-- 'requestId', 'requestMetadata_requestId' - The ID of the request. This is required for a pull request code review.
+--
+-- 'requester', 'requestMetadata_requester' - An identifier, such as a name or account ID, that is associated with the
+-- requester. The @Requester@ is used to capture the @author\/actor@ name
+-- of the event request.
+--
+-- 'vendorName', 'requestMetadata_vendorName' - The name of the repository vendor used to upload code to an S3 bucket
+-- for a CI\/CD code review. For example, if code and artifacts are
+-- uploaded to an S3 bucket for a CI\/CD code review by GitHub scripts from
+-- a GitHub repository, then the repository association\'s @ProviderType@
+-- is @S3Bucket@ and the CI\/CD repository vendor name is GitHub. For more
+-- information, see the definition for @ProviderType@ in
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>.
+newRequestMetadata ::
+  RequestMetadata
+newRequestMetadata =
+  RequestMetadata'
+    { eventInfo = Prelude.Nothing,
+      requestId = Prelude.Nothing,
+      requester = Prelude.Nothing,
+      vendorName = Prelude.Nothing
+    }
+
+-- | Information about the event associated with a code review.
+requestMetadata_eventInfo :: Lens.Lens' RequestMetadata (Prelude.Maybe EventInfo)
+requestMetadata_eventInfo = Lens.lens (\RequestMetadata' {eventInfo} -> eventInfo) (\s@RequestMetadata' {} a -> s {eventInfo = a} :: RequestMetadata)
+
+-- | The ID of the request. This is required for a pull request code review.
+requestMetadata_requestId :: Lens.Lens' RequestMetadata (Prelude.Maybe Prelude.Text)
+requestMetadata_requestId = Lens.lens (\RequestMetadata' {requestId} -> requestId) (\s@RequestMetadata' {} a -> s {requestId = a} :: RequestMetadata)
+
+-- | An identifier, such as a name or account ID, that is associated with the
+-- requester. The @Requester@ is used to capture the @author\/actor@ name
+-- of the event request.
+requestMetadata_requester :: Lens.Lens' RequestMetadata (Prelude.Maybe Prelude.Text)
+requestMetadata_requester = Lens.lens (\RequestMetadata' {requester} -> requester) (\s@RequestMetadata' {} a -> s {requester = a} :: RequestMetadata)
+
+-- | The name of the repository vendor used to upload code to an S3 bucket
+-- for a CI\/CD code review. For example, if code and artifacts are
+-- uploaded to an S3 bucket for a CI\/CD code review by GitHub scripts from
+-- a GitHub repository, then the repository association\'s @ProviderType@
+-- is @S3Bucket@ and the CI\/CD repository vendor name is GitHub. For more
+-- information, see the definition for @ProviderType@ in
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>.
+requestMetadata_vendorName :: Lens.Lens' RequestMetadata (Prelude.Maybe VendorName)
+requestMetadata_vendorName = Lens.lens (\RequestMetadata' {vendorName} -> vendorName) (\s@RequestMetadata' {} a -> s {vendorName = a} :: RequestMetadata)
+
+instance Data.FromJSON RequestMetadata where
+  parseJSON =
+    Data.withObject
+      "RequestMetadata"
+      ( \x ->
+          RequestMetadata'
+            Prelude.<$> (x Data..:? "EventInfo")
+            Prelude.<*> (x Data..:? "RequestId")
+            Prelude.<*> (x Data..:? "Requester")
+            Prelude.<*> (x Data..:? "VendorName")
+      )
+
+instance Prelude.Hashable RequestMetadata where
+  hashWithSalt _salt RequestMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` eventInfo
+      `Prelude.hashWithSalt` requestId
+      `Prelude.hashWithSalt` requester
+      `Prelude.hashWithSalt` vendorName
+
+instance Prelude.NFData RequestMetadata where
+  rnf RequestMetadata' {..} =
+    Prelude.rnf eventInfo
+      `Prelude.seq` Prelude.rnf requestId
+      `Prelude.seq` Prelude.rnf requester
+      `Prelude.seq` Prelude.rnf vendorName
+
+instance Data.ToJSON RequestMetadata where
+  toJSON RequestMetadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EventInfo" Data..=) Prelude.<$> eventInfo,
+            ("RequestId" Data..=) Prelude.<$> requestId,
+            ("Requester" Data..=) Prelude.<$> requester,
+            ("VendorName" Data..=) Prelude.<$> vendorName
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/RuleMetadata.hs b/gen/Amazonka/CodeGuruReviewer/Types/RuleMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/RuleMetadata.hs
@@ -0,0 +1,123 @@
+{-# 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.CodeGuruReviewer.Types.RuleMetadata
+-- 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.CodeGuruReviewer.Types.RuleMetadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Metadata about a rule. Rule metadata includes an ID, a name, a list of
+-- tags, and a short and long description. CodeGuru Reviewer uses rules to
+-- analyze code. A rule\'s recommendation is included in analysis results
+-- if code is detected that violates the rule.
+--
+-- /See:/ 'newRuleMetadata' smart constructor.
+data RuleMetadata = RuleMetadata'
+  { -- | A long description of the rule.
+    longDescription :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the rule.
+    ruleId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the rule.
+    ruleName :: Prelude.Maybe Prelude.Text,
+    -- | Tags that are associated with the rule.
+    ruleTags :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | A short description of the rule.
+    shortDescription :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RuleMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'longDescription', 'ruleMetadata_longDescription' - A long description of the rule.
+--
+-- 'ruleId', 'ruleMetadata_ruleId' - The ID of the rule.
+--
+-- 'ruleName', 'ruleMetadata_ruleName' - The name of the rule.
+--
+-- 'ruleTags', 'ruleMetadata_ruleTags' - Tags that are associated with the rule.
+--
+-- 'shortDescription', 'ruleMetadata_shortDescription' - A short description of the rule.
+newRuleMetadata ::
+  RuleMetadata
+newRuleMetadata =
+  RuleMetadata'
+    { longDescription = Prelude.Nothing,
+      ruleId = Prelude.Nothing,
+      ruleName = Prelude.Nothing,
+      ruleTags = Prelude.Nothing,
+      shortDescription = Prelude.Nothing
+    }
+
+-- | A long description of the rule.
+ruleMetadata_longDescription :: Lens.Lens' RuleMetadata (Prelude.Maybe Prelude.Text)
+ruleMetadata_longDescription = Lens.lens (\RuleMetadata' {longDescription} -> longDescription) (\s@RuleMetadata' {} a -> s {longDescription = a} :: RuleMetadata)
+
+-- | The ID of the rule.
+ruleMetadata_ruleId :: Lens.Lens' RuleMetadata (Prelude.Maybe Prelude.Text)
+ruleMetadata_ruleId = Lens.lens (\RuleMetadata' {ruleId} -> ruleId) (\s@RuleMetadata' {} a -> s {ruleId = a} :: RuleMetadata)
+
+-- | The name of the rule.
+ruleMetadata_ruleName :: Lens.Lens' RuleMetadata (Prelude.Maybe Prelude.Text)
+ruleMetadata_ruleName = Lens.lens (\RuleMetadata' {ruleName} -> ruleName) (\s@RuleMetadata' {} a -> s {ruleName = a} :: RuleMetadata)
+
+-- | Tags that are associated with the rule.
+ruleMetadata_ruleTags :: Lens.Lens' RuleMetadata (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+ruleMetadata_ruleTags = Lens.lens (\RuleMetadata' {ruleTags} -> ruleTags) (\s@RuleMetadata' {} a -> s {ruleTags = a} :: RuleMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | A short description of the rule.
+ruleMetadata_shortDescription :: Lens.Lens' RuleMetadata (Prelude.Maybe Prelude.Text)
+ruleMetadata_shortDescription = Lens.lens (\RuleMetadata' {shortDescription} -> shortDescription) (\s@RuleMetadata' {} a -> s {shortDescription = a} :: RuleMetadata)
+
+instance Data.FromJSON RuleMetadata where
+  parseJSON =
+    Data.withObject
+      "RuleMetadata"
+      ( \x ->
+          RuleMetadata'
+            Prelude.<$> (x Data..:? "LongDescription")
+            Prelude.<*> (x Data..:? "RuleId")
+            Prelude.<*> (x Data..:? "RuleName")
+            Prelude.<*> (x Data..:? "RuleTags")
+            Prelude.<*> (x Data..:? "ShortDescription")
+      )
+
+instance Prelude.Hashable RuleMetadata where
+  hashWithSalt _salt RuleMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` longDescription
+      `Prelude.hashWithSalt` ruleId
+      `Prelude.hashWithSalt` ruleName
+      `Prelude.hashWithSalt` ruleTags
+      `Prelude.hashWithSalt` shortDescription
+
+instance Prelude.NFData RuleMetadata where
+  rnf RuleMetadata' {..} =
+    Prelude.rnf longDescription
+      `Prelude.seq` Prelude.rnf ruleId
+      `Prelude.seq` Prelude.rnf ruleName
+      `Prelude.seq` Prelude.rnf ruleTags
+      `Prelude.seq` Prelude.rnf shortDescription
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/S3BucketRepository.hs b/gen/Amazonka/CodeGuruReviewer/Types/S3BucketRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/S3BucketRepository.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.S3BucketRepository
+-- 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.CodeGuruReviewer.Types.S3BucketRepository where
+
+import Amazonka.CodeGuruReviewer.Types.S3RepositoryDetails
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about an associated repository in an S3 bucket. The
+-- associated repository contains a source code .zip file and a build
+-- artifacts .zip file that contains .jar or .class files.
+--
+-- /See:/ 'newS3BucketRepository' smart constructor.
+data S3BucketRepository = S3BucketRepository'
+  { -- | An @S3RepositoryDetails@ object that specifies the name of an S3 bucket
+    -- and a @CodeArtifacts@ object. The @CodeArtifacts@ object includes the S3
+    -- object keys for a source code .zip file and for a build artifacts .zip
+    -- file.
+    details :: Prelude.Maybe S3RepositoryDetails,
+    -- | The name of the repository when the @ProviderType@ is @S3Bucket@.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3BucketRepository' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'details', 's3BucketRepository_details' - An @S3RepositoryDetails@ object that specifies the name of an S3 bucket
+-- and a @CodeArtifacts@ object. The @CodeArtifacts@ object includes the S3
+-- object keys for a source code .zip file and for a build artifacts .zip
+-- file.
+--
+-- 'name', 's3BucketRepository_name' - The name of the repository when the @ProviderType@ is @S3Bucket@.
+newS3BucketRepository ::
+  -- | 'name'
+  Prelude.Text ->
+  S3BucketRepository
+newS3BucketRepository pName_ =
+  S3BucketRepository'
+    { details = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | An @S3RepositoryDetails@ object that specifies the name of an S3 bucket
+-- and a @CodeArtifacts@ object. The @CodeArtifacts@ object includes the S3
+-- object keys for a source code .zip file and for a build artifacts .zip
+-- file.
+s3BucketRepository_details :: Lens.Lens' S3BucketRepository (Prelude.Maybe S3RepositoryDetails)
+s3BucketRepository_details = Lens.lens (\S3BucketRepository' {details} -> details) (\s@S3BucketRepository' {} a -> s {details = a} :: S3BucketRepository)
+
+-- | The name of the repository when the @ProviderType@ is @S3Bucket@.
+s3BucketRepository_name :: Lens.Lens' S3BucketRepository Prelude.Text
+s3BucketRepository_name = Lens.lens (\S3BucketRepository' {name} -> name) (\s@S3BucketRepository' {} a -> s {name = a} :: S3BucketRepository)
+
+instance Data.FromJSON S3BucketRepository where
+  parseJSON =
+    Data.withObject
+      "S3BucketRepository"
+      ( \x ->
+          S3BucketRepository'
+            Prelude.<$> (x Data..:? "Details")
+            Prelude.<*> (x Data..: "Name")
+      )
+
+instance Prelude.Hashable S3BucketRepository where
+  hashWithSalt _salt S3BucketRepository' {..} =
+    _salt
+      `Prelude.hashWithSalt` details
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData S3BucketRepository where
+  rnf S3BucketRepository' {..} =
+    Prelude.rnf details `Prelude.seq` Prelude.rnf name
+
+instance Data.ToJSON S3BucketRepository where
+  toJSON S3BucketRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Details" Data..=) Prelude.<$> details,
+            Prelude.Just ("Name" Data..= name)
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/S3Repository.hs b/gen/Amazonka/CodeGuruReviewer/Types/S3Repository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/S3Repository.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.S3Repository
+-- 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.CodeGuruReviewer.Types.S3Repository where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a repository in an S3 bucket.
+--
+-- /See:/ 'newS3Repository' smart constructor.
+data S3Repository = S3Repository'
+  { -- | The name of the repository in the S3 bucket.
+    name :: Prelude.Text,
+    -- | The name of the S3 bucket used for associating a new S3 repository. It
+    -- must begin with @codeguru-reviewer-@.
+    bucketName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Repository' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 's3Repository_name' - The name of the repository in the S3 bucket.
+--
+-- 'bucketName', 's3Repository_bucketName' - The name of the S3 bucket used for associating a new S3 repository. It
+-- must begin with @codeguru-reviewer-@.
+newS3Repository ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'bucketName'
+  Prelude.Text ->
+  S3Repository
+newS3Repository pName_ pBucketName_ =
+  S3Repository'
+    { name = pName_,
+      bucketName = pBucketName_
+    }
+
+-- | The name of the repository in the S3 bucket.
+s3Repository_name :: Lens.Lens' S3Repository Prelude.Text
+s3Repository_name = Lens.lens (\S3Repository' {name} -> name) (\s@S3Repository' {} a -> s {name = a} :: S3Repository)
+
+-- | The name of the S3 bucket used for associating a new S3 repository. It
+-- must begin with @codeguru-reviewer-@.
+s3Repository_bucketName :: Lens.Lens' S3Repository Prelude.Text
+s3Repository_bucketName = Lens.lens (\S3Repository' {bucketName} -> bucketName) (\s@S3Repository' {} a -> s {bucketName = a} :: S3Repository)
+
+instance Prelude.Hashable S3Repository where
+  hashWithSalt _salt S3Repository' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` bucketName
+
+instance Prelude.NFData S3Repository where
+  rnf S3Repository' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf bucketName
+
+instance Data.ToJSON S3Repository where
+  toJSON S3Repository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("BucketName" Data..= bucketName)
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/S3RepositoryDetails.hs b/gen/Amazonka/CodeGuruReviewer/Types/S3RepositoryDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/S3RepositoryDetails.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.S3RepositoryDetails
+-- 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.CodeGuruReviewer.Types.S3RepositoryDetails where
+
+import Amazonka.CodeGuruReviewer.Types.CodeArtifacts
+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
+
+-- | Specifies the name of an S3 bucket and a @CodeArtifacts@ object that
+-- contains the S3 object keys for a source code .zip file and for a build
+-- artifacts .zip file that contains .jar or .class files.
+--
+-- /See:/ 'newS3RepositoryDetails' smart constructor.
+data S3RepositoryDetails = S3RepositoryDetails'
+  { -- | The name of the S3 bucket used for associating a new S3 repository. It
+    -- must begin with @codeguru-reviewer-@.
+    bucketName :: Prelude.Maybe Prelude.Text,
+    -- | A @CodeArtifacts@ object. The @CodeArtifacts@ object includes the S3
+    -- object key for a source code .zip file and for a build artifacts .zip
+    -- file that contains .jar or .class files.
+    codeArtifacts :: Prelude.Maybe CodeArtifacts
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3RepositoryDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bucketName', 's3RepositoryDetails_bucketName' - The name of the S3 bucket used for associating a new S3 repository. It
+-- must begin with @codeguru-reviewer-@.
+--
+-- 'codeArtifacts', 's3RepositoryDetails_codeArtifacts' - A @CodeArtifacts@ object. The @CodeArtifacts@ object includes the S3
+-- object key for a source code .zip file and for a build artifacts .zip
+-- file that contains .jar or .class files.
+newS3RepositoryDetails ::
+  S3RepositoryDetails
+newS3RepositoryDetails =
+  S3RepositoryDetails'
+    { bucketName = Prelude.Nothing,
+      codeArtifacts = Prelude.Nothing
+    }
+
+-- | The name of the S3 bucket used for associating a new S3 repository. It
+-- must begin with @codeguru-reviewer-@.
+s3RepositoryDetails_bucketName :: Lens.Lens' S3RepositoryDetails (Prelude.Maybe Prelude.Text)
+s3RepositoryDetails_bucketName = Lens.lens (\S3RepositoryDetails' {bucketName} -> bucketName) (\s@S3RepositoryDetails' {} a -> s {bucketName = a} :: S3RepositoryDetails)
+
+-- | A @CodeArtifacts@ object. The @CodeArtifacts@ object includes the S3
+-- object key for a source code .zip file and for a build artifacts .zip
+-- file that contains .jar or .class files.
+s3RepositoryDetails_codeArtifacts :: Lens.Lens' S3RepositoryDetails (Prelude.Maybe CodeArtifacts)
+s3RepositoryDetails_codeArtifacts = Lens.lens (\S3RepositoryDetails' {codeArtifacts} -> codeArtifacts) (\s@S3RepositoryDetails' {} a -> s {codeArtifacts = a} :: S3RepositoryDetails)
+
+instance Data.FromJSON S3RepositoryDetails where
+  parseJSON =
+    Data.withObject
+      "S3RepositoryDetails"
+      ( \x ->
+          S3RepositoryDetails'
+            Prelude.<$> (x Data..:? "BucketName")
+            Prelude.<*> (x Data..:? "CodeArtifacts")
+      )
+
+instance Prelude.Hashable S3RepositoryDetails where
+  hashWithSalt _salt S3RepositoryDetails' {..} =
+    _salt
+      `Prelude.hashWithSalt` bucketName
+      `Prelude.hashWithSalt` codeArtifacts
+
+instance Prelude.NFData S3RepositoryDetails where
+  rnf S3RepositoryDetails' {..} =
+    Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf codeArtifacts
+
+instance Data.ToJSON S3RepositoryDetails where
+  toJSON S3RepositoryDetails' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BucketName" Data..=) Prelude.<$> bucketName,
+            ("CodeArtifacts" Data..=) Prelude.<$> codeArtifacts
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/Severity.hs b/gen/Amazonka/CodeGuruReviewer/Types/Severity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/Severity.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.Severity
+-- 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.CodeGuruReviewer.Types.Severity
+  ( Severity
+      ( ..,
+        Severity_Critical,
+        Severity_High,
+        Severity_Info,
+        Severity_Low,
+        Severity_Medium
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Severity = Severity'
+  { fromSeverity ::
+      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 Severity_Critical :: Severity
+pattern Severity_Critical = Severity' "Critical"
+
+pattern Severity_High :: Severity
+pattern Severity_High = Severity' "High"
+
+pattern Severity_Info :: Severity
+pattern Severity_Info = Severity' "Info"
+
+pattern Severity_Low :: Severity
+pattern Severity_Low = Severity' "Low"
+
+pattern Severity_Medium :: Severity
+pattern Severity_Medium = Severity' "Medium"
+
+{-# COMPLETE
+  Severity_Critical,
+  Severity_High,
+  Severity_Info,
+  Severity_Low,
+  Severity_Medium,
+  Severity'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/SourceCodeType.hs b/gen/Amazonka/CodeGuruReviewer/Types/SourceCodeType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/SourceCodeType.hs
@@ -0,0 +1,187 @@
+{-# 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.CodeGuruReviewer.Types.SourceCodeType
+-- 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.CodeGuruReviewer.Types.SourceCodeType where
+
+import Amazonka.CodeGuruReviewer.Types.BranchDiffSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.CommitDiffSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.RepositoryHeadSourceCodeType
+import Amazonka.CodeGuruReviewer.Types.RequestMetadata
+import Amazonka.CodeGuruReviewer.Types.S3BucketRepository
+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
+
+-- | Specifies the source code that is analyzed in a code review.
+--
+-- /See:/ 'newSourceCodeType' smart constructor.
+data SourceCodeType = SourceCodeType'
+  { -- | A type of
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+    -- that specifies a source branch name and a destination branch name in an
+    -- associated repository.
+    branchDiff :: Prelude.Maybe BranchDiffSourceCodeType,
+    -- | A
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+    -- that specifies a commit diff created by a pull request on an associated
+    -- repository.
+    commitDiff :: Prelude.Maybe CommitDiffSourceCodeType,
+    repositoryHead :: Prelude.Maybe RepositoryHeadSourceCodeType,
+    -- | Metadata that is associated with a code review. This applies to any type
+    -- of code review supported by CodeGuru Reviewer. The @RequestMetadaa@
+    -- field captures any event metadata. For example, it might capture
+    -- metadata associated with an event trigger, such as a push or a pull
+    -- request.
+    requestMetadata :: Prelude.Maybe RequestMetadata,
+    -- | Information about an associated repository in an S3 bucket that includes
+    -- its name and an @S3RepositoryDetails@ object. The @S3RepositoryDetails@
+    -- object includes the name of an S3 bucket, an S3 key for a source code
+    -- .zip file, and an S3 key for a build artifacts .zip file.
+    -- @S3BucketRepository@ is required in
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+    -- for @S3BucketRepository@ based code reviews.
+    s3BucketRepository :: Prelude.Maybe S3BucketRepository
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceCodeType' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'branchDiff', 'sourceCodeType_branchDiff' - A type of
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies a source branch name and a destination branch name in an
+-- associated repository.
+--
+-- 'commitDiff', 'sourceCodeType_commitDiff' - A
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies a commit diff created by a pull request on an associated
+-- repository.
+--
+-- 'repositoryHead', 'sourceCodeType_repositoryHead' - Undocumented member.
+--
+-- 'requestMetadata', 'sourceCodeType_requestMetadata' - Metadata that is associated with a code review. This applies to any type
+-- of code review supported by CodeGuru Reviewer. The @RequestMetadaa@
+-- field captures any event metadata. For example, it might capture
+-- metadata associated with an event trigger, such as a push or a pull
+-- request.
+--
+-- 's3BucketRepository', 'sourceCodeType_s3BucketRepository' - Information about an associated repository in an S3 bucket that includes
+-- its name and an @S3RepositoryDetails@ object. The @S3RepositoryDetails@
+-- object includes the name of an S3 bucket, an S3 key for a source code
+-- .zip file, and an S3 key for a build artifacts .zip file.
+-- @S3BucketRepository@ is required in
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- for @S3BucketRepository@ based code reviews.
+newSourceCodeType ::
+  SourceCodeType
+newSourceCodeType =
+  SourceCodeType'
+    { branchDiff = Prelude.Nothing,
+      commitDiff = Prelude.Nothing,
+      repositoryHead = Prelude.Nothing,
+      requestMetadata = Prelude.Nothing,
+      s3BucketRepository = Prelude.Nothing
+    }
+
+-- | A type of
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies a source branch name and a destination branch name in an
+-- associated repository.
+sourceCodeType_branchDiff :: Lens.Lens' SourceCodeType (Prelude.Maybe BranchDiffSourceCodeType)
+sourceCodeType_branchDiff = Lens.lens (\SourceCodeType' {branchDiff} -> branchDiff) (\s@SourceCodeType' {} a -> s {branchDiff = a} :: SourceCodeType)
+
+-- | A
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- that specifies a commit diff created by a pull request on an associated
+-- repository.
+sourceCodeType_commitDiff :: Lens.Lens' SourceCodeType (Prelude.Maybe CommitDiffSourceCodeType)
+sourceCodeType_commitDiff = Lens.lens (\SourceCodeType' {commitDiff} -> commitDiff) (\s@SourceCodeType' {} a -> s {commitDiff = a} :: SourceCodeType)
+
+-- | Undocumented member.
+sourceCodeType_repositoryHead :: Lens.Lens' SourceCodeType (Prelude.Maybe RepositoryHeadSourceCodeType)
+sourceCodeType_repositoryHead = Lens.lens (\SourceCodeType' {repositoryHead} -> repositoryHead) (\s@SourceCodeType' {} a -> s {repositoryHead = a} :: SourceCodeType)
+
+-- | Metadata that is associated with a code review. This applies to any type
+-- of code review supported by CodeGuru Reviewer. The @RequestMetadaa@
+-- field captures any event metadata. For example, it might capture
+-- metadata associated with an event trigger, such as a push or a pull
+-- request.
+sourceCodeType_requestMetadata :: Lens.Lens' SourceCodeType (Prelude.Maybe RequestMetadata)
+sourceCodeType_requestMetadata = Lens.lens (\SourceCodeType' {requestMetadata} -> requestMetadata) (\s@SourceCodeType' {} a -> s {requestMetadata = a} :: SourceCodeType)
+
+-- | Information about an associated repository in an S3 bucket that includes
+-- its name and an @S3RepositoryDetails@ object. The @S3RepositoryDetails@
+-- object includes the name of an S3 bucket, an S3 key for a source code
+-- .zip file, and an S3 key for a build artifacts .zip file.
+-- @S3BucketRepository@ is required in
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_SourceCodeType SourceCodeType>
+-- for @S3BucketRepository@ based code reviews.
+sourceCodeType_s3BucketRepository :: Lens.Lens' SourceCodeType (Prelude.Maybe S3BucketRepository)
+sourceCodeType_s3BucketRepository = Lens.lens (\SourceCodeType' {s3BucketRepository} -> s3BucketRepository) (\s@SourceCodeType' {} a -> s {s3BucketRepository = a} :: SourceCodeType)
+
+instance Data.FromJSON SourceCodeType where
+  parseJSON =
+    Data.withObject
+      "SourceCodeType"
+      ( \x ->
+          SourceCodeType'
+            Prelude.<$> (x Data..:? "BranchDiff")
+            Prelude.<*> (x Data..:? "CommitDiff")
+            Prelude.<*> (x Data..:? "RepositoryHead")
+            Prelude.<*> (x Data..:? "RequestMetadata")
+            Prelude.<*> (x Data..:? "S3BucketRepository")
+      )
+
+instance Prelude.Hashable SourceCodeType where
+  hashWithSalt _salt SourceCodeType' {..} =
+    _salt
+      `Prelude.hashWithSalt` branchDiff
+      `Prelude.hashWithSalt` commitDiff
+      `Prelude.hashWithSalt` repositoryHead
+      `Prelude.hashWithSalt` requestMetadata
+      `Prelude.hashWithSalt` s3BucketRepository
+
+instance Prelude.NFData SourceCodeType where
+  rnf SourceCodeType' {..} =
+    Prelude.rnf branchDiff
+      `Prelude.seq` Prelude.rnf commitDiff
+      `Prelude.seq` Prelude.rnf repositoryHead
+      `Prelude.seq` Prelude.rnf requestMetadata
+      `Prelude.seq` Prelude.rnf s3BucketRepository
+
+instance Data.ToJSON SourceCodeType where
+  toJSON SourceCodeType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BranchDiff" Data..=) Prelude.<$> branchDiff,
+            ("CommitDiff" Data..=) Prelude.<$> commitDiff,
+            ("RepositoryHead" Data..=)
+              Prelude.<$> repositoryHead,
+            ("RequestMetadata" Data..=)
+              Prelude.<$> requestMetadata,
+            ("S3BucketRepository" Data..=)
+              Prelude.<$> s3BucketRepository
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/ThirdPartySourceRepository.hs b/gen/Amazonka/CodeGuruReviewer/Types/ThirdPartySourceRepository.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/ThirdPartySourceRepository.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.Types.ThirdPartySourceRepository
+-- 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.CodeGuruReviewer.Types.ThirdPartySourceRepository where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about a third-party source repository connected to CodeGuru
+-- Reviewer.
+--
+-- /See:/ 'newThirdPartySourceRepository' smart constructor.
+data ThirdPartySourceRepository = ThirdPartySourceRepository'
+  { -- | The name of the third party source repository.
+    name :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+    -- Connections connection. Its format is
+    -- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+    -- For more information, see
+    -- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+    -- in the /Amazon Web Services CodeStar Connections API Reference/.
+    connectionArn :: Prelude.Text,
+    -- | The owner of the repository. For a GitHub, GitHub Enterprise, or
+    -- Bitbucket repository, this is the username for the account that owns the
+    -- repository. For an S3 repository, this can be the username or Amazon Web
+    -- Services account ID
+    owner :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ThirdPartySourceRepository' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'thirdPartySourceRepository_name' - The name of the third party source repository.
+--
+-- 'connectionArn', 'thirdPartySourceRepository_connectionArn' - The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+-- Connections connection. Its format is
+-- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+-- For more information, see
+-- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+-- in the /Amazon Web Services CodeStar Connections API Reference/.
+--
+-- 'owner', 'thirdPartySourceRepository_owner' - The owner of the repository. For a GitHub, GitHub Enterprise, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, this can be the username or Amazon Web
+-- Services account ID
+newThirdPartySourceRepository ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'connectionArn'
+  Prelude.Text ->
+  -- | 'owner'
+  Prelude.Text ->
+  ThirdPartySourceRepository
+newThirdPartySourceRepository
+  pName_
+  pConnectionArn_
+  pOwner_ =
+    ThirdPartySourceRepository'
+      { name = pName_,
+        connectionArn = pConnectionArn_,
+        owner = pOwner_
+      }
+
+-- | The name of the third party source repository.
+thirdPartySourceRepository_name :: Lens.Lens' ThirdPartySourceRepository Prelude.Text
+thirdPartySourceRepository_name = Lens.lens (\ThirdPartySourceRepository' {name} -> name) (\s@ThirdPartySourceRepository' {} a -> s {name = a} :: ThirdPartySourceRepository)
+
+-- | The Amazon Resource Name (ARN) of an Amazon Web Services CodeStar
+-- Connections connection. Its format is
+-- @arn:aws:codestar-connections:region-id:aws-account_id:connection\/connection-id@.
+-- For more information, see
+-- <https://docs.aws.amazon.com/codestar-connections/latest/APIReference/API_Connection.html Connection>
+-- in the /Amazon Web Services CodeStar Connections API Reference/.
+thirdPartySourceRepository_connectionArn :: Lens.Lens' ThirdPartySourceRepository Prelude.Text
+thirdPartySourceRepository_connectionArn = Lens.lens (\ThirdPartySourceRepository' {connectionArn} -> connectionArn) (\s@ThirdPartySourceRepository' {} a -> s {connectionArn = a} :: ThirdPartySourceRepository)
+
+-- | The owner of the repository. For a GitHub, GitHub Enterprise, or
+-- Bitbucket repository, this is the username for the account that owns the
+-- repository. For an S3 repository, this can be the username or Amazon Web
+-- Services account ID
+thirdPartySourceRepository_owner :: Lens.Lens' ThirdPartySourceRepository Prelude.Text
+thirdPartySourceRepository_owner = Lens.lens (\ThirdPartySourceRepository' {owner} -> owner) (\s@ThirdPartySourceRepository' {} a -> s {owner = a} :: ThirdPartySourceRepository)
+
+instance Prelude.Hashable ThirdPartySourceRepository where
+  hashWithSalt _salt ThirdPartySourceRepository' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` connectionArn
+      `Prelude.hashWithSalt` owner
+
+instance Prelude.NFData ThirdPartySourceRepository where
+  rnf ThirdPartySourceRepository' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf connectionArn
+      `Prelude.seq` Prelude.rnf owner
+
+instance Data.ToJSON ThirdPartySourceRepository where
+  toJSON ThirdPartySourceRepository' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("ConnectionArn" Data..= connectionArn),
+            Prelude.Just ("Owner" Data..= owner)
+          ]
+      )
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/Type.hs b/gen/Amazonka/CodeGuruReviewer/Types/Type.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/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.CodeGuruReviewer.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.CodeGuruReviewer.Types.Type
+  ( Type
+      ( ..,
+        Type_PullRequest,
+        Type_RepositoryAnalysis
+      ),
+  )
+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_PullRequest :: Type
+pattern Type_PullRequest = Type' "PullRequest"
+
+pattern Type_RepositoryAnalysis :: Type
+pattern Type_RepositoryAnalysis = Type' "RepositoryAnalysis"
+
+{-# COMPLETE
+  Type_PullRequest,
+  Type_RepositoryAnalysis,
+  Type'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/Types/VendorName.hs b/gen/Amazonka/CodeGuruReviewer/Types/VendorName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Types/VendorName.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.CodeGuruReviewer.Types.VendorName
+-- 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.CodeGuruReviewer.Types.VendorName
+  ( VendorName
+      ( ..,
+        VendorName_GitHub,
+        VendorName_GitLab,
+        VendorName_NativeS3
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VendorName = VendorName'
+  { fromVendorName ::
+      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 VendorName_GitHub :: VendorName
+pattern VendorName_GitHub = VendorName' "GitHub"
+
+pattern VendorName_GitLab :: VendorName
+pattern VendorName_GitLab = VendorName' "GitLab"
+
+pattern VendorName_NativeS3 :: VendorName
+pattern VendorName_NativeS3 = VendorName' "NativeS3"
+
+{-# COMPLETE
+  VendorName_GitHub,
+  VendorName_GitLab,
+  VendorName_NativeS3,
+  VendorName'
+  #-}
diff --git a/gen/Amazonka/CodeGuruReviewer/UntagResource.hs b/gen/Amazonka/CodeGuruReviewer/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/UntagResource.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CodeGuruReviewer.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 a tag from an associated repository.
+module Amazonka.CodeGuruReviewer.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The Amazon Resource Name (ARN) of the
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+    -- object. You can retrieve this ARN by calling
+    -- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+    resourceArn :: Prelude.Text,
+    -- | A list of the keys for each tag you want to remove from an associated
+    -- repository.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - A list of the keys for each tag you want to remove from an associated
+-- repository.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ pTagKeys_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The Amazon Resource Name (ARN) of the
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_RepositoryAssociation.html RepositoryAssociation>
+-- object. You can retrieve this ARN by calling
+-- <https://docs.aws.amazon.com/codeguru/latest/reviewer-api/API_ListRepositoryAssociations.html ListRepositoryAssociations>.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | A list of the keys for each tag you want to remove from an associated
+-- repository.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CodeGuruReviewer/Waiters.hs b/gen/Amazonka/CodeGuruReviewer/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CodeGuruReviewer/Waiters.hs
@@ -0,0 +1,103 @@
+{-# 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.CodeGuruReviewer.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.CodeGuruReviewer.Waiters where
+
+import Amazonka.CodeGuruReviewer.DescribeCodeReview
+import Amazonka.CodeGuruReviewer.DescribeRepositoryAssociation
+import Amazonka.CodeGuruReviewer.Lens
+import Amazonka.CodeGuruReviewer.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Polls 'Amazonka.CodeGuruReviewer.DescribeCodeReview' every 10 seconds until a successful state is reached. An error is returned after 180 failed checks.
+newCodeReviewCompleted :: Core.Wait DescribeCodeReview
+newCodeReviewCompleted =
+  Core.Wait
+    { Core.name = "CodeReviewCompleted",
+      Core.attempts = 180,
+      Core.delay = 10,
+      Core.acceptors =
+        [ Core.matchAll
+            "Completed"
+            Core.AcceptSuccess
+            ( describeCodeReviewResponse_codeReview
+                Prelude.. Lens._Just
+                Prelude.. codeReview_state
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeCodeReviewResponse_codeReview
+                Prelude.. Lens._Just
+                Prelude.. codeReview_state
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Pending"
+            Core.AcceptRetry
+            ( describeCodeReviewResponse_codeReview
+                Prelude.. Lens._Just
+                Prelude.. codeReview_state
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
+
+-- | Polls 'Amazonka.CodeGuruReviewer.DescribeRepositoryAssociation' every 10 seconds until a successful state is reached. An error is returned after 30 failed checks.
+newRepositoryAssociationSucceeded :: Core.Wait DescribeRepositoryAssociation
+newRepositoryAssociationSucceeded =
+  Core.Wait
+    { Core.name =
+        "RepositoryAssociationSucceeded",
+      Core.attempts = 30,
+      Core.delay = 10,
+      Core.acceptors =
+        [ Core.matchAll
+            "Associated"
+            Core.AcceptSuccess
+            ( describeRepositoryAssociationResponse_repositoryAssociation
+                Prelude.. Lens._Just
+                Prelude.. repositoryAssociation_state
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Failed"
+            Core.AcceptFailure
+            ( describeRepositoryAssociationResponse_repositoryAssociation
+                Prelude.. Lens._Just
+                Prelude.. repositoryAssociation_state
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            ),
+          Core.matchAll
+            "Associating"
+            Core.AcceptRetry
+            ( describeRepositoryAssociationResponse_repositoryAssociation
+                Prelude.. Lens._Just
+                Prelude.. repositoryAssociation_state
+                Prelude.. Lens._Just
+                Prelude.. Lens.to Data.toTextCI
+            )
+        ]
+    }
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.CodeGuruReviewer
+import Test.Amazonka.CodeGuruReviewer.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "CodeGuruReviewer"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/CodeGuruReviewer.hs b/test/Test/Amazonka/CodeGuruReviewer.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/CodeGuruReviewer.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.CodeGuruReviewer
+-- 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.CodeGuruReviewer
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/CodeGuruReviewer/Internal.hs b/test/Test/Amazonka/CodeGuruReviewer/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/CodeGuruReviewer/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.CodeGuruReviewer.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.CodeGuruReviewer.Internal where
diff --git a/test/Test/Amazonka/Gen/CodeGuruReviewer.hs b/test/Test/Amazonka/Gen/CodeGuruReviewer.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/CodeGuruReviewer.hs
@@ -0,0 +1,318 @@
+{-# 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.CodeGuruReviewer
+-- 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.CodeGuruReviewer where
+
+import Amazonka.CodeGuruReviewer
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.CodeGuruReviewer.Internal
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestAssociateRepository $
+--             newAssociateRepository
+--
+--         , requestCreateCodeReview $
+--             newCreateCodeReview
+--
+--         , requestDescribeCodeReview $
+--             newDescribeCodeReview
+--
+--         , requestDescribeRecommendationFeedback $
+--             newDescribeRecommendationFeedback
+--
+--         , requestDescribeRepositoryAssociation $
+--             newDescribeRepositoryAssociation
+--
+--         , requestDisassociateRepository $
+--             newDisassociateRepository
+--
+--         , requestListCodeReviews $
+--             newListCodeReviews
+--
+--         , requestListRecommendationFeedback $
+--             newListRecommendationFeedback
+--
+--         , requestListRecommendations $
+--             newListRecommendations
+--
+--         , requestListRepositoryAssociations $
+--             newListRepositoryAssociations
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestPutRecommendationFeedback $
+--             newPutRecommendationFeedback
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateRepository $
+--             newAssociateRepositoryResponse
+--
+--         , responseCreateCodeReview $
+--             newCreateCodeReviewResponse
+--
+--         , responseDescribeCodeReview $
+--             newDescribeCodeReviewResponse
+--
+--         , responseDescribeRecommendationFeedback $
+--             newDescribeRecommendationFeedbackResponse
+--
+--         , responseDescribeRepositoryAssociation $
+--             newDescribeRepositoryAssociationResponse
+--
+--         , responseDisassociateRepository $
+--             newDisassociateRepositoryResponse
+--
+--         , responseListCodeReviews $
+--             newListCodeReviewsResponse
+--
+--         , responseListRecommendationFeedback $
+--             newListRecommendationFeedbackResponse
+--
+--         , responseListRecommendations $
+--             newListRecommendationsResponse
+--
+--         , responseListRepositoryAssociations $
+--             newListRepositoryAssociationsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responsePutRecommendationFeedback $
+--             newPutRecommendationFeedbackResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateRepository :: AssociateRepository -> TestTree
+requestAssociateRepository =
+  req
+    "AssociateRepository"
+    "fixture/AssociateRepository.yaml"
+
+requestCreateCodeReview :: CreateCodeReview -> TestTree
+requestCreateCodeReview =
+  req
+    "CreateCodeReview"
+    "fixture/CreateCodeReview.yaml"
+
+requestDescribeCodeReview :: DescribeCodeReview -> TestTree
+requestDescribeCodeReview =
+  req
+    "DescribeCodeReview"
+    "fixture/DescribeCodeReview.yaml"
+
+requestDescribeRecommendationFeedback :: DescribeRecommendationFeedback -> TestTree
+requestDescribeRecommendationFeedback =
+  req
+    "DescribeRecommendationFeedback"
+    "fixture/DescribeRecommendationFeedback.yaml"
+
+requestDescribeRepositoryAssociation :: DescribeRepositoryAssociation -> TestTree
+requestDescribeRepositoryAssociation =
+  req
+    "DescribeRepositoryAssociation"
+    "fixture/DescribeRepositoryAssociation.yaml"
+
+requestDisassociateRepository :: DisassociateRepository -> TestTree
+requestDisassociateRepository =
+  req
+    "DisassociateRepository"
+    "fixture/DisassociateRepository.yaml"
+
+requestListCodeReviews :: ListCodeReviews -> TestTree
+requestListCodeReviews =
+  req
+    "ListCodeReviews"
+    "fixture/ListCodeReviews.yaml"
+
+requestListRecommendationFeedback :: ListRecommendationFeedback -> TestTree
+requestListRecommendationFeedback =
+  req
+    "ListRecommendationFeedback"
+    "fixture/ListRecommendationFeedback.yaml"
+
+requestListRecommendations :: ListRecommendations -> TestTree
+requestListRecommendations =
+  req
+    "ListRecommendations"
+    "fixture/ListRecommendations.yaml"
+
+requestListRepositoryAssociations :: ListRepositoryAssociations -> TestTree
+requestListRepositoryAssociations =
+  req
+    "ListRepositoryAssociations"
+    "fixture/ListRepositoryAssociations.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestPutRecommendationFeedback :: PutRecommendationFeedback -> TestTree
+requestPutRecommendationFeedback =
+  req
+    "PutRecommendationFeedback"
+    "fixture/PutRecommendationFeedback.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+-- Responses
+
+responseAssociateRepository :: AssociateRepositoryResponse -> TestTree
+responseAssociateRepository =
+  res
+    "AssociateRepositoryResponse"
+    "fixture/AssociateRepositoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateRepository)
+
+responseCreateCodeReview :: CreateCodeReviewResponse -> TestTree
+responseCreateCodeReview =
+  res
+    "CreateCodeReviewResponse"
+    "fixture/CreateCodeReviewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateCodeReview)
+
+responseDescribeCodeReview :: DescribeCodeReviewResponse -> TestTree
+responseDescribeCodeReview =
+  res
+    "DescribeCodeReviewResponse"
+    "fixture/DescribeCodeReviewResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeCodeReview)
+
+responseDescribeRecommendationFeedback :: DescribeRecommendationFeedbackResponse -> TestTree
+responseDescribeRecommendationFeedback =
+  res
+    "DescribeRecommendationFeedbackResponse"
+    "fixture/DescribeRecommendationFeedbackResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeRecommendationFeedback)
+
+responseDescribeRepositoryAssociation :: DescribeRepositoryAssociationResponse -> TestTree
+responseDescribeRepositoryAssociation =
+  res
+    "DescribeRepositoryAssociationResponse"
+    "fixture/DescribeRepositoryAssociationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeRepositoryAssociation)
+
+responseDisassociateRepository :: DisassociateRepositoryResponse -> TestTree
+responseDisassociateRepository =
+  res
+    "DisassociateRepositoryResponse"
+    "fixture/DisassociateRepositoryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateRepository)
+
+responseListCodeReviews :: ListCodeReviewsResponse -> TestTree
+responseListCodeReviews =
+  res
+    "ListCodeReviewsResponse"
+    "fixture/ListCodeReviewsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCodeReviews)
+
+responseListRecommendationFeedback :: ListRecommendationFeedbackResponse -> TestTree
+responseListRecommendationFeedback =
+  res
+    "ListRecommendationFeedbackResponse"
+    "fixture/ListRecommendationFeedbackResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRecommendationFeedback)
+
+responseListRecommendations :: ListRecommendationsResponse -> TestTree
+responseListRecommendations =
+  res
+    "ListRecommendationsResponse"
+    "fixture/ListRecommendationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRecommendations)
+
+responseListRepositoryAssociations :: ListRepositoryAssociationsResponse -> TestTree
+responseListRepositoryAssociations =
+  res
+    "ListRepositoryAssociationsResponse"
+    "fixture/ListRepositoryAssociationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRepositoryAssociations)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responsePutRecommendationFeedback :: PutRecommendationFeedbackResponse -> TestTree
+responsePutRecommendationFeedback =
+  res
+    "PutRecommendationFeedbackResponse"
+    "fixture/PutRecommendationFeedbackResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutRecommendationFeedback)
+
+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)
