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 EventBridge Pipes SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2015-10-07@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-pipes)
+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.Pipes](http://hackage.haskell.org/package/amazonka-pipes/docs/Amazonka-Pipes.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-pipes` 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-pipes.cabal b/amazonka-pipes.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-pipes.cabal
@@ -0,0 +1,169 @@
+cabal-version:      2.2
+name:               amazonka-pipes
+version:            2.0
+synopsis:           Amazon EventBridge Pipes 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 @2015-10-07@ 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.Pipes.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.Pipes" 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-pipes
+
+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.Pipes
+    Amazonka.Pipes.CreatePipe
+    Amazonka.Pipes.DeletePipe
+    Amazonka.Pipes.DescribePipe
+    Amazonka.Pipes.Lens
+    Amazonka.Pipes.ListPipes
+    Amazonka.Pipes.ListTagsForResource
+    Amazonka.Pipes.StartPipe
+    Amazonka.Pipes.StopPipe
+    Amazonka.Pipes.TagResource
+    Amazonka.Pipes.Types
+    Amazonka.Pipes.Types.AssignPublicIp
+    Amazonka.Pipes.Types.AwsVpcConfiguration
+    Amazonka.Pipes.Types.BatchArrayProperties
+    Amazonka.Pipes.Types.BatchContainerOverrides
+    Amazonka.Pipes.Types.BatchEnvironmentVariable
+    Amazonka.Pipes.Types.BatchJobDependency
+    Amazonka.Pipes.Types.BatchJobDependencyType
+    Amazonka.Pipes.Types.BatchResourceRequirement
+    Amazonka.Pipes.Types.BatchResourceRequirementType
+    Amazonka.Pipes.Types.BatchRetryStrategy
+    Amazonka.Pipes.Types.CapacityProviderStrategyItem
+    Amazonka.Pipes.Types.DeadLetterConfig
+    Amazonka.Pipes.Types.DynamoDBStreamStartPosition
+    Amazonka.Pipes.Types.EcsContainerOverride
+    Amazonka.Pipes.Types.EcsEnvironmentFile
+    Amazonka.Pipes.Types.EcsEnvironmentFileType
+    Amazonka.Pipes.Types.EcsEnvironmentVariable
+    Amazonka.Pipes.Types.EcsEphemeralStorage
+    Amazonka.Pipes.Types.EcsInferenceAcceleratorOverride
+    Amazonka.Pipes.Types.EcsResourceRequirement
+    Amazonka.Pipes.Types.EcsResourceRequirementType
+    Amazonka.Pipes.Types.EcsTaskOverride
+    Amazonka.Pipes.Types.Filter
+    Amazonka.Pipes.Types.FilterCriteria
+    Amazonka.Pipes.Types.KinesisStreamStartPosition
+    Amazonka.Pipes.Types.LaunchType
+    Amazonka.Pipes.Types.MQBrokerAccessCredentials
+    Amazonka.Pipes.Types.MSKAccessCredentials
+    Amazonka.Pipes.Types.MSKStartPosition
+    Amazonka.Pipes.Types.NetworkConfiguration
+    Amazonka.Pipes.Types.OnPartialBatchItemFailureStreams
+    Amazonka.Pipes.Types.Pipe
+    Amazonka.Pipes.Types.PipeEnrichmentHttpParameters
+    Amazonka.Pipes.Types.PipeEnrichmentParameters
+    Amazonka.Pipes.Types.PipeSourceActiveMQBrokerParameters
+    Amazonka.Pipes.Types.PipeSourceDynamoDBStreamParameters
+    Amazonka.Pipes.Types.PipeSourceKinesisStreamParameters
+    Amazonka.Pipes.Types.PipeSourceManagedStreamingKafkaParameters
+    Amazonka.Pipes.Types.PipeSourceParameters
+    Amazonka.Pipes.Types.PipeSourceRabbitMQBrokerParameters
+    Amazonka.Pipes.Types.PipeSourceSelfManagedKafkaParameters
+    Amazonka.Pipes.Types.PipeSourceSqsQueueParameters
+    Amazonka.Pipes.Types.PipeState
+    Amazonka.Pipes.Types.PipeTargetBatchJobParameters
+    Amazonka.Pipes.Types.PipeTargetCloudWatchLogsParameters
+    Amazonka.Pipes.Types.PipeTargetEcsTaskParameters
+    Amazonka.Pipes.Types.PipeTargetEventBridgeEventBusParameters
+    Amazonka.Pipes.Types.PipeTargetHttpParameters
+    Amazonka.Pipes.Types.PipeTargetInvocationType
+    Amazonka.Pipes.Types.PipeTargetKinesisStreamParameters
+    Amazonka.Pipes.Types.PipeTargetLambdaFunctionParameters
+    Amazonka.Pipes.Types.PipeTargetParameters
+    Amazonka.Pipes.Types.PipeTargetRedshiftDataParameters
+    Amazonka.Pipes.Types.PipeTargetSageMakerPipelineParameters
+    Amazonka.Pipes.Types.PipeTargetSqsQueueParameters
+    Amazonka.Pipes.Types.PipeTargetStateMachineParameters
+    Amazonka.Pipes.Types.PlacementConstraint
+    Amazonka.Pipes.Types.PlacementConstraintType
+    Amazonka.Pipes.Types.PlacementStrategy
+    Amazonka.Pipes.Types.PlacementStrategyType
+    Amazonka.Pipes.Types.PropagateTags
+    Amazonka.Pipes.Types.RequestedPipeState
+    Amazonka.Pipes.Types.RequestedPipeStateDescribeResponse
+    Amazonka.Pipes.Types.SageMakerPipelineParameter
+    Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationCredentials
+    Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationVpc
+    Amazonka.Pipes.Types.SelfManagedKafkaStartPosition
+    Amazonka.Pipes.Types.Tag
+    Amazonka.Pipes.Types.UpdatePipeSourceActiveMQBrokerParameters
+    Amazonka.Pipes.Types.UpdatePipeSourceDynamoDBStreamParameters
+    Amazonka.Pipes.Types.UpdatePipeSourceKinesisStreamParameters
+    Amazonka.Pipes.Types.UpdatePipeSourceManagedStreamingKafkaParameters
+    Amazonka.Pipes.Types.UpdatePipeSourceParameters
+    Amazonka.Pipes.Types.UpdatePipeSourceRabbitMQBrokerParameters
+    Amazonka.Pipes.Types.UpdatePipeSourceSelfManagedKafkaParameters
+    Amazonka.Pipes.Types.UpdatePipeSourceSqsQueueParameters
+    Amazonka.Pipes.UntagResource
+    Amazonka.Pipes.UpdatePipe
+    Amazonka.Pipes.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-pipes-test
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  main-is:          Main.hs
+  ghc-options:      -Wall -threaded
+
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.Gen.Pipes
+    Test.Amazonka.Pipes
+    Test.Amazonka.Pipes.Internal
+
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-pipes
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreatePipe.yaml b/fixture/CreatePipe.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePipe.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/CreatePipeResponse.proto b/fixture/CreatePipeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePipeResponse.proto
diff --git a/fixture/DeletePipe.yaml b/fixture/DeletePipe.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePipe.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/DeletePipeResponse.proto b/fixture/DeletePipeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePipeResponse.proto
diff --git a/fixture/DescribePipe.yaml b/fixture/DescribePipe.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePipe.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/DescribePipeResponse.proto b/fixture/DescribePipeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePipeResponse.proto
diff --git a/fixture/ListPipes.yaml b/fixture/ListPipes.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipes.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/ListPipesResponse.proto b/fixture/ListPipesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipesResponse.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/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/StartPipe.yaml b/fixture/StartPipe.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartPipe.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/StartPipeResponse.proto b/fixture/StartPipeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartPipeResponse.proto
diff --git a/fixture/StopPipe.yaml b/fixture/StopPipe.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopPipe.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/StopPipeResponse.proto b/fixture/StopPipeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopPipeResponse.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/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/fixture/UpdatePipe.yaml b/fixture/UpdatePipe.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePipe.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/pipes/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  pipes.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/UpdatePipeResponse.proto b/fixture/UpdatePipeResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePipeResponse.proto
diff --git a/gen/Amazonka/Pipes.hs b/gen/Amazonka/Pipes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes.hs
@@ -0,0 +1,441 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.Pipes
+-- 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 @2015-10-07@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon EventBridge Pipes connects event sources to targets. Pipes
+-- reduces the need for specialized knowledge and integration code when
+-- developing event driven architectures. This helps ensures consistency
+-- across your company’s applications. With Pipes, the target can be any
+-- available EventBridge target. To set up a pipe, you select the event
+-- source, add optional event filtering, define optional enrichment, and
+-- select the target for the event data.
+module Amazonka.Pipes
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalException
+    _InternalException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** ServiceQuotaExceededException
+    _ServiceQuotaExceededException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreatePipe
+    CreatePipe (CreatePipe'),
+    newCreatePipe,
+    CreatePipeResponse (CreatePipeResponse'),
+    newCreatePipeResponse,
+
+    -- ** DeletePipe
+    DeletePipe (DeletePipe'),
+    newDeletePipe,
+    DeletePipeResponse (DeletePipeResponse'),
+    newDeletePipeResponse,
+
+    -- ** DescribePipe
+    DescribePipe (DescribePipe'),
+    newDescribePipe,
+    DescribePipeResponse (DescribePipeResponse'),
+    newDescribePipeResponse,
+
+    -- ** ListPipes (Paginated)
+    ListPipes (ListPipes'),
+    newListPipes,
+    ListPipesResponse (ListPipesResponse'),
+    newListPipesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** StartPipe
+    StartPipe (StartPipe'),
+    newStartPipe,
+    StartPipeResponse (StartPipeResponse'),
+    newStartPipeResponse,
+
+    -- ** StopPipe
+    StopPipe (StopPipe'),
+    newStopPipe,
+    StopPipeResponse (StopPipeResponse'),
+    newStopPipeResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdatePipe
+    UpdatePipe (UpdatePipe'),
+    newUpdatePipe,
+    UpdatePipeResponse (UpdatePipeResponse'),
+    newUpdatePipeResponse,
+
+    -- * Types
+
+    -- ** AssignPublicIp
+    AssignPublicIp (..),
+
+    -- ** BatchJobDependencyType
+    BatchJobDependencyType (..),
+
+    -- ** BatchResourceRequirementType
+    BatchResourceRequirementType (..),
+
+    -- ** DynamoDBStreamStartPosition
+    DynamoDBStreamStartPosition (..),
+
+    -- ** EcsEnvironmentFileType
+    EcsEnvironmentFileType (..),
+
+    -- ** EcsResourceRequirementType
+    EcsResourceRequirementType (..),
+
+    -- ** KinesisStreamStartPosition
+    KinesisStreamStartPosition (..),
+
+    -- ** LaunchType
+    LaunchType (..),
+
+    -- ** MSKStartPosition
+    MSKStartPosition (..),
+
+    -- ** OnPartialBatchItemFailureStreams
+    OnPartialBatchItemFailureStreams (..),
+
+    -- ** PipeState
+    PipeState (..),
+
+    -- ** PipeTargetInvocationType
+    PipeTargetInvocationType (..),
+
+    -- ** PlacementConstraintType
+    PlacementConstraintType (..),
+
+    -- ** PlacementStrategyType
+    PlacementStrategyType (..),
+
+    -- ** PropagateTags
+    PropagateTags (..),
+
+    -- ** RequestedPipeState
+    RequestedPipeState (..),
+
+    -- ** RequestedPipeStateDescribeResponse
+    RequestedPipeStateDescribeResponse (..),
+
+    -- ** SelfManagedKafkaStartPosition
+    SelfManagedKafkaStartPosition (..),
+
+    -- ** AwsVpcConfiguration
+    AwsVpcConfiguration (AwsVpcConfiguration'),
+    newAwsVpcConfiguration,
+
+    -- ** BatchArrayProperties
+    BatchArrayProperties (BatchArrayProperties'),
+    newBatchArrayProperties,
+
+    -- ** BatchContainerOverrides
+    BatchContainerOverrides (BatchContainerOverrides'),
+    newBatchContainerOverrides,
+
+    -- ** BatchEnvironmentVariable
+    BatchEnvironmentVariable (BatchEnvironmentVariable'),
+    newBatchEnvironmentVariable,
+
+    -- ** BatchJobDependency
+    BatchJobDependency (BatchJobDependency'),
+    newBatchJobDependency,
+
+    -- ** BatchResourceRequirement
+    BatchResourceRequirement (BatchResourceRequirement'),
+    newBatchResourceRequirement,
+
+    -- ** BatchRetryStrategy
+    BatchRetryStrategy (BatchRetryStrategy'),
+    newBatchRetryStrategy,
+
+    -- ** CapacityProviderStrategyItem
+    CapacityProviderStrategyItem (CapacityProviderStrategyItem'),
+    newCapacityProviderStrategyItem,
+
+    -- ** DeadLetterConfig
+    DeadLetterConfig (DeadLetterConfig'),
+    newDeadLetterConfig,
+
+    -- ** EcsContainerOverride
+    EcsContainerOverride (EcsContainerOverride'),
+    newEcsContainerOverride,
+
+    -- ** EcsEnvironmentFile
+    EcsEnvironmentFile (EcsEnvironmentFile'),
+    newEcsEnvironmentFile,
+
+    -- ** EcsEnvironmentVariable
+    EcsEnvironmentVariable (EcsEnvironmentVariable'),
+    newEcsEnvironmentVariable,
+
+    -- ** EcsEphemeralStorage
+    EcsEphemeralStorage (EcsEphemeralStorage'),
+    newEcsEphemeralStorage,
+
+    -- ** EcsInferenceAcceleratorOverride
+    EcsInferenceAcceleratorOverride (EcsInferenceAcceleratorOverride'),
+    newEcsInferenceAcceleratorOverride,
+
+    -- ** EcsResourceRequirement
+    EcsResourceRequirement (EcsResourceRequirement'),
+    newEcsResourceRequirement,
+
+    -- ** EcsTaskOverride
+    EcsTaskOverride (EcsTaskOverride'),
+    newEcsTaskOverride,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** FilterCriteria
+    FilterCriteria (FilterCriteria'),
+    newFilterCriteria,
+
+    -- ** MQBrokerAccessCredentials
+    MQBrokerAccessCredentials (MQBrokerAccessCredentials'),
+    newMQBrokerAccessCredentials,
+
+    -- ** MSKAccessCredentials
+    MSKAccessCredentials (MSKAccessCredentials'),
+    newMSKAccessCredentials,
+
+    -- ** NetworkConfiguration
+    NetworkConfiguration (NetworkConfiguration'),
+    newNetworkConfiguration,
+
+    -- ** Pipe
+    Pipe (Pipe'),
+    newPipe,
+
+    -- ** PipeEnrichmentHttpParameters
+    PipeEnrichmentHttpParameters (PipeEnrichmentHttpParameters'),
+    newPipeEnrichmentHttpParameters,
+
+    -- ** PipeEnrichmentParameters
+    PipeEnrichmentParameters (PipeEnrichmentParameters'),
+    newPipeEnrichmentParameters,
+
+    -- ** PipeSourceActiveMQBrokerParameters
+    PipeSourceActiveMQBrokerParameters (PipeSourceActiveMQBrokerParameters'),
+    newPipeSourceActiveMQBrokerParameters,
+
+    -- ** PipeSourceDynamoDBStreamParameters
+    PipeSourceDynamoDBStreamParameters (PipeSourceDynamoDBStreamParameters'),
+    newPipeSourceDynamoDBStreamParameters,
+
+    -- ** PipeSourceKinesisStreamParameters
+    PipeSourceKinesisStreamParameters (PipeSourceKinesisStreamParameters'),
+    newPipeSourceKinesisStreamParameters,
+
+    -- ** PipeSourceManagedStreamingKafkaParameters
+    PipeSourceManagedStreamingKafkaParameters (PipeSourceManagedStreamingKafkaParameters'),
+    newPipeSourceManagedStreamingKafkaParameters,
+
+    -- ** PipeSourceParameters
+    PipeSourceParameters (PipeSourceParameters'),
+    newPipeSourceParameters,
+
+    -- ** PipeSourceRabbitMQBrokerParameters
+    PipeSourceRabbitMQBrokerParameters (PipeSourceRabbitMQBrokerParameters'),
+    newPipeSourceRabbitMQBrokerParameters,
+
+    -- ** PipeSourceSelfManagedKafkaParameters
+    PipeSourceSelfManagedKafkaParameters (PipeSourceSelfManagedKafkaParameters'),
+    newPipeSourceSelfManagedKafkaParameters,
+
+    -- ** PipeSourceSqsQueueParameters
+    PipeSourceSqsQueueParameters (PipeSourceSqsQueueParameters'),
+    newPipeSourceSqsQueueParameters,
+
+    -- ** PipeTargetBatchJobParameters
+    PipeTargetBatchJobParameters (PipeTargetBatchJobParameters'),
+    newPipeTargetBatchJobParameters,
+
+    -- ** PipeTargetCloudWatchLogsParameters
+    PipeTargetCloudWatchLogsParameters (PipeTargetCloudWatchLogsParameters'),
+    newPipeTargetCloudWatchLogsParameters,
+
+    -- ** PipeTargetEcsTaskParameters
+    PipeTargetEcsTaskParameters (PipeTargetEcsTaskParameters'),
+    newPipeTargetEcsTaskParameters,
+
+    -- ** PipeTargetEventBridgeEventBusParameters
+    PipeTargetEventBridgeEventBusParameters (PipeTargetEventBridgeEventBusParameters'),
+    newPipeTargetEventBridgeEventBusParameters,
+
+    -- ** PipeTargetHttpParameters
+    PipeTargetHttpParameters (PipeTargetHttpParameters'),
+    newPipeTargetHttpParameters,
+
+    -- ** PipeTargetKinesisStreamParameters
+    PipeTargetKinesisStreamParameters (PipeTargetKinesisStreamParameters'),
+    newPipeTargetKinesisStreamParameters,
+
+    -- ** PipeTargetLambdaFunctionParameters
+    PipeTargetLambdaFunctionParameters (PipeTargetLambdaFunctionParameters'),
+    newPipeTargetLambdaFunctionParameters,
+
+    -- ** PipeTargetParameters
+    PipeTargetParameters (PipeTargetParameters'),
+    newPipeTargetParameters,
+
+    -- ** PipeTargetRedshiftDataParameters
+    PipeTargetRedshiftDataParameters (PipeTargetRedshiftDataParameters'),
+    newPipeTargetRedshiftDataParameters,
+
+    -- ** PipeTargetSageMakerPipelineParameters
+    PipeTargetSageMakerPipelineParameters (PipeTargetSageMakerPipelineParameters'),
+    newPipeTargetSageMakerPipelineParameters,
+
+    -- ** PipeTargetSqsQueueParameters
+    PipeTargetSqsQueueParameters (PipeTargetSqsQueueParameters'),
+    newPipeTargetSqsQueueParameters,
+
+    -- ** PipeTargetStateMachineParameters
+    PipeTargetStateMachineParameters (PipeTargetStateMachineParameters'),
+    newPipeTargetStateMachineParameters,
+
+    -- ** PlacementConstraint
+    PlacementConstraint (PlacementConstraint'),
+    newPlacementConstraint,
+
+    -- ** PlacementStrategy
+    PlacementStrategy (PlacementStrategy'),
+    newPlacementStrategy,
+
+    -- ** SageMakerPipelineParameter
+    SageMakerPipelineParameter (SageMakerPipelineParameter'),
+    newSageMakerPipelineParameter,
+
+    -- ** SelfManagedKafkaAccessConfigurationCredentials
+    SelfManagedKafkaAccessConfigurationCredentials (SelfManagedKafkaAccessConfigurationCredentials'),
+    newSelfManagedKafkaAccessConfigurationCredentials,
+
+    -- ** SelfManagedKafkaAccessConfigurationVpc
+    SelfManagedKafkaAccessConfigurationVpc (SelfManagedKafkaAccessConfigurationVpc'),
+    newSelfManagedKafkaAccessConfigurationVpc,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** UpdatePipeSourceActiveMQBrokerParameters
+    UpdatePipeSourceActiveMQBrokerParameters (UpdatePipeSourceActiveMQBrokerParameters'),
+    newUpdatePipeSourceActiveMQBrokerParameters,
+
+    -- ** UpdatePipeSourceDynamoDBStreamParameters
+    UpdatePipeSourceDynamoDBStreamParameters (UpdatePipeSourceDynamoDBStreamParameters'),
+    newUpdatePipeSourceDynamoDBStreamParameters,
+
+    -- ** UpdatePipeSourceKinesisStreamParameters
+    UpdatePipeSourceKinesisStreamParameters (UpdatePipeSourceKinesisStreamParameters'),
+    newUpdatePipeSourceKinesisStreamParameters,
+
+    -- ** UpdatePipeSourceManagedStreamingKafkaParameters
+    UpdatePipeSourceManagedStreamingKafkaParameters (UpdatePipeSourceManagedStreamingKafkaParameters'),
+    newUpdatePipeSourceManagedStreamingKafkaParameters,
+
+    -- ** UpdatePipeSourceParameters
+    UpdatePipeSourceParameters (UpdatePipeSourceParameters'),
+    newUpdatePipeSourceParameters,
+
+    -- ** UpdatePipeSourceRabbitMQBrokerParameters
+    UpdatePipeSourceRabbitMQBrokerParameters (UpdatePipeSourceRabbitMQBrokerParameters'),
+    newUpdatePipeSourceRabbitMQBrokerParameters,
+
+    -- ** UpdatePipeSourceSelfManagedKafkaParameters
+    UpdatePipeSourceSelfManagedKafkaParameters (UpdatePipeSourceSelfManagedKafkaParameters'),
+    newUpdatePipeSourceSelfManagedKafkaParameters,
+
+    -- ** UpdatePipeSourceSqsQueueParameters
+    UpdatePipeSourceSqsQueueParameters (UpdatePipeSourceSqsQueueParameters'),
+    newUpdatePipeSourceSqsQueueParameters,
+  )
+where
+
+import Amazonka.Pipes.CreatePipe
+import Amazonka.Pipes.DeletePipe
+import Amazonka.Pipes.DescribePipe
+import Amazonka.Pipes.Lens
+import Amazonka.Pipes.ListPipes
+import Amazonka.Pipes.ListTagsForResource
+import Amazonka.Pipes.StartPipe
+import Amazonka.Pipes.StopPipe
+import Amazonka.Pipes.TagResource
+import Amazonka.Pipes.Types
+import Amazonka.Pipes.UntagResource
+import Amazonka.Pipes.UpdatePipe
+import Amazonka.Pipes.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 'Pipes'.
+
+-- $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/Pipes/CreatePipe.hs b/gen/Amazonka/Pipes/CreatePipe.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/CreatePipe.hs
@@ -0,0 +1,372 @@
+{-# 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.Pipes.CreatePipe
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a pipe. Amazon EventBridge Pipes connect event sources to targets
+-- and reduces the need for specialized knowledge and integration code.
+module Amazonka.Pipes.CreatePipe
+  ( -- * Creating a Request
+    CreatePipe (..),
+    newCreatePipe,
+
+    -- * Request Lenses
+    createPipe_description,
+    createPipe_desiredState,
+    createPipe_enrichment,
+    createPipe_enrichmentParameters,
+    createPipe_sourceParameters,
+    createPipe_tags,
+    createPipe_targetParameters,
+    createPipe_name,
+    createPipe_roleArn,
+    createPipe_source,
+    createPipe_target,
+
+    -- * Destructuring the Response
+    CreatePipeResponse (..),
+    newCreatePipeResponse,
+
+    -- * Response Lenses
+    createPipeResponse_arn,
+    createPipeResponse_creationTime,
+    createPipeResponse_currentState,
+    createPipeResponse_desiredState,
+    createPipeResponse_lastModifiedTime,
+    createPipeResponse_name,
+    createPipeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreatePipe' smart constructor.
+data CreatePipe = CreatePipe'
+  { -- | A description of the pipe.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeState,
+    -- | The ARN of the enrichment resource.
+    enrichment :: Prelude.Maybe Prelude.Text,
+    -- | The parameters required to set up enrichment on your pipe.
+    enrichmentParameters :: Prelude.Maybe PipeEnrichmentParameters,
+    -- | The parameters required to set up a source for your pipe.
+    sourceParameters :: Prelude.Maybe PipeSourceParameters,
+    -- | The list of key-value pairs to associate with the pipe.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    -- | The parameters required to set up a target for your pipe.
+    targetParameters :: Prelude.Maybe PipeTargetParameters,
+    -- | The name of the pipe.
+    name :: Prelude.Text,
+    -- | The ARN of the role that allows the pipe to send data to the target.
+    roleArn :: Prelude.Text,
+    -- | The ARN of the source resource.
+    source :: Prelude.Text,
+    -- | The ARN of the target resource.
+    target :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreatePipe' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createPipe_description' - A description of the pipe.
+--
+-- 'desiredState', 'createPipe_desiredState' - The state the pipe should be in.
+--
+-- 'enrichment', 'createPipe_enrichment' - The ARN of the enrichment resource.
+--
+-- 'enrichmentParameters', 'createPipe_enrichmentParameters' - The parameters required to set up enrichment on your pipe.
+--
+-- 'sourceParameters', 'createPipe_sourceParameters' - The parameters required to set up a source for your pipe.
+--
+-- 'tags', 'createPipe_tags' - The list of key-value pairs to associate with the pipe.
+--
+-- 'targetParameters', 'createPipe_targetParameters' - The parameters required to set up a target for your pipe.
+--
+-- 'name', 'createPipe_name' - The name of the pipe.
+--
+-- 'roleArn', 'createPipe_roleArn' - The ARN of the role that allows the pipe to send data to the target.
+--
+-- 'source', 'createPipe_source' - The ARN of the source resource.
+--
+-- 'target', 'createPipe_target' - The ARN of the target resource.
+newCreatePipe ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  -- | 'source'
+  Prelude.Text ->
+  -- | 'target'
+  Prelude.Text ->
+  CreatePipe
+newCreatePipe pName_ pRoleArn_ pSource_ pTarget_ =
+  CreatePipe'
+    { description = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      enrichment = Prelude.Nothing,
+      enrichmentParameters = Prelude.Nothing,
+      sourceParameters = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      targetParameters = Prelude.Nothing,
+      name = pName_,
+      roleArn = pRoleArn_,
+      source = pSource_,
+      target = pTarget_
+    }
+
+-- | A description of the pipe.
+createPipe_description :: Lens.Lens' CreatePipe (Prelude.Maybe Prelude.Text)
+createPipe_description = Lens.lens (\CreatePipe' {description} -> description) (\s@CreatePipe' {} a -> s {description = a} :: CreatePipe) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The state the pipe should be in.
+createPipe_desiredState :: Lens.Lens' CreatePipe (Prelude.Maybe RequestedPipeState)
+createPipe_desiredState = Lens.lens (\CreatePipe' {desiredState} -> desiredState) (\s@CreatePipe' {} a -> s {desiredState = a} :: CreatePipe)
+
+-- | The ARN of the enrichment resource.
+createPipe_enrichment :: Lens.Lens' CreatePipe (Prelude.Maybe Prelude.Text)
+createPipe_enrichment = Lens.lens (\CreatePipe' {enrichment} -> enrichment) (\s@CreatePipe' {} a -> s {enrichment = a} :: CreatePipe)
+
+-- | The parameters required to set up enrichment on your pipe.
+createPipe_enrichmentParameters :: Lens.Lens' CreatePipe (Prelude.Maybe PipeEnrichmentParameters)
+createPipe_enrichmentParameters = Lens.lens (\CreatePipe' {enrichmentParameters} -> enrichmentParameters) (\s@CreatePipe' {} a -> s {enrichmentParameters = a} :: CreatePipe)
+
+-- | The parameters required to set up a source for your pipe.
+createPipe_sourceParameters :: Lens.Lens' CreatePipe (Prelude.Maybe PipeSourceParameters)
+createPipe_sourceParameters = Lens.lens (\CreatePipe' {sourceParameters} -> sourceParameters) (\s@CreatePipe' {} a -> s {sourceParameters = a} :: CreatePipe)
+
+-- | The list of key-value pairs to associate with the pipe.
+createPipe_tags :: Lens.Lens' CreatePipe (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createPipe_tags = Lens.lens (\CreatePipe' {tags} -> tags) (\s@CreatePipe' {} a -> s {tags = a} :: CreatePipe) Prelude.. Lens.mapping Lens.coerced
+
+-- | The parameters required to set up a target for your pipe.
+createPipe_targetParameters :: Lens.Lens' CreatePipe (Prelude.Maybe PipeTargetParameters)
+createPipe_targetParameters = Lens.lens (\CreatePipe' {targetParameters} -> targetParameters) (\s@CreatePipe' {} a -> s {targetParameters = a} :: CreatePipe)
+
+-- | The name of the pipe.
+createPipe_name :: Lens.Lens' CreatePipe Prelude.Text
+createPipe_name = Lens.lens (\CreatePipe' {name} -> name) (\s@CreatePipe' {} a -> s {name = a} :: CreatePipe)
+
+-- | The ARN of the role that allows the pipe to send data to the target.
+createPipe_roleArn :: Lens.Lens' CreatePipe Prelude.Text
+createPipe_roleArn = Lens.lens (\CreatePipe' {roleArn} -> roleArn) (\s@CreatePipe' {} a -> s {roleArn = a} :: CreatePipe)
+
+-- | The ARN of the source resource.
+createPipe_source :: Lens.Lens' CreatePipe Prelude.Text
+createPipe_source = Lens.lens (\CreatePipe' {source} -> source) (\s@CreatePipe' {} a -> s {source = a} :: CreatePipe)
+
+-- | The ARN of the target resource.
+createPipe_target :: Lens.Lens' CreatePipe Prelude.Text
+createPipe_target = Lens.lens (\CreatePipe' {target} -> target) (\s@CreatePipe' {} a -> s {target = a} :: CreatePipe)
+
+instance Core.AWSRequest CreatePipe where
+  type AWSResponse CreatePipe = CreatePipeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreatePipeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "CurrentState")
+            Prelude.<*> (x Data..?> "DesiredState")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreatePipe where
+  hashWithSalt _salt CreatePipe' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` desiredState
+      `Prelude.hashWithSalt` enrichment
+      `Prelude.hashWithSalt` enrichmentParameters
+      `Prelude.hashWithSalt` sourceParameters
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` targetParameters
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` target
+
+instance Prelude.NFData CreatePipe where
+  rnf CreatePipe' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf enrichment
+      `Prelude.seq` Prelude.rnf enrichmentParameters
+      `Prelude.seq` Prelude.rnf sourceParameters
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf targetParameters
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf target
+
+instance Data.ToHeaders CreatePipe where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreatePipe where
+  toJSON CreatePipe' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("DesiredState" Data..=) Prelude.<$> desiredState,
+            ("Enrichment" Data..=) Prelude.<$> enrichment,
+            ("EnrichmentParameters" Data..=)
+              Prelude.<$> enrichmentParameters,
+            ("SourceParameters" Data..=)
+              Prelude.<$> sourceParameters,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("TargetParameters" Data..=)
+              Prelude.<$> targetParameters,
+            Prelude.Just ("RoleArn" Data..= roleArn),
+            Prelude.Just ("Source" Data..= source),
+            Prelude.Just ("Target" Data..= target)
+          ]
+      )
+
+instance Data.ToPath CreatePipe where
+  toPath CreatePipe' {..} =
+    Prelude.mconcat ["/v1/pipes/", Data.toBS name]
+
+instance Data.ToQuery CreatePipe where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreatePipeResponse' smart constructor.
+data CreatePipeResponse = CreatePipeResponse'
+  { -- | The ARN of the pipe.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time the pipe was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The state the pipe is in.
+    currentState :: Prelude.Maybe PipeState,
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeState,
+    -- | When the pipe was last updated, in
+    -- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+    -- (YYYY-MM-DDThh:mm:ss.sTZD).
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the pipe.
+    name :: 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 'CreatePipeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createPipeResponse_arn' - The ARN of the pipe.
+--
+-- 'creationTime', 'createPipeResponse_creationTime' - The time the pipe was created.
+--
+-- 'currentState', 'createPipeResponse_currentState' - The state the pipe is in.
+--
+-- 'desiredState', 'createPipeResponse_desiredState' - The state the pipe should be in.
+--
+-- 'lastModifiedTime', 'createPipeResponse_lastModifiedTime' - When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+--
+-- 'name', 'createPipeResponse_name' - The name of the pipe.
+--
+-- 'httpStatus', 'createPipeResponse_httpStatus' - The response's http status code.
+newCreatePipeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreatePipeResponse
+newCreatePipeResponse pHttpStatus_ =
+  CreatePipeResponse'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currentState = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the pipe.
+createPipeResponse_arn :: Lens.Lens' CreatePipeResponse (Prelude.Maybe Prelude.Text)
+createPipeResponse_arn = Lens.lens (\CreatePipeResponse' {arn} -> arn) (\s@CreatePipeResponse' {} a -> s {arn = a} :: CreatePipeResponse)
+
+-- | The time the pipe was created.
+createPipeResponse_creationTime :: Lens.Lens' CreatePipeResponse (Prelude.Maybe Prelude.UTCTime)
+createPipeResponse_creationTime = Lens.lens (\CreatePipeResponse' {creationTime} -> creationTime) (\s@CreatePipeResponse' {} a -> s {creationTime = a} :: CreatePipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The state the pipe is in.
+createPipeResponse_currentState :: Lens.Lens' CreatePipeResponse (Prelude.Maybe PipeState)
+createPipeResponse_currentState = Lens.lens (\CreatePipeResponse' {currentState} -> currentState) (\s@CreatePipeResponse' {} a -> s {currentState = a} :: CreatePipeResponse)
+
+-- | The state the pipe should be in.
+createPipeResponse_desiredState :: Lens.Lens' CreatePipeResponse (Prelude.Maybe RequestedPipeState)
+createPipeResponse_desiredState = Lens.lens (\CreatePipeResponse' {desiredState} -> desiredState) (\s@CreatePipeResponse' {} a -> s {desiredState = a} :: CreatePipeResponse)
+
+-- | When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+createPipeResponse_lastModifiedTime :: Lens.Lens' CreatePipeResponse (Prelude.Maybe Prelude.UTCTime)
+createPipeResponse_lastModifiedTime = Lens.lens (\CreatePipeResponse' {lastModifiedTime} -> lastModifiedTime) (\s@CreatePipeResponse' {} a -> s {lastModifiedTime = a} :: CreatePipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the pipe.
+createPipeResponse_name :: Lens.Lens' CreatePipeResponse (Prelude.Maybe Prelude.Text)
+createPipeResponse_name = Lens.lens (\CreatePipeResponse' {name} -> name) (\s@CreatePipeResponse' {} a -> s {name = a} :: CreatePipeResponse)
+
+-- | The response's http status code.
+createPipeResponse_httpStatus :: Lens.Lens' CreatePipeResponse Prelude.Int
+createPipeResponse_httpStatus = Lens.lens (\CreatePipeResponse' {httpStatus} -> httpStatus) (\s@CreatePipeResponse' {} a -> s {httpStatus = a} :: CreatePipeResponse)
+
+instance Prelude.NFData CreatePipeResponse where
+  rnf CreatePipeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currentState
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Pipes/DeletePipe.hs b/gen/Amazonka/Pipes/DeletePipe.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/DeletePipe.hs
@@ -0,0 +1,222 @@
+{-# 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.Pipes.DeletePipe
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete an existing pipe. For more information about pipes, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html Amazon EventBridge Pipes>
+-- in the Amazon EventBridge User Guide.
+module Amazonka.Pipes.DeletePipe
+  ( -- * Creating a Request
+    DeletePipe (..),
+    newDeletePipe,
+
+    -- * Request Lenses
+    deletePipe_name,
+
+    -- * Destructuring the Response
+    DeletePipeResponse (..),
+    newDeletePipeResponse,
+
+    -- * Response Lenses
+    deletePipeResponse_arn,
+    deletePipeResponse_creationTime,
+    deletePipeResponse_currentState,
+    deletePipeResponse_desiredState,
+    deletePipeResponse_lastModifiedTime,
+    deletePipeResponse_name,
+    deletePipeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeletePipe' smart constructor.
+data DeletePipe = DeletePipe'
+  { -- | The name of the pipe.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeletePipe' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deletePipe_name' - The name of the pipe.
+newDeletePipe ::
+  -- | 'name'
+  Prelude.Text ->
+  DeletePipe
+newDeletePipe pName_ = DeletePipe' {name = pName_}
+
+-- | The name of the pipe.
+deletePipe_name :: Lens.Lens' DeletePipe Prelude.Text
+deletePipe_name = Lens.lens (\DeletePipe' {name} -> name) (\s@DeletePipe' {} a -> s {name = a} :: DeletePipe)
+
+instance Core.AWSRequest DeletePipe where
+  type AWSResponse DeletePipe = DeletePipeResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeletePipeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "CurrentState")
+            Prelude.<*> (x Data..?> "DesiredState")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeletePipe where
+  hashWithSalt _salt DeletePipe' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DeletePipe where
+  rnf DeletePipe' {..} = Prelude.rnf name
+
+instance Data.ToHeaders DeletePipe where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeletePipe where
+  toPath DeletePipe' {..} =
+    Prelude.mconcat ["/v1/pipes/", Data.toBS name]
+
+instance Data.ToQuery DeletePipe where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeletePipeResponse' smart constructor.
+data DeletePipeResponse = DeletePipeResponse'
+  { -- | The ARN of the pipe.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time the pipe was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The state the pipe is in.
+    currentState :: Prelude.Maybe PipeState,
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeStateDescribeResponse,
+    -- | When the pipe was last updated, in
+    -- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+    -- (YYYY-MM-DDThh:mm:ss.sTZD).
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the pipe.
+    name :: 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 'DeletePipeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deletePipeResponse_arn' - The ARN of the pipe.
+--
+-- 'creationTime', 'deletePipeResponse_creationTime' - The time the pipe was created.
+--
+-- 'currentState', 'deletePipeResponse_currentState' - The state the pipe is in.
+--
+-- 'desiredState', 'deletePipeResponse_desiredState' - The state the pipe should be in.
+--
+-- 'lastModifiedTime', 'deletePipeResponse_lastModifiedTime' - When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+--
+-- 'name', 'deletePipeResponse_name' - The name of the pipe.
+--
+-- 'httpStatus', 'deletePipeResponse_httpStatus' - The response's http status code.
+newDeletePipeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeletePipeResponse
+newDeletePipeResponse pHttpStatus_ =
+  DeletePipeResponse'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currentState = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the pipe.
+deletePipeResponse_arn :: Lens.Lens' DeletePipeResponse (Prelude.Maybe Prelude.Text)
+deletePipeResponse_arn = Lens.lens (\DeletePipeResponse' {arn} -> arn) (\s@DeletePipeResponse' {} a -> s {arn = a} :: DeletePipeResponse)
+
+-- | The time the pipe was created.
+deletePipeResponse_creationTime :: Lens.Lens' DeletePipeResponse (Prelude.Maybe Prelude.UTCTime)
+deletePipeResponse_creationTime = Lens.lens (\DeletePipeResponse' {creationTime} -> creationTime) (\s@DeletePipeResponse' {} a -> s {creationTime = a} :: DeletePipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The state the pipe is in.
+deletePipeResponse_currentState :: Lens.Lens' DeletePipeResponse (Prelude.Maybe PipeState)
+deletePipeResponse_currentState = Lens.lens (\DeletePipeResponse' {currentState} -> currentState) (\s@DeletePipeResponse' {} a -> s {currentState = a} :: DeletePipeResponse)
+
+-- | The state the pipe should be in.
+deletePipeResponse_desiredState :: Lens.Lens' DeletePipeResponse (Prelude.Maybe RequestedPipeStateDescribeResponse)
+deletePipeResponse_desiredState = Lens.lens (\DeletePipeResponse' {desiredState} -> desiredState) (\s@DeletePipeResponse' {} a -> s {desiredState = a} :: DeletePipeResponse)
+
+-- | When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+deletePipeResponse_lastModifiedTime :: Lens.Lens' DeletePipeResponse (Prelude.Maybe Prelude.UTCTime)
+deletePipeResponse_lastModifiedTime = Lens.lens (\DeletePipeResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DeletePipeResponse' {} a -> s {lastModifiedTime = a} :: DeletePipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the pipe.
+deletePipeResponse_name :: Lens.Lens' DeletePipeResponse (Prelude.Maybe Prelude.Text)
+deletePipeResponse_name = Lens.lens (\DeletePipeResponse' {name} -> name) (\s@DeletePipeResponse' {} a -> s {name = a} :: DeletePipeResponse)
+
+-- | The response's http status code.
+deletePipeResponse_httpStatus :: Lens.Lens' DeletePipeResponse Prelude.Int
+deletePipeResponse_httpStatus = Lens.lens (\DeletePipeResponse' {httpStatus} -> httpStatus) (\s@DeletePipeResponse' {} a -> s {httpStatus = a} :: DeletePipeResponse)
+
+instance Prelude.NFData DeletePipeResponse where
+  rnf DeletePipeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currentState
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Pipes/DescribePipe.hs b/gen/Amazonka/Pipes/DescribePipe.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/DescribePipe.hs
@@ -0,0 +1,343 @@
+{-# 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.Pipes.DescribePipe
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get the information about an existing pipe. For more information about
+-- pipes, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html Amazon EventBridge Pipes>
+-- in the Amazon EventBridge User Guide.
+module Amazonka.Pipes.DescribePipe
+  ( -- * Creating a Request
+    DescribePipe (..),
+    newDescribePipe,
+
+    -- * Request Lenses
+    describePipe_name,
+
+    -- * Destructuring the Response
+    DescribePipeResponse (..),
+    newDescribePipeResponse,
+
+    -- * Response Lenses
+    describePipeResponse_arn,
+    describePipeResponse_creationTime,
+    describePipeResponse_currentState,
+    describePipeResponse_description,
+    describePipeResponse_desiredState,
+    describePipeResponse_enrichment,
+    describePipeResponse_enrichmentParameters,
+    describePipeResponse_lastModifiedTime,
+    describePipeResponse_name,
+    describePipeResponse_roleArn,
+    describePipeResponse_source,
+    describePipeResponse_sourceParameters,
+    describePipeResponse_stateReason,
+    describePipeResponse_tags,
+    describePipeResponse_target,
+    describePipeResponse_targetParameters,
+    describePipeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribePipe' smart constructor.
+data DescribePipe = DescribePipe'
+  { -- | The name of the pipe.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePipe' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describePipe_name' - The name of the pipe.
+newDescribePipe ::
+  -- | 'name'
+  Prelude.Text ->
+  DescribePipe
+newDescribePipe pName_ = DescribePipe' {name = pName_}
+
+-- | The name of the pipe.
+describePipe_name :: Lens.Lens' DescribePipe Prelude.Text
+describePipe_name = Lens.lens (\DescribePipe' {name} -> name) (\s@DescribePipe' {} a -> s {name = a} :: DescribePipe)
+
+instance Core.AWSRequest DescribePipe where
+  type AWSResponse DescribePipe = DescribePipeResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribePipeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "CurrentState")
+            Prelude.<*> (x Data..?> "Description")
+            Prelude.<*> (x Data..?> "DesiredState")
+            Prelude.<*> (x Data..?> "Enrichment")
+            Prelude.<*> (x Data..?> "EnrichmentParameters")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (x Data..?> "RoleArn")
+            Prelude.<*> (x Data..?> "Source")
+            Prelude.<*> (x Data..?> "SourceParameters")
+            Prelude.<*> (x Data..?> "StateReason")
+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Target")
+            Prelude.<*> (x Data..?> "TargetParameters")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribePipe where
+  hashWithSalt _salt DescribePipe' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData DescribePipe where
+  rnf DescribePipe' {..} = Prelude.rnf name
+
+instance Data.ToHeaders DescribePipe where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribePipe where
+  toPath DescribePipe' {..} =
+    Prelude.mconcat ["/v1/pipes/", Data.toBS name]
+
+instance Data.ToQuery DescribePipe where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribePipeResponse' smart constructor.
+data DescribePipeResponse = DescribePipeResponse'
+  { -- | The ARN of the pipe.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time the pipe was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The state the pipe is in.
+    currentState :: Prelude.Maybe PipeState,
+    -- | A description of the pipe.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeStateDescribeResponse,
+    -- | The ARN of the enrichment resource.
+    enrichment :: Prelude.Maybe Prelude.Text,
+    -- | The parameters required to set up enrichment on your pipe.
+    enrichmentParameters :: Prelude.Maybe PipeEnrichmentParameters,
+    -- | When the pipe was last updated, in
+    -- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+    -- (YYYY-MM-DDThh:mm:ss.sTZD).
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the pipe.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the role that allows the pipe to send data to the target.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the source resource.
+    source :: Prelude.Maybe Prelude.Text,
+    -- | The parameters required to set up a source for your pipe.
+    sourceParameters :: Prelude.Maybe PipeSourceParameters,
+    -- | The reason the pipe is in its current state.
+    stateReason :: Prelude.Maybe Prelude.Text,
+    -- | The list of key-value pairs to associate with the pipe.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    -- | The ARN of the target resource.
+    target :: Prelude.Maybe Prelude.Text,
+    -- | The parameters required to set up a target for your pipe.
+    targetParameters :: Prelude.Maybe PipeTargetParameters,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribePipeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'describePipeResponse_arn' - The ARN of the pipe.
+--
+-- 'creationTime', 'describePipeResponse_creationTime' - The time the pipe was created.
+--
+-- 'currentState', 'describePipeResponse_currentState' - The state the pipe is in.
+--
+-- 'description', 'describePipeResponse_description' - A description of the pipe.
+--
+-- 'desiredState', 'describePipeResponse_desiredState' - The state the pipe should be in.
+--
+-- 'enrichment', 'describePipeResponse_enrichment' - The ARN of the enrichment resource.
+--
+-- 'enrichmentParameters', 'describePipeResponse_enrichmentParameters' - The parameters required to set up enrichment on your pipe.
+--
+-- 'lastModifiedTime', 'describePipeResponse_lastModifiedTime' - When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+--
+-- 'name', 'describePipeResponse_name' - The name of the pipe.
+--
+-- 'roleArn', 'describePipeResponse_roleArn' - The ARN of the role that allows the pipe to send data to the target.
+--
+-- 'source', 'describePipeResponse_source' - The ARN of the source resource.
+--
+-- 'sourceParameters', 'describePipeResponse_sourceParameters' - The parameters required to set up a source for your pipe.
+--
+-- 'stateReason', 'describePipeResponse_stateReason' - The reason the pipe is in its current state.
+--
+-- 'tags', 'describePipeResponse_tags' - The list of key-value pairs to associate with the pipe.
+--
+-- 'target', 'describePipeResponse_target' - The ARN of the target resource.
+--
+-- 'targetParameters', 'describePipeResponse_targetParameters' - The parameters required to set up a target for your pipe.
+--
+-- 'httpStatus', 'describePipeResponse_httpStatus' - The response's http status code.
+newDescribePipeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribePipeResponse
+newDescribePipeResponse pHttpStatus_ =
+  DescribePipeResponse'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currentState = Prelude.Nothing,
+      description = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      enrichment = Prelude.Nothing,
+      enrichmentParameters = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      roleArn = Prelude.Nothing,
+      source = Prelude.Nothing,
+      sourceParameters = Prelude.Nothing,
+      stateReason = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      target = Prelude.Nothing,
+      targetParameters = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the pipe.
+describePipeResponse_arn :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.Text)
+describePipeResponse_arn = Lens.lens (\DescribePipeResponse' {arn} -> arn) (\s@DescribePipeResponse' {} a -> s {arn = a} :: DescribePipeResponse)
+
+-- | The time the pipe was created.
+describePipeResponse_creationTime :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.UTCTime)
+describePipeResponse_creationTime = Lens.lens (\DescribePipeResponse' {creationTime} -> creationTime) (\s@DescribePipeResponse' {} a -> s {creationTime = a} :: DescribePipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The state the pipe is in.
+describePipeResponse_currentState :: Lens.Lens' DescribePipeResponse (Prelude.Maybe PipeState)
+describePipeResponse_currentState = Lens.lens (\DescribePipeResponse' {currentState} -> currentState) (\s@DescribePipeResponse' {} a -> s {currentState = a} :: DescribePipeResponse)
+
+-- | A description of the pipe.
+describePipeResponse_description :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.Text)
+describePipeResponse_description = Lens.lens (\DescribePipeResponse' {description} -> description) (\s@DescribePipeResponse' {} a -> s {description = a} :: DescribePipeResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The state the pipe should be in.
+describePipeResponse_desiredState :: Lens.Lens' DescribePipeResponse (Prelude.Maybe RequestedPipeStateDescribeResponse)
+describePipeResponse_desiredState = Lens.lens (\DescribePipeResponse' {desiredState} -> desiredState) (\s@DescribePipeResponse' {} a -> s {desiredState = a} :: DescribePipeResponse)
+
+-- | The ARN of the enrichment resource.
+describePipeResponse_enrichment :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.Text)
+describePipeResponse_enrichment = Lens.lens (\DescribePipeResponse' {enrichment} -> enrichment) (\s@DescribePipeResponse' {} a -> s {enrichment = a} :: DescribePipeResponse)
+
+-- | The parameters required to set up enrichment on your pipe.
+describePipeResponse_enrichmentParameters :: Lens.Lens' DescribePipeResponse (Prelude.Maybe PipeEnrichmentParameters)
+describePipeResponse_enrichmentParameters = Lens.lens (\DescribePipeResponse' {enrichmentParameters} -> enrichmentParameters) (\s@DescribePipeResponse' {} a -> s {enrichmentParameters = a} :: DescribePipeResponse)
+
+-- | When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+describePipeResponse_lastModifiedTime :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.UTCTime)
+describePipeResponse_lastModifiedTime = Lens.lens (\DescribePipeResponse' {lastModifiedTime} -> lastModifiedTime) (\s@DescribePipeResponse' {} a -> s {lastModifiedTime = a} :: DescribePipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the pipe.
+describePipeResponse_name :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.Text)
+describePipeResponse_name = Lens.lens (\DescribePipeResponse' {name} -> name) (\s@DescribePipeResponse' {} a -> s {name = a} :: DescribePipeResponse)
+
+-- | The ARN of the role that allows the pipe to send data to the target.
+describePipeResponse_roleArn :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.Text)
+describePipeResponse_roleArn = Lens.lens (\DescribePipeResponse' {roleArn} -> roleArn) (\s@DescribePipeResponse' {} a -> s {roleArn = a} :: DescribePipeResponse)
+
+-- | The ARN of the source resource.
+describePipeResponse_source :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.Text)
+describePipeResponse_source = Lens.lens (\DescribePipeResponse' {source} -> source) (\s@DescribePipeResponse' {} a -> s {source = a} :: DescribePipeResponse)
+
+-- | The parameters required to set up a source for your pipe.
+describePipeResponse_sourceParameters :: Lens.Lens' DescribePipeResponse (Prelude.Maybe PipeSourceParameters)
+describePipeResponse_sourceParameters = Lens.lens (\DescribePipeResponse' {sourceParameters} -> sourceParameters) (\s@DescribePipeResponse' {} a -> s {sourceParameters = a} :: DescribePipeResponse)
+
+-- | The reason the pipe is in its current state.
+describePipeResponse_stateReason :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.Text)
+describePipeResponse_stateReason = Lens.lens (\DescribePipeResponse' {stateReason} -> stateReason) (\s@DescribePipeResponse' {} a -> s {stateReason = a} :: DescribePipeResponse)
+
+-- | The list of key-value pairs to associate with the pipe.
+describePipeResponse_tags :: Lens.Lens' DescribePipeResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describePipeResponse_tags = Lens.lens (\DescribePipeResponse' {tags} -> tags) (\s@DescribePipeResponse' {} a -> s {tags = a} :: DescribePipeResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the target resource.
+describePipeResponse_target :: Lens.Lens' DescribePipeResponse (Prelude.Maybe Prelude.Text)
+describePipeResponse_target = Lens.lens (\DescribePipeResponse' {target} -> target) (\s@DescribePipeResponse' {} a -> s {target = a} :: DescribePipeResponse)
+
+-- | The parameters required to set up a target for your pipe.
+describePipeResponse_targetParameters :: Lens.Lens' DescribePipeResponse (Prelude.Maybe PipeTargetParameters)
+describePipeResponse_targetParameters = Lens.lens (\DescribePipeResponse' {targetParameters} -> targetParameters) (\s@DescribePipeResponse' {} a -> s {targetParameters = a} :: DescribePipeResponse)
+
+-- | The response's http status code.
+describePipeResponse_httpStatus :: Lens.Lens' DescribePipeResponse Prelude.Int
+describePipeResponse_httpStatus = Lens.lens (\DescribePipeResponse' {httpStatus} -> httpStatus) (\s@DescribePipeResponse' {} a -> s {httpStatus = a} :: DescribePipeResponse)
+
+instance Prelude.NFData DescribePipeResponse where
+  rnf DescribePipeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currentState
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf enrichment
+      `Prelude.seq` Prelude.rnf enrichmentParameters
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf sourceParameters
+      `Prelude.seq` Prelude.rnf stateReason
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf target
+      `Prelude.seq` Prelude.rnf targetParameters
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Pipes/Lens.hs b/gen/Amazonka/Pipes/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Lens.hs
@@ -0,0 +1,542 @@
+{-# 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.Pipes.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.Pipes.Lens
+  ( -- * Operations
+
+    -- ** CreatePipe
+    createPipe_description,
+    createPipe_desiredState,
+    createPipe_enrichment,
+    createPipe_enrichmentParameters,
+    createPipe_sourceParameters,
+    createPipe_tags,
+    createPipe_targetParameters,
+    createPipe_name,
+    createPipe_roleArn,
+    createPipe_source,
+    createPipe_target,
+    createPipeResponse_arn,
+    createPipeResponse_creationTime,
+    createPipeResponse_currentState,
+    createPipeResponse_desiredState,
+    createPipeResponse_lastModifiedTime,
+    createPipeResponse_name,
+    createPipeResponse_httpStatus,
+
+    -- ** DeletePipe
+    deletePipe_name,
+    deletePipeResponse_arn,
+    deletePipeResponse_creationTime,
+    deletePipeResponse_currentState,
+    deletePipeResponse_desiredState,
+    deletePipeResponse_lastModifiedTime,
+    deletePipeResponse_name,
+    deletePipeResponse_httpStatus,
+
+    -- ** DescribePipe
+    describePipe_name,
+    describePipeResponse_arn,
+    describePipeResponse_creationTime,
+    describePipeResponse_currentState,
+    describePipeResponse_description,
+    describePipeResponse_desiredState,
+    describePipeResponse_enrichment,
+    describePipeResponse_enrichmentParameters,
+    describePipeResponse_lastModifiedTime,
+    describePipeResponse_name,
+    describePipeResponse_roleArn,
+    describePipeResponse_source,
+    describePipeResponse_sourceParameters,
+    describePipeResponse_stateReason,
+    describePipeResponse_tags,
+    describePipeResponse_target,
+    describePipeResponse_targetParameters,
+    describePipeResponse_httpStatus,
+
+    -- ** ListPipes
+    listPipes_currentState,
+    listPipes_desiredState,
+    listPipes_limit,
+    listPipes_namePrefix,
+    listPipes_nextToken,
+    listPipes_sourcePrefix,
+    listPipes_targetPrefix,
+    listPipesResponse_nextToken,
+    listPipesResponse_pipes,
+    listPipesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** StartPipe
+    startPipe_name,
+    startPipeResponse_arn,
+    startPipeResponse_creationTime,
+    startPipeResponse_currentState,
+    startPipeResponse_desiredState,
+    startPipeResponse_lastModifiedTime,
+    startPipeResponse_name,
+    startPipeResponse_httpStatus,
+
+    -- ** StopPipe
+    stopPipe_name,
+    stopPipeResponse_arn,
+    stopPipeResponse_creationTime,
+    stopPipeResponse_currentState,
+    stopPipeResponse_desiredState,
+    stopPipeResponse_lastModifiedTime,
+    stopPipeResponse_name,
+    stopPipeResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- ** UpdatePipe
+    updatePipe_description,
+    updatePipe_desiredState,
+    updatePipe_enrichment,
+    updatePipe_enrichmentParameters,
+    updatePipe_sourceParameters,
+    updatePipe_target,
+    updatePipe_targetParameters,
+    updatePipe_name,
+    updatePipe_roleArn,
+    updatePipeResponse_arn,
+    updatePipeResponse_creationTime,
+    updatePipeResponse_currentState,
+    updatePipeResponse_desiredState,
+    updatePipeResponse_lastModifiedTime,
+    updatePipeResponse_name,
+    updatePipeResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AwsVpcConfiguration
+    awsVpcConfiguration_assignPublicIp,
+    awsVpcConfiguration_securityGroups,
+    awsVpcConfiguration_subnets,
+
+    -- ** BatchArrayProperties
+    batchArrayProperties_size,
+
+    -- ** BatchContainerOverrides
+    batchContainerOverrides_command,
+    batchContainerOverrides_environment,
+    batchContainerOverrides_instanceType,
+    batchContainerOverrides_resourceRequirements,
+
+    -- ** BatchEnvironmentVariable
+    batchEnvironmentVariable_name,
+    batchEnvironmentVariable_value,
+
+    -- ** BatchJobDependency
+    batchJobDependency_jobId,
+    batchJobDependency_type,
+
+    -- ** BatchResourceRequirement
+    batchResourceRequirement_type,
+    batchResourceRequirement_value,
+
+    -- ** BatchRetryStrategy
+    batchRetryStrategy_attempts,
+
+    -- ** CapacityProviderStrategyItem
+    capacityProviderStrategyItem_base,
+    capacityProviderStrategyItem_weight,
+    capacityProviderStrategyItem_capacityProvider,
+
+    -- ** DeadLetterConfig
+    deadLetterConfig_arn,
+
+    -- ** EcsContainerOverride
+    ecsContainerOverride_command,
+    ecsContainerOverride_cpu,
+    ecsContainerOverride_environment,
+    ecsContainerOverride_environmentFiles,
+    ecsContainerOverride_memory,
+    ecsContainerOverride_memoryReservation,
+    ecsContainerOverride_name,
+    ecsContainerOverride_resourceRequirements,
+
+    -- ** EcsEnvironmentFile
+    ecsEnvironmentFile_type,
+    ecsEnvironmentFile_value,
+
+    -- ** EcsEnvironmentVariable
+    ecsEnvironmentVariable_name,
+    ecsEnvironmentVariable_value,
+
+    -- ** EcsEphemeralStorage
+    ecsEphemeralStorage_sizeInGiB,
+
+    -- ** EcsInferenceAcceleratorOverride
+    ecsInferenceAcceleratorOverride_deviceName,
+    ecsInferenceAcceleratorOverride_deviceType,
+
+    -- ** EcsResourceRequirement
+    ecsResourceRequirement_type,
+    ecsResourceRequirement_value,
+
+    -- ** EcsTaskOverride
+    ecsTaskOverride_containerOverrides,
+    ecsTaskOverride_cpu,
+    ecsTaskOverride_ephemeralStorage,
+    ecsTaskOverride_executionRoleArn,
+    ecsTaskOverride_inferenceAcceleratorOverrides,
+    ecsTaskOverride_memory,
+    ecsTaskOverride_taskRoleArn,
+
+    -- ** Filter
+    filter_pattern,
+
+    -- ** FilterCriteria
+    filterCriteria_filters,
+
+    -- ** MQBrokerAccessCredentials
+    mQBrokerAccessCredentials_basicAuth,
+
+    -- ** MSKAccessCredentials
+    mSKAccessCredentials_clientCertificateTlsAuth,
+    mSKAccessCredentials_saslScram512Auth,
+
+    -- ** NetworkConfiguration
+    networkConfiguration_awsvpcConfiguration,
+
+    -- ** Pipe
+    pipe_arn,
+    pipe_creationTime,
+    pipe_currentState,
+    pipe_desiredState,
+    pipe_enrichment,
+    pipe_lastModifiedTime,
+    pipe_name,
+    pipe_source,
+    pipe_stateReason,
+    pipe_target,
+
+    -- ** PipeEnrichmentHttpParameters
+    pipeEnrichmentHttpParameters_headerParameters,
+    pipeEnrichmentHttpParameters_pathParameterValues,
+    pipeEnrichmentHttpParameters_queryStringParameters,
+
+    -- ** PipeEnrichmentParameters
+    pipeEnrichmentParameters_httpParameters,
+    pipeEnrichmentParameters_inputTemplate,
+
+    -- ** PipeSourceActiveMQBrokerParameters
+    pipeSourceActiveMQBrokerParameters_batchSize,
+    pipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds,
+    pipeSourceActiveMQBrokerParameters_credentials,
+    pipeSourceActiveMQBrokerParameters_queueName,
+
+    -- ** PipeSourceDynamoDBStreamParameters
+    pipeSourceDynamoDBStreamParameters_batchSize,
+    pipeSourceDynamoDBStreamParameters_deadLetterConfig,
+    pipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds,
+    pipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds,
+    pipeSourceDynamoDBStreamParameters_maximumRetryAttempts,
+    pipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure,
+    pipeSourceDynamoDBStreamParameters_parallelizationFactor,
+    pipeSourceDynamoDBStreamParameters_startingPosition,
+
+    -- ** PipeSourceKinesisStreamParameters
+    pipeSourceKinesisStreamParameters_batchSize,
+    pipeSourceKinesisStreamParameters_deadLetterConfig,
+    pipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds,
+    pipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds,
+    pipeSourceKinesisStreamParameters_maximumRetryAttempts,
+    pipeSourceKinesisStreamParameters_onPartialBatchItemFailure,
+    pipeSourceKinesisStreamParameters_parallelizationFactor,
+    pipeSourceKinesisStreamParameters_startingPositionTimestamp,
+    pipeSourceKinesisStreamParameters_startingPosition,
+
+    -- ** PipeSourceManagedStreamingKafkaParameters
+    pipeSourceManagedStreamingKafkaParameters_batchSize,
+    pipeSourceManagedStreamingKafkaParameters_consumerGroupID,
+    pipeSourceManagedStreamingKafkaParameters_credentials,
+    pipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds,
+    pipeSourceManagedStreamingKafkaParameters_startingPosition,
+    pipeSourceManagedStreamingKafkaParameters_topicName,
+
+    -- ** PipeSourceParameters
+    pipeSourceParameters_activeMQBrokerParameters,
+    pipeSourceParameters_dynamoDBStreamParameters,
+    pipeSourceParameters_filterCriteria,
+    pipeSourceParameters_kinesisStreamParameters,
+    pipeSourceParameters_managedStreamingKafkaParameters,
+    pipeSourceParameters_rabbitMQBrokerParameters,
+    pipeSourceParameters_selfManagedKafkaParameters,
+    pipeSourceParameters_sqsQueueParameters,
+
+    -- ** PipeSourceRabbitMQBrokerParameters
+    pipeSourceRabbitMQBrokerParameters_batchSize,
+    pipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds,
+    pipeSourceRabbitMQBrokerParameters_virtualHost,
+    pipeSourceRabbitMQBrokerParameters_credentials,
+    pipeSourceRabbitMQBrokerParameters_queueName,
+
+    -- ** PipeSourceSelfManagedKafkaParameters
+    pipeSourceSelfManagedKafkaParameters_additionalBootstrapServers,
+    pipeSourceSelfManagedKafkaParameters_batchSize,
+    pipeSourceSelfManagedKafkaParameters_consumerGroupID,
+    pipeSourceSelfManagedKafkaParameters_credentials,
+    pipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds,
+    pipeSourceSelfManagedKafkaParameters_serverRootCaCertificate,
+    pipeSourceSelfManagedKafkaParameters_startingPosition,
+    pipeSourceSelfManagedKafkaParameters_vpc,
+    pipeSourceSelfManagedKafkaParameters_topicName,
+
+    -- ** PipeSourceSqsQueueParameters
+    pipeSourceSqsQueueParameters_batchSize,
+    pipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds,
+
+    -- ** PipeTargetBatchJobParameters
+    pipeTargetBatchJobParameters_arrayProperties,
+    pipeTargetBatchJobParameters_containerOverrides,
+    pipeTargetBatchJobParameters_dependsOn,
+    pipeTargetBatchJobParameters_parameters,
+    pipeTargetBatchJobParameters_retryStrategy,
+    pipeTargetBatchJobParameters_jobDefinition,
+    pipeTargetBatchJobParameters_jobName,
+
+    -- ** PipeTargetCloudWatchLogsParameters
+    pipeTargetCloudWatchLogsParameters_logStreamName,
+    pipeTargetCloudWatchLogsParameters_timestamp,
+
+    -- ** PipeTargetEcsTaskParameters
+    pipeTargetEcsTaskParameters_capacityProviderStrategy,
+    pipeTargetEcsTaskParameters_enableECSManagedTags,
+    pipeTargetEcsTaskParameters_enableExecuteCommand,
+    pipeTargetEcsTaskParameters_group,
+    pipeTargetEcsTaskParameters_launchType,
+    pipeTargetEcsTaskParameters_networkConfiguration,
+    pipeTargetEcsTaskParameters_overrides,
+    pipeTargetEcsTaskParameters_placementConstraints,
+    pipeTargetEcsTaskParameters_placementStrategy,
+    pipeTargetEcsTaskParameters_platformVersion,
+    pipeTargetEcsTaskParameters_propagateTags,
+    pipeTargetEcsTaskParameters_referenceId,
+    pipeTargetEcsTaskParameters_tags,
+    pipeTargetEcsTaskParameters_taskCount,
+    pipeTargetEcsTaskParameters_taskDefinitionArn,
+
+    -- ** PipeTargetEventBridgeEventBusParameters
+    pipeTargetEventBridgeEventBusParameters_detailType,
+    pipeTargetEventBridgeEventBusParameters_endpointId,
+    pipeTargetEventBridgeEventBusParameters_resources,
+    pipeTargetEventBridgeEventBusParameters_source,
+    pipeTargetEventBridgeEventBusParameters_time,
+
+    -- ** PipeTargetHttpParameters
+    pipeTargetHttpParameters_headerParameters,
+    pipeTargetHttpParameters_pathParameterValues,
+    pipeTargetHttpParameters_queryStringParameters,
+
+    -- ** PipeTargetKinesisStreamParameters
+    pipeTargetKinesisStreamParameters_partitionKey,
+
+    -- ** PipeTargetLambdaFunctionParameters
+    pipeTargetLambdaFunctionParameters_invocationType,
+
+    -- ** PipeTargetParameters
+    pipeTargetParameters_batchJobParameters,
+    pipeTargetParameters_cloudWatchLogsParameters,
+    pipeTargetParameters_ecsTaskParameters,
+    pipeTargetParameters_eventBridgeEventBusParameters,
+    pipeTargetParameters_httpParameters,
+    pipeTargetParameters_inputTemplate,
+    pipeTargetParameters_kinesisStreamParameters,
+    pipeTargetParameters_lambdaFunctionParameters,
+    pipeTargetParameters_redshiftDataParameters,
+    pipeTargetParameters_sageMakerPipelineParameters,
+    pipeTargetParameters_sqsQueueParameters,
+    pipeTargetParameters_stepFunctionStateMachineParameters,
+
+    -- ** PipeTargetRedshiftDataParameters
+    pipeTargetRedshiftDataParameters_dbUser,
+    pipeTargetRedshiftDataParameters_secretManagerArn,
+    pipeTargetRedshiftDataParameters_statementName,
+    pipeTargetRedshiftDataParameters_withEvent,
+    pipeTargetRedshiftDataParameters_database,
+    pipeTargetRedshiftDataParameters_sqls,
+
+    -- ** PipeTargetSageMakerPipelineParameters
+    pipeTargetSageMakerPipelineParameters_pipelineParameterList,
+
+    -- ** PipeTargetSqsQueueParameters
+    pipeTargetSqsQueueParameters_messageDeduplicationId,
+    pipeTargetSqsQueueParameters_messageGroupId,
+
+    -- ** PipeTargetStateMachineParameters
+    pipeTargetStateMachineParameters_invocationType,
+
+    -- ** PlacementConstraint
+    placementConstraint_expression,
+    placementConstraint_type,
+
+    -- ** PlacementStrategy
+    placementStrategy_field,
+    placementStrategy_type,
+
+    -- ** SageMakerPipelineParameter
+    sageMakerPipelineParameter_name,
+    sageMakerPipelineParameter_value,
+
+    -- ** SelfManagedKafkaAccessConfigurationCredentials
+    selfManagedKafkaAccessConfigurationCredentials_basicAuth,
+    selfManagedKafkaAccessConfigurationCredentials_clientCertificateTlsAuth,
+    selfManagedKafkaAccessConfigurationCredentials_saslScram256Auth,
+    selfManagedKafkaAccessConfigurationCredentials_saslScram512Auth,
+
+    -- ** SelfManagedKafkaAccessConfigurationVpc
+    selfManagedKafkaAccessConfigurationVpc_securityGroup,
+    selfManagedKafkaAccessConfigurationVpc_subnets,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** UpdatePipeSourceActiveMQBrokerParameters
+    updatePipeSourceActiveMQBrokerParameters_batchSize,
+    updatePipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceActiveMQBrokerParameters_credentials,
+
+    -- ** UpdatePipeSourceDynamoDBStreamParameters
+    updatePipeSourceDynamoDBStreamParameters_batchSize,
+    updatePipeSourceDynamoDBStreamParameters_deadLetterConfig,
+    updatePipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds,
+    updatePipeSourceDynamoDBStreamParameters_maximumRetryAttempts,
+    updatePipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure,
+    updatePipeSourceDynamoDBStreamParameters_parallelizationFactor,
+
+    -- ** UpdatePipeSourceKinesisStreamParameters
+    updatePipeSourceKinesisStreamParameters_batchSize,
+    updatePipeSourceKinesisStreamParameters_deadLetterConfig,
+    updatePipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds,
+    updatePipeSourceKinesisStreamParameters_maximumRetryAttempts,
+    updatePipeSourceKinesisStreamParameters_onPartialBatchItemFailure,
+    updatePipeSourceKinesisStreamParameters_parallelizationFactor,
+
+    -- ** UpdatePipeSourceManagedStreamingKafkaParameters
+    updatePipeSourceManagedStreamingKafkaParameters_batchSize,
+    updatePipeSourceManagedStreamingKafkaParameters_credentials,
+    updatePipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds,
+
+    -- ** UpdatePipeSourceParameters
+    updatePipeSourceParameters_activeMQBrokerParameters,
+    updatePipeSourceParameters_dynamoDBStreamParameters,
+    updatePipeSourceParameters_filterCriteria,
+    updatePipeSourceParameters_kinesisStreamParameters,
+    updatePipeSourceParameters_managedStreamingKafkaParameters,
+    updatePipeSourceParameters_rabbitMQBrokerParameters,
+    updatePipeSourceParameters_selfManagedKafkaParameters,
+    updatePipeSourceParameters_sqsQueueParameters,
+
+    -- ** UpdatePipeSourceRabbitMQBrokerParameters
+    updatePipeSourceRabbitMQBrokerParameters_batchSize,
+    updatePipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceRabbitMQBrokerParameters_credentials,
+
+    -- ** UpdatePipeSourceSelfManagedKafkaParameters
+    updatePipeSourceSelfManagedKafkaParameters_batchSize,
+    updatePipeSourceSelfManagedKafkaParameters_credentials,
+    updatePipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceSelfManagedKafkaParameters_serverRootCaCertificate,
+    updatePipeSourceSelfManagedKafkaParameters_vpc,
+
+    -- ** UpdatePipeSourceSqsQueueParameters
+    updatePipeSourceSqsQueueParameters_batchSize,
+    updatePipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds,
+  )
+where
+
+import Amazonka.Pipes.CreatePipe
+import Amazonka.Pipes.DeletePipe
+import Amazonka.Pipes.DescribePipe
+import Amazonka.Pipes.ListPipes
+import Amazonka.Pipes.ListTagsForResource
+import Amazonka.Pipes.StartPipe
+import Amazonka.Pipes.StopPipe
+import Amazonka.Pipes.TagResource
+import Amazonka.Pipes.Types.AwsVpcConfiguration
+import Amazonka.Pipes.Types.BatchArrayProperties
+import Amazonka.Pipes.Types.BatchContainerOverrides
+import Amazonka.Pipes.Types.BatchEnvironmentVariable
+import Amazonka.Pipes.Types.BatchJobDependency
+import Amazonka.Pipes.Types.BatchResourceRequirement
+import Amazonka.Pipes.Types.BatchRetryStrategy
+import Amazonka.Pipes.Types.CapacityProviderStrategyItem
+import Amazonka.Pipes.Types.DeadLetterConfig
+import Amazonka.Pipes.Types.EcsContainerOverride
+import Amazonka.Pipes.Types.EcsEnvironmentFile
+import Amazonka.Pipes.Types.EcsEnvironmentVariable
+import Amazonka.Pipes.Types.EcsEphemeralStorage
+import Amazonka.Pipes.Types.EcsInferenceAcceleratorOverride
+import Amazonka.Pipes.Types.EcsResourceRequirement
+import Amazonka.Pipes.Types.EcsTaskOverride
+import Amazonka.Pipes.Types.Filter
+import Amazonka.Pipes.Types.FilterCriteria
+import Amazonka.Pipes.Types.MQBrokerAccessCredentials
+import Amazonka.Pipes.Types.MSKAccessCredentials
+import Amazonka.Pipes.Types.NetworkConfiguration
+import Amazonka.Pipes.Types.Pipe
+import Amazonka.Pipes.Types.PipeEnrichmentHttpParameters
+import Amazonka.Pipes.Types.PipeEnrichmentParameters
+import Amazonka.Pipes.Types.PipeSourceActiveMQBrokerParameters
+import Amazonka.Pipes.Types.PipeSourceDynamoDBStreamParameters
+import Amazonka.Pipes.Types.PipeSourceKinesisStreamParameters
+import Amazonka.Pipes.Types.PipeSourceManagedStreamingKafkaParameters
+import Amazonka.Pipes.Types.PipeSourceParameters
+import Amazonka.Pipes.Types.PipeSourceRabbitMQBrokerParameters
+import Amazonka.Pipes.Types.PipeSourceSelfManagedKafkaParameters
+import Amazonka.Pipes.Types.PipeSourceSqsQueueParameters
+import Amazonka.Pipes.Types.PipeTargetBatchJobParameters
+import Amazonka.Pipes.Types.PipeTargetCloudWatchLogsParameters
+import Amazonka.Pipes.Types.PipeTargetEcsTaskParameters
+import Amazonka.Pipes.Types.PipeTargetEventBridgeEventBusParameters
+import Amazonka.Pipes.Types.PipeTargetHttpParameters
+import Amazonka.Pipes.Types.PipeTargetKinesisStreamParameters
+import Amazonka.Pipes.Types.PipeTargetLambdaFunctionParameters
+import Amazonka.Pipes.Types.PipeTargetParameters
+import Amazonka.Pipes.Types.PipeTargetRedshiftDataParameters
+import Amazonka.Pipes.Types.PipeTargetSageMakerPipelineParameters
+import Amazonka.Pipes.Types.PipeTargetSqsQueueParameters
+import Amazonka.Pipes.Types.PipeTargetStateMachineParameters
+import Amazonka.Pipes.Types.PlacementConstraint
+import Amazonka.Pipes.Types.PlacementStrategy
+import Amazonka.Pipes.Types.SageMakerPipelineParameter
+import Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationCredentials
+import Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationVpc
+import Amazonka.Pipes.Types.Tag
+import Amazonka.Pipes.Types.UpdatePipeSourceActiveMQBrokerParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceDynamoDBStreamParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceKinesisStreamParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceManagedStreamingKafkaParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceRabbitMQBrokerParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceSelfManagedKafkaParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceSqsQueueParameters
+import Amazonka.Pipes.UntagResource
+import Amazonka.Pipes.UpdatePipe
diff --git a/gen/Amazonka/Pipes/ListPipes.hs b/gen/Amazonka/Pipes/ListPipes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/ListPipes.hs
@@ -0,0 +1,306 @@
+{-# 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.Pipes.ListPipes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get the pipes associated with this account. For more information about
+-- pipes, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html Amazon EventBridge Pipes>
+-- in the Amazon EventBridge User Guide.
+--
+-- This operation returns paginated results.
+module Amazonka.Pipes.ListPipes
+  ( -- * Creating a Request
+    ListPipes (..),
+    newListPipes,
+
+    -- * Request Lenses
+    listPipes_currentState,
+    listPipes_desiredState,
+    listPipes_limit,
+    listPipes_namePrefix,
+    listPipes_nextToken,
+    listPipes_sourcePrefix,
+    listPipes_targetPrefix,
+
+    -- * Destructuring the Response
+    ListPipesResponse (..),
+    newListPipesResponse,
+
+    -- * Response Lenses
+    listPipesResponse_nextToken,
+    listPipesResponse_pipes,
+    listPipesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListPipes' smart constructor.
+data ListPipes = ListPipes'
+  { -- | The state the pipe is in.
+    currentState :: Prelude.Maybe PipeState,
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeState,
+    -- | The maximum number of pipes to include in the response.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | A value that will return a subset of the pipes associated with this
+    -- account. For example, @\"NamePrefix\": \"ABC\"@ will return all
+    -- endpoints with \"ABC\" in the name.
+    namePrefix :: Prelude.Maybe Prelude.Text,
+    -- | 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. Each pagination token expires after 24 hours. Using
+    -- an expired pagination token will return an HTTP 400 InvalidToken error.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The prefix matching the pipe source.
+    sourcePrefix :: Prelude.Maybe Prelude.Text,
+    -- | The prefix matching the pipe target.
+    targetPrefix :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'currentState', 'listPipes_currentState' - The state the pipe is in.
+--
+-- 'desiredState', 'listPipes_desiredState' - The state the pipe should be in.
+--
+-- 'limit', 'listPipes_limit' - The maximum number of pipes to include in the response.
+--
+-- 'namePrefix', 'listPipes_namePrefix' - A value that will return a subset of the pipes associated with this
+-- account. For example, @\"NamePrefix\": \"ABC\"@ will return all
+-- endpoints with \"ABC\" in the name.
+--
+-- 'nextToken', 'listPipes_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. Each pagination token expires after 24 hours. Using
+-- an expired pagination token will return an HTTP 400 InvalidToken error.
+--
+-- 'sourcePrefix', 'listPipes_sourcePrefix' - The prefix matching the pipe source.
+--
+-- 'targetPrefix', 'listPipes_targetPrefix' - The prefix matching the pipe target.
+newListPipes ::
+  ListPipes
+newListPipes =
+  ListPipes'
+    { currentState = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      limit = Prelude.Nothing,
+      namePrefix = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      sourcePrefix = Prelude.Nothing,
+      targetPrefix = Prelude.Nothing
+    }
+
+-- | The state the pipe is in.
+listPipes_currentState :: Lens.Lens' ListPipes (Prelude.Maybe PipeState)
+listPipes_currentState = Lens.lens (\ListPipes' {currentState} -> currentState) (\s@ListPipes' {} a -> s {currentState = a} :: ListPipes)
+
+-- | The state the pipe should be in.
+listPipes_desiredState :: Lens.Lens' ListPipes (Prelude.Maybe RequestedPipeState)
+listPipes_desiredState = Lens.lens (\ListPipes' {desiredState} -> desiredState) (\s@ListPipes' {} a -> s {desiredState = a} :: ListPipes)
+
+-- | The maximum number of pipes to include in the response.
+listPipes_limit :: Lens.Lens' ListPipes (Prelude.Maybe Prelude.Natural)
+listPipes_limit = Lens.lens (\ListPipes' {limit} -> limit) (\s@ListPipes' {} a -> s {limit = a} :: ListPipes)
+
+-- | A value that will return a subset of the pipes associated with this
+-- account. For example, @\"NamePrefix\": \"ABC\"@ will return all
+-- endpoints with \"ABC\" in the name.
+listPipes_namePrefix :: Lens.Lens' ListPipes (Prelude.Maybe Prelude.Text)
+listPipes_namePrefix = Lens.lens (\ListPipes' {namePrefix} -> namePrefix) (\s@ListPipes' {} a -> s {namePrefix = a} :: ListPipes)
+
+-- | 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. Each pagination token expires after 24 hours. Using
+-- an expired pagination token will return an HTTP 400 InvalidToken error.
+listPipes_nextToken :: Lens.Lens' ListPipes (Prelude.Maybe Prelude.Text)
+listPipes_nextToken = Lens.lens (\ListPipes' {nextToken} -> nextToken) (\s@ListPipes' {} a -> s {nextToken = a} :: ListPipes) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The prefix matching the pipe source.
+listPipes_sourcePrefix :: Lens.Lens' ListPipes (Prelude.Maybe Prelude.Text)
+listPipes_sourcePrefix = Lens.lens (\ListPipes' {sourcePrefix} -> sourcePrefix) (\s@ListPipes' {} a -> s {sourcePrefix = a} :: ListPipes)
+
+-- | The prefix matching the pipe target.
+listPipes_targetPrefix :: Lens.Lens' ListPipes (Prelude.Maybe Prelude.Text)
+listPipes_targetPrefix = Lens.lens (\ListPipes' {targetPrefix} -> targetPrefix) (\s@ListPipes' {} a -> s {targetPrefix = a} :: ListPipes)
+
+instance Core.AWSPager ListPipes where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listPipesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listPipesResponse_pipes
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listPipes_nextToken
+          Lens..~ rs
+          Lens.^? listPipesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListPipes where
+  type AWSResponse ListPipes = ListPipesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListPipesResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Pipes" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListPipes where
+  hashWithSalt _salt ListPipes' {..} =
+    _salt
+      `Prelude.hashWithSalt` currentState
+      `Prelude.hashWithSalt` desiredState
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` namePrefix
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` sourcePrefix
+      `Prelude.hashWithSalt` targetPrefix
+
+instance Prelude.NFData ListPipes where
+  rnf ListPipes' {..} =
+    Prelude.rnf currentState
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf namePrefix
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf sourcePrefix
+      `Prelude.seq` Prelude.rnf targetPrefix
+
+instance Data.ToHeaders ListPipes where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListPipes where
+  toPath = Prelude.const "/v1/pipes"
+
+instance Data.ToQuery ListPipes where
+  toQuery ListPipes' {..} =
+    Prelude.mconcat
+      [ "CurrentState" Data.=: currentState,
+        "DesiredState" Data.=: desiredState,
+        "Limit" Data.=: limit,
+        "NamePrefix" Data.=: namePrefix,
+        "NextToken" Data.=: nextToken,
+        "SourcePrefix" Data.=: sourcePrefix,
+        "TargetPrefix" Data.=: targetPrefix
+      ]
+
+-- | /See:/ 'newListPipesResponse' smart constructor.
+data ListPipesResponse = ListPipesResponse'
+  { -- | 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. Each pagination token expires after 24 hours. Using
+    -- an expired pagination token will return an HTTP 400 InvalidToken error.
+    nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The pipes returned by the call.
+    pipes :: Prelude.Maybe [Pipe],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListPipesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listPipesResponse_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. Each pagination token expires after 24 hours. Using
+-- an expired pagination token will return an HTTP 400 InvalidToken error.
+--
+-- 'pipes', 'listPipesResponse_pipes' - The pipes returned by the call.
+--
+-- 'httpStatus', 'listPipesResponse_httpStatus' - The response's http status code.
+newListPipesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListPipesResponse
+newListPipesResponse pHttpStatus_ =
+  ListPipesResponse'
+    { nextToken = Prelude.Nothing,
+      pipes = 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. Each pagination token expires after 24 hours. Using
+-- an expired pagination token will return an HTTP 400 InvalidToken error.
+listPipesResponse_nextToken :: Lens.Lens' ListPipesResponse (Prelude.Maybe Prelude.Text)
+listPipesResponse_nextToken = Lens.lens (\ListPipesResponse' {nextToken} -> nextToken) (\s@ListPipesResponse' {} a -> s {nextToken = a} :: ListPipesResponse) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The pipes returned by the call.
+listPipesResponse_pipes :: Lens.Lens' ListPipesResponse (Prelude.Maybe [Pipe])
+listPipesResponse_pipes = Lens.lens (\ListPipesResponse' {pipes} -> pipes) (\s@ListPipesResponse' {} a -> s {pipes = a} :: ListPipesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listPipesResponse_httpStatus :: Lens.Lens' ListPipesResponse Prelude.Int
+listPipesResponse_httpStatus = Lens.lens (\ListPipesResponse' {httpStatus} -> httpStatus) (\s@ListPipesResponse' {} a -> s {httpStatus = a} :: ListPipesResponse)
+
+instance Prelude.NFData ListPipesResponse where
+  rnf ListPipesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf pipes
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Pipes/ListTagsForResource.hs b/gen/Amazonka/Pipes/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/ListTagsForResource.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.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)
+--
+-- Displays the tags associated with a pipe.
+module Amazonka.Pipes.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+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 ARN of the pipe for which you want to view tags.
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'listTagsForResource_resourceArn' - The ARN of the pipe for which you want to view tags.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | The ARN of the pipe for which you want to view tags.
+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'
+  { -- | The list of key-value pairs to associate with the pipe.
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, 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' - The list of key-value pairs to associate with the pipe.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of key-value pairs to associate with the pipe.
+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/Pipes/StartPipe.hs b/gen/Amazonka/Pipes/StartPipe.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/StartPipe.hs
@@ -0,0 +1,224 @@
+{-# 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.Pipes.StartPipe
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Start an existing pipe.
+module Amazonka.Pipes.StartPipe
+  ( -- * Creating a Request
+    StartPipe (..),
+    newStartPipe,
+
+    -- * Request Lenses
+    startPipe_name,
+
+    -- * Destructuring the Response
+    StartPipeResponse (..),
+    newStartPipeResponse,
+
+    -- * Response Lenses
+    startPipeResponse_arn,
+    startPipeResponse_creationTime,
+    startPipeResponse_currentState,
+    startPipeResponse_desiredState,
+    startPipeResponse_lastModifiedTime,
+    startPipeResponse_name,
+    startPipeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartPipe' smart constructor.
+data StartPipe = StartPipe'
+  { -- | The name of the pipe.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartPipe' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'startPipe_name' - The name of the pipe.
+newStartPipe ::
+  -- | 'name'
+  Prelude.Text ->
+  StartPipe
+newStartPipe pName_ = StartPipe' {name = pName_}
+
+-- | The name of the pipe.
+startPipe_name :: Lens.Lens' StartPipe Prelude.Text
+startPipe_name = Lens.lens (\StartPipe' {name} -> name) (\s@StartPipe' {} a -> s {name = a} :: StartPipe)
+
+instance Core.AWSRequest StartPipe where
+  type AWSResponse StartPipe = StartPipeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartPipeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "CurrentState")
+            Prelude.<*> (x Data..?> "DesiredState")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartPipe where
+  hashWithSalt _salt StartPipe' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData StartPipe where
+  rnf StartPipe' {..} = Prelude.rnf name
+
+instance Data.ToHeaders StartPipe where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartPipe where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath StartPipe where
+  toPath StartPipe' {..} =
+    Prelude.mconcat
+      ["/v1/pipes/", Data.toBS name, "/start"]
+
+instance Data.ToQuery StartPipe where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartPipeResponse' smart constructor.
+data StartPipeResponse = StartPipeResponse'
+  { -- | The ARN of the pipe.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time the pipe was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The state the pipe is in.
+    currentState :: Prelude.Maybe PipeState,
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeState,
+    -- | When the pipe was last updated, in
+    -- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+    -- (YYYY-MM-DDThh:mm:ss.sTZD).
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the pipe.
+    name :: 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 'StartPipeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'startPipeResponse_arn' - The ARN of the pipe.
+--
+-- 'creationTime', 'startPipeResponse_creationTime' - The time the pipe was created.
+--
+-- 'currentState', 'startPipeResponse_currentState' - The state the pipe is in.
+--
+-- 'desiredState', 'startPipeResponse_desiredState' - The state the pipe should be in.
+--
+-- 'lastModifiedTime', 'startPipeResponse_lastModifiedTime' - When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+--
+-- 'name', 'startPipeResponse_name' - The name of the pipe.
+--
+-- 'httpStatus', 'startPipeResponse_httpStatus' - The response's http status code.
+newStartPipeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartPipeResponse
+newStartPipeResponse pHttpStatus_ =
+  StartPipeResponse'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currentState = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the pipe.
+startPipeResponse_arn :: Lens.Lens' StartPipeResponse (Prelude.Maybe Prelude.Text)
+startPipeResponse_arn = Lens.lens (\StartPipeResponse' {arn} -> arn) (\s@StartPipeResponse' {} a -> s {arn = a} :: StartPipeResponse)
+
+-- | The time the pipe was created.
+startPipeResponse_creationTime :: Lens.Lens' StartPipeResponse (Prelude.Maybe Prelude.UTCTime)
+startPipeResponse_creationTime = Lens.lens (\StartPipeResponse' {creationTime} -> creationTime) (\s@StartPipeResponse' {} a -> s {creationTime = a} :: StartPipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The state the pipe is in.
+startPipeResponse_currentState :: Lens.Lens' StartPipeResponse (Prelude.Maybe PipeState)
+startPipeResponse_currentState = Lens.lens (\StartPipeResponse' {currentState} -> currentState) (\s@StartPipeResponse' {} a -> s {currentState = a} :: StartPipeResponse)
+
+-- | The state the pipe should be in.
+startPipeResponse_desiredState :: Lens.Lens' StartPipeResponse (Prelude.Maybe RequestedPipeState)
+startPipeResponse_desiredState = Lens.lens (\StartPipeResponse' {desiredState} -> desiredState) (\s@StartPipeResponse' {} a -> s {desiredState = a} :: StartPipeResponse)
+
+-- | When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+startPipeResponse_lastModifiedTime :: Lens.Lens' StartPipeResponse (Prelude.Maybe Prelude.UTCTime)
+startPipeResponse_lastModifiedTime = Lens.lens (\StartPipeResponse' {lastModifiedTime} -> lastModifiedTime) (\s@StartPipeResponse' {} a -> s {lastModifiedTime = a} :: StartPipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the pipe.
+startPipeResponse_name :: Lens.Lens' StartPipeResponse (Prelude.Maybe Prelude.Text)
+startPipeResponse_name = Lens.lens (\StartPipeResponse' {name} -> name) (\s@StartPipeResponse' {} a -> s {name = a} :: StartPipeResponse)
+
+-- | The response's http status code.
+startPipeResponse_httpStatus :: Lens.Lens' StartPipeResponse Prelude.Int
+startPipeResponse_httpStatus = Lens.lens (\StartPipeResponse' {httpStatus} -> httpStatus) (\s@StartPipeResponse' {} a -> s {httpStatus = a} :: StartPipeResponse)
+
+instance Prelude.NFData StartPipeResponse where
+  rnf StartPipeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currentState
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Pipes/StopPipe.hs b/gen/Amazonka/Pipes/StopPipe.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/StopPipe.hs
@@ -0,0 +1,224 @@
+{-# 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.Pipes.StopPipe
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stop an existing pipe.
+module Amazonka.Pipes.StopPipe
+  ( -- * Creating a Request
+    StopPipe (..),
+    newStopPipe,
+
+    -- * Request Lenses
+    stopPipe_name,
+
+    -- * Destructuring the Response
+    StopPipeResponse (..),
+    newStopPipeResponse,
+
+    -- * Response Lenses
+    stopPipeResponse_arn,
+    stopPipeResponse_creationTime,
+    stopPipeResponse_currentState,
+    stopPipeResponse_desiredState,
+    stopPipeResponse_lastModifiedTime,
+    stopPipeResponse_name,
+    stopPipeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStopPipe' smart constructor.
+data StopPipe = StopPipe'
+  { -- | The name of the pipe.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopPipe' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopPipe_name' - The name of the pipe.
+newStopPipe ::
+  -- | 'name'
+  Prelude.Text ->
+  StopPipe
+newStopPipe pName_ = StopPipe' {name = pName_}
+
+-- | The name of the pipe.
+stopPipe_name :: Lens.Lens' StopPipe Prelude.Text
+stopPipe_name = Lens.lens (\StopPipe' {name} -> name) (\s@StopPipe' {} a -> s {name = a} :: StopPipe)
+
+instance Core.AWSRequest StopPipe where
+  type AWSResponse StopPipe = StopPipeResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopPipeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "CurrentState")
+            Prelude.<*> (x Data..?> "DesiredState")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopPipe where
+  hashWithSalt _salt StopPipe' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData StopPipe where
+  rnf StopPipe' {..} = Prelude.rnf name
+
+instance Data.ToHeaders StopPipe where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopPipe where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath StopPipe where
+  toPath StopPipe' {..} =
+    Prelude.mconcat
+      ["/v1/pipes/", Data.toBS name, "/stop"]
+
+instance Data.ToQuery StopPipe where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopPipeResponse' smart constructor.
+data StopPipeResponse = StopPipeResponse'
+  { -- | The ARN of the pipe.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time the pipe was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The state the pipe is in.
+    currentState :: Prelude.Maybe PipeState,
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeState,
+    -- | When the pipe was last updated, in
+    -- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+    -- (YYYY-MM-DDThh:mm:ss.sTZD).
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the pipe.
+    name :: 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 'StopPipeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'stopPipeResponse_arn' - The ARN of the pipe.
+--
+-- 'creationTime', 'stopPipeResponse_creationTime' - The time the pipe was created.
+--
+-- 'currentState', 'stopPipeResponse_currentState' - The state the pipe is in.
+--
+-- 'desiredState', 'stopPipeResponse_desiredState' - The state the pipe should be in.
+--
+-- 'lastModifiedTime', 'stopPipeResponse_lastModifiedTime' - When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+--
+-- 'name', 'stopPipeResponse_name' - The name of the pipe.
+--
+-- 'httpStatus', 'stopPipeResponse_httpStatus' - The response's http status code.
+newStopPipeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopPipeResponse
+newStopPipeResponse pHttpStatus_ =
+  StopPipeResponse'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currentState = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the pipe.
+stopPipeResponse_arn :: Lens.Lens' StopPipeResponse (Prelude.Maybe Prelude.Text)
+stopPipeResponse_arn = Lens.lens (\StopPipeResponse' {arn} -> arn) (\s@StopPipeResponse' {} a -> s {arn = a} :: StopPipeResponse)
+
+-- | The time the pipe was created.
+stopPipeResponse_creationTime :: Lens.Lens' StopPipeResponse (Prelude.Maybe Prelude.UTCTime)
+stopPipeResponse_creationTime = Lens.lens (\StopPipeResponse' {creationTime} -> creationTime) (\s@StopPipeResponse' {} a -> s {creationTime = a} :: StopPipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The state the pipe is in.
+stopPipeResponse_currentState :: Lens.Lens' StopPipeResponse (Prelude.Maybe PipeState)
+stopPipeResponse_currentState = Lens.lens (\StopPipeResponse' {currentState} -> currentState) (\s@StopPipeResponse' {} a -> s {currentState = a} :: StopPipeResponse)
+
+-- | The state the pipe should be in.
+stopPipeResponse_desiredState :: Lens.Lens' StopPipeResponse (Prelude.Maybe RequestedPipeState)
+stopPipeResponse_desiredState = Lens.lens (\StopPipeResponse' {desiredState} -> desiredState) (\s@StopPipeResponse' {} a -> s {desiredState = a} :: StopPipeResponse)
+
+-- | When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+stopPipeResponse_lastModifiedTime :: Lens.Lens' StopPipeResponse (Prelude.Maybe Prelude.UTCTime)
+stopPipeResponse_lastModifiedTime = Lens.lens (\StopPipeResponse' {lastModifiedTime} -> lastModifiedTime) (\s@StopPipeResponse' {} a -> s {lastModifiedTime = a} :: StopPipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the pipe.
+stopPipeResponse_name :: Lens.Lens' StopPipeResponse (Prelude.Maybe Prelude.Text)
+stopPipeResponse_name = Lens.lens (\StopPipeResponse' {name} -> name) (\s@StopPipeResponse' {} a -> s {name = a} :: StopPipeResponse)
+
+-- | The response's http status code.
+stopPipeResponse_httpStatus :: Lens.Lens' StopPipeResponse Prelude.Int
+stopPipeResponse_httpStatus = Lens.lens (\StopPipeResponse' {httpStatus} -> httpStatus) (\s@StopPipeResponse' {} a -> s {httpStatus = a} :: StopPipeResponse)
+
+instance Prelude.NFData StopPipeResponse where
+  rnf StopPipeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currentState
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Pipes/TagResource.hs b/gen/Amazonka/Pipes/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/TagResource.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.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)
+--
+-- Assigns one or more tags (key-value pairs) to the specified pipe. Tags
+-- can help you organize and categorize your resources. You can also use
+-- them to scope user permissions by granting a user permission to access
+-- or change only resources with certain tag values.
+--
+-- Tags don\'t have any semantic meaning to Amazon Web Services and are
+-- interpreted strictly as strings of characters.
+--
+-- You can use the @TagResource@ action with a pipe that already has tags.
+-- If you specify a new tag key, this tag is appended to the list of tags
+-- associated with the pipe. If you specify a tag key that is already
+-- associated with the pipe, the new tag value that you specify replaces
+-- the previous value for that tag.
+--
+-- You can associate as many as 50 tags with a pipe.
+module Amazonka.Pipes.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+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 ARN of the pipe.
+    resourceArn :: Prelude.Text,
+    -- | The list of key-value pairs associated with the pipe.
+    tags :: Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - The ARN of the pipe.
+--
+-- 'tags', 'tagResource_tags' - The list of key-value pairs associated with the pipe.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | The ARN of the pipe.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | The list of key-value pairs associated with the pipe.
+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/Pipes/Types.hs b/gen/Amazonka/Pipes/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types.hs
@@ -0,0 +1,737 @@
+{-# 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.Pipes.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.Pipes.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _ConflictException,
+    _InternalException,
+    _NotFoundException,
+    _ServiceQuotaExceededException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * AssignPublicIp
+    AssignPublicIp (..),
+
+    -- * BatchJobDependencyType
+    BatchJobDependencyType (..),
+
+    -- * BatchResourceRequirementType
+    BatchResourceRequirementType (..),
+
+    -- * DynamoDBStreamStartPosition
+    DynamoDBStreamStartPosition (..),
+
+    -- * EcsEnvironmentFileType
+    EcsEnvironmentFileType (..),
+
+    -- * EcsResourceRequirementType
+    EcsResourceRequirementType (..),
+
+    -- * KinesisStreamStartPosition
+    KinesisStreamStartPosition (..),
+
+    -- * LaunchType
+    LaunchType (..),
+
+    -- * MSKStartPosition
+    MSKStartPosition (..),
+
+    -- * OnPartialBatchItemFailureStreams
+    OnPartialBatchItemFailureStreams (..),
+
+    -- * PipeState
+    PipeState (..),
+
+    -- * PipeTargetInvocationType
+    PipeTargetInvocationType (..),
+
+    -- * PlacementConstraintType
+    PlacementConstraintType (..),
+
+    -- * PlacementStrategyType
+    PlacementStrategyType (..),
+
+    -- * PropagateTags
+    PropagateTags (..),
+
+    -- * RequestedPipeState
+    RequestedPipeState (..),
+
+    -- * RequestedPipeStateDescribeResponse
+    RequestedPipeStateDescribeResponse (..),
+
+    -- * SelfManagedKafkaStartPosition
+    SelfManagedKafkaStartPosition (..),
+
+    -- * AwsVpcConfiguration
+    AwsVpcConfiguration (..),
+    newAwsVpcConfiguration,
+    awsVpcConfiguration_assignPublicIp,
+    awsVpcConfiguration_securityGroups,
+    awsVpcConfiguration_subnets,
+
+    -- * BatchArrayProperties
+    BatchArrayProperties (..),
+    newBatchArrayProperties,
+    batchArrayProperties_size,
+
+    -- * BatchContainerOverrides
+    BatchContainerOverrides (..),
+    newBatchContainerOverrides,
+    batchContainerOverrides_command,
+    batchContainerOverrides_environment,
+    batchContainerOverrides_instanceType,
+    batchContainerOverrides_resourceRequirements,
+
+    -- * BatchEnvironmentVariable
+    BatchEnvironmentVariable (..),
+    newBatchEnvironmentVariable,
+    batchEnvironmentVariable_name,
+    batchEnvironmentVariable_value,
+
+    -- * BatchJobDependency
+    BatchJobDependency (..),
+    newBatchJobDependency,
+    batchJobDependency_jobId,
+    batchJobDependency_type,
+
+    -- * BatchResourceRequirement
+    BatchResourceRequirement (..),
+    newBatchResourceRequirement,
+    batchResourceRequirement_type,
+    batchResourceRequirement_value,
+
+    -- * BatchRetryStrategy
+    BatchRetryStrategy (..),
+    newBatchRetryStrategy,
+    batchRetryStrategy_attempts,
+
+    -- * CapacityProviderStrategyItem
+    CapacityProviderStrategyItem (..),
+    newCapacityProviderStrategyItem,
+    capacityProviderStrategyItem_base,
+    capacityProviderStrategyItem_weight,
+    capacityProviderStrategyItem_capacityProvider,
+
+    -- * DeadLetterConfig
+    DeadLetterConfig (..),
+    newDeadLetterConfig,
+    deadLetterConfig_arn,
+
+    -- * EcsContainerOverride
+    EcsContainerOverride (..),
+    newEcsContainerOverride,
+    ecsContainerOverride_command,
+    ecsContainerOverride_cpu,
+    ecsContainerOverride_environment,
+    ecsContainerOverride_environmentFiles,
+    ecsContainerOverride_memory,
+    ecsContainerOverride_memoryReservation,
+    ecsContainerOverride_name,
+    ecsContainerOverride_resourceRequirements,
+
+    -- * EcsEnvironmentFile
+    EcsEnvironmentFile (..),
+    newEcsEnvironmentFile,
+    ecsEnvironmentFile_type,
+    ecsEnvironmentFile_value,
+
+    -- * EcsEnvironmentVariable
+    EcsEnvironmentVariable (..),
+    newEcsEnvironmentVariable,
+    ecsEnvironmentVariable_name,
+    ecsEnvironmentVariable_value,
+
+    -- * EcsEphemeralStorage
+    EcsEphemeralStorage (..),
+    newEcsEphemeralStorage,
+    ecsEphemeralStorage_sizeInGiB,
+
+    -- * EcsInferenceAcceleratorOverride
+    EcsInferenceAcceleratorOverride (..),
+    newEcsInferenceAcceleratorOverride,
+    ecsInferenceAcceleratorOverride_deviceName,
+    ecsInferenceAcceleratorOverride_deviceType,
+
+    -- * EcsResourceRequirement
+    EcsResourceRequirement (..),
+    newEcsResourceRequirement,
+    ecsResourceRequirement_type,
+    ecsResourceRequirement_value,
+
+    -- * EcsTaskOverride
+    EcsTaskOverride (..),
+    newEcsTaskOverride,
+    ecsTaskOverride_containerOverrides,
+    ecsTaskOverride_cpu,
+    ecsTaskOverride_ephemeralStorage,
+    ecsTaskOverride_executionRoleArn,
+    ecsTaskOverride_inferenceAcceleratorOverrides,
+    ecsTaskOverride_memory,
+    ecsTaskOverride_taskRoleArn,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_pattern,
+
+    -- * FilterCriteria
+    FilterCriteria (..),
+    newFilterCriteria,
+    filterCriteria_filters,
+
+    -- * MQBrokerAccessCredentials
+    MQBrokerAccessCredentials (..),
+    newMQBrokerAccessCredentials,
+    mQBrokerAccessCredentials_basicAuth,
+
+    -- * MSKAccessCredentials
+    MSKAccessCredentials (..),
+    newMSKAccessCredentials,
+    mSKAccessCredentials_clientCertificateTlsAuth,
+    mSKAccessCredentials_saslScram512Auth,
+
+    -- * NetworkConfiguration
+    NetworkConfiguration (..),
+    newNetworkConfiguration,
+    networkConfiguration_awsvpcConfiguration,
+
+    -- * Pipe
+    Pipe (..),
+    newPipe,
+    pipe_arn,
+    pipe_creationTime,
+    pipe_currentState,
+    pipe_desiredState,
+    pipe_enrichment,
+    pipe_lastModifiedTime,
+    pipe_name,
+    pipe_source,
+    pipe_stateReason,
+    pipe_target,
+
+    -- * PipeEnrichmentHttpParameters
+    PipeEnrichmentHttpParameters (..),
+    newPipeEnrichmentHttpParameters,
+    pipeEnrichmentHttpParameters_headerParameters,
+    pipeEnrichmentHttpParameters_pathParameterValues,
+    pipeEnrichmentHttpParameters_queryStringParameters,
+
+    -- * PipeEnrichmentParameters
+    PipeEnrichmentParameters (..),
+    newPipeEnrichmentParameters,
+    pipeEnrichmentParameters_httpParameters,
+    pipeEnrichmentParameters_inputTemplate,
+
+    -- * PipeSourceActiveMQBrokerParameters
+    PipeSourceActiveMQBrokerParameters (..),
+    newPipeSourceActiveMQBrokerParameters,
+    pipeSourceActiveMQBrokerParameters_batchSize,
+    pipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds,
+    pipeSourceActiveMQBrokerParameters_credentials,
+    pipeSourceActiveMQBrokerParameters_queueName,
+
+    -- * PipeSourceDynamoDBStreamParameters
+    PipeSourceDynamoDBStreamParameters (..),
+    newPipeSourceDynamoDBStreamParameters,
+    pipeSourceDynamoDBStreamParameters_batchSize,
+    pipeSourceDynamoDBStreamParameters_deadLetterConfig,
+    pipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds,
+    pipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds,
+    pipeSourceDynamoDBStreamParameters_maximumRetryAttempts,
+    pipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure,
+    pipeSourceDynamoDBStreamParameters_parallelizationFactor,
+    pipeSourceDynamoDBStreamParameters_startingPosition,
+
+    -- * PipeSourceKinesisStreamParameters
+    PipeSourceKinesisStreamParameters (..),
+    newPipeSourceKinesisStreamParameters,
+    pipeSourceKinesisStreamParameters_batchSize,
+    pipeSourceKinesisStreamParameters_deadLetterConfig,
+    pipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds,
+    pipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds,
+    pipeSourceKinesisStreamParameters_maximumRetryAttempts,
+    pipeSourceKinesisStreamParameters_onPartialBatchItemFailure,
+    pipeSourceKinesisStreamParameters_parallelizationFactor,
+    pipeSourceKinesisStreamParameters_startingPositionTimestamp,
+    pipeSourceKinesisStreamParameters_startingPosition,
+
+    -- * PipeSourceManagedStreamingKafkaParameters
+    PipeSourceManagedStreamingKafkaParameters (..),
+    newPipeSourceManagedStreamingKafkaParameters,
+    pipeSourceManagedStreamingKafkaParameters_batchSize,
+    pipeSourceManagedStreamingKafkaParameters_consumerGroupID,
+    pipeSourceManagedStreamingKafkaParameters_credentials,
+    pipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds,
+    pipeSourceManagedStreamingKafkaParameters_startingPosition,
+    pipeSourceManagedStreamingKafkaParameters_topicName,
+
+    -- * PipeSourceParameters
+    PipeSourceParameters (..),
+    newPipeSourceParameters,
+    pipeSourceParameters_activeMQBrokerParameters,
+    pipeSourceParameters_dynamoDBStreamParameters,
+    pipeSourceParameters_filterCriteria,
+    pipeSourceParameters_kinesisStreamParameters,
+    pipeSourceParameters_managedStreamingKafkaParameters,
+    pipeSourceParameters_rabbitMQBrokerParameters,
+    pipeSourceParameters_selfManagedKafkaParameters,
+    pipeSourceParameters_sqsQueueParameters,
+
+    -- * PipeSourceRabbitMQBrokerParameters
+    PipeSourceRabbitMQBrokerParameters (..),
+    newPipeSourceRabbitMQBrokerParameters,
+    pipeSourceRabbitMQBrokerParameters_batchSize,
+    pipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds,
+    pipeSourceRabbitMQBrokerParameters_virtualHost,
+    pipeSourceRabbitMQBrokerParameters_credentials,
+    pipeSourceRabbitMQBrokerParameters_queueName,
+
+    -- * PipeSourceSelfManagedKafkaParameters
+    PipeSourceSelfManagedKafkaParameters (..),
+    newPipeSourceSelfManagedKafkaParameters,
+    pipeSourceSelfManagedKafkaParameters_additionalBootstrapServers,
+    pipeSourceSelfManagedKafkaParameters_batchSize,
+    pipeSourceSelfManagedKafkaParameters_consumerGroupID,
+    pipeSourceSelfManagedKafkaParameters_credentials,
+    pipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds,
+    pipeSourceSelfManagedKafkaParameters_serverRootCaCertificate,
+    pipeSourceSelfManagedKafkaParameters_startingPosition,
+    pipeSourceSelfManagedKafkaParameters_vpc,
+    pipeSourceSelfManagedKafkaParameters_topicName,
+
+    -- * PipeSourceSqsQueueParameters
+    PipeSourceSqsQueueParameters (..),
+    newPipeSourceSqsQueueParameters,
+    pipeSourceSqsQueueParameters_batchSize,
+    pipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds,
+
+    -- * PipeTargetBatchJobParameters
+    PipeTargetBatchJobParameters (..),
+    newPipeTargetBatchJobParameters,
+    pipeTargetBatchJobParameters_arrayProperties,
+    pipeTargetBatchJobParameters_containerOverrides,
+    pipeTargetBatchJobParameters_dependsOn,
+    pipeTargetBatchJobParameters_parameters,
+    pipeTargetBatchJobParameters_retryStrategy,
+    pipeTargetBatchJobParameters_jobDefinition,
+    pipeTargetBatchJobParameters_jobName,
+
+    -- * PipeTargetCloudWatchLogsParameters
+    PipeTargetCloudWatchLogsParameters (..),
+    newPipeTargetCloudWatchLogsParameters,
+    pipeTargetCloudWatchLogsParameters_logStreamName,
+    pipeTargetCloudWatchLogsParameters_timestamp,
+
+    -- * PipeTargetEcsTaskParameters
+    PipeTargetEcsTaskParameters (..),
+    newPipeTargetEcsTaskParameters,
+    pipeTargetEcsTaskParameters_capacityProviderStrategy,
+    pipeTargetEcsTaskParameters_enableECSManagedTags,
+    pipeTargetEcsTaskParameters_enableExecuteCommand,
+    pipeTargetEcsTaskParameters_group,
+    pipeTargetEcsTaskParameters_launchType,
+    pipeTargetEcsTaskParameters_networkConfiguration,
+    pipeTargetEcsTaskParameters_overrides,
+    pipeTargetEcsTaskParameters_placementConstraints,
+    pipeTargetEcsTaskParameters_placementStrategy,
+    pipeTargetEcsTaskParameters_platformVersion,
+    pipeTargetEcsTaskParameters_propagateTags,
+    pipeTargetEcsTaskParameters_referenceId,
+    pipeTargetEcsTaskParameters_tags,
+    pipeTargetEcsTaskParameters_taskCount,
+    pipeTargetEcsTaskParameters_taskDefinitionArn,
+
+    -- * PipeTargetEventBridgeEventBusParameters
+    PipeTargetEventBridgeEventBusParameters (..),
+    newPipeTargetEventBridgeEventBusParameters,
+    pipeTargetEventBridgeEventBusParameters_detailType,
+    pipeTargetEventBridgeEventBusParameters_endpointId,
+    pipeTargetEventBridgeEventBusParameters_resources,
+    pipeTargetEventBridgeEventBusParameters_source,
+    pipeTargetEventBridgeEventBusParameters_time,
+
+    -- * PipeTargetHttpParameters
+    PipeTargetHttpParameters (..),
+    newPipeTargetHttpParameters,
+    pipeTargetHttpParameters_headerParameters,
+    pipeTargetHttpParameters_pathParameterValues,
+    pipeTargetHttpParameters_queryStringParameters,
+
+    -- * PipeTargetKinesisStreamParameters
+    PipeTargetKinesisStreamParameters (..),
+    newPipeTargetKinesisStreamParameters,
+    pipeTargetKinesisStreamParameters_partitionKey,
+
+    -- * PipeTargetLambdaFunctionParameters
+    PipeTargetLambdaFunctionParameters (..),
+    newPipeTargetLambdaFunctionParameters,
+    pipeTargetLambdaFunctionParameters_invocationType,
+
+    -- * PipeTargetParameters
+    PipeTargetParameters (..),
+    newPipeTargetParameters,
+    pipeTargetParameters_batchJobParameters,
+    pipeTargetParameters_cloudWatchLogsParameters,
+    pipeTargetParameters_ecsTaskParameters,
+    pipeTargetParameters_eventBridgeEventBusParameters,
+    pipeTargetParameters_httpParameters,
+    pipeTargetParameters_inputTemplate,
+    pipeTargetParameters_kinesisStreamParameters,
+    pipeTargetParameters_lambdaFunctionParameters,
+    pipeTargetParameters_redshiftDataParameters,
+    pipeTargetParameters_sageMakerPipelineParameters,
+    pipeTargetParameters_sqsQueueParameters,
+    pipeTargetParameters_stepFunctionStateMachineParameters,
+
+    -- * PipeTargetRedshiftDataParameters
+    PipeTargetRedshiftDataParameters (..),
+    newPipeTargetRedshiftDataParameters,
+    pipeTargetRedshiftDataParameters_dbUser,
+    pipeTargetRedshiftDataParameters_secretManagerArn,
+    pipeTargetRedshiftDataParameters_statementName,
+    pipeTargetRedshiftDataParameters_withEvent,
+    pipeTargetRedshiftDataParameters_database,
+    pipeTargetRedshiftDataParameters_sqls,
+
+    -- * PipeTargetSageMakerPipelineParameters
+    PipeTargetSageMakerPipelineParameters (..),
+    newPipeTargetSageMakerPipelineParameters,
+    pipeTargetSageMakerPipelineParameters_pipelineParameterList,
+
+    -- * PipeTargetSqsQueueParameters
+    PipeTargetSqsQueueParameters (..),
+    newPipeTargetSqsQueueParameters,
+    pipeTargetSqsQueueParameters_messageDeduplicationId,
+    pipeTargetSqsQueueParameters_messageGroupId,
+
+    -- * PipeTargetStateMachineParameters
+    PipeTargetStateMachineParameters (..),
+    newPipeTargetStateMachineParameters,
+    pipeTargetStateMachineParameters_invocationType,
+
+    -- * PlacementConstraint
+    PlacementConstraint (..),
+    newPlacementConstraint,
+    placementConstraint_expression,
+    placementConstraint_type,
+
+    -- * PlacementStrategy
+    PlacementStrategy (..),
+    newPlacementStrategy,
+    placementStrategy_field,
+    placementStrategy_type,
+
+    -- * SageMakerPipelineParameter
+    SageMakerPipelineParameter (..),
+    newSageMakerPipelineParameter,
+    sageMakerPipelineParameter_name,
+    sageMakerPipelineParameter_value,
+
+    -- * SelfManagedKafkaAccessConfigurationCredentials
+    SelfManagedKafkaAccessConfigurationCredentials (..),
+    newSelfManagedKafkaAccessConfigurationCredentials,
+    selfManagedKafkaAccessConfigurationCredentials_basicAuth,
+    selfManagedKafkaAccessConfigurationCredentials_clientCertificateTlsAuth,
+    selfManagedKafkaAccessConfigurationCredentials_saslScram256Auth,
+    selfManagedKafkaAccessConfigurationCredentials_saslScram512Auth,
+
+    -- * SelfManagedKafkaAccessConfigurationVpc
+    SelfManagedKafkaAccessConfigurationVpc (..),
+    newSelfManagedKafkaAccessConfigurationVpc,
+    selfManagedKafkaAccessConfigurationVpc_securityGroup,
+    selfManagedKafkaAccessConfigurationVpc_subnets,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * UpdatePipeSourceActiveMQBrokerParameters
+    UpdatePipeSourceActiveMQBrokerParameters (..),
+    newUpdatePipeSourceActiveMQBrokerParameters,
+    updatePipeSourceActiveMQBrokerParameters_batchSize,
+    updatePipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceActiveMQBrokerParameters_credentials,
+
+    -- * UpdatePipeSourceDynamoDBStreamParameters
+    UpdatePipeSourceDynamoDBStreamParameters (..),
+    newUpdatePipeSourceDynamoDBStreamParameters,
+    updatePipeSourceDynamoDBStreamParameters_batchSize,
+    updatePipeSourceDynamoDBStreamParameters_deadLetterConfig,
+    updatePipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds,
+    updatePipeSourceDynamoDBStreamParameters_maximumRetryAttempts,
+    updatePipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure,
+    updatePipeSourceDynamoDBStreamParameters_parallelizationFactor,
+
+    -- * UpdatePipeSourceKinesisStreamParameters
+    UpdatePipeSourceKinesisStreamParameters (..),
+    newUpdatePipeSourceKinesisStreamParameters,
+    updatePipeSourceKinesisStreamParameters_batchSize,
+    updatePipeSourceKinesisStreamParameters_deadLetterConfig,
+    updatePipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds,
+    updatePipeSourceKinesisStreamParameters_maximumRetryAttempts,
+    updatePipeSourceKinesisStreamParameters_onPartialBatchItemFailure,
+    updatePipeSourceKinesisStreamParameters_parallelizationFactor,
+
+    -- * UpdatePipeSourceManagedStreamingKafkaParameters
+    UpdatePipeSourceManagedStreamingKafkaParameters (..),
+    newUpdatePipeSourceManagedStreamingKafkaParameters,
+    updatePipeSourceManagedStreamingKafkaParameters_batchSize,
+    updatePipeSourceManagedStreamingKafkaParameters_credentials,
+    updatePipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds,
+
+    -- * UpdatePipeSourceParameters
+    UpdatePipeSourceParameters (..),
+    newUpdatePipeSourceParameters,
+    updatePipeSourceParameters_activeMQBrokerParameters,
+    updatePipeSourceParameters_dynamoDBStreamParameters,
+    updatePipeSourceParameters_filterCriteria,
+    updatePipeSourceParameters_kinesisStreamParameters,
+    updatePipeSourceParameters_managedStreamingKafkaParameters,
+    updatePipeSourceParameters_rabbitMQBrokerParameters,
+    updatePipeSourceParameters_selfManagedKafkaParameters,
+    updatePipeSourceParameters_sqsQueueParameters,
+
+    -- * UpdatePipeSourceRabbitMQBrokerParameters
+    UpdatePipeSourceRabbitMQBrokerParameters (..),
+    newUpdatePipeSourceRabbitMQBrokerParameters,
+    updatePipeSourceRabbitMQBrokerParameters_batchSize,
+    updatePipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceRabbitMQBrokerParameters_credentials,
+
+    -- * UpdatePipeSourceSelfManagedKafkaParameters
+    UpdatePipeSourceSelfManagedKafkaParameters (..),
+    newUpdatePipeSourceSelfManagedKafkaParameters,
+    updatePipeSourceSelfManagedKafkaParameters_batchSize,
+    updatePipeSourceSelfManagedKafkaParameters_credentials,
+    updatePipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds,
+    updatePipeSourceSelfManagedKafkaParameters_serverRootCaCertificate,
+    updatePipeSourceSelfManagedKafkaParameters_vpc,
+
+    -- * UpdatePipeSourceSqsQueueParameters
+    UpdatePipeSourceSqsQueueParameters (..),
+    newUpdatePipeSourceSqsQueueParameters,
+    updatePipeSourceSqsQueueParameters_batchSize,
+    updatePipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.Pipes.Types.AssignPublicIp
+import Amazonka.Pipes.Types.AwsVpcConfiguration
+import Amazonka.Pipes.Types.BatchArrayProperties
+import Amazonka.Pipes.Types.BatchContainerOverrides
+import Amazonka.Pipes.Types.BatchEnvironmentVariable
+import Amazonka.Pipes.Types.BatchJobDependency
+import Amazonka.Pipes.Types.BatchJobDependencyType
+import Amazonka.Pipes.Types.BatchResourceRequirement
+import Amazonka.Pipes.Types.BatchResourceRequirementType
+import Amazonka.Pipes.Types.BatchRetryStrategy
+import Amazonka.Pipes.Types.CapacityProviderStrategyItem
+import Amazonka.Pipes.Types.DeadLetterConfig
+import Amazonka.Pipes.Types.DynamoDBStreamStartPosition
+import Amazonka.Pipes.Types.EcsContainerOverride
+import Amazonka.Pipes.Types.EcsEnvironmentFile
+import Amazonka.Pipes.Types.EcsEnvironmentFileType
+import Amazonka.Pipes.Types.EcsEnvironmentVariable
+import Amazonka.Pipes.Types.EcsEphemeralStorage
+import Amazonka.Pipes.Types.EcsInferenceAcceleratorOverride
+import Amazonka.Pipes.Types.EcsResourceRequirement
+import Amazonka.Pipes.Types.EcsResourceRequirementType
+import Amazonka.Pipes.Types.EcsTaskOverride
+import Amazonka.Pipes.Types.Filter
+import Amazonka.Pipes.Types.FilterCriteria
+import Amazonka.Pipes.Types.KinesisStreamStartPosition
+import Amazonka.Pipes.Types.LaunchType
+import Amazonka.Pipes.Types.MQBrokerAccessCredentials
+import Amazonka.Pipes.Types.MSKAccessCredentials
+import Amazonka.Pipes.Types.MSKStartPosition
+import Amazonka.Pipes.Types.NetworkConfiguration
+import Amazonka.Pipes.Types.OnPartialBatchItemFailureStreams
+import Amazonka.Pipes.Types.Pipe
+import Amazonka.Pipes.Types.PipeEnrichmentHttpParameters
+import Amazonka.Pipes.Types.PipeEnrichmentParameters
+import Amazonka.Pipes.Types.PipeSourceActiveMQBrokerParameters
+import Amazonka.Pipes.Types.PipeSourceDynamoDBStreamParameters
+import Amazonka.Pipes.Types.PipeSourceKinesisStreamParameters
+import Amazonka.Pipes.Types.PipeSourceManagedStreamingKafkaParameters
+import Amazonka.Pipes.Types.PipeSourceParameters
+import Amazonka.Pipes.Types.PipeSourceRabbitMQBrokerParameters
+import Amazonka.Pipes.Types.PipeSourceSelfManagedKafkaParameters
+import Amazonka.Pipes.Types.PipeSourceSqsQueueParameters
+import Amazonka.Pipes.Types.PipeState
+import Amazonka.Pipes.Types.PipeTargetBatchJobParameters
+import Amazonka.Pipes.Types.PipeTargetCloudWatchLogsParameters
+import Amazonka.Pipes.Types.PipeTargetEcsTaskParameters
+import Amazonka.Pipes.Types.PipeTargetEventBridgeEventBusParameters
+import Amazonka.Pipes.Types.PipeTargetHttpParameters
+import Amazonka.Pipes.Types.PipeTargetInvocationType
+import Amazonka.Pipes.Types.PipeTargetKinesisStreamParameters
+import Amazonka.Pipes.Types.PipeTargetLambdaFunctionParameters
+import Amazonka.Pipes.Types.PipeTargetParameters
+import Amazonka.Pipes.Types.PipeTargetRedshiftDataParameters
+import Amazonka.Pipes.Types.PipeTargetSageMakerPipelineParameters
+import Amazonka.Pipes.Types.PipeTargetSqsQueueParameters
+import Amazonka.Pipes.Types.PipeTargetStateMachineParameters
+import Amazonka.Pipes.Types.PlacementConstraint
+import Amazonka.Pipes.Types.PlacementConstraintType
+import Amazonka.Pipes.Types.PlacementStrategy
+import Amazonka.Pipes.Types.PlacementStrategyType
+import Amazonka.Pipes.Types.PropagateTags
+import Amazonka.Pipes.Types.RequestedPipeState
+import Amazonka.Pipes.Types.RequestedPipeStateDescribeResponse
+import Amazonka.Pipes.Types.SageMakerPipelineParameter
+import Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationCredentials
+import Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationVpc
+import Amazonka.Pipes.Types.SelfManagedKafkaStartPosition
+import Amazonka.Pipes.Types.Tag
+import Amazonka.Pipes.Types.UpdatePipeSourceActiveMQBrokerParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceDynamoDBStreamParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceKinesisStreamParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceManagedStreamingKafkaParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceRabbitMQBrokerParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceSelfManagedKafkaParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceSqsQueueParameters
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2015-10-07@ of the Amazon EventBridge Pipes SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "Pipes",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "pipes",
+      Core.signingName = "pipes",
+      Core.version = "2015-10-07",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "Pipes",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | An action you attempted resulted in an exception.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | This exception occurs due to unexpected causes.
+_InternalException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalException =
+  Core._MatchServiceError
+    defaultService
+    "InternalException"
+    Prelude.. Core.hasStatus 500
+
+-- | An entity that you specified does not exist.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | A quota has been exceeded.
+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceQuotaExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceQuotaExceededException"
+    Prelude.. Core.hasStatus 402
+
+-- | An action was throttled.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+    Prelude.. Core.hasStatus 429
+
+-- | Indicates that an error has occurred while performing a validate
+-- operation.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/Pipes/Types/AssignPublicIp.hs b/gen/Amazonka/Pipes/Types/AssignPublicIp.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/AssignPublicIp.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.Pipes.Types.AssignPublicIp
+-- 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.Pipes.Types.AssignPublicIp
+  ( AssignPublicIp
+      ( ..,
+        AssignPublicIp_DISABLED,
+        AssignPublicIp_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AssignPublicIp = AssignPublicIp'
+  { fromAssignPublicIp ::
+      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 AssignPublicIp_DISABLED :: AssignPublicIp
+pattern AssignPublicIp_DISABLED = AssignPublicIp' "DISABLED"
+
+pattern AssignPublicIp_ENABLED :: AssignPublicIp
+pattern AssignPublicIp_ENABLED = AssignPublicIp' "ENABLED"
+
+{-# COMPLETE
+  AssignPublicIp_DISABLED,
+  AssignPublicIp_ENABLED,
+  AssignPublicIp'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/AwsVpcConfiguration.hs b/gen/Amazonka/Pipes/Types/AwsVpcConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/AwsVpcConfiguration.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.AwsVpcConfiguration
+-- 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.Pipes.Types.AwsVpcConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.AssignPublicIp
+import qualified Amazonka.Prelude as Prelude
+
+-- | This structure specifies the VPC subnets and security groups for the
+-- task, and whether a public IP address is to be used. This structure is
+-- relevant only for ECS tasks that use the @awsvpc@ network mode.
+--
+-- /See:/ 'newAwsVpcConfiguration' smart constructor.
+data AwsVpcConfiguration = AwsVpcConfiguration'
+  { -- | Specifies whether the task\'s elastic network interface receives a
+    -- public IP address. You can specify @ENABLED@ only when @LaunchType@ in
+    -- @EcsParameters@ is set to @FARGATE@.
+    assignPublicIp :: Prelude.Maybe AssignPublicIp,
+    -- | Specifies the security groups associated with the task. These security
+    -- groups must all be in the same VPC. You can specify as many as five
+    -- security groups. If you do not specify a security group, the default
+    -- security group for the VPC is used.
+    securityGroups :: Prelude.Maybe [Data.Sensitive Prelude.Text],
+    -- | Specifies the subnets associated with the task. These subnets must all
+    -- be in the same VPC. You can specify as many as 16 subnets.
+    subnets :: [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AwsVpcConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'assignPublicIp', 'awsVpcConfiguration_assignPublicIp' - Specifies whether the task\'s elastic network interface receives a
+-- public IP address. You can specify @ENABLED@ only when @LaunchType@ in
+-- @EcsParameters@ is set to @FARGATE@.
+--
+-- 'securityGroups', 'awsVpcConfiguration_securityGroups' - Specifies the security groups associated with the task. These security
+-- groups must all be in the same VPC. You can specify as many as five
+-- security groups. If you do not specify a security group, the default
+-- security group for the VPC is used.
+--
+-- 'subnets', 'awsVpcConfiguration_subnets' - Specifies the subnets associated with the task. These subnets must all
+-- be in the same VPC. You can specify as many as 16 subnets.
+newAwsVpcConfiguration ::
+  AwsVpcConfiguration
+newAwsVpcConfiguration =
+  AwsVpcConfiguration'
+    { assignPublicIp =
+        Prelude.Nothing,
+      securityGroups = Prelude.Nothing,
+      subnets = Prelude.mempty
+    }
+
+-- | Specifies whether the task\'s elastic network interface receives a
+-- public IP address. You can specify @ENABLED@ only when @LaunchType@ in
+-- @EcsParameters@ is set to @FARGATE@.
+awsVpcConfiguration_assignPublicIp :: Lens.Lens' AwsVpcConfiguration (Prelude.Maybe AssignPublicIp)
+awsVpcConfiguration_assignPublicIp = Lens.lens (\AwsVpcConfiguration' {assignPublicIp} -> assignPublicIp) (\s@AwsVpcConfiguration' {} a -> s {assignPublicIp = a} :: AwsVpcConfiguration)
+
+-- | Specifies the security groups associated with the task. These security
+-- groups must all be in the same VPC. You can specify as many as five
+-- security groups. If you do not specify a security group, the default
+-- security group for the VPC is used.
+awsVpcConfiguration_securityGroups :: Lens.Lens' AwsVpcConfiguration (Prelude.Maybe [Prelude.Text])
+awsVpcConfiguration_securityGroups = Lens.lens (\AwsVpcConfiguration' {securityGroups} -> securityGroups) (\s@AwsVpcConfiguration' {} a -> s {securityGroups = a} :: AwsVpcConfiguration) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the subnets associated with the task. These subnets must all
+-- be in the same VPC. You can specify as many as 16 subnets.
+awsVpcConfiguration_subnets :: Lens.Lens' AwsVpcConfiguration [Prelude.Text]
+awsVpcConfiguration_subnets = Lens.lens (\AwsVpcConfiguration' {subnets} -> subnets) (\s@AwsVpcConfiguration' {} a -> s {subnets = a} :: AwsVpcConfiguration) Prelude.. Lens.coerced
+
+instance Data.FromJSON AwsVpcConfiguration where
+  parseJSON =
+    Data.withObject
+      "AwsVpcConfiguration"
+      ( \x ->
+          AwsVpcConfiguration'
+            Prelude.<$> (x Data..:? "AssignPublicIp")
+            Prelude.<*> (x Data..:? "SecurityGroups" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Subnets" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable AwsVpcConfiguration where
+  hashWithSalt _salt AwsVpcConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` assignPublicIp
+      `Prelude.hashWithSalt` securityGroups
+      `Prelude.hashWithSalt` subnets
+
+instance Prelude.NFData AwsVpcConfiguration where
+  rnf AwsVpcConfiguration' {..} =
+    Prelude.rnf assignPublicIp
+      `Prelude.seq` Prelude.rnf securityGroups
+      `Prelude.seq` Prelude.rnf subnets
+
+instance Data.ToJSON AwsVpcConfiguration where
+  toJSON AwsVpcConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AssignPublicIp" Data..=)
+              Prelude.<$> assignPublicIp,
+            ("SecurityGroups" Data..=)
+              Prelude.<$> securityGroups,
+            Prelude.Just ("Subnets" Data..= subnets)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/BatchArrayProperties.hs b/gen/Amazonka/Pipes/Types/BatchArrayProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/BatchArrayProperties.hs
@@ -0,0 +1,78 @@
+{-# 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.Pipes.Types.BatchArrayProperties
+-- 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.Pipes.Types.BatchArrayProperties where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The array properties for the submitted job, such as the size of the
+-- array. The array size can be between 2 and 10,000. If you specify array
+-- properties for a job, it becomes an array job. This parameter is used
+-- only if the target is an Batch job.
+--
+-- /See:/ 'newBatchArrayProperties' smart constructor.
+data BatchArrayProperties = BatchArrayProperties'
+  { -- | The size of the array, if this is an array batch job.
+    size :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchArrayProperties' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'size', 'batchArrayProperties_size' - The size of the array, if this is an array batch job.
+newBatchArrayProperties ::
+  BatchArrayProperties
+newBatchArrayProperties =
+  BatchArrayProperties' {size = Prelude.Nothing}
+
+-- | The size of the array, if this is an array batch job.
+batchArrayProperties_size :: Lens.Lens' BatchArrayProperties (Prelude.Maybe Prelude.Natural)
+batchArrayProperties_size = Lens.lens (\BatchArrayProperties' {size} -> size) (\s@BatchArrayProperties' {} a -> s {size = a} :: BatchArrayProperties)
+
+instance Data.FromJSON BatchArrayProperties where
+  parseJSON =
+    Data.withObject
+      "BatchArrayProperties"
+      ( \x ->
+          BatchArrayProperties'
+            Prelude.<$> (x Data..:? "Size")
+      )
+
+instance Prelude.Hashable BatchArrayProperties where
+  hashWithSalt _salt BatchArrayProperties' {..} =
+    _salt `Prelude.hashWithSalt` size
+
+instance Prelude.NFData BatchArrayProperties where
+  rnf BatchArrayProperties' {..} = Prelude.rnf size
+
+instance Data.ToJSON BatchArrayProperties where
+  toJSON BatchArrayProperties' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Size" Data..=) Prelude.<$> size]
+      )
diff --git a/gen/Amazonka/Pipes/Types/BatchContainerOverrides.hs b/gen/Amazonka/Pipes/Types/BatchContainerOverrides.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/BatchContainerOverrides.hs
@@ -0,0 +1,161 @@
+{-# 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.Pipes.Types.BatchContainerOverrides
+-- 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.Pipes.Types.BatchContainerOverrides where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.BatchEnvironmentVariable
+import Amazonka.Pipes.Types.BatchResourceRequirement
+import qualified Amazonka.Prelude as Prelude
+
+-- | The overrides that are sent to a container.
+--
+-- /See:/ 'newBatchContainerOverrides' smart constructor.
+data BatchContainerOverrides = BatchContainerOverrides'
+  { -- | The command to send to the container that overrides the default command
+    -- from the Docker image or the task definition.
+    command :: Prelude.Maybe [Prelude.Text],
+    -- | The environment variables to send to the container. You can add new
+    -- environment variables, which are added to the container at launch, or
+    -- you can override the existing environment variables from the Docker
+    -- image or the task definition.
+    --
+    -- Environment variables cannot start with \"@Batch@\". This naming
+    -- convention is reserved for variables that Batch sets.
+    environment :: Prelude.Maybe [BatchEnvironmentVariable],
+    -- | The instance type to use for a multi-node parallel job.
+    --
+    -- This parameter isn\'t applicable to single-node container jobs or jobs
+    -- that run on Fargate resources, and shouldn\'t be provided.
+    instanceType :: Prelude.Maybe Prelude.Text,
+    -- | The type and amount of resources to assign to a container. This
+    -- overrides the settings in the job definition. The supported resources
+    -- include @GPU@, @MEMORY@, and @VCPU@.
+    resourceRequirements :: Prelude.Maybe [BatchResourceRequirement]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchContainerOverrides' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'command', 'batchContainerOverrides_command' - The command to send to the container that overrides the default command
+-- from the Docker image or the task definition.
+--
+-- 'environment', 'batchContainerOverrides_environment' - The environment variables to send to the container. You can add new
+-- environment variables, which are added to the container at launch, or
+-- you can override the existing environment variables from the Docker
+-- image or the task definition.
+--
+-- Environment variables cannot start with \"@Batch@\". This naming
+-- convention is reserved for variables that Batch sets.
+--
+-- 'instanceType', 'batchContainerOverrides_instanceType' - The instance type to use for a multi-node parallel job.
+--
+-- This parameter isn\'t applicable to single-node container jobs or jobs
+-- that run on Fargate resources, and shouldn\'t be provided.
+--
+-- 'resourceRequirements', 'batchContainerOverrides_resourceRequirements' - The type and amount of resources to assign to a container. This
+-- overrides the settings in the job definition. The supported resources
+-- include @GPU@, @MEMORY@, and @VCPU@.
+newBatchContainerOverrides ::
+  BatchContainerOverrides
+newBatchContainerOverrides =
+  BatchContainerOverrides'
+    { command = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      instanceType = Prelude.Nothing,
+      resourceRequirements = Prelude.Nothing
+    }
+
+-- | The command to send to the container that overrides the default command
+-- from the Docker image or the task definition.
+batchContainerOverrides_command :: Lens.Lens' BatchContainerOverrides (Prelude.Maybe [Prelude.Text])
+batchContainerOverrides_command = Lens.lens (\BatchContainerOverrides' {command} -> command) (\s@BatchContainerOverrides' {} a -> s {command = a} :: BatchContainerOverrides) Prelude.. Lens.mapping Lens.coerced
+
+-- | The environment variables to send to the container. You can add new
+-- environment variables, which are added to the container at launch, or
+-- you can override the existing environment variables from the Docker
+-- image or the task definition.
+--
+-- Environment variables cannot start with \"@Batch@\". This naming
+-- convention is reserved for variables that Batch sets.
+batchContainerOverrides_environment :: Lens.Lens' BatchContainerOverrides (Prelude.Maybe [BatchEnvironmentVariable])
+batchContainerOverrides_environment = Lens.lens (\BatchContainerOverrides' {environment} -> environment) (\s@BatchContainerOverrides' {} a -> s {environment = a} :: BatchContainerOverrides) Prelude.. Lens.mapping Lens.coerced
+
+-- | The instance type to use for a multi-node parallel job.
+--
+-- This parameter isn\'t applicable to single-node container jobs or jobs
+-- that run on Fargate resources, and shouldn\'t be provided.
+batchContainerOverrides_instanceType :: Lens.Lens' BatchContainerOverrides (Prelude.Maybe Prelude.Text)
+batchContainerOverrides_instanceType = Lens.lens (\BatchContainerOverrides' {instanceType} -> instanceType) (\s@BatchContainerOverrides' {} a -> s {instanceType = a} :: BatchContainerOverrides)
+
+-- | The type and amount of resources to assign to a container. This
+-- overrides the settings in the job definition. The supported resources
+-- include @GPU@, @MEMORY@, and @VCPU@.
+batchContainerOverrides_resourceRequirements :: Lens.Lens' BatchContainerOverrides (Prelude.Maybe [BatchResourceRequirement])
+batchContainerOverrides_resourceRequirements = Lens.lens (\BatchContainerOverrides' {resourceRequirements} -> resourceRequirements) (\s@BatchContainerOverrides' {} a -> s {resourceRequirements = a} :: BatchContainerOverrides) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON BatchContainerOverrides where
+  parseJSON =
+    Data.withObject
+      "BatchContainerOverrides"
+      ( \x ->
+          BatchContainerOverrides'
+            Prelude.<$> (x Data..:? "Command" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "InstanceType")
+            Prelude.<*> ( x
+                            Data..:? "ResourceRequirements"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable BatchContainerOverrides where
+  hashWithSalt _salt BatchContainerOverrides' {..} =
+    _salt
+      `Prelude.hashWithSalt` command
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` instanceType
+      `Prelude.hashWithSalt` resourceRequirements
+
+instance Prelude.NFData BatchContainerOverrides where
+  rnf BatchContainerOverrides' {..} =
+    Prelude.rnf command
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf instanceType
+      `Prelude.seq` Prelude.rnf resourceRequirements
+
+instance Data.ToJSON BatchContainerOverrides where
+  toJSON BatchContainerOverrides' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Command" Data..=) Prelude.<$> command,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("InstanceType" Data..=) Prelude.<$> instanceType,
+            ("ResourceRequirements" Data..=)
+              Prelude.<$> resourceRequirements
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/BatchEnvironmentVariable.hs b/gen/Amazonka/Pipes/Types/BatchEnvironmentVariable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/BatchEnvironmentVariable.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.BatchEnvironmentVariable
+-- 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.Pipes.Types.BatchEnvironmentVariable where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The environment variables to send to the container. You can add new
+-- environment variables, which are added to the container at launch, or
+-- you can override the existing environment variables from the Docker
+-- image or the task definition.
+--
+-- Environment variables cannot start with \"@Batch@\". This naming
+-- convention is reserved for variables that Batch sets.
+--
+-- /See:/ 'newBatchEnvironmentVariable' smart constructor.
+data BatchEnvironmentVariable = BatchEnvironmentVariable'
+  { -- | The name of the key-value pair. For environment variables, this is the
+    -- name of the environment variable.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The value of the key-value pair. For environment variables, this is the
+    -- value of the environment variable.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchEnvironmentVariable' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchEnvironmentVariable_name' - The name of the key-value pair. For environment variables, this is the
+-- name of the environment variable.
+--
+-- 'value', 'batchEnvironmentVariable_value' - The value of the key-value pair. For environment variables, this is the
+-- value of the environment variable.
+newBatchEnvironmentVariable ::
+  BatchEnvironmentVariable
+newBatchEnvironmentVariable =
+  BatchEnvironmentVariable'
+    { name = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The name of the key-value pair. For environment variables, this is the
+-- name of the environment variable.
+batchEnvironmentVariable_name :: Lens.Lens' BatchEnvironmentVariable (Prelude.Maybe Prelude.Text)
+batchEnvironmentVariable_name = Lens.lens (\BatchEnvironmentVariable' {name} -> name) (\s@BatchEnvironmentVariable' {} a -> s {name = a} :: BatchEnvironmentVariable)
+
+-- | The value of the key-value pair. For environment variables, this is the
+-- value of the environment variable.
+batchEnvironmentVariable_value :: Lens.Lens' BatchEnvironmentVariable (Prelude.Maybe Prelude.Text)
+batchEnvironmentVariable_value = Lens.lens (\BatchEnvironmentVariable' {value} -> value) (\s@BatchEnvironmentVariable' {} a -> s {value = a} :: BatchEnvironmentVariable)
+
+instance Data.FromJSON BatchEnvironmentVariable where
+  parseJSON =
+    Data.withObject
+      "BatchEnvironmentVariable"
+      ( \x ->
+          BatchEnvironmentVariable'
+            Prelude.<$> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable BatchEnvironmentVariable where
+  hashWithSalt _salt BatchEnvironmentVariable' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData BatchEnvironmentVariable where
+  rnf BatchEnvironmentVariable' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON BatchEnvironmentVariable where
+  toJSON BatchEnvironmentVariable' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("Value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/BatchJobDependency.hs b/gen/Amazonka/Pipes/Types/BatchJobDependency.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/BatchJobDependency.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.BatchJobDependency
+-- 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.Pipes.Types.BatchJobDependency where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.BatchJobDependencyType
+import qualified Amazonka.Prelude as Prelude
+
+-- | An object that represents an Batch job dependency.
+--
+-- /See:/ 'newBatchJobDependency' smart constructor.
+data BatchJobDependency = BatchJobDependency'
+  { -- | The job ID of the Batch job that\'s associated with this dependency.
+    jobId :: Prelude.Maybe Prelude.Text,
+    -- | The type of the job dependency.
+    type' :: Prelude.Maybe BatchJobDependencyType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchJobDependency' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'jobId', 'batchJobDependency_jobId' - The job ID of the Batch job that\'s associated with this dependency.
+--
+-- 'type'', 'batchJobDependency_type' - The type of the job dependency.
+newBatchJobDependency ::
+  BatchJobDependency
+newBatchJobDependency =
+  BatchJobDependency'
+    { jobId = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The job ID of the Batch job that\'s associated with this dependency.
+batchJobDependency_jobId :: Lens.Lens' BatchJobDependency (Prelude.Maybe Prelude.Text)
+batchJobDependency_jobId = Lens.lens (\BatchJobDependency' {jobId} -> jobId) (\s@BatchJobDependency' {} a -> s {jobId = a} :: BatchJobDependency)
+
+-- | The type of the job dependency.
+batchJobDependency_type :: Lens.Lens' BatchJobDependency (Prelude.Maybe BatchJobDependencyType)
+batchJobDependency_type = Lens.lens (\BatchJobDependency' {type'} -> type') (\s@BatchJobDependency' {} a -> s {type' = a} :: BatchJobDependency)
+
+instance Data.FromJSON BatchJobDependency where
+  parseJSON =
+    Data.withObject
+      "BatchJobDependency"
+      ( \x ->
+          BatchJobDependency'
+            Prelude.<$> (x Data..:? "JobId")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable BatchJobDependency where
+  hashWithSalt _salt BatchJobDependency' {..} =
+    _salt
+      `Prelude.hashWithSalt` jobId
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData BatchJobDependency where
+  rnf BatchJobDependency' {..} =
+    Prelude.rnf jobId `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON BatchJobDependency where
+  toJSON BatchJobDependency' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("JobId" Data..=) Prelude.<$> jobId,
+            ("Type" Data..=) Prelude.<$> type'
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/BatchJobDependencyType.hs b/gen/Amazonka/Pipes/Types/BatchJobDependencyType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/BatchJobDependencyType.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.Pipes.Types.BatchJobDependencyType
+-- 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.Pipes.Types.BatchJobDependencyType
+  ( BatchJobDependencyType
+      ( ..,
+        BatchJobDependencyType_N_TO_N,
+        BatchJobDependencyType_SEQUENTIAL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BatchJobDependencyType = BatchJobDependencyType'
+  { fromBatchJobDependencyType ::
+      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 BatchJobDependencyType_N_TO_N :: BatchJobDependencyType
+pattern BatchJobDependencyType_N_TO_N = BatchJobDependencyType' "N_TO_N"
+
+pattern BatchJobDependencyType_SEQUENTIAL :: BatchJobDependencyType
+pattern BatchJobDependencyType_SEQUENTIAL = BatchJobDependencyType' "SEQUENTIAL"
+
+{-# COMPLETE
+  BatchJobDependencyType_N_TO_N,
+  BatchJobDependencyType_SEQUENTIAL,
+  BatchJobDependencyType'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/BatchResourceRequirement.hs b/gen/Amazonka/Pipes/Types/BatchResourceRequirement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/BatchResourceRequirement.hs
@@ -0,0 +1,494 @@
+{-# 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.Pipes.Types.BatchResourceRequirement
+-- 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.Pipes.Types.BatchResourceRequirement where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.BatchResourceRequirementType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The type and amount of a resource to assign to a container. The
+-- supported resources include @GPU@, @MEMORY@, and @VCPU@.
+--
+-- /See:/ 'newBatchResourceRequirement' smart constructor.
+data BatchResourceRequirement = BatchResourceRequirement'
+  { -- | The type of resource to assign to a container. The supported resources
+    -- include @GPU@, @MEMORY@, and @VCPU@.
+    type' :: BatchResourceRequirementType,
+    -- | The quantity of the specified resource to reserve for the container. The
+    -- values vary based on the @type@ specified.
+    --
+    -- [type=\"GPU\"]
+    --     The number of physical GPUs to reserve for the container. Make sure
+    --     that the number of GPUs reserved for all containers in a job
+    --     doesn\'t exceed the number of available GPUs on the compute resource
+    --     that the job is launched on.
+    --
+    --     GPUs aren\'t available for jobs that are running on Fargate
+    --     resources.
+    --
+    -- [type=\"MEMORY\"]
+    --     The memory hard limit (in MiB) present to the container. This
+    --     parameter is supported for jobs that are running on EC2 resources.
+    --     If your container attempts to exceed the memory specified, the
+    --     container is terminated. This parameter maps to @Memory@ in the
+    --     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+    --     section of the
+    --     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+    --     the @--memory@ option to
+    --     <https://docs.docker.com/engine/reference/run/ docker run>. You must
+    --     specify at least 4 MiB of memory for a job. This is required but can
+    --     be specified in several places for multi-node parallel (MNP) jobs.
+    --     It must be specified for each node at least once. This parameter
+    --     maps to @Memory@ in the
+    --     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+    --     section of the
+    --     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+    --     the @--memory@ option to
+    --     <https://docs.docker.com/engine/reference/run/ docker run>.
+    --
+    --     If you\'re trying to maximize your resource utilization by providing
+    --     your jobs as much memory as possible for a particular instance type,
+    --     see
+    --     <https://docs.aws.amazon.com/batch/latest/userguide/memory-management.html Memory management>
+    --     in the /Batch User Guide/.
+    --
+    --     For jobs that are running on Fargate resources, then @value@ is the
+    --     hard limit (in MiB), and must match one of the supported values and
+    --     the @VCPU@ values must be one of the values supported for that
+    --     memory value.
+    --
+    --     [value = 512]
+    --         @VCPU@ = 0.25
+    --
+    --     [value = 1024]
+    --         @VCPU@ = 0.25 or 0.5
+    --
+    --     [value = 2048]
+    --         @VCPU@ = 0.25, 0.5, or 1
+    --
+    --     [value = 3072]
+    --         @VCPU@ = 0.5, or 1
+    --
+    --     [value = 4096]
+    --         @VCPU@ = 0.5, 1, or 2
+    --
+    --     [value = 5120, 6144, or 7168]
+    --         @VCPU@ = 1 or 2
+    --
+    --     [value = 8192]
+    --         @VCPU@ = 1, 2, 4, or 8
+    --
+    --     [value = 9216, 10240, 11264, 12288, 13312, 14336, or 15360]
+    --         @VCPU@ = 2 or 4
+    --
+    --     [value = 16384]
+    --         @VCPU@ = 2, 4, or 8
+    --
+    --     [value = 17408, 18432, 19456, 21504, 22528, 23552, 25600, 26624, 27648, 29696, or 30720]
+    --         @VCPU@ = 4
+    --
+    --     [value = 20480, 24576, or 28672]
+    --         @VCPU@ = 4 or 8
+    --
+    --     [value = 36864, 45056, 53248, or 61440]
+    --         @VCPU@ = 8
+    --
+    --     [value = 32768, 40960, 49152, or 57344]
+    --         @VCPU@ = 8 or 16
+    --
+    --     [value = 65536, 73728, 81920, 90112, 98304, 106496, 114688, or 122880]
+    --         @VCPU@ = 16
+    --
+    -- [type=\"VCPU\"]
+    --     The number of vCPUs reserved for the container. This parameter maps
+    --     to @CpuShares@ in the
+    --     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+    --     section of the
+    --     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+    --     the @--cpu-shares@ option to
+    --     <https://docs.docker.com/engine/reference/run/ docker run>. Each
+    --     vCPU is equivalent to 1,024 CPU shares. For EC2 resources, you must
+    --     specify at least one vCPU. This is required but can be specified in
+    --     several places; it must be specified for each node at least once.
+    --
+    --     The default for the Fargate On-Demand vCPU resource count quota is 6
+    --     vCPUs. For more information about Fargate quotas, see
+    --     <https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#service-quotas-fargate Fargate quotas>
+    --     in the /Amazon Web Services General Reference/.
+    --
+    --     For jobs that are running on Fargate resources, then @value@ must
+    --     match one of the supported values and the @MEMORY@ values must be
+    --     one of the values supported for that @VCPU@ value. The supported
+    --     values are 0.25, 0.5, 1, 2, 4, 8, and 16
+    --
+    --     [value = 0.25]
+    --         @MEMORY@ = 512, 1024, or 2048
+    --
+    --     [value = 0.5]
+    --         @MEMORY@ = 1024, 2048, 3072, or 4096
+    --
+    --     [value = 1]
+    --         @MEMORY@ = 2048, 3072, 4096, 5120, 6144, 7168, or 8192
+    --
+    --     [value = 2]
+    --         @MEMORY@ = 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264,
+    --         12288, 13312, 14336, 15360, or 16384
+    --
+    --     [value = 4]
+    --         @MEMORY@ = 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360,
+    --         16384, 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576,
+    --         25600, 26624, 27648, 28672, 29696, or 30720
+    --
+    --     [value = 8]
+    --         @MEMORY@ = 16384, 20480, 24576, 28672, 32768, 36864, 40960,
+    --         45056, 49152, 53248, 57344, or 61440
+    --
+    --     [value = 16]
+    --         @MEMORY@ = 32768, 40960, 49152, 57344, 65536, 73728, 81920,
+    --         90112, 98304, 106496, 114688, or 122880
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchResourceRequirement' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'type'', 'batchResourceRequirement_type' - The type of resource to assign to a container. The supported resources
+-- include @GPU@, @MEMORY@, and @VCPU@.
+--
+-- 'value', 'batchResourceRequirement_value' - The quantity of the specified resource to reserve for the container. The
+-- values vary based on the @type@ specified.
+--
+-- [type=\"GPU\"]
+--     The number of physical GPUs to reserve for the container. Make sure
+--     that the number of GPUs reserved for all containers in a job
+--     doesn\'t exceed the number of available GPUs on the compute resource
+--     that the job is launched on.
+--
+--     GPUs aren\'t available for jobs that are running on Fargate
+--     resources.
+--
+-- [type=\"MEMORY\"]
+--     The memory hard limit (in MiB) present to the container. This
+--     parameter is supported for jobs that are running on EC2 resources.
+--     If your container attempts to exceed the memory specified, the
+--     container is terminated. This parameter maps to @Memory@ in the
+--     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+--     section of the
+--     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+--     the @--memory@ option to
+--     <https://docs.docker.com/engine/reference/run/ docker run>. You must
+--     specify at least 4 MiB of memory for a job. This is required but can
+--     be specified in several places for multi-node parallel (MNP) jobs.
+--     It must be specified for each node at least once. This parameter
+--     maps to @Memory@ in the
+--     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+--     section of the
+--     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+--     the @--memory@ option to
+--     <https://docs.docker.com/engine/reference/run/ docker run>.
+--
+--     If you\'re trying to maximize your resource utilization by providing
+--     your jobs as much memory as possible for a particular instance type,
+--     see
+--     <https://docs.aws.amazon.com/batch/latest/userguide/memory-management.html Memory management>
+--     in the /Batch User Guide/.
+--
+--     For jobs that are running on Fargate resources, then @value@ is the
+--     hard limit (in MiB), and must match one of the supported values and
+--     the @VCPU@ values must be one of the values supported for that
+--     memory value.
+--
+--     [value = 512]
+--         @VCPU@ = 0.25
+--
+--     [value = 1024]
+--         @VCPU@ = 0.25 or 0.5
+--
+--     [value = 2048]
+--         @VCPU@ = 0.25, 0.5, or 1
+--
+--     [value = 3072]
+--         @VCPU@ = 0.5, or 1
+--
+--     [value = 4096]
+--         @VCPU@ = 0.5, 1, or 2
+--
+--     [value = 5120, 6144, or 7168]
+--         @VCPU@ = 1 or 2
+--
+--     [value = 8192]
+--         @VCPU@ = 1, 2, 4, or 8
+--
+--     [value = 9216, 10240, 11264, 12288, 13312, 14336, or 15360]
+--         @VCPU@ = 2 or 4
+--
+--     [value = 16384]
+--         @VCPU@ = 2, 4, or 8
+--
+--     [value = 17408, 18432, 19456, 21504, 22528, 23552, 25600, 26624, 27648, 29696, or 30720]
+--         @VCPU@ = 4
+--
+--     [value = 20480, 24576, or 28672]
+--         @VCPU@ = 4 or 8
+--
+--     [value = 36864, 45056, 53248, or 61440]
+--         @VCPU@ = 8
+--
+--     [value = 32768, 40960, 49152, or 57344]
+--         @VCPU@ = 8 or 16
+--
+--     [value = 65536, 73728, 81920, 90112, 98304, 106496, 114688, or 122880]
+--         @VCPU@ = 16
+--
+-- [type=\"VCPU\"]
+--     The number of vCPUs reserved for the container. This parameter maps
+--     to @CpuShares@ in the
+--     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+--     section of the
+--     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+--     the @--cpu-shares@ option to
+--     <https://docs.docker.com/engine/reference/run/ docker run>. Each
+--     vCPU is equivalent to 1,024 CPU shares. For EC2 resources, you must
+--     specify at least one vCPU. This is required but can be specified in
+--     several places; it must be specified for each node at least once.
+--
+--     The default for the Fargate On-Demand vCPU resource count quota is 6
+--     vCPUs. For more information about Fargate quotas, see
+--     <https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#service-quotas-fargate Fargate quotas>
+--     in the /Amazon Web Services General Reference/.
+--
+--     For jobs that are running on Fargate resources, then @value@ must
+--     match one of the supported values and the @MEMORY@ values must be
+--     one of the values supported for that @VCPU@ value. The supported
+--     values are 0.25, 0.5, 1, 2, 4, 8, and 16
+--
+--     [value = 0.25]
+--         @MEMORY@ = 512, 1024, or 2048
+--
+--     [value = 0.5]
+--         @MEMORY@ = 1024, 2048, 3072, or 4096
+--
+--     [value = 1]
+--         @MEMORY@ = 2048, 3072, 4096, 5120, 6144, 7168, or 8192
+--
+--     [value = 2]
+--         @MEMORY@ = 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264,
+--         12288, 13312, 14336, 15360, or 16384
+--
+--     [value = 4]
+--         @MEMORY@ = 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360,
+--         16384, 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576,
+--         25600, 26624, 27648, 28672, 29696, or 30720
+--
+--     [value = 8]
+--         @MEMORY@ = 16384, 20480, 24576, 28672, 32768, 36864, 40960,
+--         45056, 49152, 53248, 57344, or 61440
+--
+--     [value = 16]
+--         @MEMORY@ = 32768, 40960, 49152, 57344, 65536, 73728, 81920,
+--         90112, 98304, 106496, 114688, or 122880
+newBatchResourceRequirement ::
+  -- | 'type''
+  BatchResourceRequirementType ->
+  -- | 'value'
+  Prelude.Text ->
+  BatchResourceRequirement
+newBatchResourceRequirement pType_ pValue_ =
+  BatchResourceRequirement'
+    { type' = pType_,
+      value = pValue_
+    }
+
+-- | The type of resource to assign to a container. The supported resources
+-- include @GPU@, @MEMORY@, and @VCPU@.
+batchResourceRequirement_type :: Lens.Lens' BatchResourceRequirement BatchResourceRequirementType
+batchResourceRequirement_type = Lens.lens (\BatchResourceRequirement' {type'} -> type') (\s@BatchResourceRequirement' {} a -> s {type' = a} :: BatchResourceRequirement)
+
+-- | The quantity of the specified resource to reserve for the container. The
+-- values vary based on the @type@ specified.
+--
+-- [type=\"GPU\"]
+--     The number of physical GPUs to reserve for the container. Make sure
+--     that the number of GPUs reserved for all containers in a job
+--     doesn\'t exceed the number of available GPUs on the compute resource
+--     that the job is launched on.
+--
+--     GPUs aren\'t available for jobs that are running on Fargate
+--     resources.
+--
+-- [type=\"MEMORY\"]
+--     The memory hard limit (in MiB) present to the container. This
+--     parameter is supported for jobs that are running on EC2 resources.
+--     If your container attempts to exceed the memory specified, the
+--     container is terminated. This parameter maps to @Memory@ in the
+--     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+--     section of the
+--     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+--     the @--memory@ option to
+--     <https://docs.docker.com/engine/reference/run/ docker run>. You must
+--     specify at least 4 MiB of memory for a job. This is required but can
+--     be specified in several places for multi-node parallel (MNP) jobs.
+--     It must be specified for each node at least once. This parameter
+--     maps to @Memory@ in the
+--     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+--     section of the
+--     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+--     the @--memory@ option to
+--     <https://docs.docker.com/engine/reference/run/ docker run>.
+--
+--     If you\'re trying to maximize your resource utilization by providing
+--     your jobs as much memory as possible for a particular instance type,
+--     see
+--     <https://docs.aws.amazon.com/batch/latest/userguide/memory-management.html Memory management>
+--     in the /Batch User Guide/.
+--
+--     For jobs that are running on Fargate resources, then @value@ is the
+--     hard limit (in MiB), and must match one of the supported values and
+--     the @VCPU@ values must be one of the values supported for that
+--     memory value.
+--
+--     [value = 512]
+--         @VCPU@ = 0.25
+--
+--     [value = 1024]
+--         @VCPU@ = 0.25 or 0.5
+--
+--     [value = 2048]
+--         @VCPU@ = 0.25, 0.5, or 1
+--
+--     [value = 3072]
+--         @VCPU@ = 0.5, or 1
+--
+--     [value = 4096]
+--         @VCPU@ = 0.5, 1, or 2
+--
+--     [value = 5120, 6144, or 7168]
+--         @VCPU@ = 1 or 2
+--
+--     [value = 8192]
+--         @VCPU@ = 1, 2, 4, or 8
+--
+--     [value = 9216, 10240, 11264, 12288, 13312, 14336, or 15360]
+--         @VCPU@ = 2 or 4
+--
+--     [value = 16384]
+--         @VCPU@ = 2, 4, or 8
+--
+--     [value = 17408, 18432, 19456, 21504, 22528, 23552, 25600, 26624, 27648, 29696, or 30720]
+--         @VCPU@ = 4
+--
+--     [value = 20480, 24576, or 28672]
+--         @VCPU@ = 4 or 8
+--
+--     [value = 36864, 45056, 53248, or 61440]
+--         @VCPU@ = 8
+--
+--     [value = 32768, 40960, 49152, or 57344]
+--         @VCPU@ = 8 or 16
+--
+--     [value = 65536, 73728, 81920, 90112, 98304, 106496, 114688, or 122880]
+--         @VCPU@ = 16
+--
+-- [type=\"VCPU\"]
+--     The number of vCPUs reserved for the container. This parameter maps
+--     to @CpuShares@ in the
+--     <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
+--     section of the
+--     <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and
+--     the @--cpu-shares@ option to
+--     <https://docs.docker.com/engine/reference/run/ docker run>. Each
+--     vCPU is equivalent to 1,024 CPU shares. For EC2 resources, you must
+--     specify at least one vCPU. This is required but can be specified in
+--     several places; it must be specified for each node at least once.
+--
+--     The default for the Fargate On-Demand vCPU resource count quota is 6
+--     vCPUs. For more information about Fargate quotas, see
+--     <https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#service-quotas-fargate Fargate quotas>
+--     in the /Amazon Web Services General Reference/.
+--
+--     For jobs that are running on Fargate resources, then @value@ must
+--     match one of the supported values and the @MEMORY@ values must be
+--     one of the values supported for that @VCPU@ value. The supported
+--     values are 0.25, 0.5, 1, 2, 4, 8, and 16
+--
+--     [value = 0.25]
+--         @MEMORY@ = 512, 1024, or 2048
+--
+--     [value = 0.5]
+--         @MEMORY@ = 1024, 2048, 3072, or 4096
+--
+--     [value = 1]
+--         @MEMORY@ = 2048, 3072, 4096, 5120, 6144, 7168, or 8192
+--
+--     [value = 2]
+--         @MEMORY@ = 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264,
+--         12288, 13312, 14336, 15360, or 16384
+--
+--     [value = 4]
+--         @MEMORY@ = 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360,
+--         16384, 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576,
+--         25600, 26624, 27648, 28672, 29696, or 30720
+--
+--     [value = 8]
+--         @MEMORY@ = 16384, 20480, 24576, 28672, 32768, 36864, 40960,
+--         45056, 49152, 53248, 57344, or 61440
+--
+--     [value = 16]
+--         @MEMORY@ = 32768, 40960, 49152, 57344, 65536, 73728, 81920,
+--         90112, 98304, 106496, 114688, or 122880
+batchResourceRequirement_value :: Lens.Lens' BatchResourceRequirement Prelude.Text
+batchResourceRequirement_value = Lens.lens (\BatchResourceRequirement' {value} -> value) (\s@BatchResourceRequirement' {} a -> s {value = a} :: BatchResourceRequirement)
+
+instance Data.FromJSON BatchResourceRequirement where
+  parseJSON =
+    Data.withObject
+      "BatchResourceRequirement"
+      ( \x ->
+          BatchResourceRequirement'
+            Prelude.<$> (x Data..: "Type")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable BatchResourceRequirement where
+  hashWithSalt _salt BatchResourceRequirement' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData BatchResourceRequirement where
+  rnf BatchResourceRequirement' {..} =
+    Prelude.rnf type' `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON BatchResourceRequirement where
+  toJSON BatchResourceRequirement' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/BatchResourceRequirementType.hs b/gen/Amazonka/Pipes/Types/BatchResourceRequirementType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/BatchResourceRequirementType.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.Pipes.Types.BatchResourceRequirementType
+-- 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.Pipes.Types.BatchResourceRequirementType
+  ( BatchResourceRequirementType
+      ( ..,
+        BatchResourceRequirementType_GPU,
+        BatchResourceRequirementType_MEMORY,
+        BatchResourceRequirementType_VCPU
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BatchResourceRequirementType = BatchResourceRequirementType'
+  { fromBatchResourceRequirementType ::
+      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 BatchResourceRequirementType_GPU :: BatchResourceRequirementType
+pattern BatchResourceRequirementType_GPU = BatchResourceRequirementType' "GPU"
+
+pattern BatchResourceRequirementType_MEMORY :: BatchResourceRequirementType
+pattern BatchResourceRequirementType_MEMORY = BatchResourceRequirementType' "MEMORY"
+
+pattern BatchResourceRequirementType_VCPU :: BatchResourceRequirementType
+pattern BatchResourceRequirementType_VCPU = BatchResourceRequirementType' "VCPU"
+
+{-# COMPLETE
+  BatchResourceRequirementType_GPU,
+  BatchResourceRequirementType_MEMORY,
+  BatchResourceRequirementType_VCPU,
+  BatchResourceRequirementType'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/BatchRetryStrategy.hs b/gen/Amazonka/Pipes/Types/BatchRetryStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/BatchRetryStrategy.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.BatchRetryStrategy
+-- 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.Pipes.Types.BatchRetryStrategy where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The retry strategy that\'s associated with a job. For more information,
+-- see
+-- <https://docs.aws.amazon.com/batch/latest/userguide/job_retries.html Automated job retries>
+-- in the /Batch User Guide/.
+--
+-- /See:/ 'newBatchRetryStrategy' smart constructor.
+data BatchRetryStrategy = BatchRetryStrategy'
+  { -- | The number of times to move a job to the @RUNNABLE@ status. If the value
+    -- of @attempts@ is greater than one, the job is retried on failure the
+    -- same number of attempts as the value.
+    attempts :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchRetryStrategy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attempts', 'batchRetryStrategy_attempts' - The number of times to move a job to the @RUNNABLE@ status. If the value
+-- of @attempts@ is greater than one, the job is retried on failure the
+-- same number of attempts as the value.
+newBatchRetryStrategy ::
+  BatchRetryStrategy
+newBatchRetryStrategy =
+  BatchRetryStrategy' {attempts = Prelude.Nothing}
+
+-- | The number of times to move a job to the @RUNNABLE@ status. If the value
+-- of @attempts@ is greater than one, the job is retried on failure the
+-- same number of attempts as the value.
+batchRetryStrategy_attempts :: Lens.Lens' BatchRetryStrategy (Prelude.Maybe Prelude.Natural)
+batchRetryStrategy_attempts = Lens.lens (\BatchRetryStrategy' {attempts} -> attempts) (\s@BatchRetryStrategy' {} a -> s {attempts = a} :: BatchRetryStrategy)
+
+instance Data.FromJSON BatchRetryStrategy where
+  parseJSON =
+    Data.withObject
+      "BatchRetryStrategy"
+      ( \x ->
+          BatchRetryStrategy'
+            Prelude.<$> (x Data..:? "Attempts")
+      )
+
+instance Prelude.Hashable BatchRetryStrategy where
+  hashWithSalt _salt BatchRetryStrategy' {..} =
+    _salt `Prelude.hashWithSalt` attempts
+
+instance Prelude.NFData BatchRetryStrategy where
+  rnf BatchRetryStrategy' {..} = Prelude.rnf attempts
+
+instance Data.ToJSON BatchRetryStrategy where
+  toJSON BatchRetryStrategy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Attempts" Data..=) Prelude.<$> attempts]
+      )
diff --git a/gen/Amazonka/Pipes/Types/CapacityProviderStrategyItem.hs b/gen/Amazonka/Pipes/Types/CapacityProviderStrategyItem.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/CapacityProviderStrategyItem.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.CapacityProviderStrategyItem
+-- 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.Pipes.Types.CapacityProviderStrategyItem where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The details of a capacity provider strategy. To learn more, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CapacityProviderStrategyItem.html CapacityProviderStrategyItem>
+-- in the Amazon ECS API Reference.
+--
+-- /See:/ 'newCapacityProviderStrategyItem' smart constructor.
+data CapacityProviderStrategyItem = CapacityProviderStrategyItem'
+  { -- | The base value designates how many tasks, at a minimum, to run on the
+    -- specified capacity provider. Only one capacity provider in a capacity
+    -- provider strategy can have a base defined. If no value is specified, the
+    -- default value of 0 is used.
+    base :: Prelude.Maybe Prelude.Natural,
+    -- | The weight value designates the relative percentage of the total number
+    -- of tasks launched that should use the specified capacity provider. The
+    -- weight value is taken into consideration after the base value, if
+    -- defined, is satisfied.
+    weight :: Prelude.Maybe Prelude.Natural,
+    -- | The short name of the capacity provider.
+    capacityProvider :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CapacityProviderStrategyItem' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'base', 'capacityProviderStrategyItem_base' - The base value designates how many tasks, at a minimum, to run on the
+-- specified capacity provider. Only one capacity provider in a capacity
+-- provider strategy can have a base defined. If no value is specified, the
+-- default value of 0 is used.
+--
+-- 'weight', 'capacityProviderStrategyItem_weight' - The weight value designates the relative percentage of the total number
+-- of tasks launched that should use the specified capacity provider. The
+-- weight value is taken into consideration after the base value, if
+-- defined, is satisfied.
+--
+-- 'capacityProvider', 'capacityProviderStrategyItem_capacityProvider' - The short name of the capacity provider.
+newCapacityProviderStrategyItem ::
+  -- | 'capacityProvider'
+  Prelude.Text ->
+  CapacityProviderStrategyItem
+newCapacityProviderStrategyItem pCapacityProvider_ =
+  CapacityProviderStrategyItem'
+    { base =
+        Prelude.Nothing,
+      weight = Prelude.Nothing,
+      capacityProvider =
+        Data._Sensitive Lens.# pCapacityProvider_
+    }
+
+-- | The base value designates how many tasks, at a minimum, to run on the
+-- specified capacity provider. Only one capacity provider in a capacity
+-- provider strategy can have a base defined. If no value is specified, the
+-- default value of 0 is used.
+capacityProviderStrategyItem_base :: Lens.Lens' CapacityProviderStrategyItem (Prelude.Maybe Prelude.Natural)
+capacityProviderStrategyItem_base = Lens.lens (\CapacityProviderStrategyItem' {base} -> base) (\s@CapacityProviderStrategyItem' {} a -> s {base = a} :: CapacityProviderStrategyItem)
+
+-- | The weight value designates the relative percentage of the total number
+-- of tasks launched that should use the specified capacity provider. The
+-- weight value is taken into consideration after the base value, if
+-- defined, is satisfied.
+capacityProviderStrategyItem_weight :: Lens.Lens' CapacityProviderStrategyItem (Prelude.Maybe Prelude.Natural)
+capacityProviderStrategyItem_weight = Lens.lens (\CapacityProviderStrategyItem' {weight} -> weight) (\s@CapacityProviderStrategyItem' {} a -> s {weight = a} :: CapacityProviderStrategyItem)
+
+-- | The short name of the capacity provider.
+capacityProviderStrategyItem_capacityProvider :: Lens.Lens' CapacityProviderStrategyItem Prelude.Text
+capacityProviderStrategyItem_capacityProvider = Lens.lens (\CapacityProviderStrategyItem' {capacityProvider} -> capacityProvider) (\s@CapacityProviderStrategyItem' {} a -> s {capacityProvider = a} :: CapacityProviderStrategyItem) Prelude.. Data._Sensitive
+
+instance Data.FromJSON CapacityProviderStrategyItem where
+  parseJSON =
+    Data.withObject
+      "CapacityProviderStrategyItem"
+      ( \x ->
+          CapacityProviderStrategyItem'
+            Prelude.<$> (x Data..:? "base")
+            Prelude.<*> (x Data..:? "weight")
+            Prelude.<*> (x Data..: "capacityProvider")
+      )
+
+instance
+  Prelude.Hashable
+    CapacityProviderStrategyItem
+  where
+  hashWithSalt _salt CapacityProviderStrategyItem' {..} =
+    _salt
+      `Prelude.hashWithSalt` base
+      `Prelude.hashWithSalt` weight
+      `Prelude.hashWithSalt` capacityProvider
+
+instance Prelude.NFData CapacityProviderStrategyItem where
+  rnf CapacityProviderStrategyItem' {..} =
+    Prelude.rnf base
+      `Prelude.seq` Prelude.rnf weight
+      `Prelude.seq` Prelude.rnf capacityProvider
+
+instance Data.ToJSON CapacityProviderStrategyItem where
+  toJSON CapacityProviderStrategyItem' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("base" Data..=) Prelude.<$> base,
+            ("weight" Data..=) Prelude.<$> weight,
+            Prelude.Just
+              ("capacityProvider" Data..= capacityProvider)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/DeadLetterConfig.hs b/gen/Amazonka/Pipes/Types/DeadLetterConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/DeadLetterConfig.hs
@@ -0,0 +1,76 @@
+{-# 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.Pipes.Types.DeadLetterConfig
+-- 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.Pipes.Types.DeadLetterConfig 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 @DeadLetterConfig@ object that contains information about a
+-- dead-letter queue configuration.
+--
+-- /See:/ 'newDeadLetterConfig' smart constructor.
+data DeadLetterConfig = DeadLetterConfig'
+  { -- | The ARN of the Amazon SQS queue specified as the target for the
+    -- dead-letter queue.
+    arn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeadLetterConfig' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'deadLetterConfig_arn' - The ARN of the Amazon SQS queue specified as the target for the
+-- dead-letter queue.
+newDeadLetterConfig ::
+  DeadLetterConfig
+newDeadLetterConfig =
+  DeadLetterConfig' {arn = Prelude.Nothing}
+
+-- | The ARN of the Amazon SQS queue specified as the target for the
+-- dead-letter queue.
+deadLetterConfig_arn :: Lens.Lens' DeadLetterConfig (Prelude.Maybe Prelude.Text)
+deadLetterConfig_arn = Lens.lens (\DeadLetterConfig' {arn} -> arn) (\s@DeadLetterConfig' {} a -> s {arn = a} :: DeadLetterConfig)
+
+instance Data.FromJSON DeadLetterConfig where
+  parseJSON =
+    Data.withObject
+      "DeadLetterConfig"
+      ( \x ->
+          DeadLetterConfig' Prelude.<$> (x Data..:? "Arn")
+      )
+
+instance Prelude.Hashable DeadLetterConfig where
+  hashWithSalt _salt DeadLetterConfig' {..} =
+    _salt `Prelude.hashWithSalt` arn
+
+instance Prelude.NFData DeadLetterConfig where
+  rnf DeadLetterConfig' {..} = Prelude.rnf arn
+
+instance Data.ToJSON DeadLetterConfig where
+  toJSON DeadLetterConfig' {..} =
+    Data.object
+      (Prelude.catMaybes [("Arn" Data..=) Prelude.<$> arn])
diff --git a/gen/Amazonka/Pipes/Types/DynamoDBStreamStartPosition.hs b/gen/Amazonka/Pipes/Types/DynamoDBStreamStartPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/DynamoDBStreamStartPosition.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.Pipes.Types.DynamoDBStreamStartPosition
+-- 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.Pipes.Types.DynamoDBStreamStartPosition
+  ( DynamoDBStreamStartPosition
+      ( ..,
+        DynamoDBStreamStartPosition_LATEST,
+        DynamoDBStreamStartPosition_TRIM_HORIZON
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DynamoDBStreamStartPosition = DynamoDBStreamStartPosition'
+  { fromDynamoDBStreamStartPosition ::
+      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 DynamoDBStreamStartPosition_LATEST :: DynamoDBStreamStartPosition
+pattern DynamoDBStreamStartPosition_LATEST = DynamoDBStreamStartPosition' "LATEST"
+
+pattern DynamoDBStreamStartPosition_TRIM_HORIZON :: DynamoDBStreamStartPosition
+pattern DynamoDBStreamStartPosition_TRIM_HORIZON = DynamoDBStreamStartPosition' "TRIM_HORIZON"
+
+{-# COMPLETE
+  DynamoDBStreamStartPosition_LATEST,
+  DynamoDBStreamStartPosition_TRIM_HORIZON,
+  DynamoDBStreamStartPosition'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/EcsContainerOverride.hs b/gen/Amazonka/Pipes/Types/EcsContainerOverride.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsContainerOverride.hs
@@ -0,0 +1,234 @@
+{-# 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.Pipes.Types.EcsContainerOverride
+-- 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.Pipes.Types.EcsContainerOverride where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.EcsEnvironmentFile
+import Amazonka.Pipes.Types.EcsEnvironmentVariable
+import Amazonka.Pipes.Types.EcsResourceRequirement
+import qualified Amazonka.Prelude as Prelude
+
+-- | The overrides that are sent to a container. An empty container override
+-- can be passed in. An example of an empty container override is
+-- @{\"containerOverrides\": [ ] }@. If a non-empty container override is
+-- specified, the @name@ parameter must be included.
+--
+-- /See:/ 'newEcsContainerOverride' smart constructor.
+data EcsContainerOverride = EcsContainerOverride'
+  { -- | The command to send to the container that overrides the default command
+    -- from the Docker image or the task definition. You must also specify a
+    -- container name.
+    command :: Prelude.Maybe [Prelude.Text],
+    -- | The number of @cpu@ units reserved for the container, instead of the
+    -- default value from the task definition. You must also specify a
+    -- container name.
+    cpu :: Prelude.Maybe Prelude.Int,
+    -- | The environment variables to send to the container. You can add new
+    -- environment variables, which are added to the container at launch, or
+    -- you can override the existing environment variables from the Docker
+    -- image or the task definition. You must also specify a container name.
+    environment :: Prelude.Maybe [EcsEnvironmentVariable],
+    -- | A list of files containing the environment variables to pass to a
+    -- container, instead of the value from the container definition.
+    environmentFiles :: Prelude.Maybe [EcsEnvironmentFile],
+    -- | The hard limit (in MiB) of memory to present to the container, instead
+    -- of the default value from the task definition. If your container
+    -- attempts to exceed the memory specified here, the container is killed.
+    -- You must also specify a container name.
+    memory :: Prelude.Maybe Prelude.Int,
+    -- | The soft limit (in MiB) of memory to reserve for the container, instead
+    -- of the default value from the task definition. You must also specify a
+    -- container name.
+    memoryReservation :: Prelude.Maybe Prelude.Int,
+    -- | The name of the container that receives the override. This parameter is
+    -- required if any override is specified.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The type and amount of a resource to assign to a container, instead of
+    -- the default value from the task definition. The only supported resource
+    -- is a GPU.
+    resourceRequirements :: Prelude.Maybe [EcsResourceRequirement]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EcsContainerOverride' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'command', 'ecsContainerOverride_command' - The command to send to the container that overrides the default command
+-- from the Docker image or the task definition. You must also specify a
+-- container name.
+--
+-- 'cpu', 'ecsContainerOverride_cpu' - The number of @cpu@ units reserved for the container, instead of the
+-- default value from the task definition. You must also specify a
+-- container name.
+--
+-- 'environment', 'ecsContainerOverride_environment' - The environment variables to send to the container. You can add new
+-- environment variables, which are added to the container at launch, or
+-- you can override the existing environment variables from the Docker
+-- image or the task definition. You must also specify a container name.
+--
+-- 'environmentFiles', 'ecsContainerOverride_environmentFiles' - A list of files containing the environment variables to pass to a
+-- container, instead of the value from the container definition.
+--
+-- 'memory', 'ecsContainerOverride_memory' - The hard limit (in MiB) of memory to present to the container, instead
+-- of the default value from the task definition. If your container
+-- attempts to exceed the memory specified here, the container is killed.
+-- You must also specify a container name.
+--
+-- 'memoryReservation', 'ecsContainerOverride_memoryReservation' - The soft limit (in MiB) of memory to reserve for the container, instead
+-- of the default value from the task definition. You must also specify a
+-- container name.
+--
+-- 'name', 'ecsContainerOverride_name' - The name of the container that receives the override. This parameter is
+-- required if any override is specified.
+--
+-- 'resourceRequirements', 'ecsContainerOverride_resourceRequirements' - The type and amount of a resource to assign to a container, instead of
+-- the default value from the task definition. The only supported resource
+-- is a GPU.
+newEcsContainerOverride ::
+  EcsContainerOverride
+newEcsContainerOverride =
+  EcsContainerOverride'
+    { command = Prelude.Nothing,
+      cpu = Prelude.Nothing,
+      environment = Prelude.Nothing,
+      environmentFiles = Prelude.Nothing,
+      memory = Prelude.Nothing,
+      memoryReservation = Prelude.Nothing,
+      name = Prelude.Nothing,
+      resourceRequirements = Prelude.Nothing
+    }
+
+-- | The command to send to the container that overrides the default command
+-- from the Docker image or the task definition. You must also specify a
+-- container name.
+ecsContainerOverride_command :: Lens.Lens' EcsContainerOverride (Prelude.Maybe [Prelude.Text])
+ecsContainerOverride_command = Lens.lens (\EcsContainerOverride' {command} -> command) (\s@EcsContainerOverride' {} a -> s {command = a} :: EcsContainerOverride) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of @cpu@ units reserved for the container, instead of the
+-- default value from the task definition. You must also specify a
+-- container name.
+ecsContainerOverride_cpu :: Lens.Lens' EcsContainerOverride (Prelude.Maybe Prelude.Int)
+ecsContainerOverride_cpu = Lens.lens (\EcsContainerOverride' {cpu} -> cpu) (\s@EcsContainerOverride' {} a -> s {cpu = a} :: EcsContainerOverride)
+
+-- | The environment variables to send to the container. You can add new
+-- environment variables, which are added to the container at launch, or
+-- you can override the existing environment variables from the Docker
+-- image or the task definition. You must also specify a container name.
+ecsContainerOverride_environment :: Lens.Lens' EcsContainerOverride (Prelude.Maybe [EcsEnvironmentVariable])
+ecsContainerOverride_environment = Lens.lens (\EcsContainerOverride' {environment} -> environment) (\s@EcsContainerOverride' {} a -> s {environment = a} :: EcsContainerOverride) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of files containing the environment variables to pass to a
+-- container, instead of the value from the container definition.
+ecsContainerOverride_environmentFiles :: Lens.Lens' EcsContainerOverride (Prelude.Maybe [EcsEnvironmentFile])
+ecsContainerOverride_environmentFiles = Lens.lens (\EcsContainerOverride' {environmentFiles} -> environmentFiles) (\s@EcsContainerOverride' {} a -> s {environmentFiles = a} :: EcsContainerOverride) Prelude.. Lens.mapping Lens.coerced
+
+-- | The hard limit (in MiB) of memory to present to the container, instead
+-- of the default value from the task definition. If your container
+-- attempts to exceed the memory specified here, the container is killed.
+-- You must also specify a container name.
+ecsContainerOverride_memory :: Lens.Lens' EcsContainerOverride (Prelude.Maybe Prelude.Int)
+ecsContainerOverride_memory = Lens.lens (\EcsContainerOverride' {memory} -> memory) (\s@EcsContainerOverride' {} a -> s {memory = a} :: EcsContainerOverride)
+
+-- | The soft limit (in MiB) of memory to reserve for the container, instead
+-- of the default value from the task definition. You must also specify a
+-- container name.
+ecsContainerOverride_memoryReservation :: Lens.Lens' EcsContainerOverride (Prelude.Maybe Prelude.Int)
+ecsContainerOverride_memoryReservation = Lens.lens (\EcsContainerOverride' {memoryReservation} -> memoryReservation) (\s@EcsContainerOverride' {} a -> s {memoryReservation = a} :: EcsContainerOverride)
+
+-- | The name of the container that receives the override. This parameter is
+-- required if any override is specified.
+ecsContainerOverride_name :: Lens.Lens' EcsContainerOverride (Prelude.Maybe Prelude.Text)
+ecsContainerOverride_name = Lens.lens (\EcsContainerOverride' {name} -> name) (\s@EcsContainerOverride' {} a -> s {name = a} :: EcsContainerOverride)
+
+-- | The type and amount of a resource to assign to a container, instead of
+-- the default value from the task definition. The only supported resource
+-- is a GPU.
+ecsContainerOverride_resourceRequirements :: Lens.Lens' EcsContainerOverride (Prelude.Maybe [EcsResourceRequirement])
+ecsContainerOverride_resourceRequirements = Lens.lens (\EcsContainerOverride' {resourceRequirements} -> resourceRequirements) (\s@EcsContainerOverride' {} a -> s {resourceRequirements = a} :: EcsContainerOverride) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON EcsContainerOverride where
+  parseJSON =
+    Data.withObject
+      "EcsContainerOverride"
+      ( \x ->
+          EcsContainerOverride'
+            Prelude.<$> (x Data..:? "Command" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Cpu")
+            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
+            Prelude.<*> ( x
+                            Data..:? "EnvironmentFiles"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Memory")
+            Prelude.<*> (x Data..:? "MemoryReservation")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> ( x
+                            Data..:? "ResourceRequirements"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable EcsContainerOverride where
+  hashWithSalt _salt EcsContainerOverride' {..} =
+    _salt
+      `Prelude.hashWithSalt` command
+      `Prelude.hashWithSalt` cpu
+      `Prelude.hashWithSalt` environment
+      `Prelude.hashWithSalt` environmentFiles
+      `Prelude.hashWithSalt` memory
+      `Prelude.hashWithSalt` memoryReservation
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` resourceRequirements
+
+instance Prelude.NFData EcsContainerOverride where
+  rnf EcsContainerOverride' {..} =
+    Prelude.rnf command
+      `Prelude.seq` Prelude.rnf cpu
+      `Prelude.seq` Prelude.rnf environment
+      `Prelude.seq` Prelude.rnf environmentFiles
+      `Prelude.seq` Prelude.rnf memory
+      `Prelude.seq` Prelude.rnf memoryReservation
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf resourceRequirements
+
+instance Data.ToJSON EcsContainerOverride where
+  toJSON EcsContainerOverride' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Command" Data..=) Prelude.<$> command,
+            ("Cpu" Data..=) Prelude.<$> cpu,
+            ("Environment" Data..=) Prelude.<$> environment,
+            ("EnvironmentFiles" Data..=)
+              Prelude.<$> environmentFiles,
+            ("Memory" Data..=) Prelude.<$> memory,
+            ("MemoryReservation" Data..=)
+              Prelude.<$> memoryReservation,
+            ("Name" Data..=) Prelude.<$> name,
+            ("ResourceRequirements" Data..=)
+              Prelude.<$> resourceRequirements
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/EcsEnvironmentFile.hs b/gen/Amazonka/Pipes/Types/EcsEnvironmentFile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsEnvironmentFile.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.Pipes.Types.EcsEnvironmentFile
+-- 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.Pipes.Types.EcsEnvironmentFile where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.EcsEnvironmentFileType
+import qualified Amazonka.Prelude as Prelude
+
+-- | A list of files containing the environment variables to pass to a
+-- container. You can specify up to ten environment files. The file must
+-- have a @.env@ file extension. Each line in an environment file should
+-- contain an environment variable in @VARIABLE=VALUE@ format. Lines
+-- beginning with @#@ are treated as comments and are ignored. For more
+-- information about the environment variable file syntax, see
+-- <https://docs.docker.com/compose/env-file/ Declare default environment variables in file>.
+--
+-- If there are environment variables specified using the @environment@
+-- parameter in a container definition, they take precedence over the
+-- variables contained within an environment file. If multiple environment
+-- files are specified that contain the same variable, they\'re processed
+-- from the top down. We recommend that you use unique variable names. For
+-- more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html Specifying environment variables>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+--
+-- This parameter is only supported for tasks hosted on Fargate using the
+-- following platform versions:
+--
+-- -   Linux platform version @1.4.0@ or later.
+--
+-- -   Windows platform version @1.0.0@ or later.
+--
+-- /See:/ 'newEcsEnvironmentFile' smart constructor.
+data EcsEnvironmentFile = EcsEnvironmentFile'
+  { -- | The file type to use. The only supported value is @s3@.
+    type' :: EcsEnvironmentFileType,
+    -- | The Amazon Resource Name (ARN) of the Amazon S3 object containing the
+    -- environment variable file.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EcsEnvironmentFile' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'type'', 'ecsEnvironmentFile_type' - The file type to use. The only supported value is @s3@.
+--
+-- 'value', 'ecsEnvironmentFile_value' - The Amazon Resource Name (ARN) of the Amazon S3 object containing the
+-- environment variable file.
+newEcsEnvironmentFile ::
+  -- | 'type''
+  EcsEnvironmentFileType ->
+  -- | 'value'
+  Prelude.Text ->
+  EcsEnvironmentFile
+newEcsEnvironmentFile pType_ pValue_ =
+  EcsEnvironmentFile'
+    { type' = pType_,
+      value = pValue_
+    }
+
+-- | The file type to use. The only supported value is @s3@.
+ecsEnvironmentFile_type :: Lens.Lens' EcsEnvironmentFile EcsEnvironmentFileType
+ecsEnvironmentFile_type = Lens.lens (\EcsEnvironmentFile' {type'} -> type') (\s@EcsEnvironmentFile' {} a -> s {type' = a} :: EcsEnvironmentFile)
+
+-- | The Amazon Resource Name (ARN) of the Amazon S3 object containing the
+-- environment variable file.
+ecsEnvironmentFile_value :: Lens.Lens' EcsEnvironmentFile Prelude.Text
+ecsEnvironmentFile_value = Lens.lens (\EcsEnvironmentFile' {value} -> value) (\s@EcsEnvironmentFile' {} a -> s {value = a} :: EcsEnvironmentFile)
+
+instance Data.FromJSON EcsEnvironmentFile where
+  parseJSON =
+    Data.withObject
+      "EcsEnvironmentFile"
+      ( \x ->
+          EcsEnvironmentFile'
+            Prelude.<$> (x Data..: "type")
+            Prelude.<*> (x Data..: "value")
+      )
+
+instance Prelude.Hashable EcsEnvironmentFile where
+  hashWithSalt _salt EcsEnvironmentFile' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData EcsEnvironmentFile where
+  rnf EcsEnvironmentFile' {..} =
+    Prelude.rnf type' `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON EcsEnvironmentFile where
+  toJSON EcsEnvironmentFile' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("type" Data..= type'),
+            Prelude.Just ("value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/EcsEnvironmentFileType.hs b/gen/Amazonka/Pipes/Types/EcsEnvironmentFileType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsEnvironmentFileType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.EcsEnvironmentFileType
+-- 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.Pipes.Types.EcsEnvironmentFileType
+  ( EcsEnvironmentFileType
+      ( ..,
+        EcsEnvironmentFileType_S3
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EcsEnvironmentFileType = EcsEnvironmentFileType'
+  { fromEcsEnvironmentFileType ::
+      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 EcsEnvironmentFileType_S3 :: EcsEnvironmentFileType
+pattern EcsEnvironmentFileType_S3 = EcsEnvironmentFileType' "s3"
+
+{-# COMPLETE
+  EcsEnvironmentFileType_S3,
+  EcsEnvironmentFileType'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/EcsEnvironmentVariable.hs b/gen/Amazonka/Pipes/Types/EcsEnvironmentVariable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsEnvironmentVariable.hs
@@ -0,0 +1,101 @@
+{-# 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.Pipes.Types.EcsEnvironmentVariable
+-- 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.Pipes.Types.EcsEnvironmentVariable where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The environment variables to send to the container. You can add new
+-- environment variables, which are added to the container at launch, or
+-- you can override the existing environment variables from the Docker
+-- image or the task definition. You must also specify a container name.
+--
+-- /See:/ 'newEcsEnvironmentVariable' smart constructor.
+data EcsEnvironmentVariable = EcsEnvironmentVariable'
+  { -- | The name of the key-value pair. For environment variables, this is the
+    -- name of the environment variable.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The value of the key-value pair. For environment variables, this is the
+    -- value of the environment variable.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EcsEnvironmentVariable' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'ecsEnvironmentVariable_name' - The name of the key-value pair. For environment variables, this is the
+-- name of the environment variable.
+--
+-- 'value', 'ecsEnvironmentVariable_value' - The value of the key-value pair. For environment variables, this is the
+-- value of the environment variable.
+newEcsEnvironmentVariable ::
+  EcsEnvironmentVariable
+newEcsEnvironmentVariable =
+  EcsEnvironmentVariable'
+    { name = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The name of the key-value pair. For environment variables, this is the
+-- name of the environment variable.
+ecsEnvironmentVariable_name :: Lens.Lens' EcsEnvironmentVariable (Prelude.Maybe Prelude.Text)
+ecsEnvironmentVariable_name = Lens.lens (\EcsEnvironmentVariable' {name} -> name) (\s@EcsEnvironmentVariable' {} a -> s {name = a} :: EcsEnvironmentVariable)
+
+-- | The value of the key-value pair. For environment variables, this is the
+-- value of the environment variable.
+ecsEnvironmentVariable_value :: Lens.Lens' EcsEnvironmentVariable (Prelude.Maybe Prelude.Text)
+ecsEnvironmentVariable_value = Lens.lens (\EcsEnvironmentVariable' {value} -> value) (\s@EcsEnvironmentVariable' {} a -> s {value = a} :: EcsEnvironmentVariable)
+
+instance Data.FromJSON EcsEnvironmentVariable where
+  parseJSON =
+    Data.withObject
+      "EcsEnvironmentVariable"
+      ( \x ->
+          EcsEnvironmentVariable'
+            Prelude.<$> (x Data..:? "name")
+            Prelude.<*> (x Data..:? "value")
+      )
+
+instance Prelude.Hashable EcsEnvironmentVariable where
+  hashWithSalt _salt EcsEnvironmentVariable' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData EcsEnvironmentVariable where
+  rnf EcsEnvironmentVariable' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON EcsEnvironmentVariable where
+  toJSON EcsEnvironmentVariable' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("name" Data..=) Prelude.<$> name,
+            ("value" Data..=) Prelude.<$> value
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/EcsEphemeralStorage.hs b/gen/Amazonka/Pipes/Types/EcsEphemeralStorage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsEphemeralStorage.hs
@@ -0,0 +1,92 @@
+{-# 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.Pipes.Types.EcsEphemeralStorage
+-- 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.Pipes.Types.EcsEphemeralStorage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The amount of ephemeral storage to allocate for the task. This parameter
+-- is used to expand the total amount of ephemeral storage available,
+-- beyond the default amount, for tasks hosted on Fargate. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/userguide/using_data_volumes.html Fargate task storage>
+-- in the /Amazon ECS User Guide for Fargate/.
+--
+-- This parameter is only supported for tasks hosted on Fargate using Linux
+-- platform version @1.4.0@ or later. This parameter is not supported for
+-- Windows containers on Fargate.
+--
+-- /See:/ 'newEcsEphemeralStorage' smart constructor.
+data EcsEphemeralStorage = EcsEphemeralStorage'
+  { -- | The total amount, in GiB, of ephemeral storage to set for the task. The
+    -- minimum supported value is @21@ GiB and the maximum supported value is
+    -- @200@ GiB.
+    sizeInGiB :: Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EcsEphemeralStorage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sizeInGiB', 'ecsEphemeralStorage_sizeInGiB' - The total amount, in GiB, of ephemeral storage to set for the task. The
+-- minimum supported value is @21@ GiB and the maximum supported value is
+-- @200@ GiB.
+newEcsEphemeralStorage ::
+  -- | 'sizeInGiB'
+  Prelude.Natural ->
+  EcsEphemeralStorage
+newEcsEphemeralStorage pSizeInGiB_ =
+  EcsEphemeralStorage' {sizeInGiB = pSizeInGiB_}
+
+-- | The total amount, in GiB, of ephemeral storage to set for the task. The
+-- minimum supported value is @21@ GiB and the maximum supported value is
+-- @200@ GiB.
+ecsEphemeralStorage_sizeInGiB :: Lens.Lens' EcsEphemeralStorage Prelude.Natural
+ecsEphemeralStorage_sizeInGiB = Lens.lens (\EcsEphemeralStorage' {sizeInGiB} -> sizeInGiB) (\s@EcsEphemeralStorage' {} a -> s {sizeInGiB = a} :: EcsEphemeralStorage)
+
+instance Data.FromJSON EcsEphemeralStorage where
+  parseJSON =
+    Data.withObject
+      "EcsEphemeralStorage"
+      ( \x ->
+          EcsEphemeralStorage'
+            Prelude.<$> (x Data..: "sizeInGiB")
+      )
+
+instance Prelude.Hashable EcsEphemeralStorage where
+  hashWithSalt _salt EcsEphemeralStorage' {..} =
+    _salt `Prelude.hashWithSalt` sizeInGiB
+
+instance Prelude.NFData EcsEphemeralStorage where
+  rnf EcsEphemeralStorage' {..} = Prelude.rnf sizeInGiB
+
+instance Data.ToJSON EcsEphemeralStorage where
+  toJSON EcsEphemeralStorage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("sizeInGiB" Data..= sizeInGiB)]
+      )
diff --git a/gen/Amazonka/Pipes/Types/EcsInferenceAcceleratorOverride.hs b/gen/Amazonka/Pipes/Types/EcsInferenceAcceleratorOverride.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsInferenceAcceleratorOverride.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.EcsInferenceAcceleratorOverride
+-- 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.Pipes.Types.EcsInferenceAcceleratorOverride 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
+
+-- | Details on an Elastic Inference accelerator task override. This
+-- parameter is used to override the Elastic Inference accelerator
+-- specified in the task definition. For more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/userguide/ecs-inference.html Working with Amazon Elastic Inference on Amazon ECS>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+--
+-- /See:/ 'newEcsInferenceAcceleratorOverride' smart constructor.
+data EcsInferenceAcceleratorOverride = EcsInferenceAcceleratorOverride'
+  { -- | The Elastic Inference accelerator device name to override for the task.
+    -- This parameter must match a @deviceName@ specified in the task
+    -- definition.
+    deviceName :: Prelude.Maybe Prelude.Text,
+    -- | The Elastic Inference accelerator type to use.
+    deviceType :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EcsInferenceAcceleratorOverride' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceName', 'ecsInferenceAcceleratorOverride_deviceName' - The Elastic Inference accelerator device name to override for the task.
+-- This parameter must match a @deviceName@ specified in the task
+-- definition.
+--
+-- 'deviceType', 'ecsInferenceAcceleratorOverride_deviceType' - The Elastic Inference accelerator type to use.
+newEcsInferenceAcceleratorOverride ::
+  EcsInferenceAcceleratorOverride
+newEcsInferenceAcceleratorOverride =
+  EcsInferenceAcceleratorOverride'
+    { deviceName =
+        Prelude.Nothing,
+      deviceType = Prelude.Nothing
+    }
+
+-- | The Elastic Inference accelerator device name to override for the task.
+-- This parameter must match a @deviceName@ specified in the task
+-- definition.
+ecsInferenceAcceleratorOverride_deviceName :: Lens.Lens' EcsInferenceAcceleratorOverride (Prelude.Maybe Prelude.Text)
+ecsInferenceAcceleratorOverride_deviceName = Lens.lens (\EcsInferenceAcceleratorOverride' {deviceName} -> deviceName) (\s@EcsInferenceAcceleratorOverride' {} a -> s {deviceName = a} :: EcsInferenceAcceleratorOverride)
+
+-- | The Elastic Inference accelerator type to use.
+ecsInferenceAcceleratorOverride_deviceType :: Lens.Lens' EcsInferenceAcceleratorOverride (Prelude.Maybe Prelude.Text)
+ecsInferenceAcceleratorOverride_deviceType = Lens.lens (\EcsInferenceAcceleratorOverride' {deviceType} -> deviceType) (\s@EcsInferenceAcceleratorOverride' {} a -> s {deviceType = a} :: EcsInferenceAcceleratorOverride)
+
+instance
+  Data.FromJSON
+    EcsInferenceAcceleratorOverride
+  where
+  parseJSON =
+    Data.withObject
+      "EcsInferenceAcceleratorOverride"
+      ( \x ->
+          EcsInferenceAcceleratorOverride'
+            Prelude.<$> (x Data..:? "deviceName")
+            Prelude.<*> (x Data..:? "deviceType")
+      )
+
+instance
+  Prelude.Hashable
+    EcsInferenceAcceleratorOverride
+  where
+  hashWithSalt
+    _salt
+    EcsInferenceAcceleratorOverride' {..} =
+      _salt
+        `Prelude.hashWithSalt` deviceName
+        `Prelude.hashWithSalt` deviceType
+
+instance
+  Prelude.NFData
+    EcsInferenceAcceleratorOverride
+  where
+  rnf EcsInferenceAcceleratorOverride' {..} =
+    Prelude.rnf deviceName
+      `Prelude.seq` Prelude.rnf deviceType
+
+instance Data.ToJSON EcsInferenceAcceleratorOverride where
+  toJSON EcsInferenceAcceleratorOverride' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("deviceName" Data..=) Prelude.<$> deviceName,
+            ("deviceType" Data..=) Prelude.<$> deviceType
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/EcsResourceRequirement.hs b/gen/Amazonka/Pipes/Types/EcsResourceRequirement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsResourceRequirement.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.EcsResourceRequirement
+-- 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.Pipes.Types.EcsResourceRequirement where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.EcsResourceRequirementType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The type and amount of a resource to assign to a container. The
+-- supported resource types are GPUs and Elastic Inference accelerators.
+-- For more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-gpu.html Working with GPUs on Amazon ECS>
+-- or
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html Working with Amazon Elastic Inference on Amazon ECS>
+-- in the /Amazon Elastic Container Service Developer Guide/
+--
+-- /See:/ 'newEcsResourceRequirement' smart constructor.
+data EcsResourceRequirement = EcsResourceRequirement'
+  { -- | The type of resource to assign to a container. The supported values are
+    -- @GPU@ or @InferenceAccelerator@.
+    type' :: EcsResourceRequirementType,
+    -- | The value for the specified resource type.
+    --
+    -- If the @GPU@ type is used, the value is the number of physical @GPUs@
+    -- the Amazon ECS container agent reserves for the container. The number of
+    -- GPUs that\'s reserved for all containers in a task can\'t exceed the
+    -- number of available GPUs on the container instance that the task is
+    -- launched on.
+    --
+    -- If the @InferenceAccelerator@ type is used, the @value@ matches the
+    -- @deviceName@ for an InferenceAccelerator specified in a task definition.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EcsResourceRequirement' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'type'', 'ecsResourceRequirement_type' - The type of resource to assign to a container. The supported values are
+-- @GPU@ or @InferenceAccelerator@.
+--
+-- 'value', 'ecsResourceRequirement_value' - The value for the specified resource type.
+--
+-- If the @GPU@ type is used, the value is the number of physical @GPUs@
+-- the Amazon ECS container agent reserves for the container. The number of
+-- GPUs that\'s reserved for all containers in a task can\'t exceed the
+-- number of available GPUs on the container instance that the task is
+-- launched on.
+--
+-- If the @InferenceAccelerator@ type is used, the @value@ matches the
+-- @deviceName@ for an InferenceAccelerator specified in a task definition.
+newEcsResourceRequirement ::
+  -- | 'type''
+  EcsResourceRequirementType ->
+  -- | 'value'
+  Prelude.Text ->
+  EcsResourceRequirement
+newEcsResourceRequirement pType_ pValue_ =
+  EcsResourceRequirement'
+    { type' = pType_,
+      value = pValue_
+    }
+
+-- | The type of resource to assign to a container. The supported values are
+-- @GPU@ or @InferenceAccelerator@.
+ecsResourceRequirement_type :: Lens.Lens' EcsResourceRequirement EcsResourceRequirementType
+ecsResourceRequirement_type = Lens.lens (\EcsResourceRequirement' {type'} -> type') (\s@EcsResourceRequirement' {} a -> s {type' = a} :: EcsResourceRequirement)
+
+-- | The value for the specified resource type.
+--
+-- If the @GPU@ type is used, the value is the number of physical @GPUs@
+-- the Amazon ECS container agent reserves for the container. The number of
+-- GPUs that\'s reserved for all containers in a task can\'t exceed the
+-- number of available GPUs on the container instance that the task is
+-- launched on.
+--
+-- If the @InferenceAccelerator@ type is used, the @value@ matches the
+-- @deviceName@ for an InferenceAccelerator specified in a task definition.
+ecsResourceRequirement_value :: Lens.Lens' EcsResourceRequirement Prelude.Text
+ecsResourceRequirement_value = Lens.lens (\EcsResourceRequirement' {value} -> value) (\s@EcsResourceRequirement' {} a -> s {value = a} :: EcsResourceRequirement)
+
+instance Data.FromJSON EcsResourceRequirement where
+  parseJSON =
+    Data.withObject
+      "EcsResourceRequirement"
+      ( \x ->
+          EcsResourceRequirement'
+            Prelude.<$> (x Data..: "type")
+            Prelude.<*> (x Data..: "value")
+      )
+
+instance Prelude.Hashable EcsResourceRequirement where
+  hashWithSalt _salt EcsResourceRequirement' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData EcsResourceRequirement where
+  rnf EcsResourceRequirement' {..} =
+    Prelude.rnf type' `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON EcsResourceRequirement where
+  toJSON EcsResourceRequirement' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("type" Data..= type'),
+            Prelude.Just ("value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/EcsResourceRequirementType.hs b/gen/Amazonka/Pipes/Types/EcsResourceRequirementType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsResourceRequirementType.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.Pipes.Types.EcsResourceRequirementType
+-- 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.Pipes.Types.EcsResourceRequirementType
+  ( EcsResourceRequirementType
+      ( ..,
+        EcsResourceRequirementType_GPU,
+        EcsResourceRequirementType_InferenceAccelerator
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EcsResourceRequirementType = EcsResourceRequirementType'
+  { fromEcsResourceRequirementType ::
+      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 EcsResourceRequirementType_GPU :: EcsResourceRequirementType
+pattern EcsResourceRequirementType_GPU = EcsResourceRequirementType' "GPU"
+
+pattern EcsResourceRequirementType_InferenceAccelerator :: EcsResourceRequirementType
+pattern EcsResourceRequirementType_InferenceAccelerator = EcsResourceRequirementType' "InferenceAccelerator"
+
+{-# COMPLETE
+  EcsResourceRequirementType_GPU,
+  EcsResourceRequirementType_InferenceAccelerator,
+  EcsResourceRequirementType'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/EcsTaskOverride.hs b/gen/Amazonka/Pipes/Types/EcsTaskOverride.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/EcsTaskOverride.hs
@@ -0,0 +1,214 @@
+{-# 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.Pipes.Types.EcsTaskOverride
+-- 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.Pipes.Types.EcsTaskOverride where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.EcsContainerOverride
+import Amazonka.Pipes.Types.EcsEphemeralStorage
+import Amazonka.Pipes.Types.EcsInferenceAcceleratorOverride
+import qualified Amazonka.Prelude as Prelude
+
+-- | The overrides that are associated with a task.
+--
+-- /See:/ 'newEcsTaskOverride' smart constructor.
+data EcsTaskOverride = EcsTaskOverride'
+  { -- | One or more container overrides that are sent to a task.
+    containerOverrides :: Prelude.Maybe [EcsContainerOverride],
+    -- | The cpu override for the task.
+    cpu :: Prelude.Maybe Prelude.Text,
+    -- | The ephemeral storage setting override for the task.
+    --
+    -- This parameter is only supported for tasks hosted on Fargate that use
+    -- the following platform versions:
+    --
+    -- -   Linux platform version @1.4.0@ or later.
+    --
+    -- -   Windows platform version @1.0.0@ or later.
+    ephemeralStorage :: Prelude.Maybe EcsEphemeralStorage,
+    -- | The Amazon Resource Name (ARN) of the task execution IAM role override
+    -- for the task. For more information, see
+    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html Amazon ECS task execution IAM role>
+    -- in the /Amazon Elastic Container Service Developer Guide/.
+    executionRoleArn :: Prelude.Maybe Prelude.Text,
+    -- | The Elastic Inference accelerator override for the task.
+    inferenceAcceleratorOverrides :: Prelude.Maybe [EcsInferenceAcceleratorOverride],
+    -- | The memory override for the task.
+    memory :: Prelude.Maybe Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the IAM role that containers in this
+    -- task can assume. All containers in this task are granted the permissions
+    -- that are specified in this role. For more information, see
+    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html IAM Role for Tasks>
+    -- in the /Amazon Elastic Container Service Developer Guide/.
+    taskRoleArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EcsTaskOverride' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'containerOverrides', 'ecsTaskOverride_containerOverrides' - One or more container overrides that are sent to a task.
+--
+-- 'cpu', 'ecsTaskOverride_cpu' - The cpu override for the task.
+--
+-- 'ephemeralStorage', 'ecsTaskOverride_ephemeralStorage' - The ephemeral storage setting override for the task.
+--
+-- This parameter is only supported for tasks hosted on Fargate that use
+-- the following platform versions:
+--
+-- -   Linux platform version @1.4.0@ or later.
+--
+-- -   Windows platform version @1.0.0@ or later.
+--
+-- 'executionRoleArn', 'ecsTaskOverride_executionRoleArn' - The Amazon Resource Name (ARN) of the task execution IAM role override
+-- for the task. For more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html Amazon ECS task execution IAM role>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+--
+-- 'inferenceAcceleratorOverrides', 'ecsTaskOverride_inferenceAcceleratorOverrides' - The Elastic Inference accelerator override for the task.
+--
+-- 'memory', 'ecsTaskOverride_memory' - The memory override for the task.
+--
+-- 'taskRoleArn', 'ecsTaskOverride_taskRoleArn' - The Amazon Resource Name (ARN) of the IAM role that containers in this
+-- task can assume. All containers in this task are granted the permissions
+-- that are specified in this role. For more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html IAM Role for Tasks>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+newEcsTaskOverride ::
+  EcsTaskOverride
+newEcsTaskOverride =
+  EcsTaskOverride'
+    { containerOverrides =
+        Prelude.Nothing,
+      cpu = Prelude.Nothing,
+      ephemeralStorage = Prelude.Nothing,
+      executionRoleArn = Prelude.Nothing,
+      inferenceAcceleratorOverrides = Prelude.Nothing,
+      memory = Prelude.Nothing,
+      taskRoleArn = Prelude.Nothing
+    }
+
+-- | One or more container overrides that are sent to a task.
+ecsTaskOverride_containerOverrides :: Lens.Lens' EcsTaskOverride (Prelude.Maybe [EcsContainerOverride])
+ecsTaskOverride_containerOverrides = Lens.lens (\EcsTaskOverride' {containerOverrides} -> containerOverrides) (\s@EcsTaskOverride' {} a -> s {containerOverrides = a} :: EcsTaskOverride) Prelude.. Lens.mapping Lens.coerced
+
+-- | The cpu override for the task.
+ecsTaskOverride_cpu :: Lens.Lens' EcsTaskOverride (Prelude.Maybe Prelude.Text)
+ecsTaskOverride_cpu = Lens.lens (\EcsTaskOverride' {cpu} -> cpu) (\s@EcsTaskOverride' {} a -> s {cpu = a} :: EcsTaskOverride)
+
+-- | The ephemeral storage setting override for the task.
+--
+-- This parameter is only supported for tasks hosted on Fargate that use
+-- the following platform versions:
+--
+-- -   Linux platform version @1.4.0@ or later.
+--
+-- -   Windows platform version @1.0.0@ or later.
+ecsTaskOverride_ephemeralStorage :: Lens.Lens' EcsTaskOverride (Prelude.Maybe EcsEphemeralStorage)
+ecsTaskOverride_ephemeralStorage = Lens.lens (\EcsTaskOverride' {ephemeralStorage} -> ephemeralStorage) (\s@EcsTaskOverride' {} a -> s {ephemeralStorage = a} :: EcsTaskOverride)
+
+-- | The Amazon Resource Name (ARN) of the task execution IAM role override
+-- for the task. For more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html Amazon ECS task execution IAM role>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+ecsTaskOverride_executionRoleArn :: Lens.Lens' EcsTaskOverride (Prelude.Maybe Prelude.Text)
+ecsTaskOverride_executionRoleArn = Lens.lens (\EcsTaskOverride' {executionRoleArn} -> executionRoleArn) (\s@EcsTaskOverride' {} a -> s {executionRoleArn = a} :: EcsTaskOverride)
+
+-- | The Elastic Inference accelerator override for the task.
+ecsTaskOverride_inferenceAcceleratorOverrides :: Lens.Lens' EcsTaskOverride (Prelude.Maybe [EcsInferenceAcceleratorOverride])
+ecsTaskOverride_inferenceAcceleratorOverrides = Lens.lens (\EcsTaskOverride' {inferenceAcceleratorOverrides} -> inferenceAcceleratorOverrides) (\s@EcsTaskOverride' {} a -> s {inferenceAcceleratorOverrides = a} :: EcsTaskOverride) Prelude.. Lens.mapping Lens.coerced
+
+-- | The memory override for the task.
+ecsTaskOverride_memory :: Lens.Lens' EcsTaskOverride (Prelude.Maybe Prelude.Text)
+ecsTaskOverride_memory = Lens.lens (\EcsTaskOverride' {memory} -> memory) (\s@EcsTaskOverride' {} a -> s {memory = a} :: EcsTaskOverride)
+
+-- | The Amazon Resource Name (ARN) of the IAM role that containers in this
+-- task can assume. All containers in this task are granted the permissions
+-- that are specified in this role. For more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html IAM Role for Tasks>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+ecsTaskOverride_taskRoleArn :: Lens.Lens' EcsTaskOverride (Prelude.Maybe Prelude.Text)
+ecsTaskOverride_taskRoleArn = Lens.lens (\EcsTaskOverride' {taskRoleArn} -> taskRoleArn) (\s@EcsTaskOverride' {} a -> s {taskRoleArn = a} :: EcsTaskOverride)
+
+instance Data.FromJSON EcsTaskOverride where
+  parseJSON =
+    Data.withObject
+      "EcsTaskOverride"
+      ( \x ->
+          EcsTaskOverride'
+            Prelude.<$> ( x
+                            Data..:? "ContainerOverrides"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Cpu")
+            Prelude.<*> (x Data..:? "EphemeralStorage")
+            Prelude.<*> (x Data..:? "ExecutionRoleArn")
+            Prelude.<*> ( x
+                            Data..:? "InferenceAcceleratorOverrides"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "Memory")
+            Prelude.<*> (x Data..:? "TaskRoleArn")
+      )
+
+instance Prelude.Hashable EcsTaskOverride where
+  hashWithSalt _salt EcsTaskOverride' {..} =
+    _salt
+      `Prelude.hashWithSalt` containerOverrides
+      `Prelude.hashWithSalt` cpu
+      `Prelude.hashWithSalt` ephemeralStorage
+      `Prelude.hashWithSalt` executionRoleArn
+      `Prelude.hashWithSalt` inferenceAcceleratorOverrides
+      `Prelude.hashWithSalt` memory
+      `Prelude.hashWithSalt` taskRoleArn
+
+instance Prelude.NFData EcsTaskOverride where
+  rnf EcsTaskOverride' {..} =
+    Prelude.rnf containerOverrides
+      `Prelude.seq` Prelude.rnf cpu
+      `Prelude.seq` Prelude.rnf ephemeralStorage
+      `Prelude.seq` Prelude.rnf executionRoleArn
+      `Prelude.seq` Prelude.rnf inferenceAcceleratorOverrides
+      `Prelude.seq` Prelude.rnf memory
+      `Prelude.seq` Prelude.rnf taskRoleArn
+
+instance Data.ToJSON EcsTaskOverride where
+  toJSON EcsTaskOverride' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContainerOverrides" Data..=)
+              Prelude.<$> containerOverrides,
+            ("Cpu" Data..=) Prelude.<$> cpu,
+            ("EphemeralStorage" Data..=)
+              Prelude.<$> ephemeralStorage,
+            ("ExecutionRoleArn" Data..=)
+              Prelude.<$> executionRoleArn,
+            ("InferenceAcceleratorOverrides" Data..=)
+              Prelude.<$> inferenceAcceleratorOverrides,
+            ("Memory" Data..=) Prelude.<$> memory,
+            ("TaskRoleArn" Data..=) Prelude.<$> taskRoleArn
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/Filter.hs b/gen/Amazonka/Pipes/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/Filter.hs
@@ -0,0 +1,73 @@
+{-# 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.Pipes.Types.Filter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Pipes.Types.Filter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Filter events using an event pattern. For more information, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html Events and Event Patterns>
+-- in the /Amazon EventBridge User Guide/.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | The event pattern.
+    pattern' :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Filter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pattern'', 'filter_pattern' - The event pattern.
+newFilter ::
+  Filter
+newFilter = Filter' {pattern' = Prelude.Nothing}
+
+-- | The event pattern.
+filter_pattern :: Lens.Lens' Filter (Prelude.Maybe Prelude.Text)
+filter_pattern = Lens.lens (\Filter' {pattern'} -> pattern') (\s@Filter' {} a -> s {pattern' = a} :: Filter) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON Filter where
+  parseJSON =
+    Data.withObject
+      "Filter"
+      (\x -> Filter' Prelude.<$> (x Data..:? "Pattern"))
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt `Prelude.hashWithSalt` pattern'
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} = Prelude.rnf pattern'
+
+instance Data.ToJSON Filter where
+  toJSON Filter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Pattern" Data..=) Prelude.<$> pattern']
+      )
diff --git a/gen/Amazonka/Pipes/Types/FilterCriteria.hs b/gen/Amazonka/Pipes/Types/FilterCriteria.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/FilterCriteria.hs
@@ -0,0 +1,79 @@
+{-# 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.Pipes.Types.FilterCriteria
+-- 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.Pipes.Types.FilterCriteria where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.Filter
+import qualified Amazonka.Prelude as Prelude
+
+-- | The collection of event patterns used to filter events. For more
+-- information, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html Events and Event Patterns>
+-- in the /Amazon EventBridge User Guide/.
+--
+-- /See:/ 'newFilterCriteria' smart constructor.
+data FilterCriteria = FilterCriteria'
+  { -- | The event patterns.
+    filters :: Prelude.Maybe [Filter]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FilterCriteria' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'filterCriteria_filters' - The event patterns.
+newFilterCriteria ::
+  FilterCriteria
+newFilterCriteria =
+  FilterCriteria' {filters = Prelude.Nothing}
+
+-- | The event patterns.
+filterCriteria_filters :: Lens.Lens' FilterCriteria (Prelude.Maybe [Filter])
+filterCriteria_filters = Lens.lens (\FilterCriteria' {filters} -> filters) (\s@FilterCriteria' {} a -> s {filters = a} :: FilterCriteria) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON FilterCriteria where
+  parseJSON =
+    Data.withObject
+      "FilterCriteria"
+      ( \x ->
+          FilterCriteria'
+            Prelude.<$> (x Data..:? "Filters" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable FilterCriteria where
+  hashWithSalt _salt FilterCriteria' {..} =
+    _salt `Prelude.hashWithSalt` filters
+
+instance Prelude.NFData FilterCriteria where
+  rnf FilterCriteria' {..} = Prelude.rnf filters
+
+instance Data.ToJSON FilterCriteria where
+  toJSON FilterCriteria' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("Filters" Data..=) Prelude.<$> filters]
+      )
diff --git a/gen/Amazonka/Pipes/Types/KinesisStreamStartPosition.hs b/gen/Amazonka/Pipes/Types/KinesisStreamStartPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/KinesisStreamStartPosition.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.Pipes.Types.KinesisStreamStartPosition
+-- 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.Pipes.Types.KinesisStreamStartPosition
+  ( KinesisStreamStartPosition
+      ( ..,
+        KinesisStreamStartPosition_AT_TIMESTAMP,
+        KinesisStreamStartPosition_LATEST,
+        KinesisStreamStartPosition_TRIM_HORIZON
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype KinesisStreamStartPosition = KinesisStreamStartPosition'
+  { fromKinesisStreamStartPosition ::
+      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 KinesisStreamStartPosition_AT_TIMESTAMP :: KinesisStreamStartPosition
+pattern KinesisStreamStartPosition_AT_TIMESTAMP = KinesisStreamStartPosition' "AT_TIMESTAMP"
+
+pattern KinesisStreamStartPosition_LATEST :: KinesisStreamStartPosition
+pattern KinesisStreamStartPosition_LATEST = KinesisStreamStartPosition' "LATEST"
+
+pattern KinesisStreamStartPosition_TRIM_HORIZON :: KinesisStreamStartPosition
+pattern KinesisStreamStartPosition_TRIM_HORIZON = KinesisStreamStartPosition' "TRIM_HORIZON"
+
+{-# COMPLETE
+  KinesisStreamStartPosition_AT_TIMESTAMP,
+  KinesisStreamStartPosition_LATEST,
+  KinesisStreamStartPosition_TRIM_HORIZON,
+  KinesisStreamStartPosition'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/LaunchType.hs b/gen/Amazonka/Pipes/Types/LaunchType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/LaunchType.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.Pipes.Types.LaunchType
+-- 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.Pipes.Types.LaunchType
+  ( LaunchType
+      ( ..,
+        LaunchType_EC2,
+        LaunchType_EXTERNAL,
+        LaunchType_FARGATE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LaunchType = LaunchType'
+  { fromLaunchType ::
+      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 LaunchType_EC2 :: LaunchType
+pattern LaunchType_EC2 = LaunchType' "EC2"
+
+pattern LaunchType_EXTERNAL :: LaunchType
+pattern LaunchType_EXTERNAL = LaunchType' "EXTERNAL"
+
+pattern LaunchType_FARGATE :: LaunchType
+pattern LaunchType_FARGATE = LaunchType' "FARGATE"
+
+{-# COMPLETE
+  LaunchType_EC2,
+  LaunchType_EXTERNAL,
+  LaunchType_FARGATE,
+  LaunchType'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/MQBrokerAccessCredentials.hs b/gen/Amazonka/Pipes/Types/MQBrokerAccessCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/MQBrokerAccessCredentials.hs
@@ -0,0 +1,79 @@
+{-# 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.Pipes.Types.MQBrokerAccessCredentials
+-- 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.Pipes.Types.MQBrokerAccessCredentials where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Secrets Manager secret that stores your broker credentials.
+--
+-- /See:/ 'newMQBrokerAccessCredentials' smart constructor.
+data MQBrokerAccessCredentials = MQBrokerAccessCredentials'
+  { -- | The ARN of the Secrets Manager secret.
+    basicAuth :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MQBrokerAccessCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'basicAuth', 'mQBrokerAccessCredentials_basicAuth' - The ARN of the Secrets Manager secret.
+newMQBrokerAccessCredentials ::
+  MQBrokerAccessCredentials
+newMQBrokerAccessCredentials =
+  MQBrokerAccessCredentials'
+    { basicAuth =
+        Prelude.Nothing
+    }
+
+-- | The ARN of the Secrets Manager secret.
+mQBrokerAccessCredentials_basicAuth :: Lens.Lens' MQBrokerAccessCredentials (Prelude.Maybe Prelude.Text)
+mQBrokerAccessCredentials_basicAuth = Lens.lens (\MQBrokerAccessCredentials' {basicAuth} -> basicAuth) (\s@MQBrokerAccessCredentials' {} a -> s {basicAuth = a} :: MQBrokerAccessCredentials)
+
+instance Data.FromJSON MQBrokerAccessCredentials where
+  parseJSON =
+    Data.withObject
+      "MQBrokerAccessCredentials"
+      ( \x ->
+          MQBrokerAccessCredentials'
+            Prelude.<$> (x Data..:? "BasicAuth")
+      )
+
+instance Prelude.Hashable MQBrokerAccessCredentials where
+  hashWithSalt _salt MQBrokerAccessCredentials' {..} =
+    _salt `Prelude.hashWithSalt` basicAuth
+
+instance Prelude.NFData MQBrokerAccessCredentials where
+  rnf MQBrokerAccessCredentials' {..} =
+    Prelude.rnf basicAuth
+
+instance Data.ToJSON MQBrokerAccessCredentials where
+  toJSON MQBrokerAccessCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("BasicAuth" Data..=) Prelude.<$> basicAuth]
+      )
diff --git a/gen/Amazonka/Pipes/Types/MSKAccessCredentials.hs b/gen/Amazonka/Pipes/Types/MSKAccessCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/MSKAccessCredentials.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.Pipes.Types.MSKAccessCredentials
+-- 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.Pipes.Types.MSKAccessCredentials where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Secrets Manager secret that stores your stream credentials.
+--
+-- /See:/ 'newMSKAccessCredentials' smart constructor.
+data MSKAccessCredentials = MSKAccessCredentials'
+  { -- | The ARN of the Secrets Manager secret.
+    clientCertificateTlsAuth :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the Secrets Manager secret.
+    saslScram512Auth :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MSKAccessCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientCertificateTlsAuth', 'mSKAccessCredentials_clientCertificateTlsAuth' - The ARN of the Secrets Manager secret.
+--
+-- 'saslScram512Auth', 'mSKAccessCredentials_saslScram512Auth' - The ARN of the Secrets Manager secret.
+newMSKAccessCredentials ::
+  MSKAccessCredentials
+newMSKAccessCredentials =
+  MSKAccessCredentials'
+    { clientCertificateTlsAuth =
+        Prelude.Nothing,
+      saslScram512Auth = Prelude.Nothing
+    }
+
+-- | The ARN of the Secrets Manager secret.
+mSKAccessCredentials_clientCertificateTlsAuth :: Lens.Lens' MSKAccessCredentials (Prelude.Maybe Prelude.Text)
+mSKAccessCredentials_clientCertificateTlsAuth = Lens.lens (\MSKAccessCredentials' {clientCertificateTlsAuth} -> clientCertificateTlsAuth) (\s@MSKAccessCredentials' {} a -> s {clientCertificateTlsAuth = a} :: MSKAccessCredentials)
+
+-- | The ARN of the Secrets Manager secret.
+mSKAccessCredentials_saslScram512Auth :: Lens.Lens' MSKAccessCredentials (Prelude.Maybe Prelude.Text)
+mSKAccessCredentials_saslScram512Auth = Lens.lens (\MSKAccessCredentials' {saslScram512Auth} -> saslScram512Auth) (\s@MSKAccessCredentials' {} a -> s {saslScram512Auth = a} :: MSKAccessCredentials)
+
+instance Data.FromJSON MSKAccessCredentials where
+  parseJSON =
+    Data.withObject
+      "MSKAccessCredentials"
+      ( \x ->
+          MSKAccessCredentials'
+            Prelude.<$> (x Data..:? "ClientCertificateTlsAuth")
+            Prelude.<*> (x Data..:? "SaslScram512Auth")
+      )
+
+instance Prelude.Hashable MSKAccessCredentials where
+  hashWithSalt _salt MSKAccessCredentials' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientCertificateTlsAuth
+      `Prelude.hashWithSalt` saslScram512Auth
+
+instance Prelude.NFData MSKAccessCredentials where
+  rnf MSKAccessCredentials' {..} =
+    Prelude.rnf clientCertificateTlsAuth
+      `Prelude.seq` Prelude.rnf saslScram512Auth
+
+instance Data.ToJSON MSKAccessCredentials where
+  toJSON MSKAccessCredentials' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientCertificateTlsAuth" Data..=)
+              Prelude.<$> clientCertificateTlsAuth,
+            ("SaslScram512Auth" Data..=)
+              Prelude.<$> saslScram512Auth
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/MSKStartPosition.hs b/gen/Amazonka/Pipes/Types/MSKStartPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/MSKStartPosition.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.Pipes.Types.MSKStartPosition
+-- 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.Pipes.Types.MSKStartPosition
+  ( MSKStartPosition
+      ( ..,
+        MSKStartPosition_LATEST,
+        MSKStartPosition_TRIM_HORIZON
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MSKStartPosition = MSKStartPosition'
+  { fromMSKStartPosition ::
+      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 MSKStartPosition_LATEST :: MSKStartPosition
+pattern MSKStartPosition_LATEST = MSKStartPosition' "LATEST"
+
+pattern MSKStartPosition_TRIM_HORIZON :: MSKStartPosition
+pattern MSKStartPosition_TRIM_HORIZON = MSKStartPosition' "TRIM_HORIZON"
+
+{-# COMPLETE
+  MSKStartPosition_LATEST,
+  MSKStartPosition_TRIM_HORIZON,
+  MSKStartPosition'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/NetworkConfiguration.hs b/gen/Amazonka/Pipes/Types/NetworkConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/NetworkConfiguration.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.Pipes.Types.NetworkConfiguration
+-- 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.Pipes.Types.NetworkConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.AwsVpcConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | This structure specifies the network configuration for an Amazon ECS
+-- task.
+--
+-- /See:/ 'newNetworkConfiguration' smart constructor.
+data NetworkConfiguration = NetworkConfiguration'
+  { -- | Use this structure to specify the VPC subnets and security groups for
+    -- the task, and whether a public IP address is to be used. This structure
+    -- is relevant only for ECS tasks that use the @awsvpc@ network mode.
+    awsvpcConfiguration :: Prelude.Maybe AwsVpcConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NetworkConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'awsvpcConfiguration', 'networkConfiguration_awsvpcConfiguration' - Use this structure to specify the VPC subnets and security groups for
+-- the task, and whether a public IP address is to be used. This structure
+-- is relevant only for ECS tasks that use the @awsvpc@ network mode.
+newNetworkConfiguration ::
+  NetworkConfiguration
+newNetworkConfiguration =
+  NetworkConfiguration'
+    { awsvpcConfiguration =
+        Prelude.Nothing
+    }
+
+-- | Use this structure to specify the VPC subnets and security groups for
+-- the task, and whether a public IP address is to be used. This structure
+-- is relevant only for ECS tasks that use the @awsvpc@ network mode.
+networkConfiguration_awsvpcConfiguration :: Lens.Lens' NetworkConfiguration (Prelude.Maybe AwsVpcConfiguration)
+networkConfiguration_awsvpcConfiguration = Lens.lens (\NetworkConfiguration' {awsvpcConfiguration} -> awsvpcConfiguration) (\s@NetworkConfiguration' {} a -> s {awsvpcConfiguration = a} :: NetworkConfiguration)
+
+instance Data.FromJSON NetworkConfiguration where
+  parseJSON =
+    Data.withObject
+      "NetworkConfiguration"
+      ( \x ->
+          NetworkConfiguration'
+            Prelude.<$> (x Data..:? "awsvpcConfiguration")
+      )
+
+instance Prelude.Hashable NetworkConfiguration where
+  hashWithSalt _salt NetworkConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` awsvpcConfiguration
+
+instance Prelude.NFData NetworkConfiguration where
+  rnf NetworkConfiguration' {..} =
+    Prelude.rnf awsvpcConfiguration
+
+instance Data.ToJSON NetworkConfiguration where
+  toJSON NetworkConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("awsvpcConfiguration" Data..=)
+              Prelude.<$> awsvpcConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/OnPartialBatchItemFailureStreams.hs b/gen/Amazonka/Pipes/Types/OnPartialBatchItemFailureStreams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/OnPartialBatchItemFailureStreams.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.OnPartialBatchItemFailureStreams
+-- 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.Pipes.Types.OnPartialBatchItemFailureStreams
+  ( OnPartialBatchItemFailureStreams
+      ( ..,
+        OnPartialBatchItemFailureStreams_AUTOMATIC_BISECT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OnPartialBatchItemFailureStreams = OnPartialBatchItemFailureStreams'
+  { fromOnPartialBatchItemFailureStreams ::
+      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 OnPartialBatchItemFailureStreams_AUTOMATIC_BISECT :: OnPartialBatchItemFailureStreams
+pattern OnPartialBatchItemFailureStreams_AUTOMATIC_BISECT = OnPartialBatchItemFailureStreams' "AUTOMATIC_BISECT"
+
+{-# COMPLETE
+  OnPartialBatchItemFailureStreams_AUTOMATIC_BISECT,
+  OnPartialBatchItemFailureStreams'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/Pipe.hs b/gen/Amazonka/Pipes/Types/Pipe.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/Pipe.hs
@@ -0,0 +1,190 @@
+{-# 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.Pipes.Types.Pipe
+-- 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.Pipes.Types.Pipe where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.PipeState
+import Amazonka.Pipes.Types.RequestedPipeState
+import qualified Amazonka.Prelude as Prelude
+
+-- | An object that represents a pipe. Amazon EventBridgePipes connect event
+-- sources to targets and reduces the need for specialized knowledge and
+-- integration code.
+--
+-- /See:/ 'newPipe' smart constructor.
+data Pipe = Pipe'
+  { -- | The ARN of the pipe.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time the pipe was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The state the pipe is in.
+    currentState :: Prelude.Maybe PipeState,
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeState,
+    -- | The ARN of the enrichment resource.
+    enrichment :: Prelude.Maybe Prelude.Text,
+    -- | When the pipe was last updated, in
+    -- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+    -- (YYYY-MM-DDThh:mm:ss.sTZD).
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the pipe.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the source resource.
+    source :: Prelude.Maybe Prelude.Text,
+    -- | The reason the pipe is in its current state.
+    stateReason :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the target resource.
+    target :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Pipe' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'pipe_arn' - The ARN of the pipe.
+--
+-- 'creationTime', 'pipe_creationTime' - The time the pipe was created.
+--
+-- 'currentState', 'pipe_currentState' - The state the pipe is in.
+--
+-- 'desiredState', 'pipe_desiredState' - The state the pipe should be in.
+--
+-- 'enrichment', 'pipe_enrichment' - The ARN of the enrichment resource.
+--
+-- 'lastModifiedTime', 'pipe_lastModifiedTime' - When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+--
+-- 'name', 'pipe_name' - The name of the pipe.
+--
+-- 'source', 'pipe_source' - The ARN of the source resource.
+--
+-- 'stateReason', 'pipe_stateReason' - The reason the pipe is in its current state.
+--
+-- 'target', 'pipe_target' - The ARN of the target resource.
+newPipe ::
+  Pipe
+newPipe =
+  Pipe'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currentState = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      enrichment = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      source = Prelude.Nothing,
+      stateReason = Prelude.Nothing,
+      target = Prelude.Nothing
+    }
+
+-- | The ARN of the pipe.
+pipe_arn :: Lens.Lens' Pipe (Prelude.Maybe Prelude.Text)
+pipe_arn = Lens.lens (\Pipe' {arn} -> arn) (\s@Pipe' {} a -> s {arn = a} :: Pipe)
+
+-- | The time the pipe was created.
+pipe_creationTime :: Lens.Lens' Pipe (Prelude.Maybe Prelude.UTCTime)
+pipe_creationTime = Lens.lens (\Pipe' {creationTime} -> creationTime) (\s@Pipe' {} a -> s {creationTime = a} :: Pipe) Prelude.. Lens.mapping Data._Time
+
+-- | The state the pipe is in.
+pipe_currentState :: Lens.Lens' Pipe (Prelude.Maybe PipeState)
+pipe_currentState = Lens.lens (\Pipe' {currentState} -> currentState) (\s@Pipe' {} a -> s {currentState = a} :: Pipe)
+
+-- | The state the pipe should be in.
+pipe_desiredState :: Lens.Lens' Pipe (Prelude.Maybe RequestedPipeState)
+pipe_desiredState = Lens.lens (\Pipe' {desiredState} -> desiredState) (\s@Pipe' {} a -> s {desiredState = a} :: Pipe)
+
+-- | The ARN of the enrichment resource.
+pipe_enrichment :: Lens.Lens' Pipe (Prelude.Maybe Prelude.Text)
+pipe_enrichment = Lens.lens (\Pipe' {enrichment} -> enrichment) (\s@Pipe' {} a -> s {enrichment = a} :: Pipe)
+
+-- | When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+pipe_lastModifiedTime :: Lens.Lens' Pipe (Prelude.Maybe Prelude.UTCTime)
+pipe_lastModifiedTime = Lens.lens (\Pipe' {lastModifiedTime} -> lastModifiedTime) (\s@Pipe' {} a -> s {lastModifiedTime = a} :: Pipe) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the pipe.
+pipe_name :: Lens.Lens' Pipe (Prelude.Maybe Prelude.Text)
+pipe_name = Lens.lens (\Pipe' {name} -> name) (\s@Pipe' {} a -> s {name = a} :: Pipe)
+
+-- | The ARN of the source resource.
+pipe_source :: Lens.Lens' Pipe (Prelude.Maybe Prelude.Text)
+pipe_source = Lens.lens (\Pipe' {source} -> source) (\s@Pipe' {} a -> s {source = a} :: Pipe)
+
+-- | The reason the pipe is in its current state.
+pipe_stateReason :: Lens.Lens' Pipe (Prelude.Maybe Prelude.Text)
+pipe_stateReason = Lens.lens (\Pipe' {stateReason} -> stateReason) (\s@Pipe' {} a -> s {stateReason = a} :: Pipe)
+
+-- | The ARN of the target resource.
+pipe_target :: Lens.Lens' Pipe (Prelude.Maybe Prelude.Text)
+pipe_target = Lens.lens (\Pipe' {target} -> target) (\s@Pipe' {} a -> s {target = a} :: Pipe)
+
+instance Data.FromJSON Pipe where
+  parseJSON =
+    Data.withObject
+      "Pipe"
+      ( \x ->
+          Pipe'
+            Prelude.<$> (x Data..:? "Arn")
+            Prelude.<*> (x Data..:? "CreationTime")
+            Prelude.<*> (x Data..:? "CurrentState")
+            Prelude.<*> (x Data..:? "DesiredState")
+            Prelude.<*> (x Data..:? "Enrichment")
+            Prelude.<*> (x Data..:? "LastModifiedTime")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Source")
+            Prelude.<*> (x Data..:? "StateReason")
+            Prelude.<*> (x Data..:? "Target")
+      )
+
+instance Prelude.Hashable Pipe where
+  hashWithSalt _salt Pipe' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` creationTime
+      `Prelude.hashWithSalt` currentState
+      `Prelude.hashWithSalt` desiredState
+      `Prelude.hashWithSalt` enrichment
+      `Prelude.hashWithSalt` lastModifiedTime
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` stateReason
+      `Prelude.hashWithSalt` target
+
+instance Prelude.NFData Pipe where
+  rnf Pipe' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currentState
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf enrichment
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf stateReason
+      `Prelude.seq` Prelude.rnf target
diff --git a/gen/Amazonka/Pipes/Types/PipeEnrichmentHttpParameters.hs b/gen/Amazonka/Pipes/Types/PipeEnrichmentHttpParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeEnrichmentHttpParameters.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.PipeEnrichmentHttpParameters
+-- 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.Pipes.Types.PipeEnrichmentHttpParameters 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
+
+-- | These are custom parameter to be used when the target is an API Gateway
+-- REST APIs or EventBridge ApiDestinations. In the latter case, these are
+-- merged with any InvocationParameters specified on the Connection, with
+-- any values from the Connection taking precedence.
+--
+-- /See:/ 'newPipeEnrichmentHttpParameters' smart constructor.
+data PipeEnrichmentHttpParameters = PipeEnrichmentHttpParameters'
+  { -- | The headers that need to be sent as part of request invoking the API
+    -- Gateway REST API or EventBridge ApiDestination.
+    headerParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    -- | The path parameter values to be used to populate API Gateway REST API or
+    -- EventBridge ApiDestination path wildcards (\"*\").
+    pathParameterValues :: Prelude.Maybe [Data.Sensitive Prelude.Text],
+    -- | The query string keys\/values that need to be sent as part of request
+    -- invoking the API Gateway REST API or EventBridge ApiDestination.
+    queryStringParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeEnrichmentHttpParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'headerParameters', 'pipeEnrichmentHttpParameters_headerParameters' - The headers that need to be sent as part of request invoking the API
+-- Gateway REST API or EventBridge ApiDestination.
+--
+-- 'pathParameterValues', 'pipeEnrichmentHttpParameters_pathParameterValues' - The path parameter values to be used to populate API Gateway REST API or
+-- EventBridge ApiDestination path wildcards (\"*\").
+--
+-- 'queryStringParameters', 'pipeEnrichmentHttpParameters_queryStringParameters' - The query string keys\/values that need to be sent as part of request
+-- invoking the API Gateway REST API or EventBridge ApiDestination.
+newPipeEnrichmentHttpParameters ::
+  PipeEnrichmentHttpParameters
+newPipeEnrichmentHttpParameters =
+  PipeEnrichmentHttpParameters'
+    { headerParameters =
+        Prelude.Nothing,
+      pathParameterValues = Prelude.Nothing,
+      queryStringParameters = Prelude.Nothing
+    }
+
+-- | The headers that need to be sent as part of request invoking the API
+-- Gateway REST API or EventBridge ApiDestination.
+pipeEnrichmentHttpParameters_headerParameters :: Lens.Lens' PipeEnrichmentHttpParameters (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+pipeEnrichmentHttpParameters_headerParameters = Lens.lens (\PipeEnrichmentHttpParameters' {headerParameters} -> headerParameters) (\s@PipeEnrichmentHttpParameters' {} a -> s {headerParameters = a} :: PipeEnrichmentHttpParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The path parameter values to be used to populate API Gateway REST API or
+-- EventBridge ApiDestination path wildcards (\"*\").
+pipeEnrichmentHttpParameters_pathParameterValues :: Lens.Lens' PipeEnrichmentHttpParameters (Prelude.Maybe [Prelude.Text])
+pipeEnrichmentHttpParameters_pathParameterValues = Lens.lens (\PipeEnrichmentHttpParameters' {pathParameterValues} -> pathParameterValues) (\s@PipeEnrichmentHttpParameters' {} a -> s {pathParameterValues = a} :: PipeEnrichmentHttpParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The query string keys\/values that need to be sent as part of request
+-- invoking the API Gateway REST API or EventBridge ApiDestination.
+pipeEnrichmentHttpParameters_queryStringParameters :: Lens.Lens' PipeEnrichmentHttpParameters (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+pipeEnrichmentHttpParameters_queryStringParameters = Lens.lens (\PipeEnrichmentHttpParameters' {queryStringParameters} -> queryStringParameters) (\s@PipeEnrichmentHttpParameters' {} a -> s {queryStringParameters = a} :: PipeEnrichmentHttpParameters) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PipeEnrichmentHttpParameters where
+  parseJSON =
+    Data.withObject
+      "PipeEnrichmentHttpParameters"
+      ( \x ->
+          PipeEnrichmentHttpParameters'
+            Prelude.<$> ( x
+                            Data..:? "HeaderParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "PathParameterValues"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "QueryStringParameters"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    PipeEnrichmentHttpParameters
+  where
+  hashWithSalt _salt PipeEnrichmentHttpParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` headerParameters
+      `Prelude.hashWithSalt` pathParameterValues
+      `Prelude.hashWithSalt` queryStringParameters
+
+instance Prelude.NFData PipeEnrichmentHttpParameters where
+  rnf PipeEnrichmentHttpParameters' {..} =
+    Prelude.rnf headerParameters
+      `Prelude.seq` Prelude.rnf pathParameterValues
+      `Prelude.seq` Prelude.rnf queryStringParameters
+
+instance Data.ToJSON PipeEnrichmentHttpParameters where
+  toJSON PipeEnrichmentHttpParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HeaderParameters" Data..=)
+              Prelude.<$> headerParameters,
+            ("PathParameterValues" Data..=)
+              Prelude.<$> pathParameterValues,
+            ("QueryStringParameters" Data..=)
+              Prelude.<$> queryStringParameters
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeEnrichmentParameters.hs b/gen/Amazonka/Pipes/Types/PipeEnrichmentParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeEnrichmentParameters.hs
@@ -0,0 +1,126 @@
+{-# 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.Pipes.Types.PipeEnrichmentParameters
+-- 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.Pipes.Types.PipeEnrichmentParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.PipeEnrichmentHttpParameters
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters required to set up enrichment on your pipe.
+--
+-- /See:/ 'newPipeEnrichmentParameters' smart constructor.
+data PipeEnrichmentParameters = PipeEnrichmentParameters'
+  { -- | Contains the HTTP parameters to use when the target is a API Gateway
+    -- REST endpoint or EventBridge ApiDestination.
+    --
+    -- If you specify an API Gateway REST API or EventBridge ApiDestination as
+    -- a target, you can use this parameter to specify headers, path
+    -- parameters, and query string keys\/values as part of your target
+    -- invoking request. If you\'re using ApiDestinations, the corresponding
+    -- Connection can also have these values configured. In case of any
+    -- conflicting keys, values from the Connection take precedence.
+    httpParameters :: Prelude.Maybe PipeEnrichmentHttpParameters,
+    -- | Valid JSON text passed to the enrichment. In this case, nothing from the
+    -- event itself is passed to the enrichment. For more information, see
+    -- <http://www.rfc-editor.org/rfc/rfc7159.txt The JavaScript Object Notation (JSON) Data Interchange Format>.
+    inputTemplate :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeEnrichmentParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpParameters', 'pipeEnrichmentParameters_httpParameters' - Contains the HTTP parameters to use when the target is a API Gateway
+-- REST endpoint or EventBridge ApiDestination.
+--
+-- If you specify an API Gateway REST API or EventBridge ApiDestination as
+-- a target, you can use this parameter to specify headers, path
+-- parameters, and query string keys\/values as part of your target
+-- invoking request. If you\'re using ApiDestinations, the corresponding
+-- Connection can also have these values configured. In case of any
+-- conflicting keys, values from the Connection take precedence.
+--
+-- 'inputTemplate', 'pipeEnrichmentParameters_inputTemplate' - Valid JSON text passed to the enrichment. In this case, nothing from the
+-- event itself is passed to the enrichment. For more information, see
+-- <http://www.rfc-editor.org/rfc/rfc7159.txt The JavaScript Object Notation (JSON) Data Interchange Format>.
+newPipeEnrichmentParameters ::
+  PipeEnrichmentParameters
+newPipeEnrichmentParameters =
+  PipeEnrichmentParameters'
+    { httpParameters =
+        Prelude.Nothing,
+      inputTemplate = Prelude.Nothing
+    }
+
+-- | Contains the HTTP parameters to use when the target is a API Gateway
+-- REST endpoint or EventBridge ApiDestination.
+--
+-- If you specify an API Gateway REST API or EventBridge ApiDestination as
+-- a target, you can use this parameter to specify headers, path
+-- parameters, and query string keys\/values as part of your target
+-- invoking request. If you\'re using ApiDestinations, the corresponding
+-- Connection can also have these values configured. In case of any
+-- conflicting keys, values from the Connection take precedence.
+pipeEnrichmentParameters_httpParameters :: Lens.Lens' PipeEnrichmentParameters (Prelude.Maybe PipeEnrichmentHttpParameters)
+pipeEnrichmentParameters_httpParameters = Lens.lens (\PipeEnrichmentParameters' {httpParameters} -> httpParameters) (\s@PipeEnrichmentParameters' {} a -> s {httpParameters = a} :: PipeEnrichmentParameters)
+
+-- | Valid JSON text passed to the enrichment. In this case, nothing from the
+-- event itself is passed to the enrichment. For more information, see
+-- <http://www.rfc-editor.org/rfc/rfc7159.txt The JavaScript Object Notation (JSON) Data Interchange Format>.
+pipeEnrichmentParameters_inputTemplate :: Lens.Lens' PipeEnrichmentParameters (Prelude.Maybe Prelude.Text)
+pipeEnrichmentParameters_inputTemplate = Lens.lens (\PipeEnrichmentParameters' {inputTemplate} -> inputTemplate) (\s@PipeEnrichmentParameters' {} a -> s {inputTemplate = a} :: PipeEnrichmentParameters) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON PipeEnrichmentParameters where
+  parseJSON =
+    Data.withObject
+      "PipeEnrichmentParameters"
+      ( \x ->
+          PipeEnrichmentParameters'
+            Prelude.<$> (x Data..:? "HttpParameters")
+            Prelude.<*> (x Data..:? "InputTemplate")
+      )
+
+instance Prelude.Hashable PipeEnrichmentParameters where
+  hashWithSalt _salt PipeEnrichmentParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` httpParameters
+      `Prelude.hashWithSalt` inputTemplate
+
+instance Prelude.NFData PipeEnrichmentParameters where
+  rnf PipeEnrichmentParameters' {..} =
+    Prelude.rnf httpParameters
+      `Prelude.seq` Prelude.rnf inputTemplate
+
+instance Data.ToJSON PipeEnrichmentParameters where
+  toJSON PipeEnrichmentParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HttpParameters" Data..=)
+              Prelude.<$> httpParameters,
+            ("InputTemplate" Data..=) Prelude.<$> inputTemplate
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeSourceActiveMQBrokerParameters.hs b/gen/Amazonka/Pipes/Types/PipeSourceActiveMQBrokerParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeSourceActiveMQBrokerParameters.hs
@@ -0,0 +1,144 @@
+{-# 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.Pipes.Types.PipeSourceActiveMQBrokerParameters
+-- 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.Pipes.Types.PipeSourceActiveMQBrokerParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.MQBrokerAccessCredentials
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using an Active MQ broker as a source.
+--
+-- /See:/ 'newPipeSourceActiveMQBrokerParameters' smart constructor.
+data PipeSourceActiveMQBrokerParameters = PipeSourceActiveMQBrokerParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The credentials needed to access the resource.
+    credentials :: MQBrokerAccessCredentials,
+    -- | The name of the destination queue to consume.
+    queueName :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeSourceActiveMQBrokerParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'pipeSourceActiveMQBrokerParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'maximumBatchingWindowInSeconds', 'pipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'credentials', 'pipeSourceActiveMQBrokerParameters_credentials' - The credentials needed to access the resource.
+--
+-- 'queueName', 'pipeSourceActiveMQBrokerParameters_queueName' - The name of the destination queue to consume.
+newPipeSourceActiveMQBrokerParameters ::
+  -- | 'credentials'
+  MQBrokerAccessCredentials ->
+  -- | 'queueName'
+  Prelude.Text ->
+  PipeSourceActiveMQBrokerParameters
+newPipeSourceActiveMQBrokerParameters
+  pCredentials_
+  pQueueName_ =
+    PipeSourceActiveMQBrokerParameters'
+      { batchSize =
+          Prelude.Nothing,
+        maximumBatchingWindowInSeconds =
+          Prelude.Nothing,
+        credentials = pCredentials_,
+        queueName =
+          Data._Sensitive Lens.# pQueueName_
+      }
+
+-- | The maximum number of records to include in each batch.
+pipeSourceActiveMQBrokerParameters_batchSize :: Lens.Lens' PipeSourceActiveMQBrokerParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceActiveMQBrokerParameters_batchSize = Lens.lens (\PipeSourceActiveMQBrokerParameters' {batchSize} -> batchSize) (\s@PipeSourceActiveMQBrokerParameters' {} a -> s {batchSize = a} :: PipeSourceActiveMQBrokerParameters)
+
+-- | The maximum length of a time to wait for events.
+pipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds :: Lens.Lens' PipeSourceActiveMQBrokerParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds = Lens.lens (\PipeSourceActiveMQBrokerParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@PipeSourceActiveMQBrokerParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: PipeSourceActiveMQBrokerParameters)
+
+-- | The credentials needed to access the resource.
+pipeSourceActiveMQBrokerParameters_credentials :: Lens.Lens' PipeSourceActiveMQBrokerParameters MQBrokerAccessCredentials
+pipeSourceActiveMQBrokerParameters_credentials = Lens.lens (\PipeSourceActiveMQBrokerParameters' {credentials} -> credentials) (\s@PipeSourceActiveMQBrokerParameters' {} a -> s {credentials = a} :: PipeSourceActiveMQBrokerParameters)
+
+-- | The name of the destination queue to consume.
+pipeSourceActiveMQBrokerParameters_queueName :: Lens.Lens' PipeSourceActiveMQBrokerParameters Prelude.Text
+pipeSourceActiveMQBrokerParameters_queueName = Lens.lens (\PipeSourceActiveMQBrokerParameters' {queueName} -> queueName) (\s@PipeSourceActiveMQBrokerParameters' {} a -> s {queueName = a} :: PipeSourceActiveMQBrokerParameters) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    PipeSourceActiveMQBrokerParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeSourceActiveMQBrokerParameters"
+      ( \x ->
+          PipeSourceActiveMQBrokerParameters'
+            Prelude.<$> (x Data..:? "BatchSize")
+            Prelude.<*> (x Data..:? "MaximumBatchingWindowInSeconds")
+            Prelude.<*> (x Data..: "Credentials")
+            Prelude.<*> (x Data..: "QueueName")
+      )
+
+instance
+  Prelude.Hashable
+    PipeSourceActiveMQBrokerParameters
+  where
+  hashWithSalt
+    _salt
+    PipeSourceActiveMQBrokerParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` credentials
+        `Prelude.hashWithSalt` queueName
+
+instance
+  Prelude.NFData
+    PipeSourceActiveMQBrokerParameters
+  where
+  rnf PipeSourceActiveMQBrokerParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf credentials
+      `Prelude.seq` Prelude.rnf queueName
+
+instance
+  Data.ToJSON
+    PipeSourceActiveMQBrokerParameters
+  where
+  toJSON PipeSourceActiveMQBrokerParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            Prelude.Just ("Credentials" Data..= credentials),
+            Prelude.Just ("QueueName" Data..= queueName)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeSourceDynamoDBStreamParameters.hs b/gen/Amazonka/Pipes/Types/PipeSourceDynamoDBStreamParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeSourceDynamoDBStreamParameters.hs
@@ -0,0 +1,226 @@
+{-# 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.Pipes.Types.PipeSourceDynamoDBStreamParameters
+-- 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.Pipes.Types.PipeSourceDynamoDBStreamParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.DeadLetterConfig
+import Amazonka.Pipes.Types.DynamoDBStreamStartPosition
+import Amazonka.Pipes.Types.OnPartialBatchItemFailureStreams
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a DynamoDB stream as a source.
+--
+-- /See:/ 'newPipeSourceDynamoDBStreamParameters' smart constructor.
+data PipeSourceDynamoDBStreamParameters = PipeSourceDynamoDBStreamParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | Define the target queue to send dead-letter queue events to.
+    deadLetterConfig :: Prelude.Maybe DeadLetterConfig,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | (Streams only) Discard records older than the specified age. The default
+    -- value is -1, which sets the maximum age to infinite. When the value is
+    -- set to infinite, EventBridge never discards old records.
+    maximumRecordAgeInSeconds :: Prelude.Maybe Prelude.Int,
+    -- | (Streams only) Discard records after the specified number of retries.
+    -- The default value is -1, which sets the maximum number of retries to
+    -- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+    -- failed records until the record expires in the event source.
+    maximumRetryAttempts :: Prelude.Maybe Prelude.Int,
+    -- | (Streams only) Define how to handle item process failures.
+    -- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+    -- records are processed or there is one failed message left in the batch.
+    onPartialBatchItemFailure :: Prelude.Maybe OnPartialBatchItemFailureStreams,
+    -- | (Streams only) The number of batches to process concurrently from each
+    -- shard. The default value is 1.
+    parallelizationFactor :: Prelude.Maybe Prelude.Natural,
+    -- | (Streams only) The position in a stream from which to start reading.
+    startingPosition :: DynamoDBStreamStartPosition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeSourceDynamoDBStreamParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'pipeSourceDynamoDBStreamParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'deadLetterConfig', 'pipeSourceDynamoDBStreamParameters_deadLetterConfig' - Define the target queue to send dead-letter queue events to.
+--
+-- 'maximumBatchingWindowInSeconds', 'pipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'maximumRecordAgeInSeconds', 'pipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds' - (Streams only) Discard records older than the specified age. The default
+-- value is -1, which sets the maximum age to infinite. When the value is
+-- set to infinite, EventBridge never discards old records.
+--
+-- 'maximumRetryAttempts', 'pipeSourceDynamoDBStreamParameters_maximumRetryAttempts' - (Streams only) Discard records after the specified number of retries.
+-- The default value is -1, which sets the maximum number of retries to
+-- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+-- failed records until the record expires in the event source.
+--
+-- 'onPartialBatchItemFailure', 'pipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure' - (Streams only) Define how to handle item process failures.
+-- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+-- records are processed or there is one failed message left in the batch.
+--
+-- 'parallelizationFactor', 'pipeSourceDynamoDBStreamParameters_parallelizationFactor' - (Streams only) The number of batches to process concurrently from each
+-- shard. The default value is 1.
+--
+-- 'startingPosition', 'pipeSourceDynamoDBStreamParameters_startingPosition' - (Streams only) The position in a stream from which to start reading.
+newPipeSourceDynamoDBStreamParameters ::
+  -- | 'startingPosition'
+  DynamoDBStreamStartPosition ->
+  PipeSourceDynamoDBStreamParameters
+newPipeSourceDynamoDBStreamParameters
+  pStartingPosition_ =
+    PipeSourceDynamoDBStreamParameters'
+      { batchSize =
+          Prelude.Nothing,
+        deadLetterConfig = Prelude.Nothing,
+        maximumBatchingWindowInSeconds =
+          Prelude.Nothing,
+        maximumRecordAgeInSeconds =
+          Prelude.Nothing,
+        maximumRetryAttempts = Prelude.Nothing,
+        onPartialBatchItemFailure =
+          Prelude.Nothing,
+        parallelizationFactor = Prelude.Nothing,
+        startingPosition = pStartingPosition_
+      }
+
+-- | The maximum number of records to include in each batch.
+pipeSourceDynamoDBStreamParameters_batchSize :: Lens.Lens' PipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceDynamoDBStreamParameters_batchSize = Lens.lens (\PipeSourceDynamoDBStreamParameters' {batchSize} -> batchSize) (\s@PipeSourceDynamoDBStreamParameters' {} a -> s {batchSize = a} :: PipeSourceDynamoDBStreamParameters)
+
+-- | Define the target queue to send dead-letter queue events to.
+pipeSourceDynamoDBStreamParameters_deadLetterConfig :: Lens.Lens' PipeSourceDynamoDBStreamParameters (Prelude.Maybe DeadLetterConfig)
+pipeSourceDynamoDBStreamParameters_deadLetterConfig = Lens.lens (\PipeSourceDynamoDBStreamParameters' {deadLetterConfig} -> deadLetterConfig) (\s@PipeSourceDynamoDBStreamParameters' {} a -> s {deadLetterConfig = a} :: PipeSourceDynamoDBStreamParameters)
+
+-- | The maximum length of a time to wait for events.
+pipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds :: Lens.Lens' PipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds = Lens.lens (\PipeSourceDynamoDBStreamParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@PipeSourceDynamoDBStreamParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: PipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) Discard records older than the specified age. The default
+-- value is -1, which sets the maximum age to infinite. When the value is
+-- set to infinite, EventBridge never discards old records.
+pipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds :: Lens.Lens' PipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Int)
+pipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds = Lens.lens (\PipeSourceDynamoDBStreamParameters' {maximumRecordAgeInSeconds} -> maximumRecordAgeInSeconds) (\s@PipeSourceDynamoDBStreamParameters' {} a -> s {maximumRecordAgeInSeconds = a} :: PipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) Discard records after the specified number of retries.
+-- The default value is -1, which sets the maximum number of retries to
+-- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+-- failed records until the record expires in the event source.
+pipeSourceDynamoDBStreamParameters_maximumRetryAttempts :: Lens.Lens' PipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Int)
+pipeSourceDynamoDBStreamParameters_maximumRetryAttempts = Lens.lens (\PipeSourceDynamoDBStreamParameters' {maximumRetryAttempts} -> maximumRetryAttempts) (\s@PipeSourceDynamoDBStreamParameters' {} a -> s {maximumRetryAttempts = a} :: PipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) Define how to handle item process failures.
+-- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+-- records are processed or there is one failed message left in the batch.
+pipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure :: Lens.Lens' PipeSourceDynamoDBStreamParameters (Prelude.Maybe OnPartialBatchItemFailureStreams)
+pipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure = Lens.lens (\PipeSourceDynamoDBStreamParameters' {onPartialBatchItemFailure} -> onPartialBatchItemFailure) (\s@PipeSourceDynamoDBStreamParameters' {} a -> s {onPartialBatchItemFailure = a} :: PipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) The number of batches to process concurrently from each
+-- shard. The default value is 1.
+pipeSourceDynamoDBStreamParameters_parallelizationFactor :: Lens.Lens' PipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceDynamoDBStreamParameters_parallelizationFactor = Lens.lens (\PipeSourceDynamoDBStreamParameters' {parallelizationFactor} -> parallelizationFactor) (\s@PipeSourceDynamoDBStreamParameters' {} a -> s {parallelizationFactor = a} :: PipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) The position in a stream from which to start reading.
+pipeSourceDynamoDBStreamParameters_startingPosition :: Lens.Lens' PipeSourceDynamoDBStreamParameters DynamoDBStreamStartPosition
+pipeSourceDynamoDBStreamParameters_startingPosition = Lens.lens (\PipeSourceDynamoDBStreamParameters' {startingPosition} -> startingPosition) (\s@PipeSourceDynamoDBStreamParameters' {} a -> s {startingPosition = a} :: PipeSourceDynamoDBStreamParameters)
+
+instance
+  Data.FromJSON
+    PipeSourceDynamoDBStreamParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeSourceDynamoDBStreamParameters"
+      ( \x ->
+          PipeSourceDynamoDBStreamParameters'
+            Prelude.<$> (x Data..:? "BatchSize")
+            Prelude.<*> (x Data..:? "DeadLetterConfig")
+            Prelude.<*> (x Data..:? "MaximumBatchingWindowInSeconds")
+            Prelude.<*> (x Data..:? "MaximumRecordAgeInSeconds")
+            Prelude.<*> (x Data..:? "MaximumRetryAttempts")
+            Prelude.<*> (x Data..:? "OnPartialBatchItemFailure")
+            Prelude.<*> (x Data..:? "ParallelizationFactor")
+            Prelude.<*> (x Data..: "StartingPosition")
+      )
+
+instance
+  Prelude.Hashable
+    PipeSourceDynamoDBStreamParameters
+  where
+  hashWithSalt
+    _salt
+    PipeSourceDynamoDBStreamParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` deadLetterConfig
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` maximumRecordAgeInSeconds
+        `Prelude.hashWithSalt` maximumRetryAttempts
+        `Prelude.hashWithSalt` onPartialBatchItemFailure
+        `Prelude.hashWithSalt` parallelizationFactor
+        `Prelude.hashWithSalt` startingPosition
+
+instance
+  Prelude.NFData
+    PipeSourceDynamoDBStreamParameters
+  where
+  rnf PipeSourceDynamoDBStreamParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf deadLetterConfig
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf maximumRecordAgeInSeconds
+      `Prelude.seq` Prelude.rnf maximumRetryAttempts
+      `Prelude.seq` Prelude.rnf onPartialBatchItemFailure
+      `Prelude.seq` Prelude.rnf parallelizationFactor
+      `Prelude.seq` Prelude.rnf startingPosition
+
+instance
+  Data.ToJSON
+    PipeSourceDynamoDBStreamParameters
+  where
+  toJSON PipeSourceDynamoDBStreamParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("DeadLetterConfig" Data..=)
+              Prelude.<$> deadLetterConfig,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            ("MaximumRecordAgeInSeconds" Data..=)
+              Prelude.<$> maximumRecordAgeInSeconds,
+            ("MaximumRetryAttempts" Data..=)
+              Prelude.<$> maximumRetryAttempts,
+            ("OnPartialBatchItemFailure" Data..=)
+              Prelude.<$> onPartialBatchItemFailure,
+            ("ParallelizationFactor" Data..=)
+              Prelude.<$> parallelizationFactor,
+            Prelude.Just
+              ("StartingPosition" Data..= startingPosition)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeSourceKinesisStreamParameters.hs b/gen/Amazonka/Pipes/Types/PipeSourceKinesisStreamParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeSourceKinesisStreamParameters.hs
@@ -0,0 +1,244 @@
+{-# 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.Pipes.Types.PipeSourceKinesisStreamParameters
+-- 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.Pipes.Types.PipeSourceKinesisStreamParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.DeadLetterConfig
+import Amazonka.Pipes.Types.KinesisStreamStartPosition
+import Amazonka.Pipes.Types.OnPartialBatchItemFailureStreams
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Kinesis stream as a source.
+--
+-- /See:/ 'newPipeSourceKinesisStreamParameters' smart constructor.
+data PipeSourceKinesisStreamParameters = PipeSourceKinesisStreamParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | Define the target queue to send dead-letter queue events to.
+    deadLetterConfig :: Prelude.Maybe DeadLetterConfig,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | (Streams only) Discard records older than the specified age. The default
+    -- value is -1, which sets the maximum age to infinite. When the value is
+    -- set to infinite, EventBridge never discards old records.
+    maximumRecordAgeInSeconds :: Prelude.Maybe Prelude.Int,
+    -- | (Streams only) Discard records after the specified number of retries.
+    -- The default value is -1, which sets the maximum number of retries to
+    -- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+    -- failed records until the record expires in the event source.
+    maximumRetryAttempts :: Prelude.Maybe Prelude.Int,
+    -- | (Streams only) Define how to handle item process failures.
+    -- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+    -- records are processed or there is one failed message left in the batch.
+    onPartialBatchItemFailure :: Prelude.Maybe OnPartialBatchItemFailureStreams,
+    -- | (Streams only) The number of batches to process concurrently from each
+    -- shard. The default value is 1.
+    parallelizationFactor :: Prelude.Maybe Prelude.Natural,
+    -- | With @StartingPosition@ set to @AT_TIMESTAMP@, the time from which to
+    -- start reading, in Unix time seconds.
+    startingPositionTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | (Streams only) The position in a stream from which to start reading.
+    startingPosition :: KinesisStreamStartPosition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeSourceKinesisStreamParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'pipeSourceKinesisStreamParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'deadLetterConfig', 'pipeSourceKinesisStreamParameters_deadLetterConfig' - Define the target queue to send dead-letter queue events to.
+--
+-- 'maximumBatchingWindowInSeconds', 'pipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'maximumRecordAgeInSeconds', 'pipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds' - (Streams only) Discard records older than the specified age. The default
+-- value is -1, which sets the maximum age to infinite. When the value is
+-- set to infinite, EventBridge never discards old records.
+--
+-- 'maximumRetryAttempts', 'pipeSourceKinesisStreamParameters_maximumRetryAttempts' - (Streams only) Discard records after the specified number of retries.
+-- The default value is -1, which sets the maximum number of retries to
+-- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+-- failed records until the record expires in the event source.
+--
+-- 'onPartialBatchItemFailure', 'pipeSourceKinesisStreamParameters_onPartialBatchItemFailure' - (Streams only) Define how to handle item process failures.
+-- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+-- records are processed or there is one failed message left in the batch.
+--
+-- 'parallelizationFactor', 'pipeSourceKinesisStreamParameters_parallelizationFactor' - (Streams only) The number of batches to process concurrently from each
+-- shard. The default value is 1.
+--
+-- 'startingPositionTimestamp', 'pipeSourceKinesisStreamParameters_startingPositionTimestamp' - With @StartingPosition@ set to @AT_TIMESTAMP@, the time from which to
+-- start reading, in Unix time seconds.
+--
+-- 'startingPosition', 'pipeSourceKinesisStreamParameters_startingPosition' - (Streams only) The position in a stream from which to start reading.
+newPipeSourceKinesisStreamParameters ::
+  -- | 'startingPosition'
+  KinesisStreamStartPosition ->
+  PipeSourceKinesisStreamParameters
+newPipeSourceKinesisStreamParameters
+  pStartingPosition_ =
+    PipeSourceKinesisStreamParameters'
+      { batchSize =
+          Prelude.Nothing,
+        deadLetterConfig = Prelude.Nothing,
+        maximumBatchingWindowInSeconds =
+          Prelude.Nothing,
+        maximumRecordAgeInSeconds =
+          Prelude.Nothing,
+        maximumRetryAttempts = Prelude.Nothing,
+        onPartialBatchItemFailure =
+          Prelude.Nothing,
+        parallelizationFactor = Prelude.Nothing,
+        startingPositionTimestamp =
+          Prelude.Nothing,
+        startingPosition = pStartingPosition_
+      }
+
+-- | The maximum number of records to include in each batch.
+pipeSourceKinesisStreamParameters_batchSize :: Lens.Lens' PipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceKinesisStreamParameters_batchSize = Lens.lens (\PipeSourceKinesisStreamParameters' {batchSize} -> batchSize) (\s@PipeSourceKinesisStreamParameters' {} a -> s {batchSize = a} :: PipeSourceKinesisStreamParameters)
+
+-- | Define the target queue to send dead-letter queue events to.
+pipeSourceKinesisStreamParameters_deadLetterConfig :: Lens.Lens' PipeSourceKinesisStreamParameters (Prelude.Maybe DeadLetterConfig)
+pipeSourceKinesisStreamParameters_deadLetterConfig = Lens.lens (\PipeSourceKinesisStreamParameters' {deadLetterConfig} -> deadLetterConfig) (\s@PipeSourceKinesisStreamParameters' {} a -> s {deadLetterConfig = a} :: PipeSourceKinesisStreamParameters)
+
+-- | The maximum length of a time to wait for events.
+pipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds :: Lens.Lens' PipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds = Lens.lens (\PipeSourceKinesisStreamParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@PipeSourceKinesisStreamParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: PipeSourceKinesisStreamParameters)
+
+-- | (Streams only) Discard records older than the specified age. The default
+-- value is -1, which sets the maximum age to infinite. When the value is
+-- set to infinite, EventBridge never discards old records.
+pipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds :: Lens.Lens' PipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Int)
+pipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds = Lens.lens (\PipeSourceKinesisStreamParameters' {maximumRecordAgeInSeconds} -> maximumRecordAgeInSeconds) (\s@PipeSourceKinesisStreamParameters' {} a -> s {maximumRecordAgeInSeconds = a} :: PipeSourceKinesisStreamParameters)
+
+-- | (Streams only) Discard records after the specified number of retries.
+-- The default value is -1, which sets the maximum number of retries to
+-- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+-- failed records until the record expires in the event source.
+pipeSourceKinesisStreamParameters_maximumRetryAttempts :: Lens.Lens' PipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Int)
+pipeSourceKinesisStreamParameters_maximumRetryAttempts = Lens.lens (\PipeSourceKinesisStreamParameters' {maximumRetryAttempts} -> maximumRetryAttempts) (\s@PipeSourceKinesisStreamParameters' {} a -> s {maximumRetryAttempts = a} :: PipeSourceKinesisStreamParameters)
+
+-- | (Streams only) Define how to handle item process failures.
+-- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+-- records are processed or there is one failed message left in the batch.
+pipeSourceKinesisStreamParameters_onPartialBatchItemFailure :: Lens.Lens' PipeSourceKinesisStreamParameters (Prelude.Maybe OnPartialBatchItemFailureStreams)
+pipeSourceKinesisStreamParameters_onPartialBatchItemFailure = Lens.lens (\PipeSourceKinesisStreamParameters' {onPartialBatchItemFailure} -> onPartialBatchItemFailure) (\s@PipeSourceKinesisStreamParameters' {} a -> s {onPartialBatchItemFailure = a} :: PipeSourceKinesisStreamParameters)
+
+-- | (Streams only) The number of batches to process concurrently from each
+-- shard. The default value is 1.
+pipeSourceKinesisStreamParameters_parallelizationFactor :: Lens.Lens' PipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceKinesisStreamParameters_parallelizationFactor = Lens.lens (\PipeSourceKinesisStreamParameters' {parallelizationFactor} -> parallelizationFactor) (\s@PipeSourceKinesisStreamParameters' {} a -> s {parallelizationFactor = a} :: PipeSourceKinesisStreamParameters)
+
+-- | With @StartingPosition@ set to @AT_TIMESTAMP@, the time from which to
+-- start reading, in Unix time seconds.
+pipeSourceKinesisStreamParameters_startingPositionTimestamp :: Lens.Lens' PipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.UTCTime)
+pipeSourceKinesisStreamParameters_startingPositionTimestamp = Lens.lens (\PipeSourceKinesisStreamParameters' {startingPositionTimestamp} -> startingPositionTimestamp) (\s@PipeSourceKinesisStreamParameters' {} a -> s {startingPositionTimestamp = a} :: PipeSourceKinesisStreamParameters) Prelude.. Lens.mapping Data._Time
+
+-- | (Streams only) The position in a stream from which to start reading.
+pipeSourceKinesisStreamParameters_startingPosition :: Lens.Lens' PipeSourceKinesisStreamParameters KinesisStreamStartPosition
+pipeSourceKinesisStreamParameters_startingPosition = Lens.lens (\PipeSourceKinesisStreamParameters' {startingPosition} -> startingPosition) (\s@PipeSourceKinesisStreamParameters' {} a -> s {startingPosition = a} :: PipeSourceKinesisStreamParameters)
+
+instance
+  Data.FromJSON
+    PipeSourceKinesisStreamParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeSourceKinesisStreamParameters"
+      ( \x ->
+          PipeSourceKinesisStreamParameters'
+            Prelude.<$> (x Data..:? "BatchSize")
+            Prelude.<*> (x Data..:? "DeadLetterConfig")
+            Prelude.<*> (x Data..:? "MaximumBatchingWindowInSeconds")
+            Prelude.<*> (x Data..:? "MaximumRecordAgeInSeconds")
+            Prelude.<*> (x Data..:? "MaximumRetryAttempts")
+            Prelude.<*> (x Data..:? "OnPartialBatchItemFailure")
+            Prelude.<*> (x Data..:? "ParallelizationFactor")
+            Prelude.<*> (x Data..:? "StartingPositionTimestamp")
+            Prelude.<*> (x Data..: "StartingPosition")
+      )
+
+instance
+  Prelude.Hashable
+    PipeSourceKinesisStreamParameters
+  where
+  hashWithSalt
+    _salt
+    PipeSourceKinesisStreamParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` deadLetterConfig
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` maximumRecordAgeInSeconds
+        `Prelude.hashWithSalt` maximumRetryAttempts
+        `Prelude.hashWithSalt` onPartialBatchItemFailure
+        `Prelude.hashWithSalt` parallelizationFactor
+        `Prelude.hashWithSalt` startingPositionTimestamp
+        `Prelude.hashWithSalt` startingPosition
+
+instance
+  Prelude.NFData
+    PipeSourceKinesisStreamParameters
+  where
+  rnf PipeSourceKinesisStreamParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf deadLetterConfig
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf maximumRecordAgeInSeconds
+      `Prelude.seq` Prelude.rnf maximumRetryAttempts
+      `Prelude.seq` Prelude.rnf onPartialBatchItemFailure
+      `Prelude.seq` Prelude.rnf parallelizationFactor
+      `Prelude.seq` Prelude.rnf startingPositionTimestamp
+      `Prelude.seq` Prelude.rnf startingPosition
+
+instance
+  Data.ToJSON
+    PipeSourceKinesisStreamParameters
+  where
+  toJSON PipeSourceKinesisStreamParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("DeadLetterConfig" Data..=)
+              Prelude.<$> deadLetterConfig,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            ("MaximumRecordAgeInSeconds" Data..=)
+              Prelude.<$> maximumRecordAgeInSeconds,
+            ("MaximumRetryAttempts" Data..=)
+              Prelude.<$> maximumRetryAttempts,
+            ("OnPartialBatchItemFailure" Data..=)
+              Prelude.<$> onPartialBatchItemFailure,
+            ("ParallelizationFactor" Data..=)
+              Prelude.<$> parallelizationFactor,
+            ("StartingPositionTimestamp" Data..=)
+              Prelude.<$> startingPositionTimestamp,
+            Prelude.Just
+              ("StartingPosition" Data..= startingPosition)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeSourceManagedStreamingKafkaParameters.hs b/gen/Amazonka/Pipes/Types/PipeSourceManagedStreamingKafkaParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeSourceManagedStreamingKafkaParameters.hs
@@ -0,0 +1,173 @@
+{-# 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.Pipes.Types.PipeSourceManagedStreamingKafkaParameters
+-- 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.Pipes.Types.PipeSourceManagedStreamingKafkaParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.MSKAccessCredentials
+import Amazonka.Pipes.Types.MSKStartPosition
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using an MSK stream as a source.
+--
+-- /See:/ 'newPipeSourceManagedStreamingKafkaParameters' smart constructor.
+data PipeSourceManagedStreamingKafkaParameters = PipeSourceManagedStreamingKafkaParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the destination queue to consume.
+    consumerGroupID :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The credentials needed to access the resource.
+    credentials :: Prelude.Maybe MSKAccessCredentials,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | (Streams only) The position in a stream from which to start reading.
+    startingPosition :: Prelude.Maybe MSKStartPosition,
+    -- | The name of the topic that the pipe will read from.
+    topicName :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeSourceManagedStreamingKafkaParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'pipeSourceManagedStreamingKafkaParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'consumerGroupID', 'pipeSourceManagedStreamingKafkaParameters_consumerGroupID' - The name of the destination queue to consume.
+--
+-- 'credentials', 'pipeSourceManagedStreamingKafkaParameters_credentials' - The credentials needed to access the resource.
+--
+-- 'maximumBatchingWindowInSeconds', 'pipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'startingPosition', 'pipeSourceManagedStreamingKafkaParameters_startingPosition' - (Streams only) The position in a stream from which to start reading.
+--
+-- 'topicName', 'pipeSourceManagedStreamingKafkaParameters_topicName' - The name of the topic that the pipe will read from.
+newPipeSourceManagedStreamingKafkaParameters ::
+  -- | 'topicName'
+  Prelude.Text ->
+  PipeSourceManagedStreamingKafkaParameters
+newPipeSourceManagedStreamingKafkaParameters
+  pTopicName_ =
+    PipeSourceManagedStreamingKafkaParameters'
+      { batchSize =
+          Prelude.Nothing,
+        consumerGroupID =
+          Prelude.Nothing,
+        credentials = Prelude.Nothing,
+        maximumBatchingWindowInSeconds =
+          Prelude.Nothing,
+        startingPosition =
+          Prelude.Nothing,
+        topicName =
+          Data._Sensitive
+            Lens.# pTopicName_
+      }
+
+-- | The maximum number of records to include in each batch.
+pipeSourceManagedStreamingKafkaParameters_batchSize :: Lens.Lens' PipeSourceManagedStreamingKafkaParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceManagedStreamingKafkaParameters_batchSize = Lens.lens (\PipeSourceManagedStreamingKafkaParameters' {batchSize} -> batchSize) (\s@PipeSourceManagedStreamingKafkaParameters' {} a -> s {batchSize = a} :: PipeSourceManagedStreamingKafkaParameters)
+
+-- | The name of the destination queue to consume.
+pipeSourceManagedStreamingKafkaParameters_consumerGroupID :: Lens.Lens' PipeSourceManagedStreamingKafkaParameters (Prelude.Maybe Prelude.Text)
+pipeSourceManagedStreamingKafkaParameters_consumerGroupID = Lens.lens (\PipeSourceManagedStreamingKafkaParameters' {consumerGroupID} -> consumerGroupID) (\s@PipeSourceManagedStreamingKafkaParameters' {} a -> s {consumerGroupID = a} :: PipeSourceManagedStreamingKafkaParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The credentials needed to access the resource.
+pipeSourceManagedStreamingKafkaParameters_credentials :: Lens.Lens' PipeSourceManagedStreamingKafkaParameters (Prelude.Maybe MSKAccessCredentials)
+pipeSourceManagedStreamingKafkaParameters_credentials = Lens.lens (\PipeSourceManagedStreamingKafkaParameters' {credentials} -> credentials) (\s@PipeSourceManagedStreamingKafkaParameters' {} a -> s {credentials = a} :: PipeSourceManagedStreamingKafkaParameters)
+
+-- | The maximum length of a time to wait for events.
+pipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds :: Lens.Lens' PipeSourceManagedStreamingKafkaParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds = Lens.lens (\PipeSourceManagedStreamingKafkaParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@PipeSourceManagedStreamingKafkaParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: PipeSourceManagedStreamingKafkaParameters)
+
+-- | (Streams only) The position in a stream from which to start reading.
+pipeSourceManagedStreamingKafkaParameters_startingPosition :: Lens.Lens' PipeSourceManagedStreamingKafkaParameters (Prelude.Maybe MSKStartPosition)
+pipeSourceManagedStreamingKafkaParameters_startingPosition = Lens.lens (\PipeSourceManagedStreamingKafkaParameters' {startingPosition} -> startingPosition) (\s@PipeSourceManagedStreamingKafkaParameters' {} a -> s {startingPosition = a} :: PipeSourceManagedStreamingKafkaParameters)
+
+-- | The name of the topic that the pipe will read from.
+pipeSourceManagedStreamingKafkaParameters_topicName :: Lens.Lens' PipeSourceManagedStreamingKafkaParameters Prelude.Text
+pipeSourceManagedStreamingKafkaParameters_topicName = Lens.lens (\PipeSourceManagedStreamingKafkaParameters' {topicName} -> topicName) (\s@PipeSourceManagedStreamingKafkaParameters' {} a -> s {topicName = a} :: PipeSourceManagedStreamingKafkaParameters) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    PipeSourceManagedStreamingKafkaParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeSourceManagedStreamingKafkaParameters"
+      ( \x ->
+          PipeSourceManagedStreamingKafkaParameters'
+            Prelude.<$> (x Data..:? "BatchSize")
+            Prelude.<*> (x Data..:? "ConsumerGroupID")
+            Prelude.<*> (x Data..:? "Credentials")
+            Prelude.<*> (x Data..:? "MaximumBatchingWindowInSeconds")
+            Prelude.<*> (x Data..:? "StartingPosition")
+            Prelude.<*> (x Data..: "TopicName")
+      )
+
+instance
+  Prelude.Hashable
+    PipeSourceManagedStreamingKafkaParameters
+  where
+  hashWithSalt
+    _salt
+    PipeSourceManagedStreamingKafkaParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` consumerGroupID
+        `Prelude.hashWithSalt` credentials
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` startingPosition
+        `Prelude.hashWithSalt` topicName
+
+instance
+  Prelude.NFData
+    PipeSourceManagedStreamingKafkaParameters
+  where
+  rnf PipeSourceManagedStreamingKafkaParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf consumerGroupID
+      `Prelude.seq` Prelude.rnf credentials
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf startingPosition
+      `Prelude.seq` Prelude.rnf topicName
+
+instance
+  Data.ToJSON
+    PipeSourceManagedStreamingKafkaParameters
+  where
+  toJSON PipeSourceManagedStreamingKafkaParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("ConsumerGroupID" Data..=)
+              Prelude.<$> consumerGroupID,
+            ("Credentials" Data..=) Prelude.<$> credentials,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            ("StartingPosition" Data..=)
+              Prelude.<$> startingPosition,
+            Prelude.Just ("TopicName" Data..= topicName)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeSourceParameters.hs b/gen/Amazonka/Pipes/Types/PipeSourceParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeSourceParameters.hs
@@ -0,0 +1,197 @@
+{-# 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.Pipes.Types.PipeSourceParameters
+-- 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.Pipes.Types.PipeSourceParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.FilterCriteria
+import Amazonka.Pipes.Types.PipeSourceActiveMQBrokerParameters
+import Amazonka.Pipes.Types.PipeSourceDynamoDBStreamParameters
+import Amazonka.Pipes.Types.PipeSourceKinesisStreamParameters
+import Amazonka.Pipes.Types.PipeSourceManagedStreamingKafkaParameters
+import Amazonka.Pipes.Types.PipeSourceRabbitMQBrokerParameters
+import Amazonka.Pipes.Types.PipeSourceSelfManagedKafkaParameters
+import Amazonka.Pipes.Types.PipeSourceSqsQueueParameters
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters required to set up a source for your pipe.
+--
+-- /See:/ 'newPipeSourceParameters' smart constructor.
+data PipeSourceParameters = PipeSourceParameters'
+  { -- | The parameters for using an Active MQ broker as a source.
+    activeMQBrokerParameters :: Prelude.Maybe PipeSourceActiveMQBrokerParameters,
+    -- | The parameters for using a DynamoDB stream as a source.
+    dynamoDBStreamParameters :: Prelude.Maybe PipeSourceDynamoDBStreamParameters,
+    -- | The collection of event patterns used to filter events. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html Events and Event Patterns>
+    -- in the /Amazon EventBridge User Guide/.
+    filterCriteria :: Prelude.Maybe FilterCriteria,
+    -- | The parameters for using a Kinesis stream as a source.
+    kinesisStreamParameters :: Prelude.Maybe PipeSourceKinesisStreamParameters,
+    -- | The parameters for using an MSK stream as a source.
+    managedStreamingKafkaParameters :: Prelude.Maybe PipeSourceManagedStreamingKafkaParameters,
+    -- | The parameters for using a Rabbit MQ broker as a source.
+    rabbitMQBrokerParameters :: Prelude.Maybe PipeSourceRabbitMQBrokerParameters,
+    -- | The parameters for using a self-managed Apache Kafka stream as a source.
+    selfManagedKafkaParameters :: Prelude.Maybe PipeSourceSelfManagedKafkaParameters,
+    -- | The parameters for using a Amazon SQS stream as a source.
+    sqsQueueParameters :: Prelude.Maybe PipeSourceSqsQueueParameters
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeSourceParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeMQBrokerParameters', 'pipeSourceParameters_activeMQBrokerParameters' - The parameters for using an Active MQ broker as a source.
+--
+-- 'dynamoDBStreamParameters', 'pipeSourceParameters_dynamoDBStreamParameters' - The parameters for using a DynamoDB stream as a source.
+--
+-- 'filterCriteria', 'pipeSourceParameters_filterCriteria' - The collection of event patterns used to filter events. For more
+-- information, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html Events and Event Patterns>
+-- in the /Amazon EventBridge User Guide/.
+--
+-- 'kinesisStreamParameters', 'pipeSourceParameters_kinesisStreamParameters' - The parameters for using a Kinesis stream as a source.
+--
+-- 'managedStreamingKafkaParameters', 'pipeSourceParameters_managedStreamingKafkaParameters' - The parameters for using an MSK stream as a source.
+--
+-- 'rabbitMQBrokerParameters', 'pipeSourceParameters_rabbitMQBrokerParameters' - The parameters for using a Rabbit MQ broker as a source.
+--
+-- 'selfManagedKafkaParameters', 'pipeSourceParameters_selfManagedKafkaParameters' - The parameters for using a self-managed Apache Kafka stream as a source.
+--
+-- 'sqsQueueParameters', 'pipeSourceParameters_sqsQueueParameters' - The parameters for using a Amazon SQS stream as a source.
+newPipeSourceParameters ::
+  PipeSourceParameters
+newPipeSourceParameters =
+  PipeSourceParameters'
+    { activeMQBrokerParameters =
+        Prelude.Nothing,
+      dynamoDBStreamParameters = Prelude.Nothing,
+      filterCriteria = Prelude.Nothing,
+      kinesisStreamParameters = Prelude.Nothing,
+      managedStreamingKafkaParameters = Prelude.Nothing,
+      rabbitMQBrokerParameters = Prelude.Nothing,
+      selfManagedKafkaParameters = Prelude.Nothing,
+      sqsQueueParameters = Prelude.Nothing
+    }
+
+-- | The parameters for using an Active MQ broker as a source.
+pipeSourceParameters_activeMQBrokerParameters :: Lens.Lens' PipeSourceParameters (Prelude.Maybe PipeSourceActiveMQBrokerParameters)
+pipeSourceParameters_activeMQBrokerParameters = Lens.lens (\PipeSourceParameters' {activeMQBrokerParameters} -> activeMQBrokerParameters) (\s@PipeSourceParameters' {} a -> s {activeMQBrokerParameters = a} :: PipeSourceParameters)
+
+-- | The parameters for using a DynamoDB stream as a source.
+pipeSourceParameters_dynamoDBStreamParameters :: Lens.Lens' PipeSourceParameters (Prelude.Maybe PipeSourceDynamoDBStreamParameters)
+pipeSourceParameters_dynamoDBStreamParameters = Lens.lens (\PipeSourceParameters' {dynamoDBStreamParameters} -> dynamoDBStreamParameters) (\s@PipeSourceParameters' {} a -> s {dynamoDBStreamParameters = a} :: PipeSourceParameters)
+
+-- | The collection of event patterns used to filter events. For more
+-- information, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html Events and Event Patterns>
+-- in the /Amazon EventBridge User Guide/.
+pipeSourceParameters_filterCriteria :: Lens.Lens' PipeSourceParameters (Prelude.Maybe FilterCriteria)
+pipeSourceParameters_filterCriteria = Lens.lens (\PipeSourceParameters' {filterCriteria} -> filterCriteria) (\s@PipeSourceParameters' {} a -> s {filterCriteria = a} :: PipeSourceParameters)
+
+-- | The parameters for using a Kinesis stream as a source.
+pipeSourceParameters_kinesisStreamParameters :: Lens.Lens' PipeSourceParameters (Prelude.Maybe PipeSourceKinesisStreamParameters)
+pipeSourceParameters_kinesisStreamParameters = Lens.lens (\PipeSourceParameters' {kinesisStreamParameters} -> kinesisStreamParameters) (\s@PipeSourceParameters' {} a -> s {kinesisStreamParameters = a} :: PipeSourceParameters)
+
+-- | The parameters for using an MSK stream as a source.
+pipeSourceParameters_managedStreamingKafkaParameters :: Lens.Lens' PipeSourceParameters (Prelude.Maybe PipeSourceManagedStreamingKafkaParameters)
+pipeSourceParameters_managedStreamingKafkaParameters = Lens.lens (\PipeSourceParameters' {managedStreamingKafkaParameters} -> managedStreamingKafkaParameters) (\s@PipeSourceParameters' {} a -> s {managedStreamingKafkaParameters = a} :: PipeSourceParameters)
+
+-- | The parameters for using a Rabbit MQ broker as a source.
+pipeSourceParameters_rabbitMQBrokerParameters :: Lens.Lens' PipeSourceParameters (Prelude.Maybe PipeSourceRabbitMQBrokerParameters)
+pipeSourceParameters_rabbitMQBrokerParameters = Lens.lens (\PipeSourceParameters' {rabbitMQBrokerParameters} -> rabbitMQBrokerParameters) (\s@PipeSourceParameters' {} a -> s {rabbitMQBrokerParameters = a} :: PipeSourceParameters)
+
+-- | The parameters for using a self-managed Apache Kafka stream as a source.
+pipeSourceParameters_selfManagedKafkaParameters :: Lens.Lens' PipeSourceParameters (Prelude.Maybe PipeSourceSelfManagedKafkaParameters)
+pipeSourceParameters_selfManagedKafkaParameters = Lens.lens (\PipeSourceParameters' {selfManagedKafkaParameters} -> selfManagedKafkaParameters) (\s@PipeSourceParameters' {} a -> s {selfManagedKafkaParameters = a} :: PipeSourceParameters)
+
+-- | The parameters for using a Amazon SQS stream as a source.
+pipeSourceParameters_sqsQueueParameters :: Lens.Lens' PipeSourceParameters (Prelude.Maybe PipeSourceSqsQueueParameters)
+pipeSourceParameters_sqsQueueParameters = Lens.lens (\PipeSourceParameters' {sqsQueueParameters} -> sqsQueueParameters) (\s@PipeSourceParameters' {} a -> s {sqsQueueParameters = a} :: PipeSourceParameters)
+
+instance Data.FromJSON PipeSourceParameters where
+  parseJSON =
+    Data.withObject
+      "PipeSourceParameters"
+      ( \x ->
+          PipeSourceParameters'
+            Prelude.<$> (x Data..:? "ActiveMQBrokerParameters")
+            Prelude.<*> (x Data..:? "DynamoDBStreamParameters")
+            Prelude.<*> (x Data..:? "FilterCriteria")
+            Prelude.<*> (x Data..:? "KinesisStreamParameters")
+            Prelude.<*> (x Data..:? "ManagedStreamingKafkaParameters")
+            Prelude.<*> (x Data..:? "RabbitMQBrokerParameters")
+            Prelude.<*> (x Data..:? "SelfManagedKafkaParameters")
+            Prelude.<*> (x Data..:? "SqsQueueParameters")
+      )
+
+instance Prelude.Hashable PipeSourceParameters where
+  hashWithSalt _salt PipeSourceParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeMQBrokerParameters
+      `Prelude.hashWithSalt` dynamoDBStreamParameters
+      `Prelude.hashWithSalt` filterCriteria
+      `Prelude.hashWithSalt` kinesisStreamParameters
+      `Prelude.hashWithSalt` managedStreamingKafkaParameters
+      `Prelude.hashWithSalt` rabbitMQBrokerParameters
+      `Prelude.hashWithSalt` selfManagedKafkaParameters
+      `Prelude.hashWithSalt` sqsQueueParameters
+
+instance Prelude.NFData PipeSourceParameters where
+  rnf PipeSourceParameters' {..} =
+    Prelude.rnf activeMQBrokerParameters
+      `Prelude.seq` Prelude.rnf dynamoDBStreamParameters
+      `Prelude.seq` Prelude.rnf filterCriteria
+      `Prelude.seq` Prelude.rnf kinesisStreamParameters
+      `Prelude.seq` Prelude.rnf managedStreamingKafkaParameters
+      `Prelude.seq` Prelude.rnf rabbitMQBrokerParameters
+      `Prelude.seq` Prelude.rnf selfManagedKafkaParameters
+      `Prelude.seq` Prelude.rnf sqsQueueParameters
+
+instance Data.ToJSON PipeSourceParameters where
+  toJSON PipeSourceParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActiveMQBrokerParameters" Data..=)
+              Prelude.<$> activeMQBrokerParameters,
+            ("DynamoDBStreamParameters" Data..=)
+              Prelude.<$> dynamoDBStreamParameters,
+            ("FilterCriteria" Data..=)
+              Prelude.<$> filterCriteria,
+            ("KinesisStreamParameters" Data..=)
+              Prelude.<$> kinesisStreamParameters,
+            ("ManagedStreamingKafkaParameters" Data..=)
+              Prelude.<$> managedStreamingKafkaParameters,
+            ("RabbitMQBrokerParameters" Data..=)
+              Prelude.<$> rabbitMQBrokerParameters,
+            ("SelfManagedKafkaParameters" Data..=)
+              Prelude.<$> selfManagedKafkaParameters,
+            ("SqsQueueParameters" Data..=)
+              Prelude.<$> sqsQueueParameters
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeSourceRabbitMQBrokerParameters.hs b/gen/Amazonka/Pipes/Types/PipeSourceRabbitMQBrokerParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeSourceRabbitMQBrokerParameters.hs
@@ -0,0 +1,157 @@
+{-# 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.Pipes.Types.PipeSourceRabbitMQBrokerParameters
+-- 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.Pipes.Types.PipeSourceRabbitMQBrokerParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.MQBrokerAccessCredentials
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Rabbit MQ broker as a source.
+--
+-- /See:/ 'newPipeSourceRabbitMQBrokerParameters' smart constructor.
+data PipeSourceRabbitMQBrokerParameters = PipeSourceRabbitMQBrokerParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the virtual host associated with the source broker.
+    virtualHost :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The credentials needed to access the resource.
+    credentials :: MQBrokerAccessCredentials,
+    -- | The name of the destination queue to consume.
+    queueName :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeSourceRabbitMQBrokerParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'pipeSourceRabbitMQBrokerParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'maximumBatchingWindowInSeconds', 'pipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'virtualHost', 'pipeSourceRabbitMQBrokerParameters_virtualHost' - The name of the virtual host associated with the source broker.
+--
+-- 'credentials', 'pipeSourceRabbitMQBrokerParameters_credentials' - The credentials needed to access the resource.
+--
+-- 'queueName', 'pipeSourceRabbitMQBrokerParameters_queueName' - The name of the destination queue to consume.
+newPipeSourceRabbitMQBrokerParameters ::
+  -- | 'credentials'
+  MQBrokerAccessCredentials ->
+  -- | 'queueName'
+  Prelude.Text ->
+  PipeSourceRabbitMQBrokerParameters
+newPipeSourceRabbitMQBrokerParameters
+  pCredentials_
+  pQueueName_ =
+    PipeSourceRabbitMQBrokerParameters'
+      { batchSize =
+          Prelude.Nothing,
+        maximumBatchingWindowInSeconds =
+          Prelude.Nothing,
+        virtualHost = Prelude.Nothing,
+        credentials = pCredentials_,
+        queueName =
+          Data._Sensitive Lens.# pQueueName_
+      }
+
+-- | The maximum number of records to include in each batch.
+pipeSourceRabbitMQBrokerParameters_batchSize :: Lens.Lens' PipeSourceRabbitMQBrokerParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceRabbitMQBrokerParameters_batchSize = Lens.lens (\PipeSourceRabbitMQBrokerParameters' {batchSize} -> batchSize) (\s@PipeSourceRabbitMQBrokerParameters' {} a -> s {batchSize = a} :: PipeSourceRabbitMQBrokerParameters)
+
+-- | The maximum length of a time to wait for events.
+pipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds :: Lens.Lens' PipeSourceRabbitMQBrokerParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds = Lens.lens (\PipeSourceRabbitMQBrokerParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@PipeSourceRabbitMQBrokerParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: PipeSourceRabbitMQBrokerParameters)
+
+-- | The name of the virtual host associated with the source broker.
+pipeSourceRabbitMQBrokerParameters_virtualHost :: Lens.Lens' PipeSourceRabbitMQBrokerParameters (Prelude.Maybe Prelude.Text)
+pipeSourceRabbitMQBrokerParameters_virtualHost = Lens.lens (\PipeSourceRabbitMQBrokerParameters' {virtualHost} -> virtualHost) (\s@PipeSourceRabbitMQBrokerParameters' {} a -> s {virtualHost = a} :: PipeSourceRabbitMQBrokerParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The credentials needed to access the resource.
+pipeSourceRabbitMQBrokerParameters_credentials :: Lens.Lens' PipeSourceRabbitMQBrokerParameters MQBrokerAccessCredentials
+pipeSourceRabbitMQBrokerParameters_credentials = Lens.lens (\PipeSourceRabbitMQBrokerParameters' {credentials} -> credentials) (\s@PipeSourceRabbitMQBrokerParameters' {} a -> s {credentials = a} :: PipeSourceRabbitMQBrokerParameters)
+
+-- | The name of the destination queue to consume.
+pipeSourceRabbitMQBrokerParameters_queueName :: Lens.Lens' PipeSourceRabbitMQBrokerParameters Prelude.Text
+pipeSourceRabbitMQBrokerParameters_queueName = Lens.lens (\PipeSourceRabbitMQBrokerParameters' {queueName} -> queueName) (\s@PipeSourceRabbitMQBrokerParameters' {} a -> s {queueName = a} :: PipeSourceRabbitMQBrokerParameters) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    PipeSourceRabbitMQBrokerParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeSourceRabbitMQBrokerParameters"
+      ( \x ->
+          PipeSourceRabbitMQBrokerParameters'
+            Prelude.<$> (x Data..:? "BatchSize")
+            Prelude.<*> (x Data..:? "MaximumBatchingWindowInSeconds")
+            Prelude.<*> (x Data..:? "VirtualHost")
+            Prelude.<*> (x Data..: "Credentials")
+            Prelude.<*> (x Data..: "QueueName")
+      )
+
+instance
+  Prelude.Hashable
+    PipeSourceRabbitMQBrokerParameters
+  where
+  hashWithSalt
+    _salt
+    PipeSourceRabbitMQBrokerParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` virtualHost
+        `Prelude.hashWithSalt` credentials
+        `Prelude.hashWithSalt` queueName
+
+instance
+  Prelude.NFData
+    PipeSourceRabbitMQBrokerParameters
+  where
+  rnf PipeSourceRabbitMQBrokerParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf virtualHost
+      `Prelude.seq` Prelude.rnf credentials
+      `Prelude.seq` Prelude.rnf queueName
+
+instance
+  Data.ToJSON
+    PipeSourceRabbitMQBrokerParameters
+  where
+  toJSON PipeSourceRabbitMQBrokerParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            ("VirtualHost" Data..=) Prelude.<$> virtualHost,
+            Prelude.Just ("Credentials" Data..= credentials),
+            Prelude.Just ("QueueName" Data..= queueName)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeSourceSelfManagedKafkaParameters.hs b/gen/Amazonka/Pipes/Types/PipeSourceSelfManagedKafkaParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeSourceSelfManagedKafkaParameters.hs
@@ -0,0 +1,218 @@
+{-# 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.Pipes.Types.PipeSourceSelfManagedKafkaParameters
+-- 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.Pipes.Types.PipeSourceSelfManagedKafkaParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationCredentials
+import Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationVpc
+import Amazonka.Pipes.Types.SelfManagedKafkaStartPosition
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a self-managed Apache Kafka stream as a source.
+--
+-- /See:/ 'newPipeSourceSelfManagedKafkaParameters' smart constructor.
+data PipeSourceSelfManagedKafkaParameters = PipeSourceSelfManagedKafkaParameters'
+  { -- | An array of server URLs.
+    additionalBootstrapServers :: Prelude.Maybe [Data.Sensitive Prelude.Text],
+    -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The name of the destination queue to consume.
+    consumerGroupID :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The credentials needed to access the resource.
+    credentials :: Prelude.Maybe SelfManagedKafkaAccessConfigurationCredentials,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The ARN of the Secrets Manager secret used for certification.
+    serverRootCaCertificate :: Prelude.Maybe Prelude.Text,
+    -- | (Streams only) The position in a stream from which to start reading.
+    startingPosition :: Prelude.Maybe SelfManagedKafkaStartPosition,
+    -- | This structure specifies the VPC subnets and security groups for the
+    -- stream, and whether a public IP address is to be used.
+    vpc :: Prelude.Maybe SelfManagedKafkaAccessConfigurationVpc,
+    -- | The name of the topic that the pipe will read from.
+    topicName :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeSourceSelfManagedKafkaParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'additionalBootstrapServers', 'pipeSourceSelfManagedKafkaParameters_additionalBootstrapServers' - An array of server URLs.
+--
+-- 'batchSize', 'pipeSourceSelfManagedKafkaParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'consumerGroupID', 'pipeSourceSelfManagedKafkaParameters_consumerGroupID' - The name of the destination queue to consume.
+--
+-- 'credentials', 'pipeSourceSelfManagedKafkaParameters_credentials' - The credentials needed to access the resource.
+--
+-- 'maximumBatchingWindowInSeconds', 'pipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'serverRootCaCertificate', 'pipeSourceSelfManagedKafkaParameters_serverRootCaCertificate' - The ARN of the Secrets Manager secret used for certification.
+--
+-- 'startingPosition', 'pipeSourceSelfManagedKafkaParameters_startingPosition' - (Streams only) The position in a stream from which to start reading.
+--
+-- 'vpc', 'pipeSourceSelfManagedKafkaParameters_vpc' - This structure specifies the VPC subnets and security groups for the
+-- stream, and whether a public IP address is to be used.
+--
+-- 'topicName', 'pipeSourceSelfManagedKafkaParameters_topicName' - The name of the topic that the pipe will read from.
+newPipeSourceSelfManagedKafkaParameters ::
+  -- | 'topicName'
+  Prelude.Text ->
+  PipeSourceSelfManagedKafkaParameters
+newPipeSourceSelfManagedKafkaParameters pTopicName_ =
+  PipeSourceSelfManagedKafkaParameters'
+    { additionalBootstrapServers =
+        Prelude.Nothing,
+      batchSize = Prelude.Nothing,
+      consumerGroupID = Prelude.Nothing,
+      credentials = Prelude.Nothing,
+      maximumBatchingWindowInSeconds =
+        Prelude.Nothing,
+      serverRootCaCertificate =
+        Prelude.Nothing,
+      startingPosition = Prelude.Nothing,
+      vpc = Prelude.Nothing,
+      topicName =
+        Data._Sensitive Lens.# pTopicName_
+    }
+
+-- | An array of server URLs.
+pipeSourceSelfManagedKafkaParameters_additionalBootstrapServers :: Lens.Lens' PipeSourceSelfManagedKafkaParameters (Prelude.Maybe [Prelude.Text])
+pipeSourceSelfManagedKafkaParameters_additionalBootstrapServers = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {additionalBootstrapServers} -> additionalBootstrapServers) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {additionalBootstrapServers = a} :: PipeSourceSelfManagedKafkaParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of records to include in each batch.
+pipeSourceSelfManagedKafkaParameters_batchSize :: Lens.Lens' PipeSourceSelfManagedKafkaParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceSelfManagedKafkaParameters_batchSize = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {batchSize} -> batchSize) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {batchSize = a} :: PipeSourceSelfManagedKafkaParameters)
+
+-- | The name of the destination queue to consume.
+pipeSourceSelfManagedKafkaParameters_consumerGroupID :: Lens.Lens' PipeSourceSelfManagedKafkaParameters (Prelude.Maybe Prelude.Text)
+pipeSourceSelfManagedKafkaParameters_consumerGroupID = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {consumerGroupID} -> consumerGroupID) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {consumerGroupID = a} :: PipeSourceSelfManagedKafkaParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The credentials needed to access the resource.
+pipeSourceSelfManagedKafkaParameters_credentials :: Lens.Lens' PipeSourceSelfManagedKafkaParameters (Prelude.Maybe SelfManagedKafkaAccessConfigurationCredentials)
+pipeSourceSelfManagedKafkaParameters_credentials = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {credentials} -> credentials) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {credentials = a} :: PipeSourceSelfManagedKafkaParameters)
+
+-- | The maximum length of a time to wait for events.
+pipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds :: Lens.Lens' PipeSourceSelfManagedKafkaParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: PipeSourceSelfManagedKafkaParameters)
+
+-- | The ARN of the Secrets Manager secret used for certification.
+pipeSourceSelfManagedKafkaParameters_serverRootCaCertificate :: Lens.Lens' PipeSourceSelfManagedKafkaParameters (Prelude.Maybe Prelude.Text)
+pipeSourceSelfManagedKafkaParameters_serverRootCaCertificate = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {serverRootCaCertificate} -> serverRootCaCertificate) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {serverRootCaCertificate = a} :: PipeSourceSelfManagedKafkaParameters)
+
+-- | (Streams only) The position in a stream from which to start reading.
+pipeSourceSelfManagedKafkaParameters_startingPosition :: Lens.Lens' PipeSourceSelfManagedKafkaParameters (Prelude.Maybe SelfManagedKafkaStartPosition)
+pipeSourceSelfManagedKafkaParameters_startingPosition = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {startingPosition} -> startingPosition) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {startingPosition = a} :: PipeSourceSelfManagedKafkaParameters)
+
+-- | This structure specifies the VPC subnets and security groups for the
+-- stream, and whether a public IP address is to be used.
+pipeSourceSelfManagedKafkaParameters_vpc :: Lens.Lens' PipeSourceSelfManagedKafkaParameters (Prelude.Maybe SelfManagedKafkaAccessConfigurationVpc)
+pipeSourceSelfManagedKafkaParameters_vpc = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {vpc} -> vpc) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {vpc = a} :: PipeSourceSelfManagedKafkaParameters)
+
+-- | The name of the topic that the pipe will read from.
+pipeSourceSelfManagedKafkaParameters_topicName :: Lens.Lens' PipeSourceSelfManagedKafkaParameters Prelude.Text
+pipeSourceSelfManagedKafkaParameters_topicName = Lens.lens (\PipeSourceSelfManagedKafkaParameters' {topicName} -> topicName) (\s@PipeSourceSelfManagedKafkaParameters' {} a -> s {topicName = a} :: PipeSourceSelfManagedKafkaParameters) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    PipeSourceSelfManagedKafkaParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeSourceSelfManagedKafkaParameters"
+      ( \x ->
+          PipeSourceSelfManagedKafkaParameters'
+            Prelude.<$> ( x
+                            Data..:? "AdditionalBootstrapServers"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "BatchSize")
+            Prelude.<*> (x Data..:? "ConsumerGroupID")
+            Prelude.<*> (x Data..:? "Credentials")
+            Prelude.<*> (x Data..:? "MaximumBatchingWindowInSeconds")
+            Prelude.<*> (x Data..:? "ServerRootCaCertificate")
+            Prelude.<*> (x Data..:? "StartingPosition")
+            Prelude.<*> (x Data..:? "Vpc")
+            Prelude.<*> (x Data..: "TopicName")
+      )
+
+instance
+  Prelude.Hashable
+    PipeSourceSelfManagedKafkaParameters
+  where
+  hashWithSalt
+    _salt
+    PipeSourceSelfManagedKafkaParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` additionalBootstrapServers
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` consumerGroupID
+        `Prelude.hashWithSalt` credentials
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` serverRootCaCertificate
+        `Prelude.hashWithSalt` startingPosition
+        `Prelude.hashWithSalt` vpc
+        `Prelude.hashWithSalt` topicName
+
+instance
+  Prelude.NFData
+    PipeSourceSelfManagedKafkaParameters
+  where
+  rnf PipeSourceSelfManagedKafkaParameters' {..} =
+    Prelude.rnf additionalBootstrapServers
+      `Prelude.seq` Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf consumerGroupID
+      `Prelude.seq` Prelude.rnf credentials
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf serverRootCaCertificate
+      `Prelude.seq` Prelude.rnf startingPosition
+      `Prelude.seq` Prelude.rnf vpc
+      `Prelude.seq` Prelude.rnf topicName
+
+instance
+  Data.ToJSON
+    PipeSourceSelfManagedKafkaParameters
+  where
+  toJSON PipeSourceSelfManagedKafkaParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AdditionalBootstrapServers" Data..=)
+              Prelude.<$> additionalBootstrapServers,
+            ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("ConsumerGroupID" Data..=)
+              Prelude.<$> consumerGroupID,
+            ("Credentials" Data..=) Prelude.<$> credentials,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            ("ServerRootCaCertificate" Data..=)
+              Prelude.<$> serverRootCaCertificate,
+            ("StartingPosition" Data..=)
+              Prelude.<$> startingPosition,
+            ("Vpc" Data..=) Prelude.<$> vpc,
+            Prelude.Just ("TopicName" Data..= topicName)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeSourceSqsQueueParameters.hs b/gen/Amazonka/Pipes/Types/PipeSourceSqsQueueParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeSourceSqsQueueParameters.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.Pipes.Types.PipeSourceSqsQueueParameters
+-- 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.Pipes.Types.PipeSourceSqsQueueParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Amazon SQS stream as a source.
+--
+-- /See:/ 'newPipeSourceSqsQueueParameters' smart constructor.
+data PipeSourceSqsQueueParameters = PipeSourceSqsQueueParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeSourceSqsQueueParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'pipeSourceSqsQueueParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'maximumBatchingWindowInSeconds', 'pipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+newPipeSourceSqsQueueParameters ::
+  PipeSourceSqsQueueParameters
+newPipeSourceSqsQueueParameters =
+  PipeSourceSqsQueueParameters'
+    { batchSize =
+        Prelude.Nothing,
+      maximumBatchingWindowInSeconds =
+        Prelude.Nothing
+    }
+
+-- | The maximum number of records to include in each batch.
+pipeSourceSqsQueueParameters_batchSize :: Lens.Lens' PipeSourceSqsQueueParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceSqsQueueParameters_batchSize = Lens.lens (\PipeSourceSqsQueueParameters' {batchSize} -> batchSize) (\s@PipeSourceSqsQueueParameters' {} a -> s {batchSize = a} :: PipeSourceSqsQueueParameters)
+
+-- | The maximum length of a time to wait for events.
+pipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds :: Lens.Lens' PipeSourceSqsQueueParameters (Prelude.Maybe Prelude.Natural)
+pipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds = Lens.lens (\PipeSourceSqsQueueParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@PipeSourceSqsQueueParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: PipeSourceSqsQueueParameters)
+
+instance Data.FromJSON PipeSourceSqsQueueParameters where
+  parseJSON =
+    Data.withObject
+      "PipeSourceSqsQueueParameters"
+      ( \x ->
+          PipeSourceSqsQueueParameters'
+            Prelude.<$> (x Data..:? "BatchSize")
+            Prelude.<*> (x Data..:? "MaximumBatchingWindowInSeconds")
+      )
+
+instance
+  Prelude.Hashable
+    PipeSourceSqsQueueParameters
+  where
+  hashWithSalt _salt PipeSourceSqsQueueParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchSize
+      `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+
+instance Prelude.NFData PipeSourceSqsQueueParameters where
+  rnf PipeSourceSqsQueueParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+
+instance Data.ToJSON PipeSourceSqsQueueParameters where
+  toJSON PipeSourceSqsQueueParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeState.hs b/gen/Amazonka/Pipes/Types/PipeState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeState.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.Pipes.Types.PipeState
+-- 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.Pipes.Types.PipeState
+  ( PipeState
+      ( ..,
+        PipeState_CREATE_FAILED,
+        PipeState_CREATING,
+        PipeState_DELETING,
+        PipeState_RUNNING,
+        PipeState_STARTING,
+        PipeState_START_FAILED,
+        PipeState_STOPPED,
+        PipeState_STOPPING,
+        PipeState_STOP_FAILED,
+        PipeState_UPDATE_FAILED,
+        PipeState_UPDATING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PipeState = PipeState'
+  { fromPipeState ::
+      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 PipeState_CREATE_FAILED :: PipeState
+pattern PipeState_CREATE_FAILED = PipeState' "CREATE_FAILED"
+
+pattern PipeState_CREATING :: PipeState
+pattern PipeState_CREATING = PipeState' "CREATING"
+
+pattern PipeState_DELETING :: PipeState
+pattern PipeState_DELETING = PipeState' "DELETING"
+
+pattern PipeState_RUNNING :: PipeState
+pattern PipeState_RUNNING = PipeState' "RUNNING"
+
+pattern PipeState_STARTING :: PipeState
+pattern PipeState_STARTING = PipeState' "STARTING"
+
+pattern PipeState_START_FAILED :: PipeState
+pattern PipeState_START_FAILED = PipeState' "START_FAILED"
+
+pattern PipeState_STOPPED :: PipeState
+pattern PipeState_STOPPED = PipeState' "STOPPED"
+
+pattern PipeState_STOPPING :: PipeState
+pattern PipeState_STOPPING = PipeState' "STOPPING"
+
+pattern PipeState_STOP_FAILED :: PipeState
+pattern PipeState_STOP_FAILED = PipeState' "STOP_FAILED"
+
+pattern PipeState_UPDATE_FAILED :: PipeState
+pattern PipeState_UPDATE_FAILED = PipeState' "UPDATE_FAILED"
+
+pattern PipeState_UPDATING :: PipeState
+pattern PipeState_UPDATING = PipeState' "UPDATING"
+
+{-# COMPLETE
+  PipeState_CREATE_FAILED,
+  PipeState_CREATING,
+  PipeState_DELETING,
+  PipeState_RUNNING,
+  PipeState_STARTING,
+  PipeState_START_FAILED,
+  PipeState_STOPPED,
+  PipeState_STOPPING,
+  PipeState_STOP_FAILED,
+  PipeState_UPDATE_FAILED,
+  PipeState_UPDATING,
+  PipeState'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetBatchJobParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetBatchJobParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetBatchJobParameters.hs
@@ -0,0 +1,231 @@
+{-# 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.Pipes.Types.PipeTargetBatchJobParameters
+-- 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.Pipes.Types.PipeTargetBatchJobParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.BatchArrayProperties
+import Amazonka.Pipes.Types.BatchContainerOverrides
+import Amazonka.Pipes.Types.BatchJobDependency
+import Amazonka.Pipes.Types.BatchRetryStrategy
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using an Batch job as a target.
+--
+-- /See:/ 'newPipeTargetBatchJobParameters' smart constructor.
+data PipeTargetBatchJobParameters = PipeTargetBatchJobParameters'
+  { -- | The array properties for the submitted job, such as the size of the
+    -- array. The array size can be between 2 and 10,000. If you specify array
+    -- properties for a job, it becomes an array job. This parameter is used
+    -- only if the target is an Batch job.
+    arrayProperties :: Prelude.Maybe BatchArrayProperties,
+    -- | The overrides that are sent to a container.
+    containerOverrides :: Prelude.Maybe BatchContainerOverrides,
+    -- | A list of dependencies for the job. A job can depend upon a maximum of
+    -- 20 jobs. You can specify a @SEQUENTIAL@ type dependency without
+    -- specifying a job ID for array jobs so that each child array job
+    -- completes sequentially, starting at index 0. You can also specify an
+    -- @N_TO_N@ type dependency with a job ID for array jobs. In that case,
+    -- each index child of this job must wait for the corresponding index child
+    -- of each dependency to complete before it can begin.
+    dependsOn :: Prelude.Maybe [BatchJobDependency],
+    -- | Additional parameters passed to the job that replace parameter
+    -- substitution placeholders that are set in the job definition. Parameters
+    -- are specified as a key and value pair mapping. Parameters included here
+    -- override any corresponding parameter defaults from the job definition.
+    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The retry strategy to use for failed jobs. When a retry strategy is
+    -- specified here, it overrides the retry strategy defined in the job
+    -- definition.
+    retryStrategy :: Prelude.Maybe BatchRetryStrategy,
+    -- | The job definition used by this job. This value can be one of @name@,
+    -- @name:revision@, or the Amazon Resource Name (ARN) for the job
+    -- definition. If name is specified without a revision then the latest
+    -- active revision is used.
+    jobDefinition :: Prelude.Text,
+    -- | The name of the job. It can be up to 128 letters long. The first
+    -- character must be alphanumeric, can contain uppercase and lowercase
+    -- letters, numbers, hyphens (-), and underscores (_).
+    jobName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetBatchJobParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arrayProperties', 'pipeTargetBatchJobParameters_arrayProperties' - The array properties for the submitted job, such as the size of the
+-- array. The array size can be between 2 and 10,000. If you specify array
+-- properties for a job, it becomes an array job. This parameter is used
+-- only if the target is an Batch job.
+--
+-- 'containerOverrides', 'pipeTargetBatchJobParameters_containerOverrides' - The overrides that are sent to a container.
+--
+-- 'dependsOn', 'pipeTargetBatchJobParameters_dependsOn' - A list of dependencies for the job. A job can depend upon a maximum of
+-- 20 jobs. You can specify a @SEQUENTIAL@ type dependency without
+-- specifying a job ID for array jobs so that each child array job
+-- completes sequentially, starting at index 0. You can also specify an
+-- @N_TO_N@ type dependency with a job ID for array jobs. In that case,
+-- each index child of this job must wait for the corresponding index child
+-- of each dependency to complete before it can begin.
+--
+-- 'parameters', 'pipeTargetBatchJobParameters_parameters' - Additional parameters passed to the job that replace parameter
+-- substitution placeholders that are set in the job definition. Parameters
+-- are specified as a key and value pair mapping. Parameters included here
+-- override any corresponding parameter defaults from the job definition.
+--
+-- 'retryStrategy', 'pipeTargetBatchJobParameters_retryStrategy' - The retry strategy to use for failed jobs. When a retry strategy is
+-- specified here, it overrides the retry strategy defined in the job
+-- definition.
+--
+-- 'jobDefinition', 'pipeTargetBatchJobParameters_jobDefinition' - The job definition used by this job. This value can be one of @name@,
+-- @name:revision@, or the Amazon Resource Name (ARN) for the job
+-- definition. If name is specified without a revision then the latest
+-- active revision is used.
+--
+-- 'jobName', 'pipeTargetBatchJobParameters_jobName' - The name of the job. It can be up to 128 letters long. The first
+-- character must be alphanumeric, can contain uppercase and lowercase
+-- letters, numbers, hyphens (-), and underscores (_).
+newPipeTargetBatchJobParameters ::
+  -- | 'jobDefinition'
+  Prelude.Text ->
+  -- | 'jobName'
+  Prelude.Text ->
+  PipeTargetBatchJobParameters
+newPipeTargetBatchJobParameters
+  pJobDefinition_
+  pJobName_ =
+    PipeTargetBatchJobParameters'
+      { arrayProperties =
+          Prelude.Nothing,
+        containerOverrides = Prelude.Nothing,
+        dependsOn = Prelude.Nothing,
+        parameters = Prelude.Nothing,
+        retryStrategy = Prelude.Nothing,
+        jobDefinition = pJobDefinition_,
+        jobName = pJobName_
+      }
+
+-- | The array properties for the submitted job, such as the size of the
+-- array. The array size can be between 2 and 10,000. If you specify array
+-- properties for a job, it becomes an array job. This parameter is used
+-- only if the target is an Batch job.
+pipeTargetBatchJobParameters_arrayProperties :: Lens.Lens' PipeTargetBatchJobParameters (Prelude.Maybe BatchArrayProperties)
+pipeTargetBatchJobParameters_arrayProperties = Lens.lens (\PipeTargetBatchJobParameters' {arrayProperties} -> arrayProperties) (\s@PipeTargetBatchJobParameters' {} a -> s {arrayProperties = a} :: PipeTargetBatchJobParameters)
+
+-- | The overrides that are sent to a container.
+pipeTargetBatchJobParameters_containerOverrides :: Lens.Lens' PipeTargetBatchJobParameters (Prelude.Maybe BatchContainerOverrides)
+pipeTargetBatchJobParameters_containerOverrides = Lens.lens (\PipeTargetBatchJobParameters' {containerOverrides} -> containerOverrides) (\s@PipeTargetBatchJobParameters' {} a -> s {containerOverrides = a} :: PipeTargetBatchJobParameters)
+
+-- | A list of dependencies for the job. A job can depend upon a maximum of
+-- 20 jobs. You can specify a @SEQUENTIAL@ type dependency without
+-- specifying a job ID for array jobs so that each child array job
+-- completes sequentially, starting at index 0. You can also specify an
+-- @N_TO_N@ type dependency with a job ID for array jobs. In that case,
+-- each index child of this job must wait for the corresponding index child
+-- of each dependency to complete before it can begin.
+pipeTargetBatchJobParameters_dependsOn :: Lens.Lens' PipeTargetBatchJobParameters (Prelude.Maybe [BatchJobDependency])
+pipeTargetBatchJobParameters_dependsOn = Lens.lens (\PipeTargetBatchJobParameters' {dependsOn} -> dependsOn) (\s@PipeTargetBatchJobParameters' {} a -> s {dependsOn = a} :: PipeTargetBatchJobParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | Additional parameters passed to the job that replace parameter
+-- substitution placeholders that are set in the job definition. Parameters
+-- are specified as a key and value pair mapping. Parameters included here
+-- override any corresponding parameter defaults from the job definition.
+pipeTargetBatchJobParameters_parameters :: Lens.Lens' PipeTargetBatchJobParameters (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+pipeTargetBatchJobParameters_parameters = Lens.lens (\PipeTargetBatchJobParameters' {parameters} -> parameters) (\s@PipeTargetBatchJobParameters' {} a -> s {parameters = a} :: PipeTargetBatchJobParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The retry strategy to use for failed jobs. When a retry strategy is
+-- specified here, it overrides the retry strategy defined in the job
+-- definition.
+pipeTargetBatchJobParameters_retryStrategy :: Lens.Lens' PipeTargetBatchJobParameters (Prelude.Maybe BatchRetryStrategy)
+pipeTargetBatchJobParameters_retryStrategy = Lens.lens (\PipeTargetBatchJobParameters' {retryStrategy} -> retryStrategy) (\s@PipeTargetBatchJobParameters' {} a -> s {retryStrategy = a} :: PipeTargetBatchJobParameters)
+
+-- | The job definition used by this job. This value can be one of @name@,
+-- @name:revision@, or the Amazon Resource Name (ARN) for the job
+-- definition. If name is specified without a revision then the latest
+-- active revision is used.
+pipeTargetBatchJobParameters_jobDefinition :: Lens.Lens' PipeTargetBatchJobParameters Prelude.Text
+pipeTargetBatchJobParameters_jobDefinition = Lens.lens (\PipeTargetBatchJobParameters' {jobDefinition} -> jobDefinition) (\s@PipeTargetBatchJobParameters' {} a -> s {jobDefinition = a} :: PipeTargetBatchJobParameters)
+
+-- | The name of the job. It can be up to 128 letters long. The first
+-- character must be alphanumeric, can contain uppercase and lowercase
+-- letters, numbers, hyphens (-), and underscores (_).
+pipeTargetBatchJobParameters_jobName :: Lens.Lens' PipeTargetBatchJobParameters Prelude.Text
+pipeTargetBatchJobParameters_jobName = Lens.lens (\PipeTargetBatchJobParameters' {jobName} -> jobName) (\s@PipeTargetBatchJobParameters' {} a -> s {jobName = a} :: PipeTargetBatchJobParameters)
+
+instance Data.FromJSON PipeTargetBatchJobParameters where
+  parseJSON =
+    Data.withObject
+      "PipeTargetBatchJobParameters"
+      ( \x ->
+          PipeTargetBatchJobParameters'
+            Prelude.<$> (x Data..:? "ArrayProperties")
+            Prelude.<*> (x Data..:? "ContainerOverrides")
+            Prelude.<*> (x Data..:? "DependsOn" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Parameters" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "RetryStrategy")
+            Prelude.<*> (x Data..: "JobDefinition")
+            Prelude.<*> (x Data..: "JobName")
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetBatchJobParameters
+  where
+  hashWithSalt _salt PipeTargetBatchJobParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` arrayProperties
+      `Prelude.hashWithSalt` containerOverrides
+      `Prelude.hashWithSalt` dependsOn
+      `Prelude.hashWithSalt` parameters
+      `Prelude.hashWithSalt` retryStrategy
+      `Prelude.hashWithSalt` jobDefinition
+      `Prelude.hashWithSalt` jobName
+
+instance Prelude.NFData PipeTargetBatchJobParameters where
+  rnf PipeTargetBatchJobParameters' {..} =
+    Prelude.rnf arrayProperties
+      `Prelude.seq` Prelude.rnf containerOverrides
+      `Prelude.seq` Prelude.rnf dependsOn
+      `Prelude.seq` Prelude.rnf parameters
+      `Prelude.seq` Prelude.rnf retryStrategy
+      `Prelude.seq` Prelude.rnf jobDefinition
+      `Prelude.seq` Prelude.rnf jobName
+
+instance Data.ToJSON PipeTargetBatchJobParameters where
+  toJSON PipeTargetBatchJobParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArrayProperties" Data..=)
+              Prelude.<$> arrayProperties,
+            ("ContainerOverrides" Data..=)
+              Prelude.<$> containerOverrides,
+            ("DependsOn" Data..=) Prelude.<$> dependsOn,
+            ("Parameters" Data..=) Prelude.<$> parameters,
+            ("RetryStrategy" Data..=) Prelude.<$> retryStrategy,
+            Prelude.Just ("JobDefinition" Data..= jobDefinition),
+            Prelude.Just ("JobName" Data..= jobName)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetCloudWatchLogsParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetCloudWatchLogsParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetCloudWatchLogsParameters.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.Pipes.Types.PipeTargetCloudWatchLogsParameters
+-- 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.Pipes.Types.PipeTargetCloudWatchLogsParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using an CloudWatch Logs log stream as a target.
+--
+-- /See:/ 'newPipeTargetCloudWatchLogsParameters' smart constructor.
+data PipeTargetCloudWatchLogsParameters = PipeTargetCloudWatchLogsParameters'
+  { -- | The name of the log stream.
+    logStreamName :: Prelude.Maybe Prelude.Text,
+    -- | The time the event occurred, expressed as the number of milliseconds
+    -- after Jan 1, 1970 00:00:00 UTC.
+    timestamp :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetCloudWatchLogsParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logStreamName', 'pipeTargetCloudWatchLogsParameters_logStreamName' - The name of the log stream.
+--
+-- 'timestamp', 'pipeTargetCloudWatchLogsParameters_timestamp' - The time the event occurred, expressed as the number of milliseconds
+-- after Jan 1, 1970 00:00:00 UTC.
+newPipeTargetCloudWatchLogsParameters ::
+  PipeTargetCloudWatchLogsParameters
+newPipeTargetCloudWatchLogsParameters =
+  PipeTargetCloudWatchLogsParameters'
+    { logStreamName =
+        Prelude.Nothing,
+      timestamp = Prelude.Nothing
+    }
+
+-- | The name of the log stream.
+pipeTargetCloudWatchLogsParameters_logStreamName :: Lens.Lens' PipeTargetCloudWatchLogsParameters (Prelude.Maybe Prelude.Text)
+pipeTargetCloudWatchLogsParameters_logStreamName = Lens.lens (\PipeTargetCloudWatchLogsParameters' {logStreamName} -> logStreamName) (\s@PipeTargetCloudWatchLogsParameters' {} a -> s {logStreamName = a} :: PipeTargetCloudWatchLogsParameters)
+
+-- | The time the event occurred, expressed as the number of milliseconds
+-- after Jan 1, 1970 00:00:00 UTC.
+pipeTargetCloudWatchLogsParameters_timestamp :: Lens.Lens' PipeTargetCloudWatchLogsParameters (Prelude.Maybe Prelude.Text)
+pipeTargetCloudWatchLogsParameters_timestamp = Lens.lens (\PipeTargetCloudWatchLogsParameters' {timestamp} -> timestamp) (\s@PipeTargetCloudWatchLogsParameters' {} a -> s {timestamp = a} :: PipeTargetCloudWatchLogsParameters)
+
+instance
+  Data.FromJSON
+    PipeTargetCloudWatchLogsParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeTargetCloudWatchLogsParameters"
+      ( \x ->
+          PipeTargetCloudWatchLogsParameters'
+            Prelude.<$> (x Data..:? "LogStreamName")
+            Prelude.<*> (x Data..:? "Timestamp")
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetCloudWatchLogsParameters
+  where
+  hashWithSalt
+    _salt
+    PipeTargetCloudWatchLogsParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` logStreamName
+        `Prelude.hashWithSalt` timestamp
+
+instance
+  Prelude.NFData
+    PipeTargetCloudWatchLogsParameters
+  where
+  rnf PipeTargetCloudWatchLogsParameters' {..} =
+    Prelude.rnf logStreamName
+      `Prelude.seq` Prelude.rnf timestamp
+
+instance
+  Data.ToJSON
+    PipeTargetCloudWatchLogsParameters
+  where
+  toJSON PipeTargetCloudWatchLogsParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("LogStreamName" Data..=) Prelude.<$> logStreamName,
+            ("Timestamp" Data..=) Prelude.<$> timestamp
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetEcsTaskParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetEcsTaskParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetEcsTaskParameters.hs
@@ -0,0 +1,416 @@
+{-# 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.Pipes.Types.PipeTargetEcsTaskParameters
+-- 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.Pipes.Types.PipeTargetEcsTaskParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.CapacityProviderStrategyItem
+import Amazonka.Pipes.Types.EcsTaskOverride
+import Amazonka.Pipes.Types.LaunchType
+import Amazonka.Pipes.Types.NetworkConfiguration
+import Amazonka.Pipes.Types.PlacementConstraint
+import Amazonka.Pipes.Types.PlacementStrategy
+import Amazonka.Pipes.Types.PropagateTags
+import Amazonka.Pipes.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using an Amazon ECS task as a target.
+--
+-- /See:/ 'newPipeTargetEcsTaskParameters' smart constructor.
+data PipeTargetEcsTaskParameters = PipeTargetEcsTaskParameters'
+  { -- | The capacity provider strategy to use for the task.
+    --
+    -- If a @capacityProviderStrategy@ is specified, the @launchType@ parameter
+    -- must be omitted. If no @capacityProviderStrategy@ or launchType is
+    -- specified, the @defaultCapacityProviderStrategy@ for the cluster is
+    -- used.
+    capacityProviderStrategy :: Prelude.Maybe [CapacityProviderStrategyItem],
+    -- | Specifies whether to enable Amazon ECS managed tags for the task. For
+    -- more information, see
+    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html Tagging Your Amazon ECS Resources>
+    -- in the Amazon Elastic Container Service Developer Guide.
+    enableECSManagedTags :: Prelude.Maybe Prelude.Bool,
+    -- | Whether or not to enable the execute command functionality for the
+    -- containers in this task. If true, this enables execute command
+    -- functionality on all containers in the task.
+    enableExecuteCommand :: Prelude.Maybe Prelude.Bool,
+    -- | Specifies an Amazon ECS task group for the task. The maximum length is
+    -- 255 characters.
+    group' :: Prelude.Maybe Prelude.Text,
+    -- | Specifies the launch type on which your task is running. The launch type
+    -- that you specify here must match one of the launch type
+    -- (compatibilities) of the target task. The @FARGATE@ value is supported
+    -- only in the Regions where Fargate with Amazon ECS is supported. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS-Fargate.html Fargate on Amazon ECS>
+    -- in the /Amazon Elastic Container Service Developer Guide/.
+    launchType :: Prelude.Maybe LaunchType,
+    -- | Use this structure if the Amazon ECS task uses the @awsvpc@ network
+    -- mode. This structure specifies the VPC subnets and security groups
+    -- associated with the task, and whether a public IP address is to be used.
+    -- This structure is required if @LaunchType@ is @FARGATE@ because the
+    -- @awsvpc@ mode is required for Fargate tasks.
+    --
+    -- If you specify @NetworkConfiguration@ when the target ECS task does not
+    -- use the @awsvpc@ network mode, the task fails.
+    networkConfiguration :: Prelude.Maybe NetworkConfiguration,
+    -- | The overrides that are associated with a task.
+    overrides :: Prelude.Maybe EcsTaskOverride,
+    -- | An array of placement constraint objects to use for the task. You can
+    -- specify up to 10 constraints per task (including constraints in the task
+    -- definition and those specified at runtime).
+    placementConstraints :: Prelude.Maybe [PlacementConstraint],
+    -- | The placement strategy objects to use for the task. You can specify a
+    -- maximum of five strategy rules per task.
+    placementStrategy :: Prelude.Maybe [PlacementStrategy],
+    -- | Specifies the platform version for the task. Specify only the numeric
+    -- portion of the platform version, such as @1.1.0@.
+    --
+    -- This structure is used only if @LaunchType@ is @FARGATE@. For more
+    -- information about valid platform versions, see
+    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html Fargate Platform Versions>
+    -- in the /Amazon Elastic Container Service Developer Guide/.
+    platformVersion :: Prelude.Maybe Prelude.Text,
+    -- | Specifies whether to propagate the tags from the task definition to the
+    -- task. If no value is specified, the tags are not propagated. Tags can
+    -- only be propagated to the task during task creation. To add tags to a
+    -- task after task creation, use the @TagResource@ API action.
+    propagateTags :: Prelude.Maybe PropagateTags,
+    -- | The reference ID to use for the task.
+    referenceId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The metadata that you apply to the task to help you categorize and
+    -- organize them. Each tag consists of a key and an optional value, both of
+    -- which you define. To learn more, see
+    -- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html#ECS-RunTask-request-tags RunTask>
+    -- in the Amazon ECS API Reference.
+    tags :: Prelude.Maybe [Tag],
+    -- | The number of tasks to create based on @TaskDefinition@. The default is
+    -- 1.
+    taskCount :: Prelude.Maybe Prelude.Natural,
+    -- | The ARN of the task definition to use if the event target is an Amazon
+    -- ECS task.
+    taskDefinitionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetEcsTaskParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'capacityProviderStrategy', 'pipeTargetEcsTaskParameters_capacityProviderStrategy' - The capacity provider strategy to use for the task.
+--
+-- If a @capacityProviderStrategy@ is specified, the @launchType@ parameter
+-- must be omitted. If no @capacityProviderStrategy@ or launchType is
+-- specified, the @defaultCapacityProviderStrategy@ for the cluster is
+-- used.
+--
+-- 'enableECSManagedTags', 'pipeTargetEcsTaskParameters_enableECSManagedTags' - Specifies whether to enable Amazon ECS managed tags for the task. For
+-- more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html Tagging Your Amazon ECS Resources>
+-- in the Amazon Elastic Container Service Developer Guide.
+--
+-- 'enableExecuteCommand', 'pipeTargetEcsTaskParameters_enableExecuteCommand' - Whether or not to enable the execute command functionality for the
+-- containers in this task. If true, this enables execute command
+-- functionality on all containers in the task.
+--
+-- 'group'', 'pipeTargetEcsTaskParameters_group' - Specifies an Amazon ECS task group for the task. The maximum length is
+-- 255 characters.
+--
+-- 'launchType', 'pipeTargetEcsTaskParameters_launchType' - Specifies the launch type on which your task is running. The launch type
+-- that you specify here must match one of the launch type
+-- (compatibilities) of the target task. The @FARGATE@ value is supported
+-- only in the Regions where Fargate with Amazon ECS is supported. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS-Fargate.html Fargate on Amazon ECS>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+--
+-- 'networkConfiguration', 'pipeTargetEcsTaskParameters_networkConfiguration' - Use this structure if the Amazon ECS task uses the @awsvpc@ network
+-- mode. This structure specifies the VPC subnets and security groups
+-- associated with the task, and whether a public IP address is to be used.
+-- This structure is required if @LaunchType@ is @FARGATE@ because the
+-- @awsvpc@ mode is required for Fargate tasks.
+--
+-- If you specify @NetworkConfiguration@ when the target ECS task does not
+-- use the @awsvpc@ network mode, the task fails.
+--
+-- 'overrides', 'pipeTargetEcsTaskParameters_overrides' - The overrides that are associated with a task.
+--
+-- 'placementConstraints', 'pipeTargetEcsTaskParameters_placementConstraints' - An array of placement constraint objects to use for the task. You can
+-- specify up to 10 constraints per task (including constraints in the task
+-- definition and those specified at runtime).
+--
+-- 'placementStrategy', 'pipeTargetEcsTaskParameters_placementStrategy' - The placement strategy objects to use for the task. You can specify a
+-- maximum of five strategy rules per task.
+--
+-- 'platformVersion', 'pipeTargetEcsTaskParameters_platformVersion' - Specifies the platform version for the task. Specify only the numeric
+-- portion of the platform version, such as @1.1.0@.
+--
+-- This structure is used only if @LaunchType@ is @FARGATE@. For more
+-- information about valid platform versions, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html Fargate Platform Versions>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+--
+-- 'propagateTags', 'pipeTargetEcsTaskParameters_propagateTags' - Specifies whether to propagate the tags from the task definition to the
+-- task. If no value is specified, the tags are not propagated. Tags can
+-- only be propagated to the task during task creation. To add tags to a
+-- task after task creation, use the @TagResource@ API action.
+--
+-- 'referenceId', 'pipeTargetEcsTaskParameters_referenceId' - The reference ID to use for the task.
+--
+-- 'tags', 'pipeTargetEcsTaskParameters_tags' - The metadata that you apply to the task to help you categorize and
+-- organize them. Each tag consists of a key and an optional value, both of
+-- which you define. To learn more, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html#ECS-RunTask-request-tags RunTask>
+-- in the Amazon ECS API Reference.
+--
+-- 'taskCount', 'pipeTargetEcsTaskParameters_taskCount' - The number of tasks to create based on @TaskDefinition@. The default is
+-- 1.
+--
+-- 'taskDefinitionArn', 'pipeTargetEcsTaskParameters_taskDefinitionArn' - The ARN of the task definition to use if the event target is an Amazon
+-- ECS task.
+newPipeTargetEcsTaskParameters ::
+  -- | 'taskDefinitionArn'
+  Prelude.Text ->
+  PipeTargetEcsTaskParameters
+newPipeTargetEcsTaskParameters pTaskDefinitionArn_ =
+  PipeTargetEcsTaskParameters'
+    { capacityProviderStrategy =
+        Prelude.Nothing,
+      enableECSManagedTags = Prelude.Nothing,
+      enableExecuteCommand = Prelude.Nothing,
+      group' = Prelude.Nothing,
+      launchType = Prelude.Nothing,
+      networkConfiguration = Prelude.Nothing,
+      overrides = Prelude.Nothing,
+      placementConstraints = Prelude.Nothing,
+      placementStrategy = Prelude.Nothing,
+      platformVersion = Prelude.Nothing,
+      propagateTags = Prelude.Nothing,
+      referenceId = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      taskCount = Prelude.Nothing,
+      taskDefinitionArn = pTaskDefinitionArn_
+    }
+
+-- | The capacity provider strategy to use for the task.
+--
+-- If a @capacityProviderStrategy@ is specified, the @launchType@ parameter
+-- must be omitted. If no @capacityProviderStrategy@ or launchType is
+-- specified, the @defaultCapacityProviderStrategy@ for the cluster is
+-- used.
+pipeTargetEcsTaskParameters_capacityProviderStrategy :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe [CapacityProviderStrategyItem])
+pipeTargetEcsTaskParameters_capacityProviderStrategy = Lens.lens (\PipeTargetEcsTaskParameters' {capacityProviderStrategy} -> capacityProviderStrategy) (\s@PipeTargetEcsTaskParameters' {} a -> s {capacityProviderStrategy = a} :: PipeTargetEcsTaskParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies whether to enable Amazon ECS managed tags for the task. For
+-- more information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html Tagging Your Amazon ECS Resources>
+-- in the Amazon Elastic Container Service Developer Guide.
+pipeTargetEcsTaskParameters_enableECSManagedTags :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Bool)
+pipeTargetEcsTaskParameters_enableECSManagedTags = Lens.lens (\PipeTargetEcsTaskParameters' {enableECSManagedTags} -> enableECSManagedTags) (\s@PipeTargetEcsTaskParameters' {} a -> s {enableECSManagedTags = a} :: PipeTargetEcsTaskParameters)
+
+-- | Whether or not to enable the execute command functionality for the
+-- containers in this task. If true, this enables execute command
+-- functionality on all containers in the task.
+pipeTargetEcsTaskParameters_enableExecuteCommand :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Bool)
+pipeTargetEcsTaskParameters_enableExecuteCommand = Lens.lens (\PipeTargetEcsTaskParameters' {enableExecuteCommand} -> enableExecuteCommand) (\s@PipeTargetEcsTaskParameters' {} a -> s {enableExecuteCommand = a} :: PipeTargetEcsTaskParameters)
+
+-- | Specifies an Amazon ECS task group for the task. The maximum length is
+-- 255 characters.
+pipeTargetEcsTaskParameters_group :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Text)
+pipeTargetEcsTaskParameters_group = Lens.lens (\PipeTargetEcsTaskParameters' {group'} -> group') (\s@PipeTargetEcsTaskParameters' {} a -> s {group' = a} :: PipeTargetEcsTaskParameters)
+
+-- | Specifies the launch type on which your task is running. The launch type
+-- that you specify here must match one of the launch type
+-- (compatibilities) of the target task. The @FARGATE@ value is supported
+-- only in the Regions where Fargate with Amazon ECS is supported. For more
+-- information, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS-Fargate.html Fargate on Amazon ECS>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+pipeTargetEcsTaskParameters_launchType :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe LaunchType)
+pipeTargetEcsTaskParameters_launchType = Lens.lens (\PipeTargetEcsTaskParameters' {launchType} -> launchType) (\s@PipeTargetEcsTaskParameters' {} a -> s {launchType = a} :: PipeTargetEcsTaskParameters)
+
+-- | Use this structure if the Amazon ECS task uses the @awsvpc@ network
+-- mode. This structure specifies the VPC subnets and security groups
+-- associated with the task, and whether a public IP address is to be used.
+-- This structure is required if @LaunchType@ is @FARGATE@ because the
+-- @awsvpc@ mode is required for Fargate tasks.
+--
+-- If you specify @NetworkConfiguration@ when the target ECS task does not
+-- use the @awsvpc@ network mode, the task fails.
+pipeTargetEcsTaskParameters_networkConfiguration :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe NetworkConfiguration)
+pipeTargetEcsTaskParameters_networkConfiguration = Lens.lens (\PipeTargetEcsTaskParameters' {networkConfiguration} -> networkConfiguration) (\s@PipeTargetEcsTaskParameters' {} a -> s {networkConfiguration = a} :: PipeTargetEcsTaskParameters)
+
+-- | The overrides that are associated with a task.
+pipeTargetEcsTaskParameters_overrides :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe EcsTaskOverride)
+pipeTargetEcsTaskParameters_overrides = Lens.lens (\PipeTargetEcsTaskParameters' {overrides} -> overrides) (\s@PipeTargetEcsTaskParameters' {} a -> s {overrides = a} :: PipeTargetEcsTaskParameters)
+
+-- | An array of placement constraint objects to use for the task. You can
+-- specify up to 10 constraints per task (including constraints in the task
+-- definition and those specified at runtime).
+pipeTargetEcsTaskParameters_placementConstraints :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe [PlacementConstraint])
+pipeTargetEcsTaskParameters_placementConstraints = Lens.lens (\PipeTargetEcsTaskParameters' {placementConstraints} -> placementConstraints) (\s@PipeTargetEcsTaskParameters' {} a -> s {placementConstraints = a} :: PipeTargetEcsTaskParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The placement strategy objects to use for the task. You can specify a
+-- maximum of five strategy rules per task.
+pipeTargetEcsTaskParameters_placementStrategy :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe [PlacementStrategy])
+pipeTargetEcsTaskParameters_placementStrategy = Lens.lens (\PipeTargetEcsTaskParameters' {placementStrategy} -> placementStrategy) (\s@PipeTargetEcsTaskParameters' {} a -> s {placementStrategy = a} :: PipeTargetEcsTaskParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the platform version for the task. Specify only the numeric
+-- portion of the platform version, such as @1.1.0@.
+--
+-- This structure is used only if @LaunchType@ is @FARGATE@. For more
+-- information about valid platform versions, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html Fargate Platform Versions>
+-- in the /Amazon Elastic Container Service Developer Guide/.
+pipeTargetEcsTaskParameters_platformVersion :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Text)
+pipeTargetEcsTaskParameters_platformVersion = Lens.lens (\PipeTargetEcsTaskParameters' {platformVersion} -> platformVersion) (\s@PipeTargetEcsTaskParameters' {} a -> s {platformVersion = a} :: PipeTargetEcsTaskParameters)
+
+-- | Specifies whether to propagate the tags from the task definition to the
+-- task. If no value is specified, the tags are not propagated. Tags can
+-- only be propagated to the task during task creation. To add tags to a
+-- task after task creation, use the @TagResource@ API action.
+pipeTargetEcsTaskParameters_propagateTags :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe PropagateTags)
+pipeTargetEcsTaskParameters_propagateTags = Lens.lens (\PipeTargetEcsTaskParameters' {propagateTags} -> propagateTags) (\s@PipeTargetEcsTaskParameters' {} a -> s {propagateTags = a} :: PipeTargetEcsTaskParameters)
+
+-- | The reference ID to use for the task.
+pipeTargetEcsTaskParameters_referenceId :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Text)
+pipeTargetEcsTaskParameters_referenceId = Lens.lens (\PipeTargetEcsTaskParameters' {referenceId} -> referenceId) (\s@PipeTargetEcsTaskParameters' {} a -> s {referenceId = a} :: PipeTargetEcsTaskParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The metadata that you apply to the task to help you categorize and
+-- organize them. Each tag consists of a key and an optional value, both of
+-- which you define. To learn more, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html#ECS-RunTask-request-tags RunTask>
+-- in the Amazon ECS API Reference.
+pipeTargetEcsTaskParameters_tags :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe [Tag])
+pipeTargetEcsTaskParameters_tags = Lens.lens (\PipeTargetEcsTaskParameters' {tags} -> tags) (\s@PipeTargetEcsTaskParameters' {} a -> s {tags = a} :: PipeTargetEcsTaskParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The number of tasks to create based on @TaskDefinition@. The default is
+-- 1.
+pipeTargetEcsTaskParameters_taskCount :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Natural)
+pipeTargetEcsTaskParameters_taskCount = Lens.lens (\PipeTargetEcsTaskParameters' {taskCount} -> taskCount) (\s@PipeTargetEcsTaskParameters' {} a -> s {taskCount = a} :: PipeTargetEcsTaskParameters)
+
+-- | The ARN of the task definition to use if the event target is an Amazon
+-- ECS task.
+pipeTargetEcsTaskParameters_taskDefinitionArn :: Lens.Lens' PipeTargetEcsTaskParameters Prelude.Text
+pipeTargetEcsTaskParameters_taskDefinitionArn = Lens.lens (\PipeTargetEcsTaskParameters' {taskDefinitionArn} -> taskDefinitionArn) (\s@PipeTargetEcsTaskParameters' {} a -> s {taskDefinitionArn = a} :: PipeTargetEcsTaskParameters)
+
+instance Data.FromJSON PipeTargetEcsTaskParameters where
+  parseJSON =
+    Data.withObject
+      "PipeTargetEcsTaskParameters"
+      ( \x ->
+          PipeTargetEcsTaskParameters'
+            Prelude.<$> ( x
+                            Data..:? "CapacityProviderStrategy"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "EnableECSManagedTags")
+            Prelude.<*> (x Data..:? "EnableExecuteCommand")
+            Prelude.<*> (x Data..:? "Group")
+            Prelude.<*> (x Data..:? "LaunchType")
+            Prelude.<*> (x Data..:? "NetworkConfiguration")
+            Prelude.<*> (x Data..:? "Overrides")
+            Prelude.<*> ( x
+                            Data..:? "PlacementConstraints"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "PlacementStrategy"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "PlatformVersion")
+            Prelude.<*> (x Data..:? "PropagateTags")
+            Prelude.<*> (x Data..:? "ReferenceId")
+            Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "TaskCount")
+            Prelude.<*> (x Data..: "TaskDefinitionArn")
+      )
+
+instance Prelude.Hashable PipeTargetEcsTaskParameters where
+  hashWithSalt _salt PipeTargetEcsTaskParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` capacityProviderStrategy
+      `Prelude.hashWithSalt` enableECSManagedTags
+      `Prelude.hashWithSalt` enableExecuteCommand
+      `Prelude.hashWithSalt` group'
+      `Prelude.hashWithSalt` launchType
+      `Prelude.hashWithSalt` networkConfiguration
+      `Prelude.hashWithSalt` overrides
+      `Prelude.hashWithSalt` placementConstraints
+      `Prelude.hashWithSalt` placementStrategy
+      `Prelude.hashWithSalt` platformVersion
+      `Prelude.hashWithSalt` propagateTags
+      `Prelude.hashWithSalt` referenceId
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` taskCount
+      `Prelude.hashWithSalt` taskDefinitionArn
+
+instance Prelude.NFData PipeTargetEcsTaskParameters where
+  rnf PipeTargetEcsTaskParameters' {..} =
+    Prelude.rnf capacityProviderStrategy
+      `Prelude.seq` Prelude.rnf enableECSManagedTags
+      `Prelude.seq` Prelude.rnf enableExecuteCommand
+      `Prelude.seq` Prelude.rnf group'
+      `Prelude.seq` Prelude.rnf launchType
+      `Prelude.seq` Prelude.rnf networkConfiguration
+      `Prelude.seq` Prelude.rnf overrides
+      `Prelude.seq` Prelude.rnf placementConstraints
+      `Prelude.seq` Prelude.rnf placementStrategy
+      `Prelude.seq` Prelude.rnf platformVersion
+      `Prelude.seq` Prelude.rnf propagateTags
+      `Prelude.seq` Prelude.rnf referenceId
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf taskCount
+      `Prelude.seq` Prelude.rnf taskDefinitionArn
+
+instance Data.ToJSON PipeTargetEcsTaskParameters where
+  toJSON PipeTargetEcsTaskParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CapacityProviderStrategy" Data..=)
+              Prelude.<$> capacityProviderStrategy,
+            ("EnableECSManagedTags" Data..=)
+              Prelude.<$> enableECSManagedTags,
+            ("EnableExecuteCommand" Data..=)
+              Prelude.<$> enableExecuteCommand,
+            ("Group" Data..=) Prelude.<$> group',
+            ("LaunchType" Data..=) Prelude.<$> launchType,
+            ("NetworkConfiguration" Data..=)
+              Prelude.<$> networkConfiguration,
+            ("Overrides" Data..=) Prelude.<$> overrides,
+            ("PlacementConstraints" Data..=)
+              Prelude.<$> placementConstraints,
+            ("PlacementStrategy" Data..=)
+              Prelude.<$> placementStrategy,
+            ("PlatformVersion" Data..=)
+              Prelude.<$> platformVersion,
+            ("PropagateTags" Data..=) Prelude.<$> propagateTags,
+            ("ReferenceId" Data..=) Prelude.<$> referenceId,
+            ("Tags" Data..=) Prelude.<$> tags,
+            ("TaskCount" Data..=) Prelude.<$> taskCount,
+            Prelude.Just
+              ("TaskDefinitionArn" Data..= taskDefinitionArn)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetEventBridgeEventBusParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetEventBridgeEventBusParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetEventBridgeEventBusParameters.hs
@@ -0,0 +1,180 @@
+{-# 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.Pipes.Types.PipeTargetEventBridgeEventBusParameters
+-- 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.Pipes.Types.PipeTargetEventBridgeEventBusParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using an EventBridge event bus as a target.
+--
+-- /See:/ 'newPipeTargetEventBridgeEventBusParameters' smart constructor.
+data PipeTargetEventBridgeEventBusParameters = PipeTargetEventBridgeEventBusParameters'
+  { -- | A free-form string, with a maximum of 128 characters, used to decide
+    -- what fields to expect in the event detail.
+    detailType :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The URL subdomain of the endpoint. For example, if the URL for Endpoint
+    -- is https:\/\/abcde.veo.endpoints.event.amazonaws.com, then the
+    -- EndpointId is @abcde.veo@.
+    --
+    -- When using Java, you must include @auth-crt@ on the class path.
+    endpointId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Amazon Web Services resources, identified by Amazon Resource Name (ARN),
+    -- which the event primarily concerns. Any number, including zero, may be
+    -- present.
+    resources :: Prelude.Maybe [Prelude.Text],
+    -- | The source of the event.
+    source :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The time stamp of the event, per
+    -- <https://www.rfc-editor.org/rfc/rfc3339.txt RFC3339>. If no time stamp
+    -- is provided, the time stamp of the
+    -- <https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html PutEvents>
+    -- call is used.
+    time :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetEventBridgeEventBusParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'detailType', 'pipeTargetEventBridgeEventBusParameters_detailType' - A free-form string, with a maximum of 128 characters, used to decide
+-- what fields to expect in the event detail.
+--
+-- 'endpointId', 'pipeTargetEventBridgeEventBusParameters_endpointId' - The URL subdomain of the endpoint. For example, if the URL for Endpoint
+-- is https:\/\/abcde.veo.endpoints.event.amazonaws.com, then the
+-- EndpointId is @abcde.veo@.
+--
+-- When using Java, you must include @auth-crt@ on the class path.
+--
+-- 'resources', 'pipeTargetEventBridgeEventBusParameters_resources' - Amazon Web Services resources, identified by Amazon Resource Name (ARN),
+-- which the event primarily concerns. Any number, including zero, may be
+-- present.
+--
+-- 'source', 'pipeTargetEventBridgeEventBusParameters_source' - The source of the event.
+--
+-- 'time', 'pipeTargetEventBridgeEventBusParameters_time' - The time stamp of the event, per
+-- <https://www.rfc-editor.org/rfc/rfc3339.txt RFC3339>. If no time stamp
+-- is provided, the time stamp of the
+-- <https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html PutEvents>
+-- call is used.
+newPipeTargetEventBridgeEventBusParameters ::
+  PipeTargetEventBridgeEventBusParameters
+newPipeTargetEventBridgeEventBusParameters =
+  PipeTargetEventBridgeEventBusParameters'
+    { detailType =
+        Prelude.Nothing,
+      endpointId = Prelude.Nothing,
+      resources = Prelude.Nothing,
+      source = Prelude.Nothing,
+      time = Prelude.Nothing
+    }
+
+-- | A free-form string, with a maximum of 128 characters, used to decide
+-- what fields to expect in the event detail.
+pipeTargetEventBridgeEventBusParameters_detailType :: Lens.Lens' PipeTargetEventBridgeEventBusParameters (Prelude.Maybe Prelude.Text)
+pipeTargetEventBridgeEventBusParameters_detailType = Lens.lens (\PipeTargetEventBridgeEventBusParameters' {detailType} -> detailType) (\s@PipeTargetEventBridgeEventBusParameters' {} a -> s {detailType = a} :: PipeTargetEventBridgeEventBusParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The URL subdomain of the endpoint. For example, if the URL for Endpoint
+-- is https:\/\/abcde.veo.endpoints.event.amazonaws.com, then the
+-- EndpointId is @abcde.veo@.
+--
+-- When using Java, you must include @auth-crt@ on the class path.
+pipeTargetEventBridgeEventBusParameters_endpointId :: Lens.Lens' PipeTargetEventBridgeEventBusParameters (Prelude.Maybe Prelude.Text)
+pipeTargetEventBridgeEventBusParameters_endpointId = Lens.lens (\PipeTargetEventBridgeEventBusParameters' {endpointId} -> endpointId) (\s@PipeTargetEventBridgeEventBusParameters' {} a -> s {endpointId = a} :: PipeTargetEventBridgeEventBusParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Amazon Web Services resources, identified by Amazon Resource Name (ARN),
+-- which the event primarily concerns. Any number, including zero, may be
+-- present.
+pipeTargetEventBridgeEventBusParameters_resources :: Lens.Lens' PipeTargetEventBridgeEventBusParameters (Prelude.Maybe [Prelude.Text])
+pipeTargetEventBridgeEventBusParameters_resources = Lens.lens (\PipeTargetEventBridgeEventBusParameters' {resources} -> resources) (\s@PipeTargetEventBridgeEventBusParameters' {} a -> s {resources = a} :: PipeTargetEventBridgeEventBusParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The source of the event.
+pipeTargetEventBridgeEventBusParameters_source :: Lens.Lens' PipeTargetEventBridgeEventBusParameters (Prelude.Maybe Prelude.Text)
+pipeTargetEventBridgeEventBusParameters_source = Lens.lens (\PipeTargetEventBridgeEventBusParameters' {source} -> source) (\s@PipeTargetEventBridgeEventBusParameters' {} a -> s {source = a} :: PipeTargetEventBridgeEventBusParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The time stamp of the event, per
+-- <https://www.rfc-editor.org/rfc/rfc3339.txt RFC3339>. If no time stamp
+-- is provided, the time stamp of the
+-- <https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html PutEvents>
+-- call is used.
+pipeTargetEventBridgeEventBusParameters_time :: Lens.Lens' PipeTargetEventBridgeEventBusParameters (Prelude.Maybe Prelude.Text)
+pipeTargetEventBridgeEventBusParameters_time = Lens.lens (\PipeTargetEventBridgeEventBusParameters' {time} -> time) (\s@PipeTargetEventBridgeEventBusParameters' {} a -> s {time = a} :: PipeTargetEventBridgeEventBusParameters)
+
+instance
+  Data.FromJSON
+    PipeTargetEventBridgeEventBusParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeTargetEventBridgeEventBusParameters"
+      ( \x ->
+          PipeTargetEventBridgeEventBusParameters'
+            Prelude.<$> (x Data..:? "DetailType")
+            Prelude.<*> (x Data..:? "EndpointId")
+            Prelude.<*> (x Data..:? "Resources" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Source")
+            Prelude.<*> (x Data..:? "Time")
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetEventBridgeEventBusParameters
+  where
+  hashWithSalt
+    _salt
+    PipeTargetEventBridgeEventBusParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` detailType
+        `Prelude.hashWithSalt` endpointId
+        `Prelude.hashWithSalt` resources
+        `Prelude.hashWithSalt` source
+        `Prelude.hashWithSalt` time
+
+instance
+  Prelude.NFData
+    PipeTargetEventBridgeEventBusParameters
+  where
+  rnf PipeTargetEventBridgeEventBusParameters' {..} =
+    Prelude.rnf detailType
+      `Prelude.seq` Prelude.rnf endpointId
+      `Prelude.seq` Prelude.rnf resources
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf time
+
+instance
+  Data.ToJSON
+    PipeTargetEventBridgeEventBusParameters
+  where
+  toJSON PipeTargetEventBridgeEventBusParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DetailType" Data..=) Prelude.<$> detailType,
+            ("EndpointId" Data..=) Prelude.<$> endpointId,
+            ("Resources" Data..=) Prelude.<$> resources,
+            ("Source" Data..=) Prelude.<$> source,
+            ("Time" Data..=) Prelude.<$> time
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetHttpParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetHttpParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetHttpParameters.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.Pipes.Types.PipeTargetHttpParameters
+-- 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.Pipes.Types.PipeTargetHttpParameters 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
+
+-- | These are custom parameter to be used when the target is an API Gateway
+-- REST APIs or EventBridge ApiDestinations.
+--
+-- /See:/ 'newPipeTargetHttpParameters' smart constructor.
+data PipeTargetHttpParameters = PipeTargetHttpParameters'
+  { -- | The headers that need to be sent as part of request invoking the API
+    -- Gateway REST API or EventBridge ApiDestination.
+    headerParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text)),
+    -- | The path parameter values to be used to populate API Gateway REST API or
+    -- EventBridge ApiDestination path wildcards (\"*\").
+    pathParameterValues :: Prelude.Maybe [Data.Sensitive Prelude.Text],
+    -- | The query string keys\/values that need to be sent as part of request
+    -- invoking the API Gateway REST API or EventBridge ApiDestination.
+    queryStringParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Data.Sensitive Prelude.Text))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetHttpParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'headerParameters', 'pipeTargetHttpParameters_headerParameters' - The headers that need to be sent as part of request invoking the API
+-- Gateway REST API or EventBridge ApiDestination.
+--
+-- 'pathParameterValues', 'pipeTargetHttpParameters_pathParameterValues' - The path parameter values to be used to populate API Gateway REST API or
+-- EventBridge ApiDestination path wildcards (\"*\").
+--
+-- 'queryStringParameters', 'pipeTargetHttpParameters_queryStringParameters' - The query string keys\/values that need to be sent as part of request
+-- invoking the API Gateway REST API or EventBridge ApiDestination.
+newPipeTargetHttpParameters ::
+  PipeTargetHttpParameters
+newPipeTargetHttpParameters =
+  PipeTargetHttpParameters'
+    { headerParameters =
+        Prelude.Nothing,
+      pathParameterValues = Prelude.Nothing,
+      queryStringParameters = Prelude.Nothing
+    }
+
+-- | The headers that need to be sent as part of request invoking the API
+-- Gateway REST API or EventBridge ApiDestination.
+pipeTargetHttpParameters_headerParameters :: Lens.Lens' PipeTargetHttpParameters (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+pipeTargetHttpParameters_headerParameters = Lens.lens (\PipeTargetHttpParameters' {headerParameters} -> headerParameters) (\s@PipeTargetHttpParameters' {} a -> s {headerParameters = a} :: PipeTargetHttpParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The path parameter values to be used to populate API Gateway REST API or
+-- EventBridge ApiDestination path wildcards (\"*\").
+pipeTargetHttpParameters_pathParameterValues :: Lens.Lens' PipeTargetHttpParameters (Prelude.Maybe [Prelude.Text])
+pipeTargetHttpParameters_pathParameterValues = Lens.lens (\PipeTargetHttpParameters' {pathParameterValues} -> pathParameterValues) (\s@PipeTargetHttpParameters' {} a -> s {pathParameterValues = a} :: PipeTargetHttpParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | The query string keys\/values that need to be sent as part of request
+-- invoking the API Gateway REST API or EventBridge ApiDestination.
+pipeTargetHttpParameters_queryStringParameters :: Lens.Lens' PipeTargetHttpParameters (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+pipeTargetHttpParameters_queryStringParameters = Lens.lens (\PipeTargetHttpParameters' {queryStringParameters} -> queryStringParameters) (\s@PipeTargetHttpParameters' {} a -> s {queryStringParameters = a} :: PipeTargetHttpParameters) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON PipeTargetHttpParameters where
+  parseJSON =
+    Data.withObject
+      "PipeTargetHttpParameters"
+      ( \x ->
+          PipeTargetHttpParameters'
+            Prelude.<$> ( x
+                            Data..:? "HeaderParameters"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "PathParameterValues"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> ( x
+                            Data..:? "QueryStringParameters"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable PipeTargetHttpParameters where
+  hashWithSalt _salt PipeTargetHttpParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` headerParameters
+      `Prelude.hashWithSalt` pathParameterValues
+      `Prelude.hashWithSalt` queryStringParameters
+
+instance Prelude.NFData PipeTargetHttpParameters where
+  rnf PipeTargetHttpParameters' {..} =
+    Prelude.rnf headerParameters
+      `Prelude.seq` Prelude.rnf pathParameterValues
+      `Prelude.seq` Prelude.rnf queryStringParameters
+
+instance Data.ToJSON PipeTargetHttpParameters where
+  toJSON PipeTargetHttpParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("HeaderParameters" Data..=)
+              Prelude.<$> headerParameters,
+            ("PathParameterValues" Data..=)
+              Prelude.<$> pathParameterValues,
+            ("QueryStringParameters" Data..=)
+              Prelude.<$> queryStringParameters
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetInvocationType.hs b/gen/Amazonka/Pipes/Types/PipeTargetInvocationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetInvocationType.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.Pipes.Types.PipeTargetInvocationType
+-- 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.Pipes.Types.PipeTargetInvocationType
+  ( PipeTargetInvocationType
+      ( ..,
+        PipeTargetInvocationType_FIRE_AND_FORGET,
+        PipeTargetInvocationType_REQUEST_RESPONSE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PipeTargetInvocationType = PipeTargetInvocationType'
+  { fromPipeTargetInvocationType ::
+      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 PipeTargetInvocationType_FIRE_AND_FORGET :: PipeTargetInvocationType
+pattern PipeTargetInvocationType_FIRE_AND_FORGET = PipeTargetInvocationType' "FIRE_AND_FORGET"
+
+pattern PipeTargetInvocationType_REQUEST_RESPONSE :: PipeTargetInvocationType
+pattern PipeTargetInvocationType_REQUEST_RESPONSE = PipeTargetInvocationType' "REQUEST_RESPONSE"
+
+{-# COMPLETE
+  PipeTargetInvocationType_FIRE_AND_FORGET,
+  PipeTargetInvocationType_REQUEST_RESPONSE,
+  PipeTargetInvocationType'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetKinesisStreamParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetKinesisStreamParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetKinesisStreamParameters.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.Pipes.Types.PipeTargetKinesisStreamParameters
+-- 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.Pipes.Types.PipeTargetKinesisStreamParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Kinesis stream as a source.
+--
+-- /See:/ 'newPipeTargetKinesisStreamParameters' smart constructor.
+data PipeTargetKinesisStreamParameters = PipeTargetKinesisStreamParameters'
+  { -- | Determines which shard in the stream the data record is assigned to.
+    -- Partition keys are Unicode strings with a maximum length limit of 256
+    -- characters for each key. Amazon Kinesis Data Streams uses the partition
+    -- key as input to a hash function that maps the partition key and
+    -- associated data to a specific shard. Specifically, an MD5 hash function
+    -- is used to map partition keys to 128-bit integer values and to map
+    -- associated data records to shards. As a result of this hashing
+    -- mechanism, all data records with the same partition key map to the same
+    -- shard within the stream.
+    partitionKey :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetKinesisStreamParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'partitionKey', 'pipeTargetKinesisStreamParameters_partitionKey' - Determines which shard in the stream the data record is assigned to.
+-- Partition keys are Unicode strings with a maximum length limit of 256
+-- characters for each key. Amazon Kinesis Data Streams uses the partition
+-- key as input to a hash function that maps the partition key and
+-- associated data to a specific shard. Specifically, an MD5 hash function
+-- is used to map partition keys to 128-bit integer values and to map
+-- associated data records to shards. As a result of this hashing
+-- mechanism, all data records with the same partition key map to the same
+-- shard within the stream.
+newPipeTargetKinesisStreamParameters ::
+  -- | 'partitionKey'
+  Prelude.Text ->
+  PipeTargetKinesisStreamParameters
+newPipeTargetKinesisStreamParameters pPartitionKey_ =
+  PipeTargetKinesisStreamParameters'
+    { partitionKey =
+        Data._Sensitive Lens.# pPartitionKey_
+    }
+
+-- | Determines which shard in the stream the data record is assigned to.
+-- Partition keys are Unicode strings with a maximum length limit of 256
+-- characters for each key. Amazon Kinesis Data Streams uses the partition
+-- key as input to a hash function that maps the partition key and
+-- associated data to a specific shard. Specifically, an MD5 hash function
+-- is used to map partition keys to 128-bit integer values and to map
+-- associated data records to shards. As a result of this hashing
+-- mechanism, all data records with the same partition key map to the same
+-- shard within the stream.
+pipeTargetKinesisStreamParameters_partitionKey :: Lens.Lens' PipeTargetKinesisStreamParameters Prelude.Text
+pipeTargetKinesisStreamParameters_partitionKey = Lens.lens (\PipeTargetKinesisStreamParameters' {partitionKey} -> partitionKey) (\s@PipeTargetKinesisStreamParameters' {} a -> s {partitionKey = a} :: PipeTargetKinesisStreamParameters) Prelude.. Data._Sensitive
+
+instance
+  Data.FromJSON
+    PipeTargetKinesisStreamParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeTargetKinesisStreamParameters"
+      ( \x ->
+          PipeTargetKinesisStreamParameters'
+            Prelude.<$> (x Data..: "PartitionKey")
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetKinesisStreamParameters
+  where
+  hashWithSalt
+    _salt
+    PipeTargetKinesisStreamParameters' {..} =
+      _salt `Prelude.hashWithSalt` partitionKey
+
+instance
+  Prelude.NFData
+    PipeTargetKinesisStreamParameters
+  where
+  rnf PipeTargetKinesisStreamParameters' {..} =
+    Prelude.rnf partitionKey
+
+instance
+  Data.ToJSON
+    PipeTargetKinesisStreamParameters
+  where
+  toJSON PipeTargetKinesisStreamParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("PartitionKey" Data..= partitionKey)]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetLambdaFunctionParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetLambdaFunctionParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetLambdaFunctionParameters.hs
@@ -0,0 +1,132 @@
+{-# 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.Pipes.Types.PipeTargetLambdaFunctionParameters
+-- 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.Pipes.Types.PipeTargetLambdaFunctionParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.PipeTargetInvocationType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Lambda function as a target.
+--
+-- /See:/ 'newPipeTargetLambdaFunctionParameters' smart constructor.
+data PipeTargetLambdaFunctionParameters = PipeTargetLambdaFunctionParameters'
+  { -- | Choose from the following options.
+    --
+    -- -   @RequestResponse@ (default) - Invoke the function synchronously.
+    --     Keep the connection open until the function returns a response or
+    --     times out. The API response includes the function response and
+    --     additional data.
+    --
+    -- -   @Event@ - Invoke the function asynchronously. Send events that fail
+    --     multiple times to the function\'s dead-letter queue (if it\'s
+    --     configured). The API response only includes a status code.
+    --
+    -- -   @DryRun@ - Validate parameter values and verify that the user or
+    --     role has permission to invoke the function.
+    invocationType :: Prelude.Maybe PipeTargetInvocationType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetLambdaFunctionParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'invocationType', 'pipeTargetLambdaFunctionParameters_invocationType' - Choose from the following options.
+--
+-- -   @RequestResponse@ (default) - Invoke the function synchronously.
+--     Keep the connection open until the function returns a response or
+--     times out. The API response includes the function response and
+--     additional data.
+--
+-- -   @Event@ - Invoke the function asynchronously. Send events that fail
+--     multiple times to the function\'s dead-letter queue (if it\'s
+--     configured). The API response only includes a status code.
+--
+-- -   @DryRun@ - Validate parameter values and verify that the user or
+--     role has permission to invoke the function.
+newPipeTargetLambdaFunctionParameters ::
+  PipeTargetLambdaFunctionParameters
+newPipeTargetLambdaFunctionParameters =
+  PipeTargetLambdaFunctionParameters'
+    { invocationType =
+        Prelude.Nothing
+    }
+
+-- | Choose from the following options.
+--
+-- -   @RequestResponse@ (default) - Invoke the function synchronously.
+--     Keep the connection open until the function returns a response or
+--     times out. The API response includes the function response and
+--     additional data.
+--
+-- -   @Event@ - Invoke the function asynchronously. Send events that fail
+--     multiple times to the function\'s dead-letter queue (if it\'s
+--     configured). The API response only includes a status code.
+--
+-- -   @DryRun@ - Validate parameter values and verify that the user or
+--     role has permission to invoke the function.
+pipeTargetLambdaFunctionParameters_invocationType :: Lens.Lens' PipeTargetLambdaFunctionParameters (Prelude.Maybe PipeTargetInvocationType)
+pipeTargetLambdaFunctionParameters_invocationType = Lens.lens (\PipeTargetLambdaFunctionParameters' {invocationType} -> invocationType) (\s@PipeTargetLambdaFunctionParameters' {} a -> s {invocationType = a} :: PipeTargetLambdaFunctionParameters)
+
+instance
+  Data.FromJSON
+    PipeTargetLambdaFunctionParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeTargetLambdaFunctionParameters"
+      ( \x ->
+          PipeTargetLambdaFunctionParameters'
+            Prelude.<$> (x Data..:? "InvocationType")
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetLambdaFunctionParameters
+  where
+  hashWithSalt
+    _salt
+    PipeTargetLambdaFunctionParameters' {..} =
+      _salt `Prelude.hashWithSalt` invocationType
+
+instance
+  Prelude.NFData
+    PipeTargetLambdaFunctionParameters
+  where
+  rnf PipeTargetLambdaFunctionParameters' {..} =
+    Prelude.rnf invocationType
+
+instance
+  Data.ToJSON
+    PipeTargetLambdaFunctionParameters
+  where
+  toJSON PipeTargetLambdaFunctionParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InvocationType" Data..=)
+              Prelude.<$> invocationType
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetParameters.hs
@@ -0,0 +1,261 @@
+{-# 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.Pipes.Types.PipeTargetParameters
+-- 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.Pipes.Types.PipeTargetParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.PipeTargetBatchJobParameters
+import Amazonka.Pipes.Types.PipeTargetCloudWatchLogsParameters
+import Amazonka.Pipes.Types.PipeTargetEcsTaskParameters
+import Amazonka.Pipes.Types.PipeTargetEventBridgeEventBusParameters
+import Amazonka.Pipes.Types.PipeTargetHttpParameters
+import Amazonka.Pipes.Types.PipeTargetKinesisStreamParameters
+import Amazonka.Pipes.Types.PipeTargetLambdaFunctionParameters
+import Amazonka.Pipes.Types.PipeTargetRedshiftDataParameters
+import Amazonka.Pipes.Types.PipeTargetSageMakerPipelineParameters
+import Amazonka.Pipes.Types.PipeTargetSqsQueueParameters
+import Amazonka.Pipes.Types.PipeTargetStateMachineParameters
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters required to set up a target for your pipe.
+--
+-- /See:/ 'newPipeTargetParameters' smart constructor.
+data PipeTargetParameters = PipeTargetParameters'
+  { -- | The parameters for using an Batch job as a target.
+    batchJobParameters :: Prelude.Maybe PipeTargetBatchJobParameters,
+    -- | The parameters for using an CloudWatch Logs log stream as a target.
+    cloudWatchLogsParameters :: Prelude.Maybe PipeTargetCloudWatchLogsParameters,
+    -- | The parameters for using an Amazon ECS task as a target.
+    ecsTaskParameters :: Prelude.Maybe PipeTargetEcsTaskParameters,
+    -- | The parameters for using an EventBridge event bus as a target.
+    eventBridgeEventBusParameters :: Prelude.Maybe PipeTargetEventBridgeEventBusParameters,
+    -- | These are custom parameter to be used when the target is an API Gateway
+    -- REST APIs or EventBridge ApiDestinations.
+    httpParameters :: Prelude.Maybe PipeTargetHttpParameters,
+    -- | Valid JSON text passed to the target. In this case, nothing from the
+    -- event itself is passed to the target. For more information, see
+    -- <http://www.rfc-editor.org/rfc/rfc7159.txt The JavaScript Object Notation (JSON) Data Interchange Format>.
+    inputTemplate :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The parameters for using a Kinesis stream as a source.
+    kinesisStreamParameters :: Prelude.Maybe PipeTargetKinesisStreamParameters,
+    -- | The parameters for using a Lambda function as a target.
+    lambdaFunctionParameters :: Prelude.Maybe PipeTargetLambdaFunctionParameters,
+    -- | These are custom parameters to be used when the target is a Amazon
+    -- Redshift cluster to invoke the Amazon Redshift Data API
+    -- ExecuteStatement.
+    redshiftDataParameters :: Prelude.Maybe PipeTargetRedshiftDataParameters,
+    -- | The parameters for using a SageMaker pipeline as a target.
+    sageMakerPipelineParameters :: Prelude.Maybe PipeTargetSageMakerPipelineParameters,
+    -- | The parameters for using a Amazon SQS stream as a source.
+    sqsQueueParameters :: Prelude.Maybe PipeTargetSqsQueueParameters,
+    -- | The parameters for using a Step Functions state machine as a target.
+    stepFunctionStateMachineParameters :: Prelude.Maybe PipeTargetStateMachineParameters
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchJobParameters', 'pipeTargetParameters_batchJobParameters' - The parameters for using an Batch job as a target.
+--
+-- 'cloudWatchLogsParameters', 'pipeTargetParameters_cloudWatchLogsParameters' - The parameters for using an CloudWatch Logs log stream as a target.
+--
+-- 'ecsTaskParameters', 'pipeTargetParameters_ecsTaskParameters' - The parameters for using an Amazon ECS task as a target.
+--
+-- 'eventBridgeEventBusParameters', 'pipeTargetParameters_eventBridgeEventBusParameters' - The parameters for using an EventBridge event bus as a target.
+--
+-- 'httpParameters', 'pipeTargetParameters_httpParameters' - These are custom parameter to be used when the target is an API Gateway
+-- REST APIs or EventBridge ApiDestinations.
+--
+-- 'inputTemplate', 'pipeTargetParameters_inputTemplate' - Valid JSON text passed to the target. In this case, nothing from the
+-- event itself is passed to the target. For more information, see
+-- <http://www.rfc-editor.org/rfc/rfc7159.txt The JavaScript Object Notation (JSON) Data Interchange Format>.
+--
+-- 'kinesisStreamParameters', 'pipeTargetParameters_kinesisStreamParameters' - The parameters for using a Kinesis stream as a source.
+--
+-- 'lambdaFunctionParameters', 'pipeTargetParameters_lambdaFunctionParameters' - The parameters for using a Lambda function as a target.
+--
+-- 'redshiftDataParameters', 'pipeTargetParameters_redshiftDataParameters' - These are custom parameters to be used when the target is a Amazon
+-- Redshift cluster to invoke the Amazon Redshift Data API
+-- ExecuteStatement.
+--
+-- 'sageMakerPipelineParameters', 'pipeTargetParameters_sageMakerPipelineParameters' - The parameters for using a SageMaker pipeline as a target.
+--
+-- 'sqsQueueParameters', 'pipeTargetParameters_sqsQueueParameters' - The parameters for using a Amazon SQS stream as a source.
+--
+-- 'stepFunctionStateMachineParameters', 'pipeTargetParameters_stepFunctionStateMachineParameters' - The parameters for using a Step Functions state machine as a target.
+newPipeTargetParameters ::
+  PipeTargetParameters
+newPipeTargetParameters =
+  PipeTargetParameters'
+    { batchJobParameters =
+        Prelude.Nothing,
+      cloudWatchLogsParameters = Prelude.Nothing,
+      ecsTaskParameters = Prelude.Nothing,
+      eventBridgeEventBusParameters = Prelude.Nothing,
+      httpParameters = Prelude.Nothing,
+      inputTemplate = Prelude.Nothing,
+      kinesisStreamParameters = Prelude.Nothing,
+      lambdaFunctionParameters = Prelude.Nothing,
+      redshiftDataParameters = Prelude.Nothing,
+      sageMakerPipelineParameters = Prelude.Nothing,
+      sqsQueueParameters = Prelude.Nothing,
+      stepFunctionStateMachineParameters = Prelude.Nothing
+    }
+
+-- | The parameters for using an Batch job as a target.
+pipeTargetParameters_batchJobParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetBatchJobParameters)
+pipeTargetParameters_batchJobParameters = Lens.lens (\PipeTargetParameters' {batchJobParameters} -> batchJobParameters) (\s@PipeTargetParameters' {} a -> s {batchJobParameters = a} :: PipeTargetParameters)
+
+-- | The parameters for using an CloudWatch Logs log stream as a target.
+pipeTargetParameters_cloudWatchLogsParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetCloudWatchLogsParameters)
+pipeTargetParameters_cloudWatchLogsParameters = Lens.lens (\PipeTargetParameters' {cloudWatchLogsParameters} -> cloudWatchLogsParameters) (\s@PipeTargetParameters' {} a -> s {cloudWatchLogsParameters = a} :: PipeTargetParameters)
+
+-- | The parameters for using an Amazon ECS task as a target.
+pipeTargetParameters_ecsTaskParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetEcsTaskParameters)
+pipeTargetParameters_ecsTaskParameters = Lens.lens (\PipeTargetParameters' {ecsTaskParameters} -> ecsTaskParameters) (\s@PipeTargetParameters' {} a -> s {ecsTaskParameters = a} :: PipeTargetParameters)
+
+-- | The parameters for using an EventBridge event bus as a target.
+pipeTargetParameters_eventBridgeEventBusParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetEventBridgeEventBusParameters)
+pipeTargetParameters_eventBridgeEventBusParameters = Lens.lens (\PipeTargetParameters' {eventBridgeEventBusParameters} -> eventBridgeEventBusParameters) (\s@PipeTargetParameters' {} a -> s {eventBridgeEventBusParameters = a} :: PipeTargetParameters)
+
+-- | These are custom parameter to be used when the target is an API Gateway
+-- REST APIs or EventBridge ApiDestinations.
+pipeTargetParameters_httpParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetHttpParameters)
+pipeTargetParameters_httpParameters = Lens.lens (\PipeTargetParameters' {httpParameters} -> httpParameters) (\s@PipeTargetParameters' {} a -> s {httpParameters = a} :: PipeTargetParameters)
+
+-- | Valid JSON text passed to the target. In this case, nothing from the
+-- event itself is passed to the target. For more information, see
+-- <http://www.rfc-editor.org/rfc/rfc7159.txt The JavaScript Object Notation (JSON) Data Interchange Format>.
+pipeTargetParameters_inputTemplate :: Lens.Lens' PipeTargetParameters (Prelude.Maybe Prelude.Text)
+pipeTargetParameters_inputTemplate = Lens.lens (\PipeTargetParameters' {inputTemplate} -> inputTemplate) (\s@PipeTargetParameters' {} a -> s {inputTemplate = a} :: PipeTargetParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The parameters for using a Kinesis stream as a source.
+pipeTargetParameters_kinesisStreamParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetKinesisStreamParameters)
+pipeTargetParameters_kinesisStreamParameters = Lens.lens (\PipeTargetParameters' {kinesisStreamParameters} -> kinesisStreamParameters) (\s@PipeTargetParameters' {} a -> s {kinesisStreamParameters = a} :: PipeTargetParameters)
+
+-- | The parameters for using a Lambda function as a target.
+pipeTargetParameters_lambdaFunctionParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetLambdaFunctionParameters)
+pipeTargetParameters_lambdaFunctionParameters = Lens.lens (\PipeTargetParameters' {lambdaFunctionParameters} -> lambdaFunctionParameters) (\s@PipeTargetParameters' {} a -> s {lambdaFunctionParameters = a} :: PipeTargetParameters)
+
+-- | These are custom parameters to be used when the target is a Amazon
+-- Redshift cluster to invoke the Amazon Redshift Data API
+-- ExecuteStatement.
+pipeTargetParameters_redshiftDataParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetRedshiftDataParameters)
+pipeTargetParameters_redshiftDataParameters = Lens.lens (\PipeTargetParameters' {redshiftDataParameters} -> redshiftDataParameters) (\s@PipeTargetParameters' {} a -> s {redshiftDataParameters = a} :: PipeTargetParameters)
+
+-- | The parameters for using a SageMaker pipeline as a target.
+pipeTargetParameters_sageMakerPipelineParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetSageMakerPipelineParameters)
+pipeTargetParameters_sageMakerPipelineParameters = Lens.lens (\PipeTargetParameters' {sageMakerPipelineParameters} -> sageMakerPipelineParameters) (\s@PipeTargetParameters' {} a -> s {sageMakerPipelineParameters = a} :: PipeTargetParameters)
+
+-- | The parameters for using a Amazon SQS stream as a source.
+pipeTargetParameters_sqsQueueParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetSqsQueueParameters)
+pipeTargetParameters_sqsQueueParameters = Lens.lens (\PipeTargetParameters' {sqsQueueParameters} -> sqsQueueParameters) (\s@PipeTargetParameters' {} a -> s {sqsQueueParameters = a} :: PipeTargetParameters)
+
+-- | The parameters for using a Step Functions state machine as a target.
+pipeTargetParameters_stepFunctionStateMachineParameters :: Lens.Lens' PipeTargetParameters (Prelude.Maybe PipeTargetStateMachineParameters)
+pipeTargetParameters_stepFunctionStateMachineParameters = Lens.lens (\PipeTargetParameters' {stepFunctionStateMachineParameters} -> stepFunctionStateMachineParameters) (\s@PipeTargetParameters' {} a -> s {stepFunctionStateMachineParameters = a} :: PipeTargetParameters)
+
+instance Data.FromJSON PipeTargetParameters where
+  parseJSON =
+    Data.withObject
+      "PipeTargetParameters"
+      ( \x ->
+          PipeTargetParameters'
+            Prelude.<$> (x Data..:? "BatchJobParameters")
+            Prelude.<*> (x Data..:? "CloudWatchLogsParameters")
+            Prelude.<*> (x Data..:? "EcsTaskParameters")
+            Prelude.<*> (x Data..:? "EventBridgeEventBusParameters")
+            Prelude.<*> (x Data..:? "HttpParameters")
+            Prelude.<*> (x Data..:? "InputTemplate")
+            Prelude.<*> (x Data..:? "KinesisStreamParameters")
+            Prelude.<*> (x Data..:? "LambdaFunctionParameters")
+            Prelude.<*> (x Data..:? "RedshiftDataParameters")
+            Prelude.<*> (x Data..:? "SageMakerPipelineParameters")
+            Prelude.<*> (x Data..:? "SqsQueueParameters")
+            Prelude.<*> (x Data..:? "StepFunctionStateMachineParameters")
+      )
+
+instance Prelude.Hashable PipeTargetParameters where
+  hashWithSalt _salt PipeTargetParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` batchJobParameters
+      `Prelude.hashWithSalt` cloudWatchLogsParameters
+      `Prelude.hashWithSalt` ecsTaskParameters
+      `Prelude.hashWithSalt` eventBridgeEventBusParameters
+      `Prelude.hashWithSalt` httpParameters
+      `Prelude.hashWithSalt` inputTemplate
+      `Prelude.hashWithSalt` kinesisStreamParameters
+      `Prelude.hashWithSalt` lambdaFunctionParameters
+      `Prelude.hashWithSalt` redshiftDataParameters
+      `Prelude.hashWithSalt` sageMakerPipelineParameters
+      `Prelude.hashWithSalt` sqsQueueParameters
+      `Prelude.hashWithSalt` stepFunctionStateMachineParameters
+
+instance Prelude.NFData PipeTargetParameters where
+  rnf PipeTargetParameters' {..} =
+    Prelude.rnf batchJobParameters
+      `Prelude.seq` Prelude.rnf cloudWatchLogsParameters
+      `Prelude.seq` Prelude.rnf ecsTaskParameters
+      `Prelude.seq` Prelude.rnf eventBridgeEventBusParameters
+      `Prelude.seq` Prelude.rnf httpParameters
+      `Prelude.seq` Prelude.rnf inputTemplate
+      `Prelude.seq` Prelude.rnf kinesisStreamParameters
+      `Prelude.seq` Prelude.rnf lambdaFunctionParameters
+      `Prelude.seq` Prelude.rnf redshiftDataParameters
+      `Prelude.seq` Prelude.rnf sageMakerPipelineParameters
+      `Prelude.seq` Prelude.rnf sqsQueueParameters
+      `Prelude.seq` Prelude.rnf stepFunctionStateMachineParameters
+
+instance Data.ToJSON PipeTargetParameters where
+  toJSON PipeTargetParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchJobParameters" Data..=)
+              Prelude.<$> batchJobParameters,
+            ("CloudWatchLogsParameters" Data..=)
+              Prelude.<$> cloudWatchLogsParameters,
+            ("EcsTaskParameters" Data..=)
+              Prelude.<$> ecsTaskParameters,
+            ("EventBridgeEventBusParameters" Data..=)
+              Prelude.<$> eventBridgeEventBusParameters,
+            ("HttpParameters" Data..=)
+              Prelude.<$> httpParameters,
+            ("InputTemplate" Data..=) Prelude.<$> inputTemplate,
+            ("KinesisStreamParameters" Data..=)
+              Prelude.<$> kinesisStreamParameters,
+            ("LambdaFunctionParameters" Data..=)
+              Prelude.<$> lambdaFunctionParameters,
+            ("RedshiftDataParameters" Data..=)
+              Prelude.<$> redshiftDataParameters,
+            ("SageMakerPipelineParameters" Data..=)
+              Prelude.<$> sageMakerPipelineParameters,
+            ("SqsQueueParameters" Data..=)
+              Prelude.<$> sqsQueueParameters,
+            ("StepFunctionStateMachineParameters" Data..=)
+              Prelude.<$> stepFunctionStateMachineParameters
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetRedshiftDataParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetRedshiftDataParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetRedshiftDataParameters.hs
@@ -0,0 +1,180 @@
+{-# 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.Pipes.Types.PipeTargetRedshiftDataParameters
+-- 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.Pipes.Types.PipeTargetRedshiftDataParameters 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
+
+-- | These are custom parameters to be used when the target is a Amazon
+-- Redshift cluster to invoke the Amazon Redshift Data API
+-- ExecuteStatement.
+--
+-- /See:/ 'newPipeTargetRedshiftDataParameters' smart constructor.
+data PipeTargetRedshiftDataParameters = PipeTargetRedshiftDataParameters'
+  { -- | The database user name. Required when authenticating using temporary
+    -- credentials.
+    dbUser :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name or ARN of the secret that enables access to the database.
+    -- Required when authenticating using SageMaker.
+    secretManagerArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the SQL statement. You can name the SQL statement when you
+    -- create it to identify the query.
+    statementName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Indicates whether to send an event back to EventBridge after the SQL
+    -- statement runs.
+    withEvent :: Prelude.Maybe Prelude.Bool,
+    -- | The name of the database. Required when authenticating using temporary
+    -- credentials.
+    database :: Data.Sensitive Prelude.Text,
+    -- | The SQL statement text to run.
+    sqls :: Prelude.NonEmpty (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetRedshiftDataParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dbUser', 'pipeTargetRedshiftDataParameters_dbUser' - The database user name. Required when authenticating using temporary
+-- credentials.
+--
+-- 'secretManagerArn', 'pipeTargetRedshiftDataParameters_secretManagerArn' - The name or ARN of the secret that enables access to the database.
+-- Required when authenticating using SageMaker.
+--
+-- 'statementName', 'pipeTargetRedshiftDataParameters_statementName' - The name of the SQL statement. You can name the SQL statement when you
+-- create it to identify the query.
+--
+-- 'withEvent', 'pipeTargetRedshiftDataParameters_withEvent' - Indicates whether to send an event back to EventBridge after the SQL
+-- statement runs.
+--
+-- 'database', 'pipeTargetRedshiftDataParameters_database' - The name of the database. Required when authenticating using temporary
+-- credentials.
+--
+-- 'sqls', 'pipeTargetRedshiftDataParameters_sqls' - The SQL statement text to run.
+newPipeTargetRedshiftDataParameters ::
+  -- | 'database'
+  Prelude.Text ->
+  -- | 'sqls'
+  Prelude.NonEmpty Prelude.Text ->
+  PipeTargetRedshiftDataParameters
+newPipeTargetRedshiftDataParameters pDatabase_ pSqls_ =
+  PipeTargetRedshiftDataParameters'
+    { dbUser =
+        Prelude.Nothing,
+      secretManagerArn = Prelude.Nothing,
+      statementName = Prelude.Nothing,
+      withEvent = Prelude.Nothing,
+      database =
+        Data._Sensitive Lens.# pDatabase_,
+      sqls = Lens.coerced Lens.# pSqls_
+    }
+
+-- | The database user name. Required when authenticating using temporary
+-- credentials.
+pipeTargetRedshiftDataParameters_dbUser :: Lens.Lens' PipeTargetRedshiftDataParameters (Prelude.Maybe Prelude.Text)
+pipeTargetRedshiftDataParameters_dbUser = Lens.lens (\PipeTargetRedshiftDataParameters' {dbUser} -> dbUser) (\s@PipeTargetRedshiftDataParameters' {} a -> s {dbUser = a} :: PipeTargetRedshiftDataParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name or ARN of the secret that enables access to the database.
+-- Required when authenticating using SageMaker.
+pipeTargetRedshiftDataParameters_secretManagerArn :: Lens.Lens' PipeTargetRedshiftDataParameters (Prelude.Maybe Prelude.Text)
+pipeTargetRedshiftDataParameters_secretManagerArn = Lens.lens (\PipeTargetRedshiftDataParameters' {secretManagerArn} -> secretManagerArn) (\s@PipeTargetRedshiftDataParameters' {} a -> s {secretManagerArn = a} :: PipeTargetRedshiftDataParameters)
+
+-- | The name of the SQL statement. You can name the SQL statement when you
+-- create it to identify the query.
+pipeTargetRedshiftDataParameters_statementName :: Lens.Lens' PipeTargetRedshiftDataParameters (Prelude.Maybe Prelude.Text)
+pipeTargetRedshiftDataParameters_statementName = Lens.lens (\PipeTargetRedshiftDataParameters' {statementName} -> statementName) (\s@PipeTargetRedshiftDataParameters' {} a -> s {statementName = a} :: PipeTargetRedshiftDataParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Indicates whether to send an event back to EventBridge after the SQL
+-- statement runs.
+pipeTargetRedshiftDataParameters_withEvent :: Lens.Lens' PipeTargetRedshiftDataParameters (Prelude.Maybe Prelude.Bool)
+pipeTargetRedshiftDataParameters_withEvent = Lens.lens (\PipeTargetRedshiftDataParameters' {withEvent} -> withEvent) (\s@PipeTargetRedshiftDataParameters' {} a -> s {withEvent = a} :: PipeTargetRedshiftDataParameters)
+
+-- | The name of the database. Required when authenticating using temporary
+-- credentials.
+pipeTargetRedshiftDataParameters_database :: Lens.Lens' PipeTargetRedshiftDataParameters Prelude.Text
+pipeTargetRedshiftDataParameters_database = Lens.lens (\PipeTargetRedshiftDataParameters' {database} -> database) (\s@PipeTargetRedshiftDataParameters' {} a -> s {database = a} :: PipeTargetRedshiftDataParameters) Prelude.. Data._Sensitive
+
+-- | The SQL statement text to run.
+pipeTargetRedshiftDataParameters_sqls :: Lens.Lens' PipeTargetRedshiftDataParameters (Prelude.NonEmpty Prelude.Text)
+pipeTargetRedshiftDataParameters_sqls = Lens.lens (\PipeTargetRedshiftDataParameters' {sqls} -> sqls) (\s@PipeTargetRedshiftDataParameters' {} a -> s {sqls = a} :: PipeTargetRedshiftDataParameters) Prelude.. Lens.coerced
+
+instance
+  Data.FromJSON
+    PipeTargetRedshiftDataParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeTargetRedshiftDataParameters"
+      ( \x ->
+          PipeTargetRedshiftDataParameters'
+            Prelude.<$> (x Data..:? "DbUser")
+            Prelude.<*> (x Data..:? "SecretManagerArn")
+            Prelude.<*> (x Data..:? "StatementName")
+            Prelude.<*> (x Data..:? "WithEvent")
+            Prelude.<*> (x Data..: "Database")
+            Prelude.<*> (x Data..: "Sqls")
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetRedshiftDataParameters
+  where
+  hashWithSalt
+    _salt
+    PipeTargetRedshiftDataParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` dbUser
+        `Prelude.hashWithSalt` secretManagerArn
+        `Prelude.hashWithSalt` statementName
+        `Prelude.hashWithSalt` withEvent
+        `Prelude.hashWithSalt` database
+        `Prelude.hashWithSalt` sqls
+
+instance
+  Prelude.NFData
+    PipeTargetRedshiftDataParameters
+  where
+  rnf PipeTargetRedshiftDataParameters' {..} =
+    Prelude.rnf dbUser
+      `Prelude.seq` Prelude.rnf secretManagerArn
+      `Prelude.seq` Prelude.rnf statementName
+      `Prelude.seq` Prelude.rnf withEvent
+      `Prelude.seq` Prelude.rnf database
+      `Prelude.seq` Prelude.rnf sqls
+
+instance Data.ToJSON PipeTargetRedshiftDataParameters where
+  toJSON PipeTargetRedshiftDataParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DbUser" Data..=) Prelude.<$> dbUser,
+            ("SecretManagerArn" Data..=)
+              Prelude.<$> secretManagerArn,
+            ("StatementName" Data..=) Prelude.<$> statementName,
+            ("WithEvent" Data..=) Prelude.<$> withEvent,
+            Prelude.Just ("Database" Data..= database),
+            Prelude.Just ("Sqls" Data..= sqls)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetSageMakerPipelineParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetSageMakerPipelineParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetSageMakerPipelineParameters.hs
@@ -0,0 +1,102 @@
+{-# 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.Pipes.Types.PipeTargetSageMakerPipelineParameters
+-- 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.Pipes.Types.PipeTargetSageMakerPipelineParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.SageMakerPipelineParameter
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a SageMaker pipeline as a target.
+--
+-- /See:/ 'newPipeTargetSageMakerPipelineParameters' smart constructor.
+data PipeTargetSageMakerPipelineParameters = PipeTargetSageMakerPipelineParameters'
+  { -- | List of Parameter names and values for SageMaker Model Building Pipeline
+    -- execution.
+    pipelineParameterList :: Prelude.Maybe [SageMakerPipelineParameter]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetSageMakerPipelineParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'pipelineParameterList', 'pipeTargetSageMakerPipelineParameters_pipelineParameterList' - List of Parameter names and values for SageMaker Model Building Pipeline
+-- execution.
+newPipeTargetSageMakerPipelineParameters ::
+  PipeTargetSageMakerPipelineParameters
+newPipeTargetSageMakerPipelineParameters =
+  PipeTargetSageMakerPipelineParameters'
+    { pipelineParameterList =
+        Prelude.Nothing
+    }
+
+-- | List of Parameter names and values for SageMaker Model Building Pipeline
+-- execution.
+pipeTargetSageMakerPipelineParameters_pipelineParameterList :: Lens.Lens' PipeTargetSageMakerPipelineParameters (Prelude.Maybe [SageMakerPipelineParameter])
+pipeTargetSageMakerPipelineParameters_pipelineParameterList = Lens.lens (\PipeTargetSageMakerPipelineParameters' {pipelineParameterList} -> pipelineParameterList) (\s@PipeTargetSageMakerPipelineParameters' {} a -> s {pipelineParameterList = a} :: PipeTargetSageMakerPipelineParameters) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    PipeTargetSageMakerPipelineParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeTargetSageMakerPipelineParameters"
+      ( \x ->
+          PipeTargetSageMakerPipelineParameters'
+            Prelude.<$> ( x
+                            Data..:? "PipelineParameterList"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetSageMakerPipelineParameters
+  where
+  hashWithSalt
+    _salt
+    PipeTargetSageMakerPipelineParameters' {..} =
+      _salt `Prelude.hashWithSalt` pipelineParameterList
+
+instance
+  Prelude.NFData
+    PipeTargetSageMakerPipelineParameters
+  where
+  rnf PipeTargetSageMakerPipelineParameters' {..} =
+    Prelude.rnf pipelineParameterList
+
+instance
+  Data.ToJSON
+    PipeTargetSageMakerPipelineParameters
+  where
+  toJSON PipeTargetSageMakerPipelineParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PipelineParameterList" Data..=)
+              Prelude.<$> pipelineParameterList
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetSqsQueueParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetSqsQueueParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetSqsQueueParameters.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.Pipes.Types.PipeTargetSqsQueueParameters
+-- 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.Pipes.Types.PipeTargetSqsQueueParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Amazon SQS stream as a source.
+--
+-- /See:/ 'newPipeTargetSqsQueueParameters' smart constructor.
+data PipeTargetSqsQueueParameters = PipeTargetSqsQueueParameters'
+  { -- | This parameter applies only to FIFO (first-in-first-out) queues.
+    --
+    -- The token used for deduplication of sent messages.
+    messageDeduplicationId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The FIFO message group ID to use as the target.
+    messageGroupId :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetSqsQueueParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'messageDeduplicationId', 'pipeTargetSqsQueueParameters_messageDeduplicationId' - This parameter applies only to FIFO (first-in-first-out) queues.
+--
+-- The token used for deduplication of sent messages.
+--
+-- 'messageGroupId', 'pipeTargetSqsQueueParameters_messageGroupId' - The FIFO message group ID to use as the target.
+newPipeTargetSqsQueueParameters ::
+  PipeTargetSqsQueueParameters
+newPipeTargetSqsQueueParameters =
+  PipeTargetSqsQueueParameters'
+    { messageDeduplicationId =
+        Prelude.Nothing,
+      messageGroupId = Prelude.Nothing
+    }
+
+-- | This parameter applies only to FIFO (first-in-first-out) queues.
+--
+-- The token used for deduplication of sent messages.
+pipeTargetSqsQueueParameters_messageDeduplicationId :: Lens.Lens' PipeTargetSqsQueueParameters (Prelude.Maybe Prelude.Text)
+pipeTargetSqsQueueParameters_messageDeduplicationId = Lens.lens (\PipeTargetSqsQueueParameters' {messageDeduplicationId} -> messageDeduplicationId) (\s@PipeTargetSqsQueueParameters' {} a -> s {messageDeduplicationId = a} :: PipeTargetSqsQueueParameters) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The FIFO message group ID to use as the target.
+pipeTargetSqsQueueParameters_messageGroupId :: Lens.Lens' PipeTargetSqsQueueParameters (Prelude.Maybe Prelude.Text)
+pipeTargetSqsQueueParameters_messageGroupId = Lens.lens (\PipeTargetSqsQueueParameters' {messageGroupId} -> messageGroupId) (\s@PipeTargetSqsQueueParameters' {} a -> s {messageGroupId = a} :: PipeTargetSqsQueueParameters) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON PipeTargetSqsQueueParameters where
+  parseJSON =
+    Data.withObject
+      "PipeTargetSqsQueueParameters"
+      ( \x ->
+          PipeTargetSqsQueueParameters'
+            Prelude.<$> (x Data..:? "MessageDeduplicationId")
+            Prelude.<*> (x Data..:? "MessageGroupId")
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetSqsQueueParameters
+  where
+  hashWithSalt _salt PipeTargetSqsQueueParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` messageDeduplicationId
+      `Prelude.hashWithSalt` messageGroupId
+
+instance Prelude.NFData PipeTargetSqsQueueParameters where
+  rnf PipeTargetSqsQueueParameters' {..} =
+    Prelude.rnf messageDeduplicationId
+      `Prelude.seq` Prelude.rnf messageGroupId
+
+instance Data.ToJSON PipeTargetSqsQueueParameters where
+  toJSON PipeTargetSqsQueueParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MessageDeduplicationId" Data..=)
+              Prelude.<$> messageDeduplicationId,
+            ("MessageGroupId" Data..=)
+              Prelude.<$> messageGroupId
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PipeTargetStateMachineParameters.hs b/gen/Amazonka/Pipes/Types/PipeTargetStateMachineParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PipeTargetStateMachineParameters.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.PipeTargetStateMachineParameters
+-- 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.Pipes.Types.PipeTargetStateMachineParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.PipeTargetInvocationType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Step Functions state machine as a target.
+--
+-- /See:/ 'newPipeTargetStateMachineParameters' smart constructor.
+data PipeTargetStateMachineParameters = PipeTargetStateMachineParameters'
+  { -- | Specify whether to wait for the state machine to finish or not.
+    invocationType :: Prelude.Maybe PipeTargetInvocationType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PipeTargetStateMachineParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'invocationType', 'pipeTargetStateMachineParameters_invocationType' - Specify whether to wait for the state machine to finish or not.
+newPipeTargetStateMachineParameters ::
+  PipeTargetStateMachineParameters
+newPipeTargetStateMachineParameters =
+  PipeTargetStateMachineParameters'
+    { invocationType =
+        Prelude.Nothing
+    }
+
+-- | Specify whether to wait for the state machine to finish or not.
+pipeTargetStateMachineParameters_invocationType :: Lens.Lens' PipeTargetStateMachineParameters (Prelude.Maybe PipeTargetInvocationType)
+pipeTargetStateMachineParameters_invocationType = Lens.lens (\PipeTargetStateMachineParameters' {invocationType} -> invocationType) (\s@PipeTargetStateMachineParameters' {} a -> s {invocationType = a} :: PipeTargetStateMachineParameters)
+
+instance
+  Data.FromJSON
+    PipeTargetStateMachineParameters
+  where
+  parseJSON =
+    Data.withObject
+      "PipeTargetStateMachineParameters"
+      ( \x ->
+          PipeTargetStateMachineParameters'
+            Prelude.<$> (x Data..:? "InvocationType")
+      )
+
+instance
+  Prelude.Hashable
+    PipeTargetStateMachineParameters
+  where
+  hashWithSalt
+    _salt
+    PipeTargetStateMachineParameters' {..} =
+      _salt `Prelude.hashWithSalt` invocationType
+
+instance
+  Prelude.NFData
+    PipeTargetStateMachineParameters
+  where
+  rnf PipeTargetStateMachineParameters' {..} =
+    Prelude.rnf invocationType
+
+instance Data.ToJSON PipeTargetStateMachineParameters where
+  toJSON PipeTargetStateMachineParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("InvocationType" Data..=)
+              Prelude.<$> invocationType
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PlacementConstraint.hs b/gen/Amazonka/Pipes/Types/PlacementConstraint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PlacementConstraint.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.PlacementConstraint
+-- 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.Pipes.Types.PlacementConstraint where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.PlacementConstraintType
+import qualified Amazonka.Prelude as Prelude
+
+-- | An object representing a constraint on task placement. To learn more,
+-- see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html Task Placement Constraints>
+-- in the Amazon Elastic Container Service Developer Guide.
+--
+-- /See:/ 'newPlacementConstraint' smart constructor.
+data PlacementConstraint = PlacementConstraint'
+  { -- | A cluster query language expression to apply to the constraint. You
+    -- cannot specify an expression if the constraint type is
+    -- @distinctInstance@. To learn more, see
+    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html Cluster Query Language>
+    -- in the Amazon Elastic Container Service Developer Guide.
+    expression :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The type of constraint. Use distinctInstance to ensure that each task in
+    -- a particular group is running on a different container instance. Use
+    -- memberOf to restrict the selection to a group of valid candidates.
+    type' :: Prelude.Maybe PlacementConstraintType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PlacementConstraint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'expression', 'placementConstraint_expression' - A cluster query language expression to apply to the constraint. You
+-- cannot specify an expression if the constraint type is
+-- @distinctInstance@. To learn more, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html Cluster Query Language>
+-- in the Amazon Elastic Container Service Developer Guide.
+--
+-- 'type'', 'placementConstraint_type' - The type of constraint. Use distinctInstance to ensure that each task in
+-- a particular group is running on a different container instance. Use
+-- memberOf to restrict the selection to a group of valid candidates.
+newPlacementConstraint ::
+  PlacementConstraint
+newPlacementConstraint =
+  PlacementConstraint'
+    { expression = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | A cluster query language expression to apply to the constraint. You
+-- cannot specify an expression if the constraint type is
+-- @distinctInstance@. To learn more, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html Cluster Query Language>
+-- in the Amazon Elastic Container Service Developer Guide.
+placementConstraint_expression :: Lens.Lens' PlacementConstraint (Prelude.Maybe Prelude.Text)
+placementConstraint_expression = Lens.lens (\PlacementConstraint' {expression} -> expression) (\s@PlacementConstraint' {} a -> s {expression = a} :: PlacementConstraint) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The type of constraint. Use distinctInstance to ensure that each task in
+-- a particular group is running on a different container instance. Use
+-- memberOf to restrict the selection to a group of valid candidates.
+placementConstraint_type :: Lens.Lens' PlacementConstraint (Prelude.Maybe PlacementConstraintType)
+placementConstraint_type = Lens.lens (\PlacementConstraint' {type'} -> type') (\s@PlacementConstraint' {} a -> s {type' = a} :: PlacementConstraint)
+
+instance Data.FromJSON PlacementConstraint where
+  parseJSON =
+    Data.withObject
+      "PlacementConstraint"
+      ( \x ->
+          PlacementConstraint'
+            Prelude.<$> (x Data..:? "expression")
+            Prelude.<*> (x Data..:? "type")
+      )
+
+instance Prelude.Hashable PlacementConstraint where
+  hashWithSalt _salt PlacementConstraint' {..} =
+    _salt
+      `Prelude.hashWithSalt` expression
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData PlacementConstraint where
+  rnf PlacementConstraint' {..} =
+    Prelude.rnf expression
+      `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON PlacementConstraint where
+  toJSON PlacementConstraint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("expression" Data..=) Prelude.<$> expression,
+            ("type" Data..=) Prelude.<$> type'
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PlacementConstraintType.hs b/gen/Amazonka/Pipes/Types/PlacementConstraintType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PlacementConstraintType.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.Pipes.Types.PlacementConstraintType
+-- 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.Pipes.Types.PlacementConstraintType
+  ( PlacementConstraintType
+      ( ..,
+        PlacementConstraintType_DistinctInstance,
+        PlacementConstraintType_MemberOf
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PlacementConstraintType = PlacementConstraintType'
+  { fromPlacementConstraintType ::
+      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 PlacementConstraintType_DistinctInstance :: PlacementConstraintType
+pattern PlacementConstraintType_DistinctInstance = PlacementConstraintType' "distinctInstance"
+
+pattern PlacementConstraintType_MemberOf :: PlacementConstraintType
+pattern PlacementConstraintType_MemberOf = PlacementConstraintType' "memberOf"
+
+{-# COMPLETE
+  PlacementConstraintType_DistinctInstance,
+  PlacementConstraintType_MemberOf,
+  PlacementConstraintType'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/PlacementStrategy.hs b/gen/Amazonka/Pipes/Types/PlacementStrategy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PlacementStrategy.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.PlacementStrategy
+-- 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.Pipes.Types.PlacementStrategy where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.PlacementStrategyType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The task placement strategy for a task or service. To learn more, see
+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html Task Placement Strategies>
+-- in the Amazon Elastic Container Service Service Developer Guide.
+--
+-- /See:/ 'newPlacementStrategy' smart constructor.
+data PlacementStrategy = PlacementStrategy'
+  { -- | The field to apply the placement strategy against. For the spread
+    -- placement strategy, valid values are instanceId (or host, which has the
+    -- same effect), or any platform or custom attribute that is applied to a
+    -- container instance, such as attribute:ecs.availability-zone. For the
+    -- binpack placement strategy, valid values are cpu and memory. For the
+    -- random placement strategy, this field is not used.
+    field :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The type of placement strategy. The random placement strategy randomly
+    -- places tasks on available candidates. The spread placement strategy
+    -- spreads placement across available candidates evenly based on the field
+    -- parameter. The binpack strategy places tasks on available candidates
+    -- that have the least available amount of the resource that is specified
+    -- with the field parameter. For example, if you binpack on memory, a task
+    -- is placed on the instance with the least amount of remaining memory (but
+    -- still enough to run the task).
+    type' :: Prelude.Maybe PlacementStrategyType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PlacementStrategy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'field', 'placementStrategy_field' - The field to apply the placement strategy against. For the spread
+-- placement strategy, valid values are instanceId (or host, which has the
+-- same effect), or any platform or custom attribute that is applied to a
+-- container instance, such as attribute:ecs.availability-zone. For the
+-- binpack placement strategy, valid values are cpu and memory. For the
+-- random placement strategy, this field is not used.
+--
+-- 'type'', 'placementStrategy_type' - The type of placement strategy. The random placement strategy randomly
+-- places tasks on available candidates. The spread placement strategy
+-- spreads placement across available candidates evenly based on the field
+-- parameter. The binpack strategy places tasks on available candidates
+-- that have the least available amount of the resource that is specified
+-- with the field parameter. For example, if you binpack on memory, a task
+-- is placed on the instance with the least amount of remaining memory (but
+-- still enough to run the task).
+newPlacementStrategy ::
+  PlacementStrategy
+newPlacementStrategy =
+  PlacementStrategy'
+    { field = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The field to apply the placement strategy against. For the spread
+-- placement strategy, valid values are instanceId (or host, which has the
+-- same effect), or any platform or custom attribute that is applied to a
+-- container instance, such as attribute:ecs.availability-zone. For the
+-- binpack placement strategy, valid values are cpu and memory. For the
+-- random placement strategy, this field is not used.
+placementStrategy_field :: Lens.Lens' PlacementStrategy (Prelude.Maybe Prelude.Text)
+placementStrategy_field = Lens.lens (\PlacementStrategy' {field} -> field) (\s@PlacementStrategy' {} a -> s {field = a} :: PlacementStrategy) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The type of placement strategy. The random placement strategy randomly
+-- places tasks on available candidates. The spread placement strategy
+-- spreads placement across available candidates evenly based on the field
+-- parameter. The binpack strategy places tasks on available candidates
+-- that have the least available amount of the resource that is specified
+-- with the field parameter. For example, if you binpack on memory, a task
+-- is placed on the instance with the least amount of remaining memory (but
+-- still enough to run the task).
+placementStrategy_type :: Lens.Lens' PlacementStrategy (Prelude.Maybe PlacementStrategyType)
+placementStrategy_type = Lens.lens (\PlacementStrategy' {type'} -> type') (\s@PlacementStrategy' {} a -> s {type' = a} :: PlacementStrategy)
+
+instance Data.FromJSON PlacementStrategy where
+  parseJSON =
+    Data.withObject
+      "PlacementStrategy"
+      ( \x ->
+          PlacementStrategy'
+            Prelude.<$> (x Data..:? "field")
+            Prelude.<*> (x Data..:? "type")
+      )
+
+instance Prelude.Hashable PlacementStrategy where
+  hashWithSalt _salt PlacementStrategy' {..} =
+    _salt
+      `Prelude.hashWithSalt` field
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData PlacementStrategy where
+  rnf PlacementStrategy' {..} =
+    Prelude.rnf field `Prelude.seq` Prelude.rnf type'
+
+instance Data.ToJSON PlacementStrategy where
+  toJSON PlacementStrategy' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("field" Data..=) Prelude.<$> field,
+            ("type" Data..=) Prelude.<$> type'
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/PlacementStrategyType.hs b/gen/Amazonka/Pipes/Types/PlacementStrategyType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PlacementStrategyType.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.Pipes.Types.PlacementStrategyType
+-- 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.Pipes.Types.PlacementStrategyType
+  ( PlacementStrategyType
+      ( ..,
+        PlacementStrategyType_Binpack,
+        PlacementStrategyType_Random,
+        PlacementStrategyType_Spread
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PlacementStrategyType = PlacementStrategyType'
+  { fromPlacementStrategyType ::
+      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 PlacementStrategyType_Binpack :: PlacementStrategyType
+pattern PlacementStrategyType_Binpack = PlacementStrategyType' "binpack"
+
+pattern PlacementStrategyType_Random :: PlacementStrategyType
+pattern PlacementStrategyType_Random = PlacementStrategyType' "random"
+
+pattern PlacementStrategyType_Spread :: PlacementStrategyType
+pattern PlacementStrategyType_Spread = PlacementStrategyType' "spread"
+
+{-# COMPLETE
+  PlacementStrategyType_Binpack,
+  PlacementStrategyType_Random,
+  PlacementStrategyType_Spread,
+  PlacementStrategyType'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/PropagateTags.hs b/gen/Amazonka/Pipes/Types/PropagateTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/PropagateTags.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.PropagateTags
+-- 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.Pipes.Types.PropagateTags
+  ( PropagateTags
+      ( ..,
+        PropagateTags_TASK_DEFINITION
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PropagateTags = PropagateTags'
+  { fromPropagateTags ::
+      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 PropagateTags_TASK_DEFINITION :: PropagateTags
+pattern PropagateTags_TASK_DEFINITION = PropagateTags' "TASK_DEFINITION"
+
+{-# COMPLETE
+  PropagateTags_TASK_DEFINITION,
+  PropagateTags'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/RequestedPipeState.hs b/gen/Amazonka/Pipes/Types/RequestedPipeState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/RequestedPipeState.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.Pipes.Types.RequestedPipeState
+-- 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.Pipes.Types.RequestedPipeState
+  ( RequestedPipeState
+      ( ..,
+        RequestedPipeState_RUNNING,
+        RequestedPipeState_STOPPED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RequestedPipeState = RequestedPipeState'
+  { fromRequestedPipeState ::
+      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 RequestedPipeState_RUNNING :: RequestedPipeState
+pattern RequestedPipeState_RUNNING = RequestedPipeState' "RUNNING"
+
+pattern RequestedPipeState_STOPPED :: RequestedPipeState
+pattern RequestedPipeState_STOPPED = RequestedPipeState' "STOPPED"
+
+{-# COMPLETE
+  RequestedPipeState_RUNNING,
+  RequestedPipeState_STOPPED,
+  RequestedPipeState'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/RequestedPipeStateDescribeResponse.hs b/gen/Amazonka/Pipes/Types/RequestedPipeStateDescribeResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/RequestedPipeStateDescribeResponse.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.Pipes.Types.RequestedPipeStateDescribeResponse
+-- 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.Pipes.Types.RequestedPipeStateDescribeResponse
+  ( RequestedPipeStateDescribeResponse
+      ( ..,
+        RequestedPipeStateDescribeResponse_DELETED,
+        RequestedPipeStateDescribeResponse_RUNNING,
+        RequestedPipeStateDescribeResponse_STOPPED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RequestedPipeStateDescribeResponse = RequestedPipeStateDescribeResponse'
+  { fromRequestedPipeStateDescribeResponse ::
+      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 RequestedPipeStateDescribeResponse_DELETED :: RequestedPipeStateDescribeResponse
+pattern RequestedPipeStateDescribeResponse_DELETED = RequestedPipeStateDescribeResponse' "DELETED"
+
+pattern RequestedPipeStateDescribeResponse_RUNNING :: RequestedPipeStateDescribeResponse
+pattern RequestedPipeStateDescribeResponse_RUNNING = RequestedPipeStateDescribeResponse' "RUNNING"
+
+pattern RequestedPipeStateDescribeResponse_STOPPED :: RequestedPipeStateDescribeResponse
+pattern RequestedPipeStateDescribeResponse_STOPPED = RequestedPipeStateDescribeResponse' "STOPPED"
+
+{-# COMPLETE
+  RequestedPipeStateDescribeResponse_DELETED,
+  RequestedPipeStateDescribeResponse_RUNNING,
+  RequestedPipeStateDescribeResponse_STOPPED,
+  RequestedPipeStateDescribeResponse'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/SageMakerPipelineParameter.hs b/gen/Amazonka/Pipes/Types/SageMakerPipelineParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/SageMakerPipelineParameter.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.SageMakerPipelineParameter
+-- 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.Pipes.Types.SageMakerPipelineParameter 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
+
+-- | Name\/Value pair of a parameter to start execution of a SageMaker Model
+-- Building Pipeline.
+--
+-- /See:/ 'newSageMakerPipelineParameter' smart constructor.
+data SageMakerPipelineParameter = SageMakerPipelineParameter'
+  { -- | Name of parameter to start execution of a SageMaker Model Building
+    -- Pipeline.
+    name :: Data.Sensitive Prelude.Text,
+    -- | Value of parameter to start execution of a SageMaker Model Building
+    -- Pipeline.
+    value :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SageMakerPipelineParameter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'sageMakerPipelineParameter_name' - Name of parameter to start execution of a SageMaker Model Building
+-- Pipeline.
+--
+-- 'value', 'sageMakerPipelineParameter_value' - Value of parameter to start execution of a SageMaker Model Building
+-- Pipeline.
+newSageMakerPipelineParameter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  SageMakerPipelineParameter
+newSageMakerPipelineParameter pName_ pValue_ =
+  SageMakerPipelineParameter'
+    { name =
+        Data._Sensitive Lens.# pName_,
+      value = Data._Sensitive Lens.# pValue_
+    }
+
+-- | Name of parameter to start execution of a SageMaker Model Building
+-- Pipeline.
+sageMakerPipelineParameter_name :: Lens.Lens' SageMakerPipelineParameter Prelude.Text
+sageMakerPipelineParameter_name = Lens.lens (\SageMakerPipelineParameter' {name} -> name) (\s@SageMakerPipelineParameter' {} a -> s {name = a} :: SageMakerPipelineParameter) Prelude.. Data._Sensitive
+
+-- | Value of parameter to start execution of a SageMaker Model Building
+-- Pipeline.
+sageMakerPipelineParameter_value :: Lens.Lens' SageMakerPipelineParameter Prelude.Text
+sageMakerPipelineParameter_value = Lens.lens (\SageMakerPipelineParameter' {value} -> value) (\s@SageMakerPipelineParameter' {} a -> s {value = a} :: SageMakerPipelineParameter) Prelude.. Data._Sensitive
+
+instance Data.FromJSON SageMakerPipelineParameter where
+  parseJSON =
+    Data.withObject
+      "SageMakerPipelineParameter"
+      ( \x ->
+          SageMakerPipelineParameter'
+            Prelude.<$> (x Data..: "Name")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable SageMakerPipelineParameter where
+  hashWithSalt _salt SageMakerPipelineParameter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData SageMakerPipelineParameter where
+  rnf SageMakerPipelineParameter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON SageMakerPipelineParameter where
+  toJSON SageMakerPipelineParameter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Name" Data..= name),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/SelfManagedKafkaAccessConfigurationCredentials.hs b/gen/Amazonka/Pipes/Types/SelfManagedKafkaAccessConfigurationCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/SelfManagedKafkaAccessConfigurationCredentials.hs
@@ -0,0 +1,142 @@
+{-# 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.Pipes.Types.SelfManagedKafkaAccessConfigurationCredentials
+-- 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.Pipes.Types.SelfManagedKafkaAccessConfigurationCredentials where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The Secrets Manager secret that stores your stream credentials.
+--
+-- /See:/ 'newSelfManagedKafkaAccessConfigurationCredentials' smart constructor.
+data SelfManagedKafkaAccessConfigurationCredentials = SelfManagedKafkaAccessConfigurationCredentials'
+  { -- | The ARN of the Secrets Manager secret.
+    basicAuth :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the Secrets Manager secret.
+    clientCertificateTlsAuth :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the Secrets Manager secret.
+    saslScram256Auth :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the Secrets Manager secret.
+    saslScram512Auth :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SelfManagedKafkaAccessConfigurationCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'basicAuth', 'selfManagedKafkaAccessConfigurationCredentials_basicAuth' - The ARN of the Secrets Manager secret.
+--
+-- 'clientCertificateTlsAuth', 'selfManagedKafkaAccessConfigurationCredentials_clientCertificateTlsAuth' - The ARN of the Secrets Manager secret.
+--
+-- 'saslScram256Auth', 'selfManagedKafkaAccessConfigurationCredentials_saslScram256Auth' - The ARN of the Secrets Manager secret.
+--
+-- 'saslScram512Auth', 'selfManagedKafkaAccessConfigurationCredentials_saslScram512Auth' - The ARN of the Secrets Manager secret.
+newSelfManagedKafkaAccessConfigurationCredentials ::
+  SelfManagedKafkaAccessConfigurationCredentials
+newSelfManagedKafkaAccessConfigurationCredentials =
+  SelfManagedKafkaAccessConfigurationCredentials'
+    { basicAuth =
+        Prelude.Nothing,
+      clientCertificateTlsAuth =
+        Prelude.Nothing,
+      saslScram256Auth =
+        Prelude.Nothing,
+      saslScram512Auth =
+        Prelude.Nothing
+    }
+
+-- | The ARN of the Secrets Manager secret.
+selfManagedKafkaAccessConfigurationCredentials_basicAuth :: Lens.Lens' SelfManagedKafkaAccessConfigurationCredentials (Prelude.Maybe Prelude.Text)
+selfManagedKafkaAccessConfigurationCredentials_basicAuth = Lens.lens (\SelfManagedKafkaAccessConfigurationCredentials' {basicAuth} -> basicAuth) (\s@SelfManagedKafkaAccessConfigurationCredentials' {} a -> s {basicAuth = a} :: SelfManagedKafkaAccessConfigurationCredentials)
+
+-- | The ARN of the Secrets Manager secret.
+selfManagedKafkaAccessConfigurationCredentials_clientCertificateTlsAuth :: Lens.Lens' SelfManagedKafkaAccessConfigurationCredentials (Prelude.Maybe Prelude.Text)
+selfManagedKafkaAccessConfigurationCredentials_clientCertificateTlsAuth = Lens.lens (\SelfManagedKafkaAccessConfigurationCredentials' {clientCertificateTlsAuth} -> clientCertificateTlsAuth) (\s@SelfManagedKafkaAccessConfigurationCredentials' {} a -> s {clientCertificateTlsAuth = a} :: SelfManagedKafkaAccessConfigurationCredentials)
+
+-- | The ARN of the Secrets Manager secret.
+selfManagedKafkaAccessConfigurationCredentials_saslScram256Auth :: Lens.Lens' SelfManagedKafkaAccessConfigurationCredentials (Prelude.Maybe Prelude.Text)
+selfManagedKafkaAccessConfigurationCredentials_saslScram256Auth = Lens.lens (\SelfManagedKafkaAccessConfigurationCredentials' {saslScram256Auth} -> saslScram256Auth) (\s@SelfManagedKafkaAccessConfigurationCredentials' {} a -> s {saslScram256Auth = a} :: SelfManagedKafkaAccessConfigurationCredentials)
+
+-- | The ARN of the Secrets Manager secret.
+selfManagedKafkaAccessConfigurationCredentials_saslScram512Auth :: Lens.Lens' SelfManagedKafkaAccessConfigurationCredentials (Prelude.Maybe Prelude.Text)
+selfManagedKafkaAccessConfigurationCredentials_saslScram512Auth = Lens.lens (\SelfManagedKafkaAccessConfigurationCredentials' {saslScram512Auth} -> saslScram512Auth) (\s@SelfManagedKafkaAccessConfigurationCredentials' {} a -> s {saslScram512Auth = a} :: SelfManagedKafkaAccessConfigurationCredentials)
+
+instance
+  Data.FromJSON
+    SelfManagedKafkaAccessConfigurationCredentials
+  where
+  parseJSON =
+    Data.withObject
+      "SelfManagedKafkaAccessConfigurationCredentials"
+      ( \x ->
+          SelfManagedKafkaAccessConfigurationCredentials'
+            Prelude.<$> (x Data..:? "BasicAuth")
+            Prelude.<*> (x Data..:? "ClientCertificateTlsAuth")
+            Prelude.<*> (x Data..:? "SaslScram256Auth")
+            Prelude.<*> (x Data..:? "SaslScram512Auth")
+      )
+
+instance
+  Prelude.Hashable
+    SelfManagedKafkaAccessConfigurationCredentials
+  where
+  hashWithSalt
+    _salt
+    SelfManagedKafkaAccessConfigurationCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` basicAuth
+        `Prelude.hashWithSalt` clientCertificateTlsAuth
+        `Prelude.hashWithSalt` saslScram256Auth
+        `Prelude.hashWithSalt` saslScram512Auth
+
+instance
+  Prelude.NFData
+    SelfManagedKafkaAccessConfigurationCredentials
+  where
+  rnf
+    SelfManagedKafkaAccessConfigurationCredentials' {..} =
+      Prelude.rnf basicAuth
+        `Prelude.seq` Prelude.rnf clientCertificateTlsAuth
+        `Prelude.seq` Prelude.rnf saslScram256Auth
+        `Prelude.seq` Prelude.rnf saslScram512Auth
+
+instance
+  Data.ToJSON
+    SelfManagedKafkaAccessConfigurationCredentials
+  where
+  toJSON
+    SelfManagedKafkaAccessConfigurationCredentials' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("BasicAuth" Data..=) Prelude.<$> basicAuth,
+              ("ClientCertificateTlsAuth" Data..=)
+                Prelude.<$> clientCertificateTlsAuth,
+              ("SaslScram256Auth" Data..=)
+                Prelude.<$> saslScram256Auth,
+              ("SaslScram512Auth" Data..=)
+                Prelude.<$> saslScram512Auth
+            ]
+        )
diff --git a/gen/Amazonka/Pipes/Types/SelfManagedKafkaAccessConfigurationVpc.hs b/gen/Amazonka/Pipes/Types/SelfManagedKafkaAccessConfigurationVpc.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/SelfManagedKafkaAccessConfigurationVpc.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationVpc
+-- 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.Pipes.Types.SelfManagedKafkaAccessConfigurationVpc 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
+
+-- | This structure specifies the VPC subnets and security groups for the
+-- stream, and whether a public IP address is to be used.
+--
+-- /See:/ 'newSelfManagedKafkaAccessConfigurationVpc' smart constructor.
+data SelfManagedKafkaAccessConfigurationVpc = SelfManagedKafkaAccessConfigurationVpc'
+  { -- | Specifies the security groups associated with the stream. These security
+    -- groups must all be in the same VPC. You can specify as many as five
+    -- security groups. If you do not specify a security group, the default
+    -- security group for the VPC is used.
+    securityGroup :: Prelude.Maybe [Data.Sensitive Prelude.Text],
+    -- | Specifies the subnets associated with the stream. These subnets must all
+    -- be in the same VPC. You can specify as many as 16 subnets.
+    subnets :: Prelude.Maybe [Data.Sensitive Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SelfManagedKafkaAccessConfigurationVpc' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'securityGroup', 'selfManagedKafkaAccessConfigurationVpc_securityGroup' - Specifies the security groups associated with the stream. These security
+-- groups must all be in the same VPC. You can specify as many as five
+-- security groups. If you do not specify a security group, the default
+-- security group for the VPC is used.
+--
+-- 'subnets', 'selfManagedKafkaAccessConfigurationVpc_subnets' - Specifies the subnets associated with the stream. These subnets must all
+-- be in the same VPC. You can specify as many as 16 subnets.
+newSelfManagedKafkaAccessConfigurationVpc ::
+  SelfManagedKafkaAccessConfigurationVpc
+newSelfManagedKafkaAccessConfigurationVpc =
+  SelfManagedKafkaAccessConfigurationVpc'
+    { securityGroup =
+        Prelude.Nothing,
+      subnets = Prelude.Nothing
+    }
+
+-- | Specifies the security groups associated with the stream. These security
+-- groups must all be in the same VPC. You can specify as many as five
+-- security groups. If you do not specify a security group, the default
+-- security group for the VPC is used.
+selfManagedKafkaAccessConfigurationVpc_securityGroup :: Lens.Lens' SelfManagedKafkaAccessConfigurationVpc (Prelude.Maybe [Prelude.Text])
+selfManagedKafkaAccessConfigurationVpc_securityGroup = Lens.lens (\SelfManagedKafkaAccessConfigurationVpc' {securityGroup} -> securityGroup) (\s@SelfManagedKafkaAccessConfigurationVpc' {} a -> s {securityGroup = a} :: SelfManagedKafkaAccessConfigurationVpc) Prelude.. Lens.mapping Lens.coerced
+
+-- | Specifies the subnets associated with the stream. These subnets must all
+-- be in the same VPC. You can specify as many as 16 subnets.
+selfManagedKafkaAccessConfigurationVpc_subnets :: Lens.Lens' SelfManagedKafkaAccessConfigurationVpc (Prelude.Maybe [Prelude.Text])
+selfManagedKafkaAccessConfigurationVpc_subnets = Lens.lens (\SelfManagedKafkaAccessConfigurationVpc' {subnets} -> subnets) (\s@SelfManagedKafkaAccessConfigurationVpc' {} a -> s {subnets = a} :: SelfManagedKafkaAccessConfigurationVpc) Prelude.. Lens.mapping Lens.coerced
+
+instance
+  Data.FromJSON
+    SelfManagedKafkaAccessConfigurationVpc
+  where
+  parseJSON =
+    Data.withObject
+      "SelfManagedKafkaAccessConfigurationVpc"
+      ( \x ->
+          SelfManagedKafkaAccessConfigurationVpc'
+            Prelude.<$> (x Data..:? "SecurityGroup" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Subnets" Data..!= Prelude.mempty)
+      )
+
+instance
+  Prelude.Hashable
+    SelfManagedKafkaAccessConfigurationVpc
+  where
+  hashWithSalt
+    _salt
+    SelfManagedKafkaAccessConfigurationVpc' {..} =
+      _salt
+        `Prelude.hashWithSalt` securityGroup
+        `Prelude.hashWithSalt` subnets
+
+instance
+  Prelude.NFData
+    SelfManagedKafkaAccessConfigurationVpc
+  where
+  rnf SelfManagedKafkaAccessConfigurationVpc' {..} =
+    Prelude.rnf securityGroup
+      `Prelude.seq` Prelude.rnf subnets
+
+instance
+  Data.ToJSON
+    SelfManagedKafkaAccessConfigurationVpc
+  where
+  toJSON SelfManagedKafkaAccessConfigurationVpc' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SecurityGroup" Data..=) Prelude.<$> securityGroup,
+            ("Subnets" Data..=) Prelude.<$> subnets
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/SelfManagedKafkaStartPosition.hs b/gen/Amazonka/Pipes/Types/SelfManagedKafkaStartPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/SelfManagedKafkaStartPosition.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.Pipes.Types.SelfManagedKafkaStartPosition
+-- 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.Pipes.Types.SelfManagedKafkaStartPosition
+  ( SelfManagedKafkaStartPosition
+      ( ..,
+        SelfManagedKafkaStartPosition_LATEST,
+        SelfManagedKafkaStartPosition_TRIM_HORIZON
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SelfManagedKafkaStartPosition = SelfManagedKafkaStartPosition'
+  { fromSelfManagedKafkaStartPosition ::
+      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 SelfManagedKafkaStartPosition_LATEST :: SelfManagedKafkaStartPosition
+pattern SelfManagedKafkaStartPosition_LATEST = SelfManagedKafkaStartPosition' "LATEST"
+
+pattern SelfManagedKafkaStartPosition_TRIM_HORIZON :: SelfManagedKafkaStartPosition
+pattern SelfManagedKafkaStartPosition_TRIM_HORIZON = SelfManagedKafkaStartPosition' "TRIM_HORIZON"
+
+{-# COMPLETE
+  SelfManagedKafkaStartPosition_LATEST,
+  SelfManagedKafkaStartPosition_TRIM_HORIZON,
+  SelfManagedKafkaStartPosition'
+  #-}
diff --git a/gen/Amazonka/Pipes/Types/Tag.hs b/gen/Amazonka/Pipes/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/Tag.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Pipes.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A key-value pair associated with an Amazon Web Services resource. In
+-- EventBridge, rules and event buses support tagging.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | A string you can use to assign a value. The combination of tag keys and
+    -- values can help you organize and categorize your resources.
+    key :: Prelude.Text,
+    -- | The value for the specified tag key.
+    value :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - A string you can use to assign a value. The combination of tag keys and
+-- values can help you organize and categorize your resources.
+--
+-- 'value', 'tag_value' - The value for the specified tag key.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag'
+    { key = pKey_,
+      value = Data._Sensitive Lens.# pValue_
+    }
+
+-- | A string you can use to assign a value. The combination of tag keys and
+-- values can help you organize and categorize your resources.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | The value for the specified tag key.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag) Prelude.. Data._Sensitive
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/UpdatePipeSourceActiveMQBrokerParameters.hs b/gen/Amazonka/Pipes/Types/UpdatePipeSourceActiveMQBrokerParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/UpdatePipeSourceActiveMQBrokerParameters.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.UpdatePipeSourceActiveMQBrokerParameters
+-- 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.Pipes.Types.UpdatePipeSourceActiveMQBrokerParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.MQBrokerAccessCredentials
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using an Active MQ broker as a source.
+--
+-- /See:/ 'newUpdatePipeSourceActiveMQBrokerParameters' smart constructor.
+data UpdatePipeSourceActiveMQBrokerParameters = UpdatePipeSourceActiveMQBrokerParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The credentials needed to access the resource.
+    credentials :: MQBrokerAccessCredentials
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeSourceActiveMQBrokerParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'updatePipeSourceActiveMQBrokerParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'maximumBatchingWindowInSeconds', 'updatePipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'credentials', 'updatePipeSourceActiveMQBrokerParameters_credentials' - The credentials needed to access the resource.
+newUpdatePipeSourceActiveMQBrokerParameters ::
+  -- | 'credentials'
+  MQBrokerAccessCredentials ->
+  UpdatePipeSourceActiveMQBrokerParameters
+newUpdatePipeSourceActiveMQBrokerParameters
+  pCredentials_ =
+    UpdatePipeSourceActiveMQBrokerParameters'
+      { batchSize =
+          Prelude.Nothing,
+        maximumBatchingWindowInSeconds =
+          Prelude.Nothing,
+        credentials = pCredentials_
+      }
+
+-- | The maximum number of records to include in each batch.
+updatePipeSourceActiveMQBrokerParameters_batchSize :: Lens.Lens' UpdatePipeSourceActiveMQBrokerParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceActiveMQBrokerParameters_batchSize = Lens.lens (\UpdatePipeSourceActiveMQBrokerParameters' {batchSize} -> batchSize) (\s@UpdatePipeSourceActiveMQBrokerParameters' {} a -> s {batchSize = a} :: UpdatePipeSourceActiveMQBrokerParameters)
+
+-- | The maximum length of a time to wait for events.
+updatePipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds :: Lens.Lens' UpdatePipeSourceActiveMQBrokerParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceActiveMQBrokerParameters_maximumBatchingWindowInSeconds = Lens.lens (\UpdatePipeSourceActiveMQBrokerParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@UpdatePipeSourceActiveMQBrokerParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: UpdatePipeSourceActiveMQBrokerParameters)
+
+-- | The credentials needed to access the resource.
+updatePipeSourceActiveMQBrokerParameters_credentials :: Lens.Lens' UpdatePipeSourceActiveMQBrokerParameters MQBrokerAccessCredentials
+updatePipeSourceActiveMQBrokerParameters_credentials = Lens.lens (\UpdatePipeSourceActiveMQBrokerParameters' {credentials} -> credentials) (\s@UpdatePipeSourceActiveMQBrokerParameters' {} a -> s {credentials = a} :: UpdatePipeSourceActiveMQBrokerParameters)
+
+instance
+  Prelude.Hashable
+    UpdatePipeSourceActiveMQBrokerParameters
+  where
+  hashWithSalt
+    _salt
+    UpdatePipeSourceActiveMQBrokerParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` credentials
+
+instance
+  Prelude.NFData
+    UpdatePipeSourceActiveMQBrokerParameters
+  where
+  rnf UpdatePipeSourceActiveMQBrokerParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf credentials
+
+instance
+  Data.ToJSON
+    UpdatePipeSourceActiveMQBrokerParameters
+  where
+  toJSON UpdatePipeSourceActiveMQBrokerParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            Prelude.Just ("Credentials" Data..= credentials)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/UpdatePipeSourceDynamoDBStreamParameters.hs b/gen/Amazonka/Pipes/Types/UpdatePipeSourceDynamoDBStreamParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/UpdatePipeSourceDynamoDBStreamParameters.hs
@@ -0,0 +1,193 @@
+{-# 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.Pipes.Types.UpdatePipeSourceDynamoDBStreamParameters
+-- 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.Pipes.Types.UpdatePipeSourceDynamoDBStreamParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.DeadLetterConfig
+import Amazonka.Pipes.Types.OnPartialBatchItemFailureStreams
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a DynamoDB stream as a source.
+--
+-- /See:/ 'newUpdatePipeSourceDynamoDBStreamParameters' smart constructor.
+data UpdatePipeSourceDynamoDBStreamParameters = UpdatePipeSourceDynamoDBStreamParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | Define the target queue to send dead-letter queue events to.
+    deadLetterConfig :: Prelude.Maybe DeadLetterConfig,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | (Streams only) Discard records older than the specified age. The default
+    -- value is -1, which sets the maximum age to infinite. When the value is
+    -- set to infinite, EventBridge never discards old records.
+    maximumRecordAgeInSeconds :: Prelude.Maybe Prelude.Int,
+    -- | (Streams only) Discard records after the specified number of retries.
+    -- The default value is -1, which sets the maximum number of retries to
+    -- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+    -- failed records until the record expires in the event source.
+    maximumRetryAttempts :: Prelude.Maybe Prelude.Int,
+    -- | (Streams only) Define how to handle item process failures.
+    -- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+    -- records are processed or there is one failed message left in the batch.
+    onPartialBatchItemFailure :: Prelude.Maybe OnPartialBatchItemFailureStreams,
+    -- | (Streams only) The number of batches to process concurrently from each
+    -- shard. The default value is 1.
+    parallelizationFactor :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeSourceDynamoDBStreamParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'updatePipeSourceDynamoDBStreamParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'deadLetterConfig', 'updatePipeSourceDynamoDBStreamParameters_deadLetterConfig' - Define the target queue to send dead-letter queue events to.
+--
+-- 'maximumBatchingWindowInSeconds', 'updatePipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'maximumRecordAgeInSeconds', 'updatePipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds' - (Streams only) Discard records older than the specified age. The default
+-- value is -1, which sets the maximum age to infinite. When the value is
+-- set to infinite, EventBridge never discards old records.
+--
+-- 'maximumRetryAttempts', 'updatePipeSourceDynamoDBStreamParameters_maximumRetryAttempts' - (Streams only) Discard records after the specified number of retries.
+-- The default value is -1, which sets the maximum number of retries to
+-- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+-- failed records until the record expires in the event source.
+--
+-- 'onPartialBatchItemFailure', 'updatePipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure' - (Streams only) Define how to handle item process failures.
+-- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+-- records are processed or there is one failed message left in the batch.
+--
+-- 'parallelizationFactor', 'updatePipeSourceDynamoDBStreamParameters_parallelizationFactor' - (Streams only) The number of batches to process concurrently from each
+-- shard. The default value is 1.
+newUpdatePipeSourceDynamoDBStreamParameters ::
+  UpdatePipeSourceDynamoDBStreamParameters
+newUpdatePipeSourceDynamoDBStreamParameters =
+  UpdatePipeSourceDynamoDBStreamParameters'
+    { batchSize =
+        Prelude.Nothing,
+      deadLetterConfig =
+        Prelude.Nothing,
+      maximumBatchingWindowInSeconds =
+        Prelude.Nothing,
+      maximumRecordAgeInSeconds =
+        Prelude.Nothing,
+      maximumRetryAttempts =
+        Prelude.Nothing,
+      onPartialBatchItemFailure =
+        Prelude.Nothing,
+      parallelizationFactor =
+        Prelude.Nothing
+    }
+
+-- | The maximum number of records to include in each batch.
+updatePipeSourceDynamoDBStreamParameters_batchSize :: Lens.Lens' UpdatePipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceDynamoDBStreamParameters_batchSize = Lens.lens (\UpdatePipeSourceDynamoDBStreamParameters' {batchSize} -> batchSize) (\s@UpdatePipeSourceDynamoDBStreamParameters' {} a -> s {batchSize = a} :: UpdatePipeSourceDynamoDBStreamParameters)
+
+-- | Define the target queue to send dead-letter queue events to.
+updatePipeSourceDynamoDBStreamParameters_deadLetterConfig :: Lens.Lens' UpdatePipeSourceDynamoDBStreamParameters (Prelude.Maybe DeadLetterConfig)
+updatePipeSourceDynamoDBStreamParameters_deadLetterConfig = Lens.lens (\UpdatePipeSourceDynamoDBStreamParameters' {deadLetterConfig} -> deadLetterConfig) (\s@UpdatePipeSourceDynamoDBStreamParameters' {} a -> s {deadLetterConfig = a} :: UpdatePipeSourceDynamoDBStreamParameters)
+
+-- | The maximum length of a time to wait for events.
+updatePipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds :: Lens.Lens' UpdatePipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceDynamoDBStreamParameters_maximumBatchingWindowInSeconds = Lens.lens (\UpdatePipeSourceDynamoDBStreamParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@UpdatePipeSourceDynamoDBStreamParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: UpdatePipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) Discard records older than the specified age. The default
+-- value is -1, which sets the maximum age to infinite. When the value is
+-- set to infinite, EventBridge never discards old records.
+updatePipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds :: Lens.Lens' UpdatePipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Int)
+updatePipeSourceDynamoDBStreamParameters_maximumRecordAgeInSeconds = Lens.lens (\UpdatePipeSourceDynamoDBStreamParameters' {maximumRecordAgeInSeconds} -> maximumRecordAgeInSeconds) (\s@UpdatePipeSourceDynamoDBStreamParameters' {} a -> s {maximumRecordAgeInSeconds = a} :: UpdatePipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) Discard records after the specified number of retries.
+-- The default value is -1, which sets the maximum number of retries to
+-- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+-- failed records until the record expires in the event source.
+updatePipeSourceDynamoDBStreamParameters_maximumRetryAttempts :: Lens.Lens' UpdatePipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Int)
+updatePipeSourceDynamoDBStreamParameters_maximumRetryAttempts = Lens.lens (\UpdatePipeSourceDynamoDBStreamParameters' {maximumRetryAttempts} -> maximumRetryAttempts) (\s@UpdatePipeSourceDynamoDBStreamParameters' {} a -> s {maximumRetryAttempts = a} :: UpdatePipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) Define how to handle item process failures.
+-- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+-- records are processed or there is one failed message left in the batch.
+updatePipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure :: Lens.Lens' UpdatePipeSourceDynamoDBStreamParameters (Prelude.Maybe OnPartialBatchItemFailureStreams)
+updatePipeSourceDynamoDBStreamParameters_onPartialBatchItemFailure = Lens.lens (\UpdatePipeSourceDynamoDBStreamParameters' {onPartialBatchItemFailure} -> onPartialBatchItemFailure) (\s@UpdatePipeSourceDynamoDBStreamParameters' {} a -> s {onPartialBatchItemFailure = a} :: UpdatePipeSourceDynamoDBStreamParameters)
+
+-- | (Streams only) The number of batches to process concurrently from each
+-- shard. The default value is 1.
+updatePipeSourceDynamoDBStreamParameters_parallelizationFactor :: Lens.Lens' UpdatePipeSourceDynamoDBStreamParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceDynamoDBStreamParameters_parallelizationFactor = Lens.lens (\UpdatePipeSourceDynamoDBStreamParameters' {parallelizationFactor} -> parallelizationFactor) (\s@UpdatePipeSourceDynamoDBStreamParameters' {} a -> s {parallelizationFactor = a} :: UpdatePipeSourceDynamoDBStreamParameters)
+
+instance
+  Prelude.Hashable
+    UpdatePipeSourceDynamoDBStreamParameters
+  where
+  hashWithSalt
+    _salt
+    UpdatePipeSourceDynamoDBStreamParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` deadLetterConfig
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` maximumRecordAgeInSeconds
+        `Prelude.hashWithSalt` maximumRetryAttempts
+        `Prelude.hashWithSalt` onPartialBatchItemFailure
+        `Prelude.hashWithSalt` parallelizationFactor
+
+instance
+  Prelude.NFData
+    UpdatePipeSourceDynamoDBStreamParameters
+  where
+  rnf UpdatePipeSourceDynamoDBStreamParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf deadLetterConfig
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf maximumRecordAgeInSeconds
+      `Prelude.seq` Prelude.rnf maximumRetryAttempts
+      `Prelude.seq` Prelude.rnf onPartialBatchItemFailure
+      `Prelude.seq` Prelude.rnf parallelizationFactor
+
+instance
+  Data.ToJSON
+    UpdatePipeSourceDynamoDBStreamParameters
+  where
+  toJSON UpdatePipeSourceDynamoDBStreamParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("DeadLetterConfig" Data..=)
+              Prelude.<$> deadLetterConfig,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            ("MaximumRecordAgeInSeconds" Data..=)
+              Prelude.<$> maximumRecordAgeInSeconds,
+            ("MaximumRetryAttempts" Data..=)
+              Prelude.<$> maximumRetryAttempts,
+            ("OnPartialBatchItemFailure" Data..=)
+              Prelude.<$> onPartialBatchItemFailure,
+            ("ParallelizationFactor" Data..=)
+              Prelude.<$> parallelizationFactor
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/UpdatePipeSourceKinesisStreamParameters.hs b/gen/Amazonka/Pipes/Types/UpdatePipeSourceKinesisStreamParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/UpdatePipeSourceKinesisStreamParameters.hs
@@ -0,0 +1,192 @@
+{-# 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.Pipes.Types.UpdatePipeSourceKinesisStreamParameters
+-- 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.Pipes.Types.UpdatePipeSourceKinesisStreamParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.DeadLetterConfig
+import Amazonka.Pipes.Types.OnPartialBatchItemFailureStreams
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Kinesis stream as a source.
+--
+-- /See:/ 'newUpdatePipeSourceKinesisStreamParameters' smart constructor.
+data UpdatePipeSourceKinesisStreamParameters = UpdatePipeSourceKinesisStreamParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | Define the target queue to send dead-letter queue events to.
+    deadLetterConfig :: Prelude.Maybe DeadLetterConfig,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | (Streams only) Discard records older than the specified age. The default
+    -- value is -1, which sets the maximum age to infinite. When the value is
+    -- set to infinite, EventBridge never discards old records.
+    maximumRecordAgeInSeconds :: Prelude.Maybe Prelude.Int,
+    -- | (Streams only) Discard records after the specified number of retries.
+    -- The default value is -1, which sets the maximum number of retries to
+    -- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+    -- failed records until the record expires in the event source.
+    maximumRetryAttempts :: Prelude.Maybe Prelude.Int,
+    -- | (Streams only) Define how to handle item process failures.
+    -- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+    -- records are processed or there is one failed message left in the batch.
+    onPartialBatchItemFailure :: Prelude.Maybe OnPartialBatchItemFailureStreams,
+    -- | (Streams only) The number of batches to process concurrently from each
+    -- shard. The default value is 1.
+    parallelizationFactor :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeSourceKinesisStreamParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'updatePipeSourceKinesisStreamParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'deadLetterConfig', 'updatePipeSourceKinesisStreamParameters_deadLetterConfig' - Define the target queue to send dead-letter queue events to.
+--
+-- 'maximumBatchingWindowInSeconds', 'updatePipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'maximumRecordAgeInSeconds', 'updatePipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds' - (Streams only) Discard records older than the specified age. The default
+-- value is -1, which sets the maximum age to infinite. When the value is
+-- set to infinite, EventBridge never discards old records.
+--
+-- 'maximumRetryAttempts', 'updatePipeSourceKinesisStreamParameters_maximumRetryAttempts' - (Streams only) Discard records after the specified number of retries.
+-- The default value is -1, which sets the maximum number of retries to
+-- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+-- failed records until the record expires in the event source.
+--
+-- 'onPartialBatchItemFailure', 'updatePipeSourceKinesisStreamParameters_onPartialBatchItemFailure' - (Streams only) Define how to handle item process failures.
+-- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+-- records are processed or there is one failed message left in the batch.
+--
+-- 'parallelizationFactor', 'updatePipeSourceKinesisStreamParameters_parallelizationFactor' - (Streams only) The number of batches to process concurrently from each
+-- shard. The default value is 1.
+newUpdatePipeSourceKinesisStreamParameters ::
+  UpdatePipeSourceKinesisStreamParameters
+newUpdatePipeSourceKinesisStreamParameters =
+  UpdatePipeSourceKinesisStreamParameters'
+    { batchSize =
+        Prelude.Nothing,
+      deadLetterConfig = Prelude.Nothing,
+      maximumBatchingWindowInSeconds =
+        Prelude.Nothing,
+      maximumRecordAgeInSeconds =
+        Prelude.Nothing,
+      maximumRetryAttempts =
+        Prelude.Nothing,
+      onPartialBatchItemFailure =
+        Prelude.Nothing,
+      parallelizationFactor =
+        Prelude.Nothing
+    }
+
+-- | The maximum number of records to include in each batch.
+updatePipeSourceKinesisStreamParameters_batchSize :: Lens.Lens' UpdatePipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceKinesisStreamParameters_batchSize = Lens.lens (\UpdatePipeSourceKinesisStreamParameters' {batchSize} -> batchSize) (\s@UpdatePipeSourceKinesisStreamParameters' {} a -> s {batchSize = a} :: UpdatePipeSourceKinesisStreamParameters)
+
+-- | Define the target queue to send dead-letter queue events to.
+updatePipeSourceKinesisStreamParameters_deadLetterConfig :: Lens.Lens' UpdatePipeSourceKinesisStreamParameters (Prelude.Maybe DeadLetterConfig)
+updatePipeSourceKinesisStreamParameters_deadLetterConfig = Lens.lens (\UpdatePipeSourceKinesisStreamParameters' {deadLetterConfig} -> deadLetterConfig) (\s@UpdatePipeSourceKinesisStreamParameters' {} a -> s {deadLetterConfig = a} :: UpdatePipeSourceKinesisStreamParameters)
+
+-- | The maximum length of a time to wait for events.
+updatePipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds :: Lens.Lens' UpdatePipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceKinesisStreamParameters_maximumBatchingWindowInSeconds = Lens.lens (\UpdatePipeSourceKinesisStreamParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@UpdatePipeSourceKinesisStreamParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: UpdatePipeSourceKinesisStreamParameters)
+
+-- | (Streams only) Discard records older than the specified age. The default
+-- value is -1, which sets the maximum age to infinite. When the value is
+-- set to infinite, EventBridge never discards old records.
+updatePipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds :: Lens.Lens' UpdatePipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Int)
+updatePipeSourceKinesisStreamParameters_maximumRecordAgeInSeconds = Lens.lens (\UpdatePipeSourceKinesisStreamParameters' {maximumRecordAgeInSeconds} -> maximumRecordAgeInSeconds) (\s@UpdatePipeSourceKinesisStreamParameters' {} a -> s {maximumRecordAgeInSeconds = a} :: UpdatePipeSourceKinesisStreamParameters)
+
+-- | (Streams only) Discard records after the specified number of retries.
+-- The default value is -1, which sets the maximum number of retries to
+-- infinite. When MaximumRetryAttempts is infinite, EventBridge retries
+-- failed records until the record expires in the event source.
+updatePipeSourceKinesisStreamParameters_maximumRetryAttempts :: Lens.Lens' UpdatePipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Int)
+updatePipeSourceKinesisStreamParameters_maximumRetryAttempts = Lens.lens (\UpdatePipeSourceKinesisStreamParameters' {maximumRetryAttempts} -> maximumRetryAttempts) (\s@UpdatePipeSourceKinesisStreamParameters' {} a -> s {maximumRetryAttempts = a} :: UpdatePipeSourceKinesisStreamParameters)
+
+-- | (Streams only) Define how to handle item process failures.
+-- @AUTOMATIC_BISECT@ halves each batch and retry each half until all the
+-- records are processed or there is one failed message left in the batch.
+updatePipeSourceKinesisStreamParameters_onPartialBatchItemFailure :: Lens.Lens' UpdatePipeSourceKinesisStreamParameters (Prelude.Maybe OnPartialBatchItemFailureStreams)
+updatePipeSourceKinesisStreamParameters_onPartialBatchItemFailure = Lens.lens (\UpdatePipeSourceKinesisStreamParameters' {onPartialBatchItemFailure} -> onPartialBatchItemFailure) (\s@UpdatePipeSourceKinesisStreamParameters' {} a -> s {onPartialBatchItemFailure = a} :: UpdatePipeSourceKinesisStreamParameters)
+
+-- | (Streams only) The number of batches to process concurrently from each
+-- shard. The default value is 1.
+updatePipeSourceKinesisStreamParameters_parallelizationFactor :: Lens.Lens' UpdatePipeSourceKinesisStreamParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceKinesisStreamParameters_parallelizationFactor = Lens.lens (\UpdatePipeSourceKinesisStreamParameters' {parallelizationFactor} -> parallelizationFactor) (\s@UpdatePipeSourceKinesisStreamParameters' {} a -> s {parallelizationFactor = a} :: UpdatePipeSourceKinesisStreamParameters)
+
+instance
+  Prelude.Hashable
+    UpdatePipeSourceKinesisStreamParameters
+  where
+  hashWithSalt
+    _salt
+    UpdatePipeSourceKinesisStreamParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` deadLetterConfig
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` maximumRecordAgeInSeconds
+        `Prelude.hashWithSalt` maximumRetryAttempts
+        `Prelude.hashWithSalt` onPartialBatchItemFailure
+        `Prelude.hashWithSalt` parallelizationFactor
+
+instance
+  Prelude.NFData
+    UpdatePipeSourceKinesisStreamParameters
+  where
+  rnf UpdatePipeSourceKinesisStreamParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf deadLetterConfig
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf maximumRecordAgeInSeconds
+      `Prelude.seq` Prelude.rnf maximumRetryAttempts
+      `Prelude.seq` Prelude.rnf onPartialBatchItemFailure
+      `Prelude.seq` Prelude.rnf parallelizationFactor
+
+instance
+  Data.ToJSON
+    UpdatePipeSourceKinesisStreamParameters
+  where
+  toJSON UpdatePipeSourceKinesisStreamParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("DeadLetterConfig" Data..=)
+              Prelude.<$> deadLetterConfig,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            ("MaximumRecordAgeInSeconds" Data..=)
+              Prelude.<$> maximumRecordAgeInSeconds,
+            ("MaximumRetryAttempts" Data..=)
+              Prelude.<$> maximumRetryAttempts,
+            ("OnPartialBatchItemFailure" Data..=)
+              Prelude.<$> onPartialBatchItemFailure,
+            ("ParallelizationFactor" Data..=)
+              Prelude.<$> parallelizationFactor
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/UpdatePipeSourceManagedStreamingKafkaParameters.hs b/gen/Amazonka/Pipes/Types/UpdatePipeSourceManagedStreamingKafkaParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/UpdatePipeSourceManagedStreamingKafkaParameters.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.UpdatePipeSourceManagedStreamingKafkaParameters
+-- 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.Pipes.Types.UpdatePipeSourceManagedStreamingKafkaParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.MSKAccessCredentials
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using an MSK stream as a source.
+--
+-- /See:/ 'newUpdatePipeSourceManagedStreamingKafkaParameters' smart constructor.
+data UpdatePipeSourceManagedStreamingKafkaParameters = UpdatePipeSourceManagedStreamingKafkaParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The credentials needed to access the resource.
+    credentials :: Prelude.Maybe MSKAccessCredentials,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeSourceManagedStreamingKafkaParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'updatePipeSourceManagedStreamingKafkaParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'credentials', 'updatePipeSourceManagedStreamingKafkaParameters_credentials' - The credentials needed to access the resource.
+--
+-- 'maximumBatchingWindowInSeconds', 'updatePipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+newUpdatePipeSourceManagedStreamingKafkaParameters ::
+  UpdatePipeSourceManagedStreamingKafkaParameters
+newUpdatePipeSourceManagedStreamingKafkaParameters =
+  UpdatePipeSourceManagedStreamingKafkaParameters'
+    { batchSize =
+        Prelude.Nothing,
+      credentials =
+        Prelude.Nothing,
+      maximumBatchingWindowInSeconds =
+        Prelude.Nothing
+    }
+
+-- | The maximum number of records to include in each batch.
+updatePipeSourceManagedStreamingKafkaParameters_batchSize :: Lens.Lens' UpdatePipeSourceManagedStreamingKafkaParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceManagedStreamingKafkaParameters_batchSize = Lens.lens (\UpdatePipeSourceManagedStreamingKafkaParameters' {batchSize} -> batchSize) (\s@UpdatePipeSourceManagedStreamingKafkaParameters' {} a -> s {batchSize = a} :: UpdatePipeSourceManagedStreamingKafkaParameters)
+
+-- | The credentials needed to access the resource.
+updatePipeSourceManagedStreamingKafkaParameters_credentials :: Lens.Lens' UpdatePipeSourceManagedStreamingKafkaParameters (Prelude.Maybe MSKAccessCredentials)
+updatePipeSourceManagedStreamingKafkaParameters_credentials = Lens.lens (\UpdatePipeSourceManagedStreamingKafkaParameters' {credentials} -> credentials) (\s@UpdatePipeSourceManagedStreamingKafkaParameters' {} a -> s {credentials = a} :: UpdatePipeSourceManagedStreamingKafkaParameters)
+
+-- | The maximum length of a time to wait for events.
+updatePipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds :: Lens.Lens' UpdatePipeSourceManagedStreamingKafkaParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceManagedStreamingKafkaParameters_maximumBatchingWindowInSeconds = Lens.lens (\UpdatePipeSourceManagedStreamingKafkaParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@UpdatePipeSourceManagedStreamingKafkaParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: UpdatePipeSourceManagedStreamingKafkaParameters)
+
+instance
+  Prelude.Hashable
+    UpdatePipeSourceManagedStreamingKafkaParameters
+  where
+  hashWithSalt
+    _salt
+    UpdatePipeSourceManagedStreamingKafkaParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` credentials
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+
+instance
+  Prelude.NFData
+    UpdatePipeSourceManagedStreamingKafkaParameters
+  where
+  rnf
+    UpdatePipeSourceManagedStreamingKafkaParameters' {..} =
+      Prelude.rnf batchSize
+        `Prelude.seq` Prelude.rnf credentials
+        `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+
+instance
+  Data.ToJSON
+    UpdatePipeSourceManagedStreamingKafkaParameters
+  where
+  toJSON
+    UpdatePipeSourceManagedStreamingKafkaParameters' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+              ("Credentials" Data..=) Prelude.<$> credentials,
+              ("MaximumBatchingWindowInSeconds" Data..=)
+                Prelude.<$> maximumBatchingWindowInSeconds
+            ]
+        )
diff --git a/gen/Amazonka/Pipes/Types/UpdatePipeSourceParameters.hs b/gen/Amazonka/Pipes/Types/UpdatePipeSourceParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/UpdatePipeSourceParameters.hs
@@ -0,0 +1,182 @@
+{-# 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.Pipes.Types.UpdatePipeSourceParameters
+-- 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.Pipes.Types.UpdatePipeSourceParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.FilterCriteria
+import Amazonka.Pipes.Types.UpdatePipeSourceActiveMQBrokerParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceDynamoDBStreamParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceKinesisStreamParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceManagedStreamingKafkaParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceRabbitMQBrokerParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceSelfManagedKafkaParameters
+import Amazonka.Pipes.Types.UpdatePipeSourceSqsQueueParameters
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters required to set up a source for your pipe.
+--
+-- /See:/ 'newUpdatePipeSourceParameters' smart constructor.
+data UpdatePipeSourceParameters = UpdatePipeSourceParameters'
+  { -- | The parameters for using an Active MQ broker as a source.
+    activeMQBrokerParameters :: Prelude.Maybe UpdatePipeSourceActiveMQBrokerParameters,
+    -- | The parameters for using a DynamoDB stream as a source.
+    dynamoDBStreamParameters :: Prelude.Maybe UpdatePipeSourceDynamoDBStreamParameters,
+    -- | The collection of event patterns used to filter events. For more
+    -- information, see
+    -- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html Events and Event Patterns>
+    -- in the /Amazon EventBridge User Guide/.
+    filterCriteria :: Prelude.Maybe FilterCriteria,
+    -- | The parameters for using a Kinesis stream as a source.
+    kinesisStreamParameters :: Prelude.Maybe UpdatePipeSourceKinesisStreamParameters,
+    -- | The parameters for using an MSK stream as a source.
+    managedStreamingKafkaParameters :: Prelude.Maybe UpdatePipeSourceManagedStreamingKafkaParameters,
+    -- | The parameters for using a Rabbit MQ broker as a source.
+    rabbitMQBrokerParameters :: Prelude.Maybe UpdatePipeSourceRabbitMQBrokerParameters,
+    -- | The parameters for using a self-managed Apache Kafka stream as a source.
+    selfManagedKafkaParameters :: Prelude.Maybe UpdatePipeSourceSelfManagedKafkaParameters,
+    -- | The parameters for using a Amazon SQS stream as a source.
+    sqsQueueParameters :: Prelude.Maybe UpdatePipeSourceSqsQueueParameters
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeSourceParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeMQBrokerParameters', 'updatePipeSourceParameters_activeMQBrokerParameters' - The parameters for using an Active MQ broker as a source.
+--
+-- 'dynamoDBStreamParameters', 'updatePipeSourceParameters_dynamoDBStreamParameters' - The parameters for using a DynamoDB stream as a source.
+--
+-- 'filterCriteria', 'updatePipeSourceParameters_filterCriteria' - The collection of event patterns used to filter events. For more
+-- information, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html Events and Event Patterns>
+-- in the /Amazon EventBridge User Guide/.
+--
+-- 'kinesisStreamParameters', 'updatePipeSourceParameters_kinesisStreamParameters' - The parameters for using a Kinesis stream as a source.
+--
+-- 'managedStreamingKafkaParameters', 'updatePipeSourceParameters_managedStreamingKafkaParameters' - The parameters for using an MSK stream as a source.
+--
+-- 'rabbitMQBrokerParameters', 'updatePipeSourceParameters_rabbitMQBrokerParameters' - The parameters for using a Rabbit MQ broker as a source.
+--
+-- 'selfManagedKafkaParameters', 'updatePipeSourceParameters_selfManagedKafkaParameters' - The parameters for using a self-managed Apache Kafka stream as a source.
+--
+-- 'sqsQueueParameters', 'updatePipeSourceParameters_sqsQueueParameters' - The parameters for using a Amazon SQS stream as a source.
+newUpdatePipeSourceParameters ::
+  UpdatePipeSourceParameters
+newUpdatePipeSourceParameters =
+  UpdatePipeSourceParameters'
+    { activeMQBrokerParameters =
+        Prelude.Nothing,
+      dynamoDBStreamParameters = Prelude.Nothing,
+      filterCriteria = Prelude.Nothing,
+      kinesisStreamParameters = Prelude.Nothing,
+      managedStreamingKafkaParameters =
+        Prelude.Nothing,
+      rabbitMQBrokerParameters = Prelude.Nothing,
+      selfManagedKafkaParameters = Prelude.Nothing,
+      sqsQueueParameters = Prelude.Nothing
+    }
+
+-- | The parameters for using an Active MQ broker as a source.
+updatePipeSourceParameters_activeMQBrokerParameters :: Lens.Lens' UpdatePipeSourceParameters (Prelude.Maybe UpdatePipeSourceActiveMQBrokerParameters)
+updatePipeSourceParameters_activeMQBrokerParameters = Lens.lens (\UpdatePipeSourceParameters' {activeMQBrokerParameters} -> activeMQBrokerParameters) (\s@UpdatePipeSourceParameters' {} a -> s {activeMQBrokerParameters = a} :: UpdatePipeSourceParameters)
+
+-- | The parameters for using a DynamoDB stream as a source.
+updatePipeSourceParameters_dynamoDBStreamParameters :: Lens.Lens' UpdatePipeSourceParameters (Prelude.Maybe UpdatePipeSourceDynamoDBStreamParameters)
+updatePipeSourceParameters_dynamoDBStreamParameters = Lens.lens (\UpdatePipeSourceParameters' {dynamoDBStreamParameters} -> dynamoDBStreamParameters) (\s@UpdatePipeSourceParameters' {} a -> s {dynamoDBStreamParameters = a} :: UpdatePipeSourceParameters)
+
+-- | The collection of event patterns used to filter events. For more
+-- information, see
+-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html Events and Event Patterns>
+-- in the /Amazon EventBridge User Guide/.
+updatePipeSourceParameters_filterCriteria :: Lens.Lens' UpdatePipeSourceParameters (Prelude.Maybe FilterCriteria)
+updatePipeSourceParameters_filterCriteria = Lens.lens (\UpdatePipeSourceParameters' {filterCriteria} -> filterCriteria) (\s@UpdatePipeSourceParameters' {} a -> s {filterCriteria = a} :: UpdatePipeSourceParameters)
+
+-- | The parameters for using a Kinesis stream as a source.
+updatePipeSourceParameters_kinesisStreamParameters :: Lens.Lens' UpdatePipeSourceParameters (Prelude.Maybe UpdatePipeSourceKinesisStreamParameters)
+updatePipeSourceParameters_kinesisStreamParameters = Lens.lens (\UpdatePipeSourceParameters' {kinesisStreamParameters} -> kinesisStreamParameters) (\s@UpdatePipeSourceParameters' {} a -> s {kinesisStreamParameters = a} :: UpdatePipeSourceParameters)
+
+-- | The parameters for using an MSK stream as a source.
+updatePipeSourceParameters_managedStreamingKafkaParameters :: Lens.Lens' UpdatePipeSourceParameters (Prelude.Maybe UpdatePipeSourceManagedStreamingKafkaParameters)
+updatePipeSourceParameters_managedStreamingKafkaParameters = Lens.lens (\UpdatePipeSourceParameters' {managedStreamingKafkaParameters} -> managedStreamingKafkaParameters) (\s@UpdatePipeSourceParameters' {} a -> s {managedStreamingKafkaParameters = a} :: UpdatePipeSourceParameters)
+
+-- | The parameters for using a Rabbit MQ broker as a source.
+updatePipeSourceParameters_rabbitMQBrokerParameters :: Lens.Lens' UpdatePipeSourceParameters (Prelude.Maybe UpdatePipeSourceRabbitMQBrokerParameters)
+updatePipeSourceParameters_rabbitMQBrokerParameters = Lens.lens (\UpdatePipeSourceParameters' {rabbitMQBrokerParameters} -> rabbitMQBrokerParameters) (\s@UpdatePipeSourceParameters' {} a -> s {rabbitMQBrokerParameters = a} :: UpdatePipeSourceParameters)
+
+-- | The parameters for using a self-managed Apache Kafka stream as a source.
+updatePipeSourceParameters_selfManagedKafkaParameters :: Lens.Lens' UpdatePipeSourceParameters (Prelude.Maybe UpdatePipeSourceSelfManagedKafkaParameters)
+updatePipeSourceParameters_selfManagedKafkaParameters = Lens.lens (\UpdatePipeSourceParameters' {selfManagedKafkaParameters} -> selfManagedKafkaParameters) (\s@UpdatePipeSourceParameters' {} a -> s {selfManagedKafkaParameters = a} :: UpdatePipeSourceParameters)
+
+-- | The parameters for using a Amazon SQS stream as a source.
+updatePipeSourceParameters_sqsQueueParameters :: Lens.Lens' UpdatePipeSourceParameters (Prelude.Maybe UpdatePipeSourceSqsQueueParameters)
+updatePipeSourceParameters_sqsQueueParameters = Lens.lens (\UpdatePipeSourceParameters' {sqsQueueParameters} -> sqsQueueParameters) (\s@UpdatePipeSourceParameters' {} a -> s {sqsQueueParameters = a} :: UpdatePipeSourceParameters)
+
+instance Prelude.Hashable UpdatePipeSourceParameters where
+  hashWithSalt _salt UpdatePipeSourceParameters' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeMQBrokerParameters
+      `Prelude.hashWithSalt` dynamoDBStreamParameters
+      `Prelude.hashWithSalt` filterCriteria
+      `Prelude.hashWithSalt` kinesisStreamParameters
+      `Prelude.hashWithSalt` managedStreamingKafkaParameters
+      `Prelude.hashWithSalt` rabbitMQBrokerParameters
+      `Prelude.hashWithSalt` selfManagedKafkaParameters
+      `Prelude.hashWithSalt` sqsQueueParameters
+
+instance Prelude.NFData UpdatePipeSourceParameters where
+  rnf UpdatePipeSourceParameters' {..} =
+    Prelude.rnf activeMQBrokerParameters
+      `Prelude.seq` Prelude.rnf dynamoDBStreamParameters
+      `Prelude.seq` Prelude.rnf filterCriteria
+      `Prelude.seq` Prelude.rnf kinesisStreamParameters
+      `Prelude.seq` Prelude.rnf managedStreamingKafkaParameters
+      `Prelude.seq` Prelude.rnf rabbitMQBrokerParameters
+      `Prelude.seq` Prelude.rnf selfManagedKafkaParameters
+      `Prelude.seq` Prelude.rnf sqsQueueParameters
+
+instance Data.ToJSON UpdatePipeSourceParameters where
+  toJSON UpdatePipeSourceParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ActiveMQBrokerParameters" Data..=)
+              Prelude.<$> activeMQBrokerParameters,
+            ("DynamoDBStreamParameters" Data..=)
+              Prelude.<$> dynamoDBStreamParameters,
+            ("FilterCriteria" Data..=)
+              Prelude.<$> filterCriteria,
+            ("KinesisStreamParameters" Data..=)
+              Prelude.<$> kinesisStreamParameters,
+            ("ManagedStreamingKafkaParameters" Data..=)
+              Prelude.<$> managedStreamingKafkaParameters,
+            ("RabbitMQBrokerParameters" Data..=)
+              Prelude.<$> rabbitMQBrokerParameters,
+            ("SelfManagedKafkaParameters" Data..=)
+              Prelude.<$> selfManagedKafkaParameters,
+            ("SqsQueueParameters" Data..=)
+              Prelude.<$> sqsQueueParameters
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/UpdatePipeSourceRabbitMQBrokerParameters.hs b/gen/Amazonka/Pipes/Types/UpdatePipeSourceRabbitMQBrokerParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/UpdatePipeSourceRabbitMQBrokerParameters.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.UpdatePipeSourceRabbitMQBrokerParameters
+-- 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.Pipes.Types.UpdatePipeSourceRabbitMQBrokerParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.MQBrokerAccessCredentials
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Rabbit MQ broker as a source.
+--
+-- /See:/ 'newUpdatePipeSourceRabbitMQBrokerParameters' smart constructor.
+data UpdatePipeSourceRabbitMQBrokerParameters = UpdatePipeSourceRabbitMQBrokerParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The credentials needed to access the resource.
+    credentials :: MQBrokerAccessCredentials
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeSourceRabbitMQBrokerParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'updatePipeSourceRabbitMQBrokerParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'maximumBatchingWindowInSeconds', 'updatePipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'credentials', 'updatePipeSourceRabbitMQBrokerParameters_credentials' - The credentials needed to access the resource.
+newUpdatePipeSourceRabbitMQBrokerParameters ::
+  -- | 'credentials'
+  MQBrokerAccessCredentials ->
+  UpdatePipeSourceRabbitMQBrokerParameters
+newUpdatePipeSourceRabbitMQBrokerParameters
+  pCredentials_ =
+    UpdatePipeSourceRabbitMQBrokerParameters'
+      { batchSize =
+          Prelude.Nothing,
+        maximumBatchingWindowInSeconds =
+          Prelude.Nothing,
+        credentials = pCredentials_
+      }
+
+-- | The maximum number of records to include in each batch.
+updatePipeSourceRabbitMQBrokerParameters_batchSize :: Lens.Lens' UpdatePipeSourceRabbitMQBrokerParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceRabbitMQBrokerParameters_batchSize = Lens.lens (\UpdatePipeSourceRabbitMQBrokerParameters' {batchSize} -> batchSize) (\s@UpdatePipeSourceRabbitMQBrokerParameters' {} a -> s {batchSize = a} :: UpdatePipeSourceRabbitMQBrokerParameters)
+
+-- | The maximum length of a time to wait for events.
+updatePipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds :: Lens.Lens' UpdatePipeSourceRabbitMQBrokerParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceRabbitMQBrokerParameters_maximumBatchingWindowInSeconds = Lens.lens (\UpdatePipeSourceRabbitMQBrokerParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@UpdatePipeSourceRabbitMQBrokerParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: UpdatePipeSourceRabbitMQBrokerParameters)
+
+-- | The credentials needed to access the resource.
+updatePipeSourceRabbitMQBrokerParameters_credentials :: Lens.Lens' UpdatePipeSourceRabbitMQBrokerParameters MQBrokerAccessCredentials
+updatePipeSourceRabbitMQBrokerParameters_credentials = Lens.lens (\UpdatePipeSourceRabbitMQBrokerParameters' {credentials} -> credentials) (\s@UpdatePipeSourceRabbitMQBrokerParameters' {} a -> s {credentials = a} :: UpdatePipeSourceRabbitMQBrokerParameters)
+
+instance
+  Prelude.Hashable
+    UpdatePipeSourceRabbitMQBrokerParameters
+  where
+  hashWithSalt
+    _salt
+    UpdatePipeSourceRabbitMQBrokerParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` credentials
+
+instance
+  Prelude.NFData
+    UpdatePipeSourceRabbitMQBrokerParameters
+  where
+  rnf UpdatePipeSourceRabbitMQBrokerParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf credentials
+
+instance
+  Data.ToJSON
+    UpdatePipeSourceRabbitMQBrokerParameters
+  where
+  toJSON UpdatePipeSourceRabbitMQBrokerParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds,
+            Prelude.Just ("Credentials" Data..= credentials)
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/Types/UpdatePipeSourceSelfManagedKafkaParameters.hs b/gen/Amazonka/Pipes/Types/UpdatePipeSourceSelfManagedKafkaParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/UpdatePipeSourceSelfManagedKafkaParameters.hs
@@ -0,0 +1,141 @@
+{-# 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.Pipes.Types.UpdatePipeSourceSelfManagedKafkaParameters
+-- 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.Pipes.Types.UpdatePipeSourceSelfManagedKafkaParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationCredentials
+import Amazonka.Pipes.Types.SelfManagedKafkaAccessConfigurationVpc
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a self-managed Apache Kafka stream as a source.
+--
+-- /See:/ 'newUpdatePipeSourceSelfManagedKafkaParameters' smart constructor.
+data UpdatePipeSourceSelfManagedKafkaParameters = UpdatePipeSourceSelfManagedKafkaParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The credentials needed to access the resource.
+    credentials :: Prelude.Maybe SelfManagedKafkaAccessConfigurationCredentials,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural,
+    -- | The ARN of the Secrets Manager secret used for certification.
+    serverRootCaCertificate :: Prelude.Maybe Prelude.Text,
+    -- | This structure specifies the VPC subnets and security groups for the
+    -- stream, and whether a public IP address is to be used.
+    vpc :: Prelude.Maybe SelfManagedKafkaAccessConfigurationVpc
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeSourceSelfManagedKafkaParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'updatePipeSourceSelfManagedKafkaParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'credentials', 'updatePipeSourceSelfManagedKafkaParameters_credentials' - The credentials needed to access the resource.
+--
+-- 'maximumBatchingWindowInSeconds', 'updatePipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+--
+-- 'serverRootCaCertificate', 'updatePipeSourceSelfManagedKafkaParameters_serverRootCaCertificate' - The ARN of the Secrets Manager secret used for certification.
+--
+-- 'vpc', 'updatePipeSourceSelfManagedKafkaParameters_vpc' - This structure specifies the VPC subnets and security groups for the
+-- stream, and whether a public IP address is to be used.
+newUpdatePipeSourceSelfManagedKafkaParameters ::
+  UpdatePipeSourceSelfManagedKafkaParameters
+newUpdatePipeSourceSelfManagedKafkaParameters =
+  UpdatePipeSourceSelfManagedKafkaParameters'
+    { batchSize =
+        Prelude.Nothing,
+      credentials = Prelude.Nothing,
+      maximumBatchingWindowInSeconds =
+        Prelude.Nothing,
+      serverRootCaCertificate =
+        Prelude.Nothing,
+      vpc = Prelude.Nothing
+    }
+
+-- | The maximum number of records to include in each batch.
+updatePipeSourceSelfManagedKafkaParameters_batchSize :: Lens.Lens' UpdatePipeSourceSelfManagedKafkaParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceSelfManagedKafkaParameters_batchSize = Lens.lens (\UpdatePipeSourceSelfManagedKafkaParameters' {batchSize} -> batchSize) (\s@UpdatePipeSourceSelfManagedKafkaParameters' {} a -> s {batchSize = a} :: UpdatePipeSourceSelfManagedKafkaParameters)
+
+-- | The credentials needed to access the resource.
+updatePipeSourceSelfManagedKafkaParameters_credentials :: Lens.Lens' UpdatePipeSourceSelfManagedKafkaParameters (Prelude.Maybe SelfManagedKafkaAccessConfigurationCredentials)
+updatePipeSourceSelfManagedKafkaParameters_credentials = Lens.lens (\UpdatePipeSourceSelfManagedKafkaParameters' {credentials} -> credentials) (\s@UpdatePipeSourceSelfManagedKafkaParameters' {} a -> s {credentials = a} :: UpdatePipeSourceSelfManagedKafkaParameters)
+
+-- | The maximum length of a time to wait for events.
+updatePipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds :: Lens.Lens' UpdatePipeSourceSelfManagedKafkaParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceSelfManagedKafkaParameters_maximumBatchingWindowInSeconds = Lens.lens (\UpdatePipeSourceSelfManagedKafkaParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@UpdatePipeSourceSelfManagedKafkaParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: UpdatePipeSourceSelfManagedKafkaParameters)
+
+-- | The ARN of the Secrets Manager secret used for certification.
+updatePipeSourceSelfManagedKafkaParameters_serverRootCaCertificate :: Lens.Lens' UpdatePipeSourceSelfManagedKafkaParameters (Prelude.Maybe Prelude.Text)
+updatePipeSourceSelfManagedKafkaParameters_serverRootCaCertificate = Lens.lens (\UpdatePipeSourceSelfManagedKafkaParameters' {serverRootCaCertificate} -> serverRootCaCertificate) (\s@UpdatePipeSourceSelfManagedKafkaParameters' {} a -> s {serverRootCaCertificate = a} :: UpdatePipeSourceSelfManagedKafkaParameters)
+
+-- | This structure specifies the VPC subnets and security groups for the
+-- stream, and whether a public IP address is to be used.
+updatePipeSourceSelfManagedKafkaParameters_vpc :: Lens.Lens' UpdatePipeSourceSelfManagedKafkaParameters (Prelude.Maybe SelfManagedKafkaAccessConfigurationVpc)
+updatePipeSourceSelfManagedKafkaParameters_vpc = Lens.lens (\UpdatePipeSourceSelfManagedKafkaParameters' {vpc} -> vpc) (\s@UpdatePipeSourceSelfManagedKafkaParameters' {} a -> s {vpc = a} :: UpdatePipeSourceSelfManagedKafkaParameters)
+
+instance
+  Prelude.Hashable
+    UpdatePipeSourceSelfManagedKafkaParameters
+  where
+  hashWithSalt
+    _salt
+    UpdatePipeSourceSelfManagedKafkaParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` credentials
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+        `Prelude.hashWithSalt` serverRootCaCertificate
+        `Prelude.hashWithSalt` vpc
+
+instance
+  Prelude.NFData
+    UpdatePipeSourceSelfManagedKafkaParameters
+  where
+  rnf UpdatePipeSourceSelfManagedKafkaParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf credentials
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+      `Prelude.seq` Prelude.rnf serverRootCaCertificate
+      `Prelude.seq` Prelude.rnf vpc
+
+instance
+  Data.ToJSON
+    UpdatePipeSourceSelfManagedKafkaParameters
+  where
+  toJSON
+    UpdatePipeSourceSelfManagedKafkaParameters' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+              ("Credentials" Data..=) Prelude.<$> credentials,
+              ("MaximumBatchingWindowInSeconds" Data..=)
+                Prelude.<$> maximumBatchingWindowInSeconds,
+              ("ServerRootCaCertificate" Data..=)
+                Prelude.<$> serverRootCaCertificate,
+              ("Vpc" Data..=) Prelude.<$> vpc
+            ]
+        )
diff --git a/gen/Amazonka/Pipes/Types/UpdatePipeSourceSqsQueueParameters.hs b/gen/Amazonka/Pipes/Types/UpdatePipeSourceSqsQueueParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Types/UpdatePipeSourceSqsQueueParameters.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.Types.UpdatePipeSourceSqsQueueParameters
+-- 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.Pipes.Types.UpdatePipeSourceSqsQueueParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The parameters for using a Amazon SQS stream as a source.
+--
+-- /See:/ 'newUpdatePipeSourceSqsQueueParameters' smart constructor.
+data UpdatePipeSourceSqsQueueParameters = UpdatePipeSourceSqsQueueParameters'
+  { -- | The maximum number of records to include in each batch.
+    batchSize :: Prelude.Maybe Prelude.Natural,
+    -- | The maximum length of a time to wait for events.
+    maximumBatchingWindowInSeconds :: Prelude.Maybe Prelude.Natural
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipeSourceSqsQueueParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'batchSize', 'updatePipeSourceSqsQueueParameters_batchSize' - The maximum number of records to include in each batch.
+--
+-- 'maximumBatchingWindowInSeconds', 'updatePipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds' - The maximum length of a time to wait for events.
+newUpdatePipeSourceSqsQueueParameters ::
+  UpdatePipeSourceSqsQueueParameters
+newUpdatePipeSourceSqsQueueParameters =
+  UpdatePipeSourceSqsQueueParameters'
+    { batchSize =
+        Prelude.Nothing,
+      maximumBatchingWindowInSeconds =
+        Prelude.Nothing
+    }
+
+-- | The maximum number of records to include in each batch.
+updatePipeSourceSqsQueueParameters_batchSize :: Lens.Lens' UpdatePipeSourceSqsQueueParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceSqsQueueParameters_batchSize = Lens.lens (\UpdatePipeSourceSqsQueueParameters' {batchSize} -> batchSize) (\s@UpdatePipeSourceSqsQueueParameters' {} a -> s {batchSize = a} :: UpdatePipeSourceSqsQueueParameters)
+
+-- | The maximum length of a time to wait for events.
+updatePipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds :: Lens.Lens' UpdatePipeSourceSqsQueueParameters (Prelude.Maybe Prelude.Natural)
+updatePipeSourceSqsQueueParameters_maximumBatchingWindowInSeconds = Lens.lens (\UpdatePipeSourceSqsQueueParameters' {maximumBatchingWindowInSeconds} -> maximumBatchingWindowInSeconds) (\s@UpdatePipeSourceSqsQueueParameters' {} a -> s {maximumBatchingWindowInSeconds = a} :: UpdatePipeSourceSqsQueueParameters)
+
+instance
+  Prelude.Hashable
+    UpdatePipeSourceSqsQueueParameters
+  where
+  hashWithSalt
+    _salt
+    UpdatePipeSourceSqsQueueParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` batchSize
+        `Prelude.hashWithSalt` maximumBatchingWindowInSeconds
+
+instance
+  Prelude.NFData
+    UpdatePipeSourceSqsQueueParameters
+  where
+  rnf UpdatePipeSourceSqsQueueParameters' {..} =
+    Prelude.rnf batchSize
+      `Prelude.seq` Prelude.rnf maximumBatchingWindowInSeconds
+
+instance
+  Data.ToJSON
+    UpdatePipeSourceSqsQueueParameters
+  where
+  toJSON UpdatePipeSourceSqsQueueParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("BatchSize" Data..=) Prelude.<$> batchSize,
+            ("MaximumBatchingWindowInSeconds" Data..=)
+              Prelude.<$> maximumBatchingWindowInSeconds
+          ]
+      )
diff --git a/gen/Amazonka/Pipes/UntagResource.hs b/gen/Amazonka/Pipes/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/UntagResource.hs
@@ -0,0 +1,161 @@
+{-# 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.Pipes.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 one or more tags from the specified pipes.
+module Amazonka.Pipes.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceArn,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+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 ARN of the pipe.
+    resourceArn :: Prelude.Text,
+    -- | The list of tag keys to remove from the pipe.
+    tagKeys :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'untagResource_resourceArn' - The ARN of the pipe.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The list of tag keys to remove from the pipe.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { resourceArn = pResourceArn_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | The ARN of the pipe.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+-- | The list of tag keys to remove from the pipe.
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.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/Pipes/UpdatePipe.hs b/gen/Amazonka/Pipes/UpdatePipe.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/UpdatePipe.hs
@@ -0,0 +1,351 @@
+{-# 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.Pipes.UpdatePipe
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an existing pipe. When you call @UpdatePipe@, only the fields
+-- that are included in the request are changed, the rest are unchanged.
+-- The exception to this is if you modify any Amazon Web Services-service
+-- specific fields in the @SourceParameters@, @EnrichmentParameters@, or
+-- @TargetParameters@ objects. The fields in these objects are updated
+-- atomically as one and override existing values. This is by design and
+-- means that if you don\'t specify an optional field in one of these
+-- Parameters objects, that field will be set to its system-default value
+-- after the update.
+--
+-- >  <p>For more information about pipes, see <a href="https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html"> Amazon EventBridge Pipes</a> in the Amazon EventBridge User Guide.</p>
+module Amazonka.Pipes.UpdatePipe
+  ( -- * Creating a Request
+    UpdatePipe (..),
+    newUpdatePipe,
+
+    -- * Request Lenses
+    updatePipe_description,
+    updatePipe_desiredState,
+    updatePipe_enrichment,
+    updatePipe_enrichmentParameters,
+    updatePipe_sourceParameters,
+    updatePipe_target,
+    updatePipe_targetParameters,
+    updatePipe_name,
+    updatePipe_roleArn,
+
+    -- * Destructuring the Response
+    UpdatePipeResponse (..),
+    newUpdatePipeResponse,
+
+    -- * Response Lenses
+    updatePipeResponse_arn,
+    updatePipeResponse_creationTime,
+    updatePipeResponse_currentState,
+    updatePipeResponse_desiredState,
+    updatePipeResponse_lastModifiedTime,
+    updatePipeResponse_name,
+    updatePipeResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdatePipe' smart constructor.
+data UpdatePipe = UpdatePipe'
+  { -- | A description of the pipe.
+    description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeState,
+    -- | The ARN of the enrichment resource.
+    enrichment :: Prelude.Maybe Prelude.Text,
+    -- | The parameters required to set up enrichment on your pipe.
+    enrichmentParameters :: Prelude.Maybe PipeEnrichmentParameters,
+    -- | The parameters required to set up a source for your pipe.
+    sourceParameters :: Prelude.Maybe UpdatePipeSourceParameters,
+    -- | The ARN of the target resource.
+    target :: Prelude.Maybe Prelude.Text,
+    -- | The parameters required to set up a target for your pipe.
+    targetParameters :: Prelude.Maybe PipeTargetParameters,
+    -- | The name of the pipe.
+    name :: Prelude.Text,
+    -- | The ARN of the role that allows the pipe to send data to the target.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdatePipe' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updatePipe_description' - A description of the pipe.
+--
+-- 'desiredState', 'updatePipe_desiredState' - The state the pipe should be in.
+--
+-- 'enrichment', 'updatePipe_enrichment' - The ARN of the enrichment resource.
+--
+-- 'enrichmentParameters', 'updatePipe_enrichmentParameters' - The parameters required to set up enrichment on your pipe.
+--
+-- 'sourceParameters', 'updatePipe_sourceParameters' - The parameters required to set up a source for your pipe.
+--
+-- 'target', 'updatePipe_target' - The ARN of the target resource.
+--
+-- 'targetParameters', 'updatePipe_targetParameters' - The parameters required to set up a target for your pipe.
+--
+-- 'name', 'updatePipe_name' - The name of the pipe.
+--
+-- 'roleArn', 'updatePipe_roleArn' - The ARN of the role that allows the pipe to send data to the target.
+newUpdatePipe ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  UpdatePipe
+newUpdatePipe pName_ pRoleArn_ =
+  UpdatePipe'
+    { description = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      enrichment = Prelude.Nothing,
+      enrichmentParameters = Prelude.Nothing,
+      sourceParameters = Prelude.Nothing,
+      target = Prelude.Nothing,
+      targetParameters = Prelude.Nothing,
+      name = pName_,
+      roleArn = pRoleArn_
+    }
+
+-- | A description of the pipe.
+updatePipe_description :: Lens.Lens' UpdatePipe (Prelude.Maybe Prelude.Text)
+updatePipe_description = Lens.lens (\UpdatePipe' {description} -> description) (\s@UpdatePipe' {} a -> s {description = a} :: UpdatePipe) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The state the pipe should be in.
+updatePipe_desiredState :: Lens.Lens' UpdatePipe (Prelude.Maybe RequestedPipeState)
+updatePipe_desiredState = Lens.lens (\UpdatePipe' {desiredState} -> desiredState) (\s@UpdatePipe' {} a -> s {desiredState = a} :: UpdatePipe)
+
+-- | The ARN of the enrichment resource.
+updatePipe_enrichment :: Lens.Lens' UpdatePipe (Prelude.Maybe Prelude.Text)
+updatePipe_enrichment = Lens.lens (\UpdatePipe' {enrichment} -> enrichment) (\s@UpdatePipe' {} a -> s {enrichment = a} :: UpdatePipe)
+
+-- | The parameters required to set up enrichment on your pipe.
+updatePipe_enrichmentParameters :: Lens.Lens' UpdatePipe (Prelude.Maybe PipeEnrichmentParameters)
+updatePipe_enrichmentParameters = Lens.lens (\UpdatePipe' {enrichmentParameters} -> enrichmentParameters) (\s@UpdatePipe' {} a -> s {enrichmentParameters = a} :: UpdatePipe)
+
+-- | The parameters required to set up a source for your pipe.
+updatePipe_sourceParameters :: Lens.Lens' UpdatePipe (Prelude.Maybe UpdatePipeSourceParameters)
+updatePipe_sourceParameters = Lens.lens (\UpdatePipe' {sourceParameters} -> sourceParameters) (\s@UpdatePipe' {} a -> s {sourceParameters = a} :: UpdatePipe)
+
+-- | The ARN of the target resource.
+updatePipe_target :: Lens.Lens' UpdatePipe (Prelude.Maybe Prelude.Text)
+updatePipe_target = Lens.lens (\UpdatePipe' {target} -> target) (\s@UpdatePipe' {} a -> s {target = a} :: UpdatePipe)
+
+-- | The parameters required to set up a target for your pipe.
+updatePipe_targetParameters :: Lens.Lens' UpdatePipe (Prelude.Maybe PipeTargetParameters)
+updatePipe_targetParameters = Lens.lens (\UpdatePipe' {targetParameters} -> targetParameters) (\s@UpdatePipe' {} a -> s {targetParameters = a} :: UpdatePipe)
+
+-- | The name of the pipe.
+updatePipe_name :: Lens.Lens' UpdatePipe Prelude.Text
+updatePipe_name = Lens.lens (\UpdatePipe' {name} -> name) (\s@UpdatePipe' {} a -> s {name = a} :: UpdatePipe)
+
+-- | The ARN of the role that allows the pipe to send data to the target.
+updatePipe_roleArn :: Lens.Lens' UpdatePipe Prelude.Text
+updatePipe_roleArn = Lens.lens (\UpdatePipe' {roleArn} -> roleArn) (\s@UpdatePipe' {} a -> s {roleArn = a} :: UpdatePipe)
+
+instance Core.AWSRequest UpdatePipe where
+  type AWSResponse UpdatePipe = UpdatePipeResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdatePipeResponse'
+            Prelude.<$> (x Data..?> "Arn")
+            Prelude.<*> (x Data..?> "CreationTime")
+            Prelude.<*> (x Data..?> "CurrentState")
+            Prelude.<*> (x Data..?> "DesiredState")
+            Prelude.<*> (x Data..?> "LastModifiedTime")
+            Prelude.<*> (x Data..?> "Name")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdatePipe where
+  hashWithSalt _salt UpdatePipe' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` desiredState
+      `Prelude.hashWithSalt` enrichment
+      `Prelude.hashWithSalt` enrichmentParameters
+      `Prelude.hashWithSalt` sourceParameters
+      `Prelude.hashWithSalt` target
+      `Prelude.hashWithSalt` targetParameters
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData UpdatePipe where
+  rnf UpdatePipe' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf enrichment
+      `Prelude.seq` Prelude.rnf enrichmentParameters
+      `Prelude.seq` Prelude.rnf sourceParameters
+      `Prelude.seq` Prelude.rnf target
+      `Prelude.seq` Prelude.rnf targetParameters
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToHeaders UpdatePipe where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdatePipe where
+  toJSON UpdatePipe' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Description" Data..=) Prelude.<$> description,
+            ("DesiredState" Data..=) Prelude.<$> desiredState,
+            ("Enrichment" Data..=) Prelude.<$> enrichment,
+            ("EnrichmentParameters" Data..=)
+              Prelude.<$> enrichmentParameters,
+            ("SourceParameters" Data..=)
+              Prelude.<$> sourceParameters,
+            ("Target" Data..=) Prelude.<$> target,
+            ("TargetParameters" Data..=)
+              Prelude.<$> targetParameters,
+            Prelude.Just ("RoleArn" Data..= roleArn)
+          ]
+      )
+
+instance Data.ToPath UpdatePipe where
+  toPath UpdatePipe' {..} =
+    Prelude.mconcat ["/v1/pipes/", Data.toBS name]
+
+instance Data.ToQuery UpdatePipe where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdatePipeResponse' smart constructor.
+data UpdatePipeResponse = UpdatePipeResponse'
+  { -- | The ARN of the pipe.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The time the pipe was created.
+    creationTime :: Prelude.Maybe Data.POSIX,
+    -- | The state the pipe is in.
+    currentState :: Prelude.Maybe PipeState,
+    -- | The state the pipe should be in.
+    desiredState :: Prelude.Maybe RequestedPipeState,
+    -- | When the pipe was last updated, in
+    -- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+    -- (YYYY-MM-DDThh:mm:ss.sTZD).
+    lastModifiedTime :: Prelude.Maybe Data.POSIX,
+    -- | The name of the pipe.
+    name :: 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 'UpdatePipeResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updatePipeResponse_arn' - The ARN of the pipe.
+--
+-- 'creationTime', 'updatePipeResponse_creationTime' - The time the pipe was created.
+--
+-- 'currentState', 'updatePipeResponse_currentState' - The state the pipe is in.
+--
+-- 'desiredState', 'updatePipeResponse_desiredState' - The state the pipe should be in.
+--
+-- 'lastModifiedTime', 'updatePipeResponse_lastModifiedTime' - When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+--
+-- 'name', 'updatePipeResponse_name' - The name of the pipe.
+--
+-- 'httpStatus', 'updatePipeResponse_httpStatus' - The response's http status code.
+newUpdatePipeResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdatePipeResponse
+newUpdatePipeResponse pHttpStatus_ =
+  UpdatePipeResponse'
+    { arn = Prelude.Nothing,
+      creationTime = Prelude.Nothing,
+      currentState = Prelude.Nothing,
+      desiredState = Prelude.Nothing,
+      lastModifiedTime = Prelude.Nothing,
+      name = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The ARN of the pipe.
+updatePipeResponse_arn :: Lens.Lens' UpdatePipeResponse (Prelude.Maybe Prelude.Text)
+updatePipeResponse_arn = Lens.lens (\UpdatePipeResponse' {arn} -> arn) (\s@UpdatePipeResponse' {} a -> s {arn = a} :: UpdatePipeResponse)
+
+-- | The time the pipe was created.
+updatePipeResponse_creationTime :: Lens.Lens' UpdatePipeResponse (Prelude.Maybe Prelude.UTCTime)
+updatePipeResponse_creationTime = Lens.lens (\UpdatePipeResponse' {creationTime} -> creationTime) (\s@UpdatePipeResponse' {} a -> s {creationTime = a} :: UpdatePipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The state the pipe is in.
+updatePipeResponse_currentState :: Lens.Lens' UpdatePipeResponse (Prelude.Maybe PipeState)
+updatePipeResponse_currentState = Lens.lens (\UpdatePipeResponse' {currentState} -> currentState) (\s@UpdatePipeResponse' {} a -> s {currentState = a} :: UpdatePipeResponse)
+
+-- | The state the pipe should be in.
+updatePipeResponse_desiredState :: Lens.Lens' UpdatePipeResponse (Prelude.Maybe RequestedPipeState)
+updatePipeResponse_desiredState = Lens.lens (\UpdatePipeResponse' {desiredState} -> desiredState) (\s@UpdatePipeResponse' {} a -> s {desiredState = a} :: UpdatePipeResponse)
+
+-- | When the pipe was last updated, in
+-- <https://www.w3.org/TR/NOTE-datetime ISO-8601 format>
+-- (YYYY-MM-DDThh:mm:ss.sTZD).
+updatePipeResponse_lastModifiedTime :: Lens.Lens' UpdatePipeResponse (Prelude.Maybe Prelude.UTCTime)
+updatePipeResponse_lastModifiedTime = Lens.lens (\UpdatePipeResponse' {lastModifiedTime} -> lastModifiedTime) (\s@UpdatePipeResponse' {} a -> s {lastModifiedTime = a} :: UpdatePipeResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the pipe.
+updatePipeResponse_name :: Lens.Lens' UpdatePipeResponse (Prelude.Maybe Prelude.Text)
+updatePipeResponse_name = Lens.lens (\UpdatePipeResponse' {name} -> name) (\s@UpdatePipeResponse' {} a -> s {name = a} :: UpdatePipeResponse)
+
+-- | The response's http status code.
+updatePipeResponse_httpStatus :: Lens.Lens' UpdatePipeResponse Prelude.Int
+updatePipeResponse_httpStatus = Lens.lens (\UpdatePipeResponse' {httpStatus} -> httpStatus) (\s@UpdatePipeResponse' {} a -> s {httpStatus = a} :: UpdatePipeResponse)
+
+instance Prelude.NFData UpdatePipeResponse where
+  rnf UpdatePipeResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf creationTime
+      `Prelude.seq` Prelude.rnf currentState
+      `Prelude.seq` Prelude.rnf desiredState
+      `Prelude.seq` Prelude.rnf lastModifiedTime
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Pipes/Waiters.hs b/gen/Amazonka/Pipes/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Pipes/Waiters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Pipes.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.Pipes.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Pipes.Lens
+import Amazonka.Pipes.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.Pipes
+import Test.Amazonka.Pipes.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "Pipes"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/Pipes.hs b/test/Test/Amazonka/Gen/Pipes.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/Pipes.hs
@@ -0,0 +1,238 @@
+{-# 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.Pipes
+-- 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.Pipes where
+
+import Amazonka.Pipes
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Pipes.Internal
+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"
+--         [ requestCreatePipe $
+--             newCreatePipe
+--
+--         , requestDeletePipe $
+--             newDeletePipe
+--
+--         , requestDescribePipe $
+--             newDescribePipe
+--
+--         , requestListPipes $
+--             newListPipes
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestStartPipe $
+--             newStartPipe
+--
+--         , requestStopPipe $
+--             newStopPipe
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdatePipe $
+--             newUpdatePipe
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreatePipe $
+--             newCreatePipeResponse
+--
+--         , responseDeletePipe $
+--             newDeletePipeResponse
+--
+--         , responseDescribePipe $
+--             newDescribePipeResponse
+--
+--         , responseListPipes $
+--             newListPipesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseStartPipe $
+--             newStartPipeResponse
+--
+--         , responseStopPipe $
+--             newStopPipeResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdatePipe $
+--             newUpdatePipeResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreatePipe :: CreatePipe -> TestTree
+requestCreatePipe =
+  req
+    "CreatePipe"
+    "fixture/CreatePipe.yaml"
+
+requestDeletePipe :: DeletePipe -> TestTree
+requestDeletePipe =
+  req
+    "DeletePipe"
+    "fixture/DeletePipe.yaml"
+
+requestDescribePipe :: DescribePipe -> TestTree
+requestDescribePipe =
+  req
+    "DescribePipe"
+    "fixture/DescribePipe.yaml"
+
+requestListPipes :: ListPipes -> TestTree
+requestListPipes =
+  req
+    "ListPipes"
+    "fixture/ListPipes.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestStartPipe :: StartPipe -> TestTree
+requestStartPipe =
+  req
+    "StartPipe"
+    "fixture/StartPipe.yaml"
+
+requestStopPipe :: StopPipe -> TestTree
+requestStopPipe =
+  req
+    "StopPipe"
+    "fixture/StopPipe.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdatePipe :: UpdatePipe -> TestTree
+requestUpdatePipe =
+  req
+    "UpdatePipe"
+    "fixture/UpdatePipe.yaml"
+
+-- Responses
+
+responseCreatePipe :: CreatePipeResponse -> TestTree
+responseCreatePipe =
+  res
+    "CreatePipeResponse"
+    "fixture/CreatePipeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreatePipe)
+
+responseDeletePipe :: DeletePipeResponse -> TestTree
+responseDeletePipe =
+  res
+    "DeletePipeResponse"
+    "fixture/DeletePipeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeletePipe)
+
+responseDescribePipe :: DescribePipeResponse -> TestTree
+responseDescribePipe =
+  res
+    "DescribePipeResponse"
+    "fixture/DescribePipeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribePipe)
+
+responseListPipes :: ListPipesResponse -> TestTree
+responseListPipes =
+  res
+    "ListPipesResponse"
+    "fixture/ListPipesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListPipes)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseStartPipe :: StartPipeResponse -> TestTree
+responseStartPipe =
+  res
+    "StartPipeResponse"
+    "fixture/StartPipeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartPipe)
+
+responseStopPipe :: StopPipeResponse -> TestTree
+responseStopPipe =
+  res
+    "StopPipeResponse"
+    "fixture/StopPipeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopPipe)
+
+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)
+
+responseUpdatePipe :: UpdatePipeResponse -> TestTree
+responseUpdatePipe =
+  res
+    "UpdatePipeResponse"
+    "fixture/UpdatePipeResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdatePipe)
diff --git a/test/Test/Amazonka/Pipes.hs b/test/Test/Amazonka/Pipes.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Pipes.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.Pipes
+-- 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.Pipes
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/Pipes/Internal.hs b/test/Test/Amazonka/Pipes/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Pipes/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.Pipes.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.Pipes.Internal where
