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 Chime SDK Media Pipelines SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2021-07-15@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-chime-sdk-media-pipelines)
+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.ChimeSdkMediaPipelines](http://hackage.haskell.org/package/amazonka-chime-sdk-media-pipelines/docs/Amazonka-ChimeSdkMediaPipelines.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-chime-sdk-media-pipelines` 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-chime-sdk-media-pipelines.cabal b/amazonka-chime-sdk-media-pipelines.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-chime-sdk-media-pipelines.cabal
@@ -0,0 +1,148 @@
+cabal-version:      2.2
+name:               amazonka-chime-sdk-media-pipelines
+version:            2.0
+synopsis:           Amazon Chime SDK Media Pipelines 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 @2021-07-15@ 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.ChimeSdkMediaPipelines.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.ChimeSdkMediaPipelines" 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-chime-sdk-media-pipelines
+
+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.ChimeSdkMediaPipelines
+    Amazonka.ChimeSdkMediaPipelines.CreateMediaCapturePipeline
+    Amazonka.ChimeSdkMediaPipelines.CreateMediaConcatenationPipeline
+    Amazonka.ChimeSdkMediaPipelines.CreateMediaLiveConnectorPipeline
+    Amazonka.ChimeSdkMediaPipelines.DeleteMediaCapturePipeline
+    Amazonka.ChimeSdkMediaPipelines.DeleteMediaPipeline
+    Amazonka.ChimeSdkMediaPipelines.GetMediaCapturePipeline
+    Amazonka.ChimeSdkMediaPipelines.GetMediaPipeline
+    Amazonka.ChimeSdkMediaPipelines.Lens
+    Amazonka.ChimeSdkMediaPipelines.ListMediaCapturePipelines
+    Amazonka.ChimeSdkMediaPipelines.ListMediaPipelines
+    Amazonka.ChimeSdkMediaPipelines.ListTagsForResource
+    Amazonka.ChimeSdkMediaPipelines.TagResource
+    Amazonka.ChimeSdkMediaPipelines.Types
+    Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+    Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsState
+    Amazonka.ChimeSdkMediaPipelines.Types.AudioArtifactsConcatenationState
+    Amazonka.ChimeSdkMediaPipelines.Types.AudioArtifactsConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.AudioChannelsOption
+    Amazonka.ChimeSdkMediaPipelines.Types.AudioConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.AudioMuxType
+    Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingLiveConnectorConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoArtifactsConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSink
+    Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSinkType
+    Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSource
+    Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSourceType
+    Amazonka.ChimeSdkMediaPipelines.Types.ContentArtifactsConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.ContentConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.ContentMuxType
+    Amazonka.ChimeSdkMediaPipelines.Types.ContentShareLayoutOption
+    Amazonka.ChimeSdkMediaPipelines.Types.DataChannelConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.GridViewConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.LayoutOption
+    Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorMuxType
+    Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorRTMPConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSinkConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSinkType
+    Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSourceConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSourceType
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipeline
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSourceConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSummary
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaConcatenationPipeline
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaLiveConnectorPipeline
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaPipeline
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSinkType
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSourceType
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineStatus
+    Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSummary
+    Amazonka.ChimeSdkMediaPipelines.Types.MeetingEventsConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.PresenterOnlyConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.PresenterPosition
+    Amazonka.ChimeSdkMediaPipelines.Types.ResolutionOption
+    Amazonka.ChimeSdkMediaPipelines.Types.S3BucketSinkConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.SelectedVideoStreams
+    Amazonka.ChimeSdkMediaPipelines.Types.SourceConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.Tag
+    Amazonka.ChimeSdkMediaPipelines.Types.TranscriptionMessagesConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.VideoArtifactsConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.VideoConcatenationConfiguration
+    Amazonka.ChimeSdkMediaPipelines.Types.VideoMuxType
+    Amazonka.ChimeSdkMediaPipelines.UntagResource
+    Amazonka.ChimeSdkMediaPipelines.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-chime-sdk-media-pipelines-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.ChimeSdkMediaPipelines
+    Test.Amazonka.ChimeSdkMediaPipelines.Internal
+    Test.Amazonka.Gen.ChimeSdkMediaPipelines
+
+  build-depends:
+    , amazonka-chime-sdk-media-pipelines
+    , amazonka-core                       >=2.0 && <2.1
+    , amazonka-test                       >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreateMediaCapturePipeline.yaml b/fixture/CreateMediaCapturePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMediaCapturePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/CreateMediaCapturePipelineResponse.proto b/fixture/CreateMediaCapturePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMediaCapturePipelineResponse.proto
diff --git a/fixture/CreateMediaConcatenationPipeline.yaml b/fixture/CreateMediaConcatenationPipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMediaConcatenationPipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/CreateMediaConcatenationPipelineResponse.proto b/fixture/CreateMediaConcatenationPipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMediaConcatenationPipelineResponse.proto
diff --git a/fixture/CreateMediaLiveConnectorPipeline.yaml b/fixture/CreateMediaLiveConnectorPipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMediaLiveConnectorPipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/CreateMediaLiveConnectorPipelineResponse.proto b/fixture/CreateMediaLiveConnectorPipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateMediaLiveConnectorPipelineResponse.proto
diff --git a/fixture/DeleteMediaCapturePipeline.yaml b/fixture/DeleteMediaCapturePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMediaCapturePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/DeleteMediaCapturePipelineResponse.proto b/fixture/DeleteMediaCapturePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMediaCapturePipelineResponse.proto
diff --git a/fixture/DeleteMediaPipeline.yaml b/fixture/DeleteMediaPipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMediaPipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/DeleteMediaPipelineResponse.proto b/fixture/DeleteMediaPipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMediaPipelineResponse.proto
diff --git a/fixture/GetMediaCapturePipeline.yaml b/fixture/GetMediaCapturePipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMediaCapturePipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/GetMediaCapturePipelineResponse.proto b/fixture/GetMediaCapturePipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMediaCapturePipelineResponse.proto
diff --git a/fixture/GetMediaPipeline.yaml b/fixture/GetMediaPipeline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMediaPipeline.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/GetMediaPipelineResponse.proto b/fixture/GetMediaPipelineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMediaPipelineResponse.proto
diff --git a/fixture/ListMediaCapturePipelines.yaml b/fixture/ListMediaCapturePipelines.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMediaCapturePipelines.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/ListMediaCapturePipelinesResponse.proto b/fixture/ListMediaCapturePipelinesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMediaCapturePipelinesResponse.proto
diff --git a/fixture/ListMediaPipelines.yaml b/fixture/ListMediaPipelines.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListMediaPipelines.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/ListMediaPipelinesResponse.proto b/fixture/ListMediaPipelinesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListMediaPipelinesResponse.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/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.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/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/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/media-pipelines-chime/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  media-pipelines-chime.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines.hs b/gen/Amazonka/ChimeSdkMediaPipelines.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines.hs
@@ -0,0 +1,366 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines
+-- 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 @2021-07-15@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- The Amazon Chime SDK media pipeline APIs in this section allow software
+-- developers to create Amazon Chime SDK media pipelines that capture,
+-- concatenate, or stream your Amazon Chime SDK meetings. For more
+-- information about media pipleines, see
+-- <http://amazonaws.com/chime/latest/APIReference/API_Operations_Amazon_Chime_SDK_Media_Pipelines.html Amazon Chime SDK media pipelines>.
+module Amazonka.ChimeSdkMediaPipelines
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** BadRequestException
+    _BadRequestException,
+
+    -- ** ForbiddenException
+    _ForbiddenException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** ResourceLimitExceededException
+    _ResourceLimitExceededException,
+
+    -- ** ServiceFailureException
+    _ServiceFailureException,
+
+    -- ** ServiceUnavailableException
+    _ServiceUnavailableException,
+
+    -- ** ThrottledClientException
+    _ThrottledClientException,
+
+    -- ** UnauthorizedClientException
+    _UnauthorizedClientException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreateMediaCapturePipeline
+    CreateMediaCapturePipeline (CreateMediaCapturePipeline'),
+    newCreateMediaCapturePipeline,
+    CreateMediaCapturePipelineResponse (CreateMediaCapturePipelineResponse'),
+    newCreateMediaCapturePipelineResponse,
+
+    -- ** CreateMediaConcatenationPipeline
+    CreateMediaConcatenationPipeline (CreateMediaConcatenationPipeline'),
+    newCreateMediaConcatenationPipeline,
+    CreateMediaConcatenationPipelineResponse (CreateMediaConcatenationPipelineResponse'),
+    newCreateMediaConcatenationPipelineResponse,
+
+    -- ** CreateMediaLiveConnectorPipeline
+    CreateMediaLiveConnectorPipeline (CreateMediaLiveConnectorPipeline'),
+    newCreateMediaLiveConnectorPipeline,
+    CreateMediaLiveConnectorPipelineResponse (CreateMediaLiveConnectorPipelineResponse'),
+    newCreateMediaLiveConnectorPipelineResponse,
+
+    -- ** DeleteMediaCapturePipeline
+    DeleteMediaCapturePipeline (DeleteMediaCapturePipeline'),
+    newDeleteMediaCapturePipeline,
+    DeleteMediaCapturePipelineResponse (DeleteMediaCapturePipelineResponse'),
+    newDeleteMediaCapturePipelineResponse,
+
+    -- ** DeleteMediaPipeline
+    DeleteMediaPipeline (DeleteMediaPipeline'),
+    newDeleteMediaPipeline,
+    DeleteMediaPipelineResponse (DeleteMediaPipelineResponse'),
+    newDeleteMediaPipelineResponse,
+
+    -- ** GetMediaCapturePipeline
+    GetMediaCapturePipeline (GetMediaCapturePipeline'),
+    newGetMediaCapturePipeline,
+    GetMediaCapturePipelineResponse (GetMediaCapturePipelineResponse'),
+    newGetMediaCapturePipelineResponse,
+
+    -- ** GetMediaPipeline
+    GetMediaPipeline (GetMediaPipeline'),
+    newGetMediaPipeline,
+    GetMediaPipelineResponse (GetMediaPipelineResponse'),
+    newGetMediaPipelineResponse,
+
+    -- ** ListMediaCapturePipelines
+    ListMediaCapturePipelines (ListMediaCapturePipelines'),
+    newListMediaCapturePipelines,
+    ListMediaCapturePipelinesResponse (ListMediaCapturePipelinesResponse'),
+    newListMediaCapturePipelinesResponse,
+
+    -- ** ListMediaPipelines
+    ListMediaPipelines (ListMediaPipelines'),
+    newListMediaPipelines,
+    ListMediaPipelinesResponse (ListMediaPipelinesResponse'),
+    newListMediaPipelinesResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- * Types
+
+    -- ** ArtifactsConcatenationState
+    ArtifactsConcatenationState (..),
+
+    -- ** ArtifactsState
+    ArtifactsState (..),
+
+    -- ** AudioArtifactsConcatenationState
+    AudioArtifactsConcatenationState (..),
+
+    -- ** AudioChannelsOption
+    AudioChannelsOption (..),
+
+    -- ** AudioMuxType
+    AudioMuxType (..),
+
+    -- ** ConcatenationSinkType
+    ConcatenationSinkType (..),
+
+    -- ** ConcatenationSourceType
+    ConcatenationSourceType (..),
+
+    -- ** ContentMuxType
+    ContentMuxType (..),
+
+    -- ** ContentShareLayoutOption
+    ContentShareLayoutOption (..),
+
+    -- ** LayoutOption
+    LayoutOption (..),
+
+    -- ** LiveConnectorMuxType
+    LiveConnectorMuxType (..),
+
+    -- ** LiveConnectorSinkType
+    LiveConnectorSinkType (..),
+
+    -- ** LiveConnectorSourceType
+    LiveConnectorSourceType (..),
+
+    -- ** MediaPipelineSinkType
+    MediaPipelineSinkType (..),
+
+    -- ** MediaPipelineSourceType
+    MediaPipelineSourceType (..),
+
+    -- ** MediaPipelineStatus
+    MediaPipelineStatus (..),
+
+    -- ** PresenterPosition
+    PresenterPosition (..),
+
+    -- ** ResolutionOption
+    ResolutionOption (..),
+
+    -- ** VideoMuxType
+    VideoMuxType (..),
+
+    -- ** ArtifactsConcatenationConfiguration
+    ArtifactsConcatenationConfiguration (ArtifactsConcatenationConfiguration'),
+    newArtifactsConcatenationConfiguration,
+
+    -- ** ArtifactsConfiguration
+    ArtifactsConfiguration (ArtifactsConfiguration'),
+    newArtifactsConfiguration,
+
+    -- ** AudioArtifactsConfiguration
+    AudioArtifactsConfiguration (AudioArtifactsConfiguration'),
+    newAudioArtifactsConfiguration,
+
+    -- ** AudioConcatenationConfiguration
+    AudioConcatenationConfiguration (AudioConcatenationConfiguration'),
+    newAudioConcatenationConfiguration,
+
+    -- ** ChimeSdkMeetingConcatenationConfiguration
+    ChimeSdkMeetingConcatenationConfiguration (ChimeSdkMeetingConcatenationConfiguration'),
+    newChimeSdkMeetingConcatenationConfiguration,
+
+    -- ** ChimeSdkMeetingConfiguration
+    ChimeSdkMeetingConfiguration (ChimeSdkMeetingConfiguration'),
+    newChimeSdkMeetingConfiguration,
+
+    -- ** ChimeSdkMeetingLiveConnectorConfiguration
+    ChimeSdkMeetingLiveConnectorConfiguration (ChimeSdkMeetingLiveConnectorConfiguration'),
+    newChimeSdkMeetingLiveConnectorConfiguration,
+
+    -- ** CompositedVideoArtifactsConfiguration
+    CompositedVideoArtifactsConfiguration (CompositedVideoArtifactsConfiguration'),
+    newCompositedVideoArtifactsConfiguration,
+
+    -- ** CompositedVideoConcatenationConfiguration
+    CompositedVideoConcatenationConfiguration (CompositedVideoConcatenationConfiguration'),
+    newCompositedVideoConcatenationConfiguration,
+
+    -- ** ConcatenationSink
+    ConcatenationSink (ConcatenationSink'),
+    newConcatenationSink,
+
+    -- ** ConcatenationSource
+    ConcatenationSource (ConcatenationSource'),
+    newConcatenationSource,
+
+    -- ** ContentArtifactsConfiguration
+    ContentArtifactsConfiguration (ContentArtifactsConfiguration'),
+    newContentArtifactsConfiguration,
+
+    -- ** ContentConcatenationConfiguration
+    ContentConcatenationConfiguration (ContentConcatenationConfiguration'),
+    newContentConcatenationConfiguration,
+
+    -- ** DataChannelConcatenationConfiguration
+    DataChannelConcatenationConfiguration (DataChannelConcatenationConfiguration'),
+    newDataChannelConcatenationConfiguration,
+
+    -- ** GridViewConfiguration
+    GridViewConfiguration (GridViewConfiguration'),
+    newGridViewConfiguration,
+
+    -- ** LiveConnectorRTMPConfiguration
+    LiveConnectorRTMPConfiguration (LiveConnectorRTMPConfiguration'),
+    newLiveConnectorRTMPConfiguration,
+
+    -- ** LiveConnectorSinkConfiguration
+    LiveConnectorSinkConfiguration (LiveConnectorSinkConfiguration'),
+    newLiveConnectorSinkConfiguration,
+
+    -- ** LiveConnectorSourceConfiguration
+    LiveConnectorSourceConfiguration (LiveConnectorSourceConfiguration'),
+    newLiveConnectorSourceConfiguration,
+
+    -- ** MediaCapturePipeline
+    MediaCapturePipeline (MediaCapturePipeline'),
+    newMediaCapturePipeline,
+
+    -- ** MediaCapturePipelineSourceConfiguration
+    MediaCapturePipelineSourceConfiguration (MediaCapturePipelineSourceConfiguration'),
+    newMediaCapturePipelineSourceConfiguration,
+
+    -- ** MediaCapturePipelineSummary
+    MediaCapturePipelineSummary (MediaCapturePipelineSummary'),
+    newMediaCapturePipelineSummary,
+
+    -- ** MediaConcatenationPipeline
+    MediaConcatenationPipeline (MediaConcatenationPipeline'),
+    newMediaConcatenationPipeline,
+
+    -- ** MediaLiveConnectorPipeline
+    MediaLiveConnectorPipeline (MediaLiveConnectorPipeline'),
+    newMediaLiveConnectorPipeline,
+
+    -- ** MediaPipeline
+    MediaPipeline (MediaPipeline'),
+    newMediaPipeline,
+
+    -- ** MediaPipelineSummary
+    MediaPipelineSummary (MediaPipelineSummary'),
+    newMediaPipelineSummary,
+
+    -- ** MeetingEventsConcatenationConfiguration
+    MeetingEventsConcatenationConfiguration (MeetingEventsConcatenationConfiguration'),
+    newMeetingEventsConcatenationConfiguration,
+
+    -- ** PresenterOnlyConfiguration
+    PresenterOnlyConfiguration (PresenterOnlyConfiguration'),
+    newPresenterOnlyConfiguration,
+
+    -- ** S3BucketSinkConfiguration
+    S3BucketSinkConfiguration (S3BucketSinkConfiguration'),
+    newS3BucketSinkConfiguration,
+
+    -- ** SelectedVideoStreams
+    SelectedVideoStreams (SelectedVideoStreams'),
+    newSelectedVideoStreams,
+
+    -- ** SourceConfiguration
+    SourceConfiguration (SourceConfiguration'),
+    newSourceConfiguration,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** TranscriptionMessagesConcatenationConfiguration
+    TranscriptionMessagesConcatenationConfiguration (TranscriptionMessagesConcatenationConfiguration'),
+    newTranscriptionMessagesConcatenationConfiguration,
+
+    -- ** VideoArtifactsConfiguration
+    VideoArtifactsConfiguration (VideoArtifactsConfiguration'),
+    newVideoArtifactsConfiguration,
+
+    -- ** VideoConcatenationConfiguration
+    VideoConcatenationConfiguration (VideoConcatenationConfiguration'),
+    newVideoConcatenationConfiguration,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.CreateMediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.CreateMediaConcatenationPipeline
+import Amazonka.ChimeSdkMediaPipelines.CreateMediaLiveConnectorPipeline
+import Amazonka.ChimeSdkMediaPipelines.DeleteMediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.DeleteMediaPipeline
+import Amazonka.ChimeSdkMediaPipelines.GetMediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.GetMediaPipeline
+import Amazonka.ChimeSdkMediaPipelines.Lens
+import Amazonka.ChimeSdkMediaPipelines.ListMediaCapturePipelines
+import Amazonka.ChimeSdkMediaPipelines.ListMediaPipelines
+import Amazonka.ChimeSdkMediaPipelines.ListTagsForResource
+import Amazonka.ChimeSdkMediaPipelines.TagResource
+import Amazonka.ChimeSdkMediaPipelines.Types
+import Amazonka.ChimeSdkMediaPipelines.UntagResource
+import Amazonka.ChimeSdkMediaPipelines.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 'ChimeSdkMediaPipelines'.
+
+-- $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/ChimeSdkMediaPipelines/CreateMediaCapturePipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaCapturePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaCapturePipeline.hs
@@ -0,0 +1,270 @@
+{-# 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.ChimeSdkMediaPipelines.CreateMediaCapturePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a media pipeline.
+module Amazonka.ChimeSdkMediaPipelines.CreateMediaCapturePipeline
+  ( -- * Creating a Request
+    CreateMediaCapturePipeline (..),
+    newCreateMediaCapturePipeline,
+
+    -- * Request Lenses
+    createMediaCapturePipeline_chimeSdkMeetingConfiguration,
+    createMediaCapturePipeline_clientRequestToken,
+    createMediaCapturePipeline_tags,
+    createMediaCapturePipeline_sourceType,
+    createMediaCapturePipeline_sourceArn,
+    createMediaCapturePipeline_sinkType,
+    createMediaCapturePipeline_sinkArn,
+
+    -- * Destructuring the Response
+    CreateMediaCapturePipelineResponse (..),
+    newCreateMediaCapturePipelineResponse,
+
+    -- * Response Lenses
+    createMediaCapturePipelineResponse_mediaCapturePipeline,
+    createMediaCapturePipelineResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateMediaCapturePipeline' smart constructor.
+data CreateMediaCapturePipeline = CreateMediaCapturePipeline'
+  { -- | The configuration for a specified media pipeline. @SourceType@ must be
+    -- @ChimeSdkMeeting@.
+    chimeSdkMeetingConfiguration :: Prelude.Maybe ChimeSdkMeetingConfiguration,
+    -- | The unique identifier for the client request. The token makes the API
+    -- request idempotent. Use a unique token for each media pipeline request.
+    clientRequestToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The tag key-value pairs.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | Source type from which the media artifacts are captured. A Chime SDK
+    -- Meeting is the only supported source.
+    sourceType :: MediaPipelineSourceType,
+    -- | ARN of the source from which the media artifacts are captured.
+    sourceArn :: Data.Sensitive Prelude.Text,
+    -- | Destination type to which the media artifacts are saved. You must use an
+    -- S3 bucket.
+    sinkType :: MediaPipelineSinkType,
+    -- | The ARN of the sink type.
+    sinkArn :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMediaCapturePipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeSdkMeetingConfiguration', 'createMediaCapturePipeline_chimeSdkMeetingConfiguration' - The configuration for a specified media pipeline. @SourceType@ must be
+-- @ChimeSdkMeeting@.
+--
+-- 'clientRequestToken', 'createMediaCapturePipeline_clientRequestToken' - The unique identifier for the client request. The token makes the API
+-- request idempotent. Use a unique token for each media pipeline request.
+--
+-- 'tags', 'createMediaCapturePipeline_tags' - The tag key-value pairs.
+--
+-- 'sourceType', 'createMediaCapturePipeline_sourceType' - Source type from which the media artifacts are captured. A Chime SDK
+-- Meeting is the only supported source.
+--
+-- 'sourceArn', 'createMediaCapturePipeline_sourceArn' - ARN of the source from which the media artifacts are captured.
+--
+-- 'sinkType', 'createMediaCapturePipeline_sinkType' - Destination type to which the media artifacts are saved. You must use an
+-- S3 bucket.
+--
+-- 'sinkArn', 'createMediaCapturePipeline_sinkArn' - The ARN of the sink type.
+newCreateMediaCapturePipeline ::
+  -- | 'sourceType'
+  MediaPipelineSourceType ->
+  -- | 'sourceArn'
+  Prelude.Text ->
+  -- | 'sinkType'
+  MediaPipelineSinkType ->
+  -- | 'sinkArn'
+  Prelude.Text ->
+  CreateMediaCapturePipeline
+newCreateMediaCapturePipeline
+  pSourceType_
+  pSourceArn_
+  pSinkType_
+  pSinkArn_ =
+    CreateMediaCapturePipeline'
+      { chimeSdkMeetingConfiguration =
+          Prelude.Nothing,
+        clientRequestToken = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        sourceType = pSourceType_,
+        sourceArn = Data._Sensitive Lens.# pSourceArn_,
+        sinkType = pSinkType_,
+        sinkArn = Data._Sensitive Lens.# pSinkArn_
+      }
+
+-- | The configuration for a specified media pipeline. @SourceType@ must be
+-- @ChimeSdkMeeting@.
+createMediaCapturePipeline_chimeSdkMeetingConfiguration :: Lens.Lens' CreateMediaCapturePipeline (Prelude.Maybe ChimeSdkMeetingConfiguration)
+createMediaCapturePipeline_chimeSdkMeetingConfiguration = Lens.lens (\CreateMediaCapturePipeline' {chimeSdkMeetingConfiguration} -> chimeSdkMeetingConfiguration) (\s@CreateMediaCapturePipeline' {} a -> s {chimeSdkMeetingConfiguration = a} :: CreateMediaCapturePipeline)
+
+-- | The unique identifier for the client request. The token makes the API
+-- request idempotent. Use a unique token for each media pipeline request.
+createMediaCapturePipeline_clientRequestToken :: Lens.Lens' CreateMediaCapturePipeline (Prelude.Maybe Prelude.Text)
+createMediaCapturePipeline_clientRequestToken = Lens.lens (\CreateMediaCapturePipeline' {clientRequestToken} -> clientRequestToken) (\s@CreateMediaCapturePipeline' {} a -> s {clientRequestToken = a} :: CreateMediaCapturePipeline) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The tag key-value pairs.
+createMediaCapturePipeline_tags :: Lens.Lens' CreateMediaCapturePipeline (Prelude.Maybe (Prelude.NonEmpty Tag))
+createMediaCapturePipeline_tags = Lens.lens (\CreateMediaCapturePipeline' {tags} -> tags) (\s@CreateMediaCapturePipeline' {} a -> s {tags = a} :: CreateMediaCapturePipeline) Prelude.. Lens.mapping Lens.coerced
+
+-- | Source type from which the media artifacts are captured. A Chime SDK
+-- Meeting is the only supported source.
+createMediaCapturePipeline_sourceType :: Lens.Lens' CreateMediaCapturePipeline MediaPipelineSourceType
+createMediaCapturePipeline_sourceType = Lens.lens (\CreateMediaCapturePipeline' {sourceType} -> sourceType) (\s@CreateMediaCapturePipeline' {} a -> s {sourceType = a} :: CreateMediaCapturePipeline)
+
+-- | ARN of the source from which the media artifacts are captured.
+createMediaCapturePipeline_sourceArn :: Lens.Lens' CreateMediaCapturePipeline Prelude.Text
+createMediaCapturePipeline_sourceArn = Lens.lens (\CreateMediaCapturePipeline' {sourceArn} -> sourceArn) (\s@CreateMediaCapturePipeline' {} a -> s {sourceArn = a} :: CreateMediaCapturePipeline) Prelude.. Data._Sensitive
+
+-- | Destination type to which the media artifacts are saved. You must use an
+-- S3 bucket.
+createMediaCapturePipeline_sinkType :: Lens.Lens' CreateMediaCapturePipeline MediaPipelineSinkType
+createMediaCapturePipeline_sinkType = Lens.lens (\CreateMediaCapturePipeline' {sinkType} -> sinkType) (\s@CreateMediaCapturePipeline' {} a -> s {sinkType = a} :: CreateMediaCapturePipeline)
+
+-- | The ARN of the sink type.
+createMediaCapturePipeline_sinkArn :: Lens.Lens' CreateMediaCapturePipeline Prelude.Text
+createMediaCapturePipeline_sinkArn = Lens.lens (\CreateMediaCapturePipeline' {sinkArn} -> sinkArn) (\s@CreateMediaCapturePipeline' {} a -> s {sinkArn = a} :: CreateMediaCapturePipeline) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateMediaCapturePipeline where
+  type
+    AWSResponse CreateMediaCapturePipeline =
+      CreateMediaCapturePipelineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMediaCapturePipelineResponse'
+            Prelude.<$> (x Data..?> "MediaCapturePipeline")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateMediaCapturePipeline where
+  hashWithSalt _salt CreateMediaCapturePipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeSdkMeetingConfiguration
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` sinkType
+      `Prelude.hashWithSalt` sinkArn
+
+instance Prelude.NFData CreateMediaCapturePipeline where
+  rnf CreateMediaCapturePipeline' {..} =
+    Prelude.rnf chimeSdkMeetingConfiguration
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf sinkType
+      `Prelude.seq` Prelude.rnf sinkArn
+
+instance Data.ToHeaders CreateMediaCapturePipeline where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateMediaCapturePipeline where
+  toJSON CreateMediaCapturePipeline' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ChimeSdkMeetingConfiguration" Data..=)
+              Prelude.<$> chimeSdkMeetingConfiguration,
+            ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("SourceType" Data..= sourceType),
+            Prelude.Just ("SourceArn" Data..= sourceArn),
+            Prelude.Just ("SinkType" Data..= sinkType),
+            Prelude.Just ("SinkArn" Data..= sinkArn)
+          ]
+      )
+
+instance Data.ToPath CreateMediaCapturePipeline where
+  toPath = Prelude.const "/sdk-media-capture-pipelines"
+
+instance Data.ToQuery CreateMediaCapturePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateMediaCapturePipelineResponse' smart constructor.
+data CreateMediaCapturePipelineResponse = CreateMediaCapturePipelineResponse'
+  { -- | A media pipeline object, the ID, source type, source ARN, sink type, and
+    -- sink ARN of a media pipeline object.
+    mediaCapturePipeline :: Prelude.Maybe MediaCapturePipeline,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMediaCapturePipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaCapturePipeline', 'createMediaCapturePipelineResponse_mediaCapturePipeline' - A media pipeline object, the ID, source type, source ARN, sink type, and
+-- sink ARN of a media pipeline object.
+--
+-- 'httpStatus', 'createMediaCapturePipelineResponse_httpStatus' - The response's http status code.
+newCreateMediaCapturePipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateMediaCapturePipelineResponse
+newCreateMediaCapturePipelineResponse pHttpStatus_ =
+  CreateMediaCapturePipelineResponse'
+    { mediaCapturePipeline =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A media pipeline object, the ID, source type, source ARN, sink type, and
+-- sink ARN of a media pipeline object.
+createMediaCapturePipelineResponse_mediaCapturePipeline :: Lens.Lens' CreateMediaCapturePipelineResponse (Prelude.Maybe MediaCapturePipeline)
+createMediaCapturePipelineResponse_mediaCapturePipeline = Lens.lens (\CreateMediaCapturePipelineResponse' {mediaCapturePipeline} -> mediaCapturePipeline) (\s@CreateMediaCapturePipelineResponse' {} a -> s {mediaCapturePipeline = a} :: CreateMediaCapturePipelineResponse)
+
+-- | The response's http status code.
+createMediaCapturePipelineResponse_httpStatus :: Lens.Lens' CreateMediaCapturePipelineResponse Prelude.Int
+createMediaCapturePipelineResponse_httpStatus = Lens.lens (\CreateMediaCapturePipelineResponse' {httpStatus} -> httpStatus) (\s@CreateMediaCapturePipelineResponse' {} a -> s {httpStatus = a} :: CreateMediaCapturePipelineResponse)
+
+instance
+  Prelude.NFData
+    CreateMediaCapturePipelineResponse
+  where
+  rnf CreateMediaCapturePipelineResponse' {..} =
+    Prelude.rnf mediaCapturePipeline
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaConcatenationPipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaConcatenationPipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaConcatenationPipeline.hs
@@ -0,0 +1,241 @@
+{-# 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.ChimeSdkMediaPipelines.CreateMediaConcatenationPipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a media concatenation pipeline.
+module Amazonka.ChimeSdkMediaPipelines.CreateMediaConcatenationPipeline
+  ( -- * Creating a Request
+    CreateMediaConcatenationPipeline (..),
+    newCreateMediaConcatenationPipeline,
+
+    -- * Request Lenses
+    createMediaConcatenationPipeline_clientRequestToken,
+    createMediaConcatenationPipeline_tags,
+    createMediaConcatenationPipeline_sources,
+    createMediaConcatenationPipeline_sinks,
+
+    -- * Destructuring the Response
+    CreateMediaConcatenationPipelineResponse (..),
+    newCreateMediaConcatenationPipelineResponse,
+
+    -- * Response Lenses
+    createMediaConcatenationPipelineResponse_mediaConcatenationPipeline,
+    createMediaConcatenationPipelineResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateMediaConcatenationPipeline' smart constructor.
+data CreateMediaConcatenationPipeline = CreateMediaConcatenationPipeline'
+  { -- | The unique identifier for the client request. The token makes the API
+    -- request idempotent. Use a unique token for each media concatenation
+    -- pipeline request.
+    clientRequestToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The tags associated with the media concatenation pipeline.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | An object that specifies the sources for the media concatenation
+    -- pipeline.
+    sources :: Prelude.NonEmpty ConcatenationSource,
+    -- | An object that specifies the data sinks for the media concatenation
+    -- pipeline.
+    sinks :: Prelude.NonEmpty ConcatenationSink
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMediaConcatenationPipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createMediaConcatenationPipeline_clientRequestToken' - The unique identifier for the client request. The token makes the API
+-- request idempotent. Use a unique token for each media concatenation
+-- pipeline request.
+--
+-- 'tags', 'createMediaConcatenationPipeline_tags' - The tags associated with the media concatenation pipeline.
+--
+-- 'sources', 'createMediaConcatenationPipeline_sources' - An object that specifies the sources for the media concatenation
+-- pipeline.
+--
+-- 'sinks', 'createMediaConcatenationPipeline_sinks' - An object that specifies the data sinks for the media concatenation
+-- pipeline.
+newCreateMediaConcatenationPipeline ::
+  -- | 'sources'
+  Prelude.NonEmpty ConcatenationSource ->
+  -- | 'sinks'
+  Prelude.NonEmpty ConcatenationSink ->
+  CreateMediaConcatenationPipeline
+newCreateMediaConcatenationPipeline pSources_ pSinks_ =
+  CreateMediaConcatenationPipeline'
+    { clientRequestToken =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      sources = Lens.coerced Lens.# pSources_,
+      sinks = Lens.coerced Lens.# pSinks_
+    }
+
+-- | The unique identifier for the client request. The token makes the API
+-- request idempotent. Use a unique token for each media concatenation
+-- pipeline request.
+createMediaConcatenationPipeline_clientRequestToken :: Lens.Lens' CreateMediaConcatenationPipeline (Prelude.Maybe Prelude.Text)
+createMediaConcatenationPipeline_clientRequestToken = Lens.lens (\CreateMediaConcatenationPipeline' {clientRequestToken} -> clientRequestToken) (\s@CreateMediaConcatenationPipeline' {} a -> s {clientRequestToken = a} :: CreateMediaConcatenationPipeline) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The tags associated with the media concatenation pipeline.
+createMediaConcatenationPipeline_tags :: Lens.Lens' CreateMediaConcatenationPipeline (Prelude.Maybe (Prelude.NonEmpty Tag))
+createMediaConcatenationPipeline_tags = Lens.lens (\CreateMediaConcatenationPipeline' {tags} -> tags) (\s@CreateMediaConcatenationPipeline' {} a -> s {tags = a} :: CreateMediaConcatenationPipeline) Prelude.. Lens.mapping Lens.coerced
+
+-- | An object that specifies the sources for the media concatenation
+-- pipeline.
+createMediaConcatenationPipeline_sources :: Lens.Lens' CreateMediaConcatenationPipeline (Prelude.NonEmpty ConcatenationSource)
+createMediaConcatenationPipeline_sources = Lens.lens (\CreateMediaConcatenationPipeline' {sources} -> sources) (\s@CreateMediaConcatenationPipeline' {} a -> s {sources = a} :: CreateMediaConcatenationPipeline) Prelude.. Lens.coerced
+
+-- | An object that specifies the data sinks for the media concatenation
+-- pipeline.
+createMediaConcatenationPipeline_sinks :: Lens.Lens' CreateMediaConcatenationPipeline (Prelude.NonEmpty ConcatenationSink)
+createMediaConcatenationPipeline_sinks = Lens.lens (\CreateMediaConcatenationPipeline' {sinks} -> sinks) (\s@CreateMediaConcatenationPipeline' {} a -> s {sinks = a} :: CreateMediaConcatenationPipeline) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    CreateMediaConcatenationPipeline
+  where
+  type
+    AWSResponse CreateMediaConcatenationPipeline =
+      CreateMediaConcatenationPipelineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMediaConcatenationPipelineResponse'
+            Prelude.<$> (x Data..?> "MediaConcatenationPipeline")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateMediaConcatenationPipeline
+  where
+  hashWithSalt
+    _salt
+    CreateMediaConcatenationPipeline' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientRequestToken
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` sources
+        `Prelude.hashWithSalt` sinks
+
+instance
+  Prelude.NFData
+    CreateMediaConcatenationPipeline
+  where
+  rnf CreateMediaConcatenationPipeline' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf sources
+      `Prelude.seq` Prelude.rnf sinks
+
+instance
+  Data.ToHeaders
+    CreateMediaConcatenationPipeline
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateMediaConcatenationPipeline where
+  toJSON CreateMediaConcatenationPipeline' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Sources" Data..= sources),
+            Prelude.Just ("Sinks" Data..= sinks)
+          ]
+      )
+
+instance Data.ToPath CreateMediaConcatenationPipeline where
+  toPath =
+    Prelude.const "/sdk-media-concatenation-pipelines"
+
+instance
+  Data.ToQuery
+    CreateMediaConcatenationPipeline
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateMediaConcatenationPipelineResponse' smart constructor.
+data CreateMediaConcatenationPipelineResponse = CreateMediaConcatenationPipelineResponse'
+  { -- | A media concatenation pipeline object, the ID, source type,
+    -- @MediaPipelineARN@, and sink of a media concatenation pipeline object.
+    mediaConcatenationPipeline :: Prelude.Maybe MediaConcatenationPipeline,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMediaConcatenationPipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaConcatenationPipeline', 'createMediaConcatenationPipelineResponse_mediaConcatenationPipeline' - A media concatenation pipeline object, the ID, source type,
+-- @MediaPipelineARN@, and sink of a media concatenation pipeline object.
+--
+-- 'httpStatus', 'createMediaConcatenationPipelineResponse_httpStatus' - The response's http status code.
+newCreateMediaConcatenationPipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateMediaConcatenationPipelineResponse
+newCreateMediaConcatenationPipelineResponse
+  pHttpStatus_ =
+    CreateMediaConcatenationPipelineResponse'
+      { mediaConcatenationPipeline =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | A media concatenation pipeline object, the ID, source type,
+-- @MediaPipelineARN@, and sink of a media concatenation pipeline object.
+createMediaConcatenationPipelineResponse_mediaConcatenationPipeline :: Lens.Lens' CreateMediaConcatenationPipelineResponse (Prelude.Maybe MediaConcatenationPipeline)
+createMediaConcatenationPipelineResponse_mediaConcatenationPipeline = Lens.lens (\CreateMediaConcatenationPipelineResponse' {mediaConcatenationPipeline} -> mediaConcatenationPipeline) (\s@CreateMediaConcatenationPipelineResponse' {} a -> s {mediaConcatenationPipeline = a} :: CreateMediaConcatenationPipelineResponse)
+
+-- | The response's http status code.
+createMediaConcatenationPipelineResponse_httpStatus :: Lens.Lens' CreateMediaConcatenationPipelineResponse Prelude.Int
+createMediaConcatenationPipelineResponse_httpStatus = Lens.lens (\CreateMediaConcatenationPipelineResponse' {httpStatus} -> httpStatus) (\s@CreateMediaConcatenationPipelineResponse' {} a -> s {httpStatus = a} :: CreateMediaConcatenationPipelineResponse)
+
+instance
+  Prelude.NFData
+    CreateMediaConcatenationPipelineResponse
+  where
+  rnf CreateMediaConcatenationPipelineResponse' {..} =
+    Prelude.rnf mediaConcatenationPipeline
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaLiveConnectorPipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaLiveConnectorPipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaLiveConnectorPipeline.hs
@@ -0,0 +1,226 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.CreateMediaLiveConnectorPipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a streaming media pipeline in an Amazon Chime SDK meeting.
+module Amazonka.ChimeSdkMediaPipelines.CreateMediaLiveConnectorPipeline
+  ( -- * Creating a Request
+    CreateMediaLiveConnectorPipeline (..),
+    newCreateMediaLiveConnectorPipeline,
+
+    -- * Request Lenses
+    createMediaLiveConnectorPipeline_clientRequestToken,
+    createMediaLiveConnectorPipeline_tags,
+    createMediaLiveConnectorPipeline_sources,
+    createMediaLiveConnectorPipeline_sinks,
+
+    -- * Destructuring the Response
+    CreateMediaLiveConnectorPipelineResponse (..),
+    newCreateMediaLiveConnectorPipelineResponse,
+
+    -- * Response Lenses
+    createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline,
+    createMediaLiveConnectorPipelineResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateMediaLiveConnectorPipeline' smart constructor.
+data CreateMediaLiveConnectorPipeline = CreateMediaLiveConnectorPipeline'
+  { -- | The token assigned to the client making the request.
+    clientRequestToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The tags associated with the media pipeline.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The media pipeline\'s data sources.
+    sources :: Prelude.NonEmpty LiveConnectorSourceConfiguration,
+    -- | The media pipeline\'s data sinks.
+    sinks :: Prelude.NonEmpty LiveConnectorSinkConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMediaLiveConnectorPipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'createMediaLiveConnectorPipeline_clientRequestToken' - The token assigned to the client making the request.
+--
+-- 'tags', 'createMediaLiveConnectorPipeline_tags' - The tags associated with the media pipeline.
+--
+-- 'sources', 'createMediaLiveConnectorPipeline_sources' - The media pipeline\'s data sources.
+--
+-- 'sinks', 'createMediaLiveConnectorPipeline_sinks' - The media pipeline\'s data sinks.
+newCreateMediaLiveConnectorPipeline ::
+  -- | 'sources'
+  Prelude.NonEmpty LiveConnectorSourceConfiguration ->
+  -- | 'sinks'
+  Prelude.NonEmpty LiveConnectorSinkConfiguration ->
+  CreateMediaLiveConnectorPipeline
+newCreateMediaLiveConnectorPipeline pSources_ pSinks_ =
+  CreateMediaLiveConnectorPipeline'
+    { clientRequestToken =
+        Prelude.Nothing,
+      tags = Prelude.Nothing,
+      sources = Lens.coerced Lens.# pSources_,
+      sinks = Lens.coerced Lens.# pSinks_
+    }
+
+-- | The token assigned to the client making the request.
+createMediaLiveConnectorPipeline_clientRequestToken :: Lens.Lens' CreateMediaLiveConnectorPipeline (Prelude.Maybe Prelude.Text)
+createMediaLiveConnectorPipeline_clientRequestToken = Lens.lens (\CreateMediaLiveConnectorPipeline' {clientRequestToken} -> clientRequestToken) (\s@CreateMediaLiveConnectorPipeline' {} a -> s {clientRequestToken = a} :: CreateMediaLiveConnectorPipeline) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The tags associated with the media pipeline.
+createMediaLiveConnectorPipeline_tags :: Lens.Lens' CreateMediaLiveConnectorPipeline (Prelude.Maybe (Prelude.NonEmpty Tag))
+createMediaLiveConnectorPipeline_tags = Lens.lens (\CreateMediaLiveConnectorPipeline' {tags} -> tags) (\s@CreateMediaLiveConnectorPipeline' {} a -> s {tags = a} :: CreateMediaLiveConnectorPipeline) Prelude.. Lens.mapping Lens.coerced
+
+-- | The media pipeline\'s data sources.
+createMediaLiveConnectorPipeline_sources :: Lens.Lens' CreateMediaLiveConnectorPipeline (Prelude.NonEmpty LiveConnectorSourceConfiguration)
+createMediaLiveConnectorPipeline_sources = Lens.lens (\CreateMediaLiveConnectorPipeline' {sources} -> sources) (\s@CreateMediaLiveConnectorPipeline' {} a -> s {sources = a} :: CreateMediaLiveConnectorPipeline) Prelude.. Lens.coerced
+
+-- | The media pipeline\'s data sinks.
+createMediaLiveConnectorPipeline_sinks :: Lens.Lens' CreateMediaLiveConnectorPipeline (Prelude.NonEmpty LiveConnectorSinkConfiguration)
+createMediaLiveConnectorPipeline_sinks = Lens.lens (\CreateMediaLiveConnectorPipeline' {sinks} -> sinks) (\s@CreateMediaLiveConnectorPipeline' {} a -> s {sinks = a} :: CreateMediaLiveConnectorPipeline) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    CreateMediaLiveConnectorPipeline
+  where
+  type
+    AWSResponse CreateMediaLiveConnectorPipeline =
+      CreateMediaLiveConnectorPipelineResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateMediaLiveConnectorPipelineResponse'
+            Prelude.<$> (x Data..?> "MediaLiveConnectorPipeline")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateMediaLiveConnectorPipeline
+  where
+  hashWithSalt
+    _salt
+    CreateMediaLiveConnectorPipeline' {..} =
+      _salt
+        `Prelude.hashWithSalt` clientRequestToken
+        `Prelude.hashWithSalt` tags
+        `Prelude.hashWithSalt` sources
+        `Prelude.hashWithSalt` sinks
+
+instance
+  Prelude.NFData
+    CreateMediaLiveConnectorPipeline
+  where
+  rnf CreateMediaLiveConnectorPipeline' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf sources
+      `Prelude.seq` Prelude.rnf sinks
+
+instance
+  Data.ToHeaders
+    CreateMediaLiveConnectorPipeline
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON CreateMediaLiveConnectorPipeline where
+  toJSON CreateMediaLiveConnectorPipeline' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("Sources" Data..= sources),
+            Prelude.Just ("Sinks" Data..= sinks)
+          ]
+      )
+
+instance Data.ToPath CreateMediaLiveConnectorPipeline where
+  toPath =
+    Prelude.const "/sdk-media-live-connector-pipelines"
+
+instance
+  Data.ToQuery
+    CreateMediaLiveConnectorPipeline
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateMediaLiveConnectorPipelineResponse' smart constructor.
+data CreateMediaLiveConnectorPipelineResponse = CreateMediaLiveConnectorPipelineResponse'
+  { -- | The new media pipeline.
+    mediaLiveConnectorPipeline :: Prelude.Maybe MediaLiveConnectorPipeline,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateMediaLiveConnectorPipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaLiveConnectorPipeline', 'createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline' - The new media pipeline.
+--
+-- 'httpStatus', 'createMediaLiveConnectorPipelineResponse_httpStatus' - The response's http status code.
+newCreateMediaLiveConnectorPipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateMediaLiveConnectorPipelineResponse
+newCreateMediaLiveConnectorPipelineResponse
+  pHttpStatus_ =
+    CreateMediaLiveConnectorPipelineResponse'
+      { mediaLiveConnectorPipeline =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The new media pipeline.
+createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline :: Lens.Lens' CreateMediaLiveConnectorPipelineResponse (Prelude.Maybe MediaLiveConnectorPipeline)
+createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline = Lens.lens (\CreateMediaLiveConnectorPipelineResponse' {mediaLiveConnectorPipeline} -> mediaLiveConnectorPipeline) (\s@CreateMediaLiveConnectorPipelineResponse' {} a -> s {mediaLiveConnectorPipeline = a} :: CreateMediaLiveConnectorPipelineResponse)
+
+-- | The response's http status code.
+createMediaLiveConnectorPipelineResponse_httpStatus :: Lens.Lens' CreateMediaLiveConnectorPipelineResponse Prelude.Int
+createMediaLiveConnectorPipelineResponse_httpStatus = Lens.lens (\CreateMediaLiveConnectorPipelineResponse' {httpStatus} -> httpStatus) (\s@CreateMediaLiveConnectorPipelineResponse' {} a -> s {httpStatus = a} :: CreateMediaLiveConnectorPipelineResponse)
+
+instance
+  Prelude.NFData
+    CreateMediaLiveConnectorPipelineResponse
+  where
+  rnf CreateMediaLiveConnectorPipelineResponse' {..} =
+    Prelude.rnf mediaLiveConnectorPipeline
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/DeleteMediaCapturePipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/DeleteMediaCapturePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/DeleteMediaCapturePipeline.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.DeleteMediaCapturePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the media pipeline.
+module Amazonka.ChimeSdkMediaPipelines.DeleteMediaCapturePipeline
+  ( -- * Creating a Request
+    DeleteMediaCapturePipeline (..),
+    newDeleteMediaCapturePipeline,
+
+    -- * Request Lenses
+    deleteMediaCapturePipeline_mediaPipelineId,
+
+    -- * Destructuring the Response
+    DeleteMediaCapturePipelineResponse (..),
+    newDeleteMediaCapturePipelineResponse,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteMediaCapturePipeline' smart constructor.
+data DeleteMediaCapturePipeline = DeleteMediaCapturePipeline'
+  { -- | The ID of the media pipeline being deleted.
+    mediaPipelineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMediaCapturePipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineId', 'deleteMediaCapturePipeline_mediaPipelineId' - The ID of the media pipeline being deleted.
+newDeleteMediaCapturePipeline ::
+  -- | 'mediaPipelineId'
+  Prelude.Text ->
+  DeleteMediaCapturePipeline
+newDeleteMediaCapturePipeline pMediaPipelineId_ =
+  DeleteMediaCapturePipeline'
+    { mediaPipelineId =
+        pMediaPipelineId_
+    }
+
+-- | The ID of the media pipeline being deleted.
+deleteMediaCapturePipeline_mediaPipelineId :: Lens.Lens' DeleteMediaCapturePipeline Prelude.Text
+deleteMediaCapturePipeline_mediaPipelineId = Lens.lens (\DeleteMediaCapturePipeline' {mediaPipelineId} -> mediaPipelineId) (\s@DeleteMediaCapturePipeline' {} a -> s {mediaPipelineId = a} :: DeleteMediaCapturePipeline)
+
+instance Core.AWSRequest DeleteMediaCapturePipeline where
+  type
+    AWSResponse DeleteMediaCapturePipeline =
+      DeleteMediaCapturePipelineResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteMediaCapturePipelineResponse'
+
+instance Prelude.Hashable DeleteMediaCapturePipeline where
+  hashWithSalt _salt DeleteMediaCapturePipeline' {..} =
+    _salt `Prelude.hashWithSalt` mediaPipelineId
+
+instance Prelude.NFData DeleteMediaCapturePipeline where
+  rnf DeleteMediaCapturePipeline' {..} =
+    Prelude.rnf mediaPipelineId
+
+instance Data.ToHeaders DeleteMediaCapturePipeline where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteMediaCapturePipeline where
+  toPath DeleteMediaCapturePipeline' {..} =
+    Prelude.mconcat
+      [ "/sdk-media-capture-pipelines/",
+        Data.toBS mediaPipelineId
+      ]
+
+instance Data.ToQuery DeleteMediaCapturePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteMediaCapturePipelineResponse' smart constructor.
+data DeleteMediaCapturePipelineResponse = DeleteMediaCapturePipelineResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMediaCapturePipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteMediaCapturePipelineResponse ::
+  DeleteMediaCapturePipelineResponse
+newDeleteMediaCapturePipelineResponse =
+  DeleteMediaCapturePipelineResponse'
+
+instance
+  Prelude.NFData
+    DeleteMediaCapturePipelineResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/DeleteMediaPipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/DeleteMediaPipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/DeleteMediaPipeline.hs
@@ -0,0 +1,120 @@
+{-# 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.ChimeSdkMediaPipelines.DeleteMediaPipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the media pipeline.
+module Amazonka.ChimeSdkMediaPipelines.DeleteMediaPipeline
+  ( -- * Creating a Request
+    DeleteMediaPipeline (..),
+    newDeleteMediaPipeline,
+
+    -- * Request Lenses
+    deleteMediaPipeline_mediaPipelineId,
+
+    -- * Destructuring the Response
+    DeleteMediaPipelineResponse (..),
+    newDeleteMediaPipelineResponse,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteMediaPipeline' smart constructor.
+data DeleteMediaPipeline = DeleteMediaPipeline'
+  { -- | The ID of the media pipeline to delete.
+    mediaPipelineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMediaPipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineId', 'deleteMediaPipeline_mediaPipelineId' - The ID of the media pipeline to delete.
+newDeleteMediaPipeline ::
+  -- | 'mediaPipelineId'
+  Prelude.Text ->
+  DeleteMediaPipeline
+newDeleteMediaPipeline pMediaPipelineId_ =
+  DeleteMediaPipeline'
+    { mediaPipelineId =
+        pMediaPipelineId_
+    }
+
+-- | The ID of the media pipeline to delete.
+deleteMediaPipeline_mediaPipelineId :: Lens.Lens' DeleteMediaPipeline Prelude.Text
+deleteMediaPipeline_mediaPipelineId = Lens.lens (\DeleteMediaPipeline' {mediaPipelineId} -> mediaPipelineId) (\s@DeleteMediaPipeline' {} a -> s {mediaPipelineId = a} :: DeleteMediaPipeline)
+
+instance Core.AWSRequest DeleteMediaPipeline where
+  type
+    AWSResponse DeleteMediaPipeline =
+      DeleteMediaPipelineResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteMediaPipelineResponse'
+
+instance Prelude.Hashable DeleteMediaPipeline where
+  hashWithSalt _salt DeleteMediaPipeline' {..} =
+    _salt `Prelude.hashWithSalt` mediaPipelineId
+
+instance Prelude.NFData DeleteMediaPipeline where
+  rnf DeleteMediaPipeline' {..} =
+    Prelude.rnf mediaPipelineId
+
+instance Data.ToHeaders DeleteMediaPipeline where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteMediaPipeline where
+  toPath DeleteMediaPipeline' {..} =
+    Prelude.mconcat
+      ["/sdk-media-pipelines/", Data.toBS mediaPipelineId]
+
+instance Data.ToQuery DeleteMediaPipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteMediaPipelineResponse' smart constructor.
+data DeleteMediaPipelineResponse = DeleteMediaPipelineResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteMediaPipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteMediaPipelineResponse ::
+  DeleteMediaPipelineResponse
+newDeleteMediaPipelineResponse =
+  DeleteMediaPipelineResponse'
+
+instance Prelude.NFData DeleteMediaPipelineResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/GetMediaCapturePipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/GetMediaCapturePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/GetMediaCapturePipeline.hs
@@ -0,0 +1,160 @@
+{-# 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.ChimeSdkMediaPipelines.GetMediaCapturePipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an existing media pipeline.
+module Amazonka.ChimeSdkMediaPipelines.GetMediaCapturePipeline
+  ( -- * Creating a Request
+    GetMediaCapturePipeline (..),
+    newGetMediaCapturePipeline,
+
+    -- * Request Lenses
+    getMediaCapturePipeline_mediaPipelineId,
+
+    -- * Destructuring the Response
+    GetMediaCapturePipelineResponse (..),
+    newGetMediaCapturePipelineResponse,
+
+    -- * Response Lenses
+    getMediaCapturePipelineResponse_mediaCapturePipeline,
+    getMediaCapturePipelineResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetMediaCapturePipeline' smart constructor.
+data GetMediaCapturePipeline = GetMediaCapturePipeline'
+  { -- | The ID of the pipeline that you want to get.
+    mediaPipelineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMediaCapturePipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineId', 'getMediaCapturePipeline_mediaPipelineId' - The ID of the pipeline that you want to get.
+newGetMediaCapturePipeline ::
+  -- | 'mediaPipelineId'
+  Prelude.Text ->
+  GetMediaCapturePipeline
+newGetMediaCapturePipeline pMediaPipelineId_ =
+  GetMediaCapturePipeline'
+    { mediaPipelineId =
+        pMediaPipelineId_
+    }
+
+-- | The ID of the pipeline that you want to get.
+getMediaCapturePipeline_mediaPipelineId :: Lens.Lens' GetMediaCapturePipeline Prelude.Text
+getMediaCapturePipeline_mediaPipelineId = Lens.lens (\GetMediaCapturePipeline' {mediaPipelineId} -> mediaPipelineId) (\s@GetMediaCapturePipeline' {} a -> s {mediaPipelineId = a} :: GetMediaCapturePipeline)
+
+instance Core.AWSRequest GetMediaCapturePipeline where
+  type
+    AWSResponse GetMediaCapturePipeline =
+      GetMediaCapturePipelineResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetMediaCapturePipelineResponse'
+            Prelude.<$> (x Data..?> "MediaCapturePipeline")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetMediaCapturePipeline where
+  hashWithSalt _salt GetMediaCapturePipeline' {..} =
+    _salt `Prelude.hashWithSalt` mediaPipelineId
+
+instance Prelude.NFData GetMediaCapturePipeline where
+  rnf GetMediaCapturePipeline' {..} =
+    Prelude.rnf mediaPipelineId
+
+instance Data.ToHeaders GetMediaCapturePipeline where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetMediaCapturePipeline where
+  toPath GetMediaCapturePipeline' {..} =
+    Prelude.mconcat
+      [ "/sdk-media-capture-pipelines/",
+        Data.toBS mediaPipelineId
+      ]
+
+instance Data.ToQuery GetMediaCapturePipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetMediaCapturePipelineResponse' smart constructor.
+data GetMediaCapturePipelineResponse = GetMediaCapturePipelineResponse'
+  { -- | The media pipeline object.
+    mediaCapturePipeline :: Prelude.Maybe MediaCapturePipeline,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMediaCapturePipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaCapturePipeline', 'getMediaCapturePipelineResponse_mediaCapturePipeline' - The media pipeline object.
+--
+-- 'httpStatus', 'getMediaCapturePipelineResponse_httpStatus' - The response's http status code.
+newGetMediaCapturePipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetMediaCapturePipelineResponse
+newGetMediaCapturePipelineResponse pHttpStatus_ =
+  GetMediaCapturePipelineResponse'
+    { mediaCapturePipeline =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The media pipeline object.
+getMediaCapturePipelineResponse_mediaCapturePipeline :: Lens.Lens' GetMediaCapturePipelineResponse (Prelude.Maybe MediaCapturePipeline)
+getMediaCapturePipelineResponse_mediaCapturePipeline = Lens.lens (\GetMediaCapturePipelineResponse' {mediaCapturePipeline} -> mediaCapturePipeline) (\s@GetMediaCapturePipelineResponse' {} a -> s {mediaCapturePipeline = a} :: GetMediaCapturePipelineResponse)
+
+-- | The response's http status code.
+getMediaCapturePipelineResponse_httpStatus :: Lens.Lens' GetMediaCapturePipelineResponse Prelude.Int
+getMediaCapturePipelineResponse_httpStatus = Lens.lens (\GetMediaCapturePipelineResponse' {httpStatus} -> httpStatus) (\s@GetMediaCapturePipelineResponse' {} a -> s {httpStatus = a} :: GetMediaCapturePipelineResponse)
+
+instance
+  Prelude.NFData
+    GetMediaCapturePipelineResponse
+  where
+  rnf GetMediaCapturePipelineResponse' {..} =
+    Prelude.rnf mediaCapturePipeline
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/GetMediaPipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/GetMediaPipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/GetMediaPipeline.hs
@@ -0,0 +1,155 @@
+{-# 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.ChimeSdkMediaPipelines.GetMediaPipeline
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an existing media pipeline.
+module Amazonka.ChimeSdkMediaPipelines.GetMediaPipeline
+  ( -- * Creating a Request
+    GetMediaPipeline (..),
+    newGetMediaPipeline,
+
+    -- * Request Lenses
+    getMediaPipeline_mediaPipelineId,
+
+    -- * Destructuring the Response
+    GetMediaPipelineResponse (..),
+    newGetMediaPipelineResponse,
+
+    -- * Response Lenses
+    getMediaPipelineResponse_mediaPipeline,
+    getMediaPipelineResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetMediaPipeline' smart constructor.
+data GetMediaPipeline = GetMediaPipeline'
+  { -- | The ID of the pipeline that you want to get.
+    mediaPipelineId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMediaPipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineId', 'getMediaPipeline_mediaPipelineId' - The ID of the pipeline that you want to get.
+newGetMediaPipeline ::
+  -- | 'mediaPipelineId'
+  Prelude.Text ->
+  GetMediaPipeline
+newGetMediaPipeline pMediaPipelineId_ =
+  GetMediaPipeline'
+    { mediaPipelineId =
+        pMediaPipelineId_
+    }
+
+-- | The ID of the pipeline that you want to get.
+getMediaPipeline_mediaPipelineId :: Lens.Lens' GetMediaPipeline Prelude.Text
+getMediaPipeline_mediaPipelineId = Lens.lens (\GetMediaPipeline' {mediaPipelineId} -> mediaPipelineId) (\s@GetMediaPipeline' {} a -> s {mediaPipelineId = a} :: GetMediaPipeline)
+
+instance Core.AWSRequest GetMediaPipeline where
+  type
+    AWSResponse GetMediaPipeline =
+      GetMediaPipelineResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetMediaPipelineResponse'
+            Prelude.<$> (x Data..?> "MediaPipeline")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetMediaPipeline where
+  hashWithSalt _salt GetMediaPipeline' {..} =
+    _salt `Prelude.hashWithSalt` mediaPipelineId
+
+instance Prelude.NFData GetMediaPipeline where
+  rnf GetMediaPipeline' {..} =
+    Prelude.rnf mediaPipelineId
+
+instance Data.ToHeaders GetMediaPipeline where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetMediaPipeline where
+  toPath GetMediaPipeline' {..} =
+    Prelude.mconcat
+      ["/sdk-media-pipelines/", Data.toBS mediaPipelineId]
+
+instance Data.ToQuery GetMediaPipeline where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetMediaPipelineResponse' smart constructor.
+data GetMediaPipelineResponse = GetMediaPipelineResponse'
+  { -- | The media pipeline object.
+    mediaPipeline :: Prelude.Maybe MediaPipeline,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetMediaPipelineResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipeline', 'getMediaPipelineResponse_mediaPipeline' - The media pipeline object.
+--
+-- 'httpStatus', 'getMediaPipelineResponse_httpStatus' - The response's http status code.
+newGetMediaPipelineResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetMediaPipelineResponse
+newGetMediaPipelineResponse pHttpStatus_ =
+  GetMediaPipelineResponse'
+    { mediaPipeline =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The media pipeline object.
+getMediaPipelineResponse_mediaPipeline :: Lens.Lens' GetMediaPipelineResponse (Prelude.Maybe MediaPipeline)
+getMediaPipelineResponse_mediaPipeline = Lens.lens (\GetMediaPipelineResponse' {mediaPipeline} -> mediaPipeline) (\s@GetMediaPipelineResponse' {} a -> s {mediaPipeline = a} :: GetMediaPipelineResponse)
+
+-- | The response's http status code.
+getMediaPipelineResponse_httpStatus :: Lens.Lens' GetMediaPipelineResponse Prelude.Int
+getMediaPipelineResponse_httpStatus = Lens.lens (\GetMediaPipelineResponse' {httpStatus} -> httpStatus) (\s@GetMediaPipelineResponse' {} a -> s {httpStatus = a} :: GetMediaPipelineResponse)
+
+instance Prelude.NFData GetMediaPipelineResponse where
+  rnf GetMediaPipelineResponse' {..} =
+    Prelude.rnf mediaPipeline
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Lens.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Lens.hs
@@ -0,0 +1,292 @@
+{-# 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.ChimeSdkMediaPipelines.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.ChimeSdkMediaPipelines.Lens
+  ( -- * Operations
+
+    -- ** CreateMediaCapturePipeline
+    createMediaCapturePipeline_chimeSdkMeetingConfiguration,
+    createMediaCapturePipeline_clientRequestToken,
+    createMediaCapturePipeline_tags,
+    createMediaCapturePipeline_sourceType,
+    createMediaCapturePipeline_sourceArn,
+    createMediaCapturePipeline_sinkType,
+    createMediaCapturePipeline_sinkArn,
+    createMediaCapturePipelineResponse_mediaCapturePipeline,
+    createMediaCapturePipelineResponse_httpStatus,
+
+    -- ** CreateMediaConcatenationPipeline
+    createMediaConcatenationPipeline_clientRequestToken,
+    createMediaConcatenationPipeline_tags,
+    createMediaConcatenationPipeline_sources,
+    createMediaConcatenationPipeline_sinks,
+    createMediaConcatenationPipelineResponse_mediaConcatenationPipeline,
+    createMediaConcatenationPipelineResponse_httpStatus,
+
+    -- ** CreateMediaLiveConnectorPipeline
+    createMediaLiveConnectorPipeline_clientRequestToken,
+    createMediaLiveConnectorPipeline_tags,
+    createMediaLiveConnectorPipeline_sources,
+    createMediaLiveConnectorPipeline_sinks,
+    createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline,
+    createMediaLiveConnectorPipelineResponse_httpStatus,
+
+    -- ** DeleteMediaCapturePipeline
+    deleteMediaCapturePipeline_mediaPipelineId,
+
+    -- ** DeleteMediaPipeline
+    deleteMediaPipeline_mediaPipelineId,
+
+    -- ** GetMediaCapturePipeline
+    getMediaCapturePipeline_mediaPipelineId,
+    getMediaCapturePipelineResponse_mediaCapturePipeline,
+    getMediaCapturePipelineResponse_httpStatus,
+
+    -- ** GetMediaPipeline
+    getMediaPipeline_mediaPipelineId,
+    getMediaPipelineResponse_mediaPipeline,
+    getMediaPipelineResponse_httpStatus,
+
+    -- ** ListMediaCapturePipelines
+    listMediaCapturePipelines_maxResults,
+    listMediaCapturePipelines_nextToken,
+    listMediaCapturePipelinesResponse_mediaCapturePipelines,
+    listMediaCapturePipelinesResponse_nextToken,
+    listMediaCapturePipelinesResponse_httpStatus,
+
+    -- ** ListMediaPipelines
+    listMediaPipelines_maxResults,
+    listMediaPipelines_nextToken,
+    listMediaPipelinesResponse_mediaPipelines,
+    listMediaPipelinesResponse_nextToken,
+    listMediaPipelinesResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceARN,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceARN,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- * Types
+
+    -- ** ArtifactsConcatenationConfiguration
+    artifactsConcatenationConfiguration_audio,
+    artifactsConcatenationConfiguration_video,
+    artifactsConcatenationConfiguration_content,
+    artifactsConcatenationConfiguration_dataChannel,
+    artifactsConcatenationConfiguration_transcriptionMessages,
+    artifactsConcatenationConfiguration_meetingEvents,
+    artifactsConcatenationConfiguration_compositedVideo,
+
+    -- ** ArtifactsConfiguration
+    artifactsConfiguration_compositedVideo,
+    artifactsConfiguration_audio,
+    artifactsConfiguration_video,
+    artifactsConfiguration_content,
+
+    -- ** AudioArtifactsConfiguration
+    audioArtifactsConfiguration_muxType,
+
+    -- ** AudioConcatenationConfiguration
+    audioConcatenationConfiguration_state,
+
+    -- ** ChimeSdkMeetingConcatenationConfiguration
+    chimeSdkMeetingConcatenationConfiguration_artifactsConfiguration,
+
+    -- ** ChimeSdkMeetingConfiguration
+    chimeSdkMeetingConfiguration_artifactsConfiguration,
+    chimeSdkMeetingConfiguration_sourceConfiguration,
+
+    -- ** ChimeSdkMeetingLiveConnectorConfiguration
+    chimeSdkMeetingLiveConnectorConfiguration_compositedVideo,
+    chimeSdkMeetingLiveConnectorConfiguration_sourceConfiguration,
+    chimeSdkMeetingLiveConnectorConfiguration_arn,
+    chimeSdkMeetingLiveConnectorConfiguration_muxType,
+
+    -- ** CompositedVideoArtifactsConfiguration
+    compositedVideoArtifactsConfiguration_layout,
+    compositedVideoArtifactsConfiguration_resolution,
+    compositedVideoArtifactsConfiguration_gridViewConfiguration,
+
+    -- ** CompositedVideoConcatenationConfiguration
+    compositedVideoConcatenationConfiguration_state,
+
+    -- ** ConcatenationSink
+    concatenationSink_type,
+    concatenationSink_s3BucketSinkConfiguration,
+
+    -- ** ConcatenationSource
+    concatenationSource_type,
+    concatenationSource_mediaCapturePipelineSourceConfiguration,
+
+    -- ** ContentArtifactsConfiguration
+    contentArtifactsConfiguration_muxType,
+    contentArtifactsConfiguration_state,
+
+    -- ** ContentConcatenationConfiguration
+    contentConcatenationConfiguration_state,
+
+    -- ** DataChannelConcatenationConfiguration
+    dataChannelConcatenationConfiguration_state,
+
+    -- ** GridViewConfiguration
+    gridViewConfiguration_presenterOnlyConfiguration,
+    gridViewConfiguration_contentShareLayout,
+
+    -- ** LiveConnectorRTMPConfiguration
+    liveConnectorRTMPConfiguration_audioChannels,
+    liveConnectorRTMPConfiguration_audioSampleRate,
+    liveConnectorRTMPConfiguration_url,
+
+    -- ** LiveConnectorSinkConfiguration
+    liveConnectorSinkConfiguration_sinkType,
+    liveConnectorSinkConfiguration_rTMPConfiguration,
+
+    -- ** LiveConnectorSourceConfiguration
+    liveConnectorSourceConfiguration_sourceType,
+    liveConnectorSourceConfiguration_chimeSdkMeetingLiveConnectorConfiguration,
+
+    -- ** MediaCapturePipeline
+    mediaCapturePipeline_chimeSdkMeetingConfiguration,
+    mediaCapturePipeline_createdTimestamp,
+    mediaCapturePipeline_mediaPipelineArn,
+    mediaCapturePipeline_mediaPipelineId,
+    mediaCapturePipeline_sinkArn,
+    mediaCapturePipeline_sinkType,
+    mediaCapturePipeline_sourceArn,
+    mediaCapturePipeline_sourceType,
+    mediaCapturePipeline_status,
+    mediaCapturePipeline_updatedTimestamp,
+
+    -- ** MediaCapturePipelineSourceConfiguration
+    mediaCapturePipelineSourceConfiguration_mediaPipelineArn,
+    mediaCapturePipelineSourceConfiguration_chimeSdkMeetingConfiguration,
+
+    -- ** MediaCapturePipelineSummary
+    mediaCapturePipelineSummary_mediaPipelineArn,
+    mediaCapturePipelineSummary_mediaPipelineId,
+
+    -- ** MediaConcatenationPipeline
+    mediaConcatenationPipeline_createdTimestamp,
+    mediaConcatenationPipeline_mediaPipelineArn,
+    mediaConcatenationPipeline_mediaPipelineId,
+    mediaConcatenationPipeline_sinks,
+    mediaConcatenationPipeline_sources,
+    mediaConcatenationPipeline_status,
+    mediaConcatenationPipeline_updatedTimestamp,
+
+    -- ** MediaLiveConnectorPipeline
+    mediaLiveConnectorPipeline_createdTimestamp,
+    mediaLiveConnectorPipeline_mediaPipelineArn,
+    mediaLiveConnectorPipeline_mediaPipelineId,
+    mediaLiveConnectorPipeline_sinks,
+    mediaLiveConnectorPipeline_sources,
+    mediaLiveConnectorPipeline_status,
+    mediaLiveConnectorPipeline_updatedTimestamp,
+
+    -- ** MediaPipeline
+    mediaPipeline_mediaCapturePipeline,
+    mediaPipeline_mediaConcatenationPipeline,
+    mediaPipeline_mediaLiveConnectorPipeline,
+
+    -- ** MediaPipelineSummary
+    mediaPipelineSummary_mediaPipelineArn,
+    mediaPipelineSummary_mediaPipelineId,
+
+    -- ** MeetingEventsConcatenationConfiguration
+    meetingEventsConcatenationConfiguration_state,
+
+    -- ** PresenterOnlyConfiguration
+    presenterOnlyConfiguration_presenterPosition,
+
+    -- ** S3BucketSinkConfiguration
+    s3BucketSinkConfiguration_destination,
+
+    -- ** SelectedVideoStreams
+    selectedVideoStreams_attendeeIds,
+    selectedVideoStreams_externalUserIds,
+
+    -- ** SourceConfiguration
+    sourceConfiguration_selectedVideoStreams,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** TranscriptionMessagesConcatenationConfiguration
+    transcriptionMessagesConcatenationConfiguration_state,
+
+    -- ** VideoArtifactsConfiguration
+    videoArtifactsConfiguration_muxType,
+    videoArtifactsConfiguration_state,
+
+    -- ** VideoConcatenationConfiguration
+    videoConcatenationConfiguration_state,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.CreateMediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.CreateMediaConcatenationPipeline
+import Amazonka.ChimeSdkMediaPipelines.CreateMediaLiveConnectorPipeline
+import Amazonka.ChimeSdkMediaPipelines.DeleteMediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.DeleteMediaPipeline
+import Amazonka.ChimeSdkMediaPipelines.GetMediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.GetMediaPipeline
+import Amazonka.ChimeSdkMediaPipelines.ListMediaCapturePipelines
+import Amazonka.ChimeSdkMediaPipelines.ListMediaPipelines
+import Amazonka.ChimeSdkMediaPipelines.ListTagsForResource
+import Amazonka.ChimeSdkMediaPipelines.TagResource
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingLiveConnectorConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSink
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSource
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.DataChannelConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.GridViewConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorRTMPConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSinkConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSourceConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSourceConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSummary
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaConcatenationPipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaLiveConnectorPipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSummary
+import Amazonka.ChimeSdkMediaPipelines.Types.MeetingEventsConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.PresenterOnlyConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.S3BucketSinkConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.SelectedVideoStreams
+import Amazonka.ChimeSdkMediaPipelines.Types.SourceConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.Tag
+import Amazonka.ChimeSdkMediaPipelines.Types.TranscriptionMessagesConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.VideoArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.VideoConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.UntagResource
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/ListMediaCapturePipelines.hs b/gen/Amazonka/ChimeSdkMediaPipelines/ListMediaCapturePipelines.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/ListMediaCapturePipelines.hs
@@ -0,0 +1,189 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.ListMediaCapturePipelines
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of media pipelines.
+module Amazonka.ChimeSdkMediaPipelines.ListMediaCapturePipelines
+  ( -- * Creating a Request
+    ListMediaCapturePipelines (..),
+    newListMediaCapturePipelines,
+
+    -- * Request Lenses
+    listMediaCapturePipelines_maxResults,
+    listMediaCapturePipelines_nextToken,
+
+    -- * Destructuring the Response
+    ListMediaCapturePipelinesResponse (..),
+    newListMediaCapturePipelinesResponse,
+
+    -- * Response Lenses
+    listMediaCapturePipelinesResponse_mediaCapturePipelines,
+    listMediaCapturePipelinesResponse_nextToken,
+    listMediaCapturePipelinesResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListMediaCapturePipelines' smart constructor.
+data ListMediaCapturePipelines = ListMediaCapturePipelines'
+  { -- | The maximum number of results to return in a single call. Valid Range: 1
+    -- - 99.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token used to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMediaCapturePipelines' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listMediaCapturePipelines_maxResults' - The maximum number of results to return in a single call. Valid Range: 1
+-- - 99.
+--
+-- 'nextToken', 'listMediaCapturePipelines_nextToken' - The token used to retrieve the next page of results.
+newListMediaCapturePipelines ::
+  ListMediaCapturePipelines
+newListMediaCapturePipelines =
+  ListMediaCapturePipelines'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call. Valid Range: 1
+-- - 99.
+listMediaCapturePipelines_maxResults :: Lens.Lens' ListMediaCapturePipelines (Prelude.Maybe Prelude.Natural)
+listMediaCapturePipelines_maxResults = Lens.lens (\ListMediaCapturePipelines' {maxResults} -> maxResults) (\s@ListMediaCapturePipelines' {} a -> s {maxResults = a} :: ListMediaCapturePipelines)
+
+-- | The token used to retrieve the next page of results.
+listMediaCapturePipelines_nextToken :: Lens.Lens' ListMediaCapturePipelines (Prelude.Maybe Prelude.Text)
+listMediaCapturePipelines_nextToken = Lens.lens (\ListMediaCapturePipelines' {nextToken} -> nextToken) (\s@ListMediaCapturePipelines' {} a -> s {nextToken = a} :: ListMediaCapturePipelines)
+
+instance Core.AWSRequest ListMediaCapturePipelines where
+  type
+    AWSResponse ListMediaCapturePipelines =
+      ListMediaCapturePipelinesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMediaCapturePipelinesResponse'
+            Prelude.<$> ( x
+                            Data..?> "MediaCapturePipelines"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMediaCapturePipelines where
+  hashWithSalt _salt ListMediaCapturePipelines' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListMediaCapturePipelines where
+  rnf ListMediaCapturePipelines' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListMediaCapturePipelines where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListMediaCapturePipelines where
+  toPath = Prelude.const "/sdk-media-capture-pipelines"
+
+instance Data.ToQuery ListMediaCapturePipelines where
+  toQuery ListMediaCapturePipelines' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListMediaCapturePipelinesResponse' smart constructor.
+data ListMediaCapturePipelinesResponse = ListMediaCapturePipelinesResponse'
+  { -- | The media pipeline objects in the list.
+    mediaCapturePipelines :: Prelude.Maybe [MediaCapturePipelineSummary],
+    -- | The token used to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMediaCapturePipelinesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaCapturePipelines', 'listMediaCapturePipelinesResponse_mediaCapturePipelines' - The media pipeline objects in the list.
+--
+-- 'nextToken', 'listMediaCapturePipelinesResponse_nextToken' - The token used to retrieve the next page of results.
+--
+-- 'httpStatus', 'listMediaCapturePipelinesResponse_httpStatus' - The response's http status code.
+newListMediaCapturePipelinesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMediaCapturePipelinesResponse
+newListMediaCapturePipelinesResponse pHttpStatus_ =
+  ListMediaCapturePipelinesResponse'
+    { mediaCapturePipelines =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The media pipeline objects in the list.
+listMediaCapturePipelinesResponse_mediaCapturePipelines :: Lens.Lens' ListMediaCapturePipelinesResponse (Prelude.Maybe [MediaCapturePipelineSummary])
+listMediaCapturePipelinesResponse_mediaCapturePipelines = Lens.lens (\ListMediaCapturePipelinesResponse' {mediaCapturePipelines} -> mediaCapturePipelines) (\s@ListMediaCapturePipelinesResponse' {} a -> s {mediaCapturePipelines = a} :: ListMediaCapturePipelinesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token used to retrieve the next page of results.
+listMediaCapturePipelinesResponse_nextToken :: Lens.Lens' ListMediaCapturePipelinesResponse (Prelude.Maybe Prelude.Text)
+listMediaCapturePipelinesResponse_nextToken = Lens.lens (\ListMediaCapturePipelinesResponse' {nextToken} -> nextToken) (\s@ListMediaCapturePipelinesResponse' {} a -> s {nextToken = a} :: ListMediaCapturePipelinesResponse)
+
+-- | The response's http status code.
+listMediaCapturePipelinesResponse_httpStatus :: Lens.Lens' ListMediaCapturePipelinesResponse Prelude.Int
+listMediaCapturePipelinesResponse_httpStatus = Lens.lens (\ListMediaCapturePipelinesResponse' {httpStatus} -> httpStatus) (\s@ListMediaCapturePipelinesResponse' {} a -> s {httpStatus = a} :: ListMediaCapturePipelinesResponse)
+
+instance
+  Prelude.NFData
+    ListMediaCapturePipelinesResponse
+  where
+  rnf ListMediaCapturePipelinesResponse' {..} =
+    Prelude.rnf mediaCapturePipelines
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/ListMediaPipelines.hs b/gen/Amazonka/ChimeSdkMediaPipelines/ListMediaPipelines.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/ListMediaPipelines.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.ListMediaPipelines
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of media pipelines.
+module Amazonka.ChimeSdkMediaPipelines.ListMediaPipelines
+  ( -- * Creating a Request
+    ListMediaPipelines (..),
+    newListMediaPipelines,
+
+    -- * Request Lenses
+    listMediaPipelines_maxResults,
+    listMediaPipelines_nextToken,
+
+    -- * Destructuring the Response
+    ListMediaPipelinesResponse (..),
+    newListMediaPipelinesResponse,
+
+    -- * Response Lenses
+    listMediaPipelinesResponse_mediaPipelines,
+    listMediaPipelinesResponse_nextToken,
+    listMediaPipelinesResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListMediaPipelines' smart constructor.
+data ListMediaPipelines = ListMediaPipelines'
+  { -- | The maximum number of results to return in a single call. Valid Range: 1
+    -- - 99.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token used to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMediaPipelines' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listMediaPipelines_maxResults' - The maximum number of results to return in a single call. Valid Range: 1
+-- - 99.
+--
+-- 'nextToken', 'listMediaPipelines_nextToken' - The token used to retrieve the next page of results.
+newListMediaPipelines ::
+  ListMediaPipelines
+newListMediaPipelines =
+  ListMediaPipelines'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to return in a single call. Valid Range: 1
+-- - 99.
+listMediaPipelines_maxResults :: Lens.Lens' ListMediaPipelines (Prelude.Maybe Prelude.Natural)
+listMediaPipelines_maxResults = Lens.lens (\ListMediaPipelines' {maxResults} -> maxResults) (\s@ListMediaPipelines' {} a -> s {maxResults = a} :: ListMediaPipelines)
+
+-- | The token used to retrieve the next page of results.
+listMediaPipelines_nextToken :: Lens.Lens' ListMediaPipelines (Prelude.Maybe Prelude.Text)
+listMediaPipelines_nextToken = Lens.lens (\ListMediaPipelines' {nextToken} -> nextToken) (\s@ListMediaPipelines' {} a -> s {nextToken = a} :: ListMediaPipelines)
+
+instance Core.AWSRequest ListMediaPipelines where
+  type
+    AWSResponse ListMediaPipelines =
+      ListMediaPipelinesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListMediaPipelinesResponse'
+            Prelude.<$> (x Data..?> "MediaPipelines" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListMediaPipelines where
+  hashWithSalt _salt ListMediaPipelines' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListMediaPipelines where
+  rnf ListMediaPipelines' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListMediaPipelines where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListMediaPipelines where
+  toPath = Prelude.const "/sdk-media-pipelines"
+
+instance Data.ToQuery ListMediaPipelines where
+  toQuery ListMediaPipelines' {..} =
+    Prelude.mconcat
+      [ "max-results" Data.=: maxResults,
+        "next-token" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListMediaPipelinesResponse' smart constructor.
+data ListMediaPipelinesResponse = ListMediaPipelinesResponse'
+  { -- | The media pipeline objects in the list.
+    mediaPipelines :: Prelude.Maybe [MediaPipelineSummary],
+    -- | The token used to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListMediaPipelinesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelines', 'listMediaPipelinesResponse_mediaPipelines' - The media pipeline objects in the list.
+--
+-- 'nextToken', 'listMediaPipelinesResponse_nextToken' - The token used to retrieve the next page of results.
+--
+-- 'httpStatus', 'listMediaPipelinesResponse_httpStatus' - The response's http status code.
+newListMediaPipelinesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListMediaPipelinesResponse
+newListMediaPipelinesResponse pHttpStatus_ =
+  ListMediaPipelinesResponse'
+    { mediaPipelines =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The media pipeline objects in the list.
+listMediaPipelinesResponse_mediaPipelines :: Lens.Lens' ListMediaPipelinesResponse (Prelude.Maybe [MediaPipelineSummary])
+listMediaPipelinesResponse_mediaPipelines = Lens.lens (\ListMediaPipelinesResponse' {mediaPipelines} -> mediaPipelines) (\s@ListMediaPipelinesResponse' {} a -> s {mediaPipelines = a} :: ListMediaPipelinesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token used to retrieve the next page of results.
+listMediaPipelinesResponse_nextToken :: Lens.Lens' ListMediaPipelinesResponse (Prelude.Maybe Prelude.Text)
+listMediaPipelinesResponse_nextToken = Lens.lens (\ListMediaPipelinesResponse' {nextToken} -> nextToken) (\s@ListMediaPipelinesResponse' {} a -> s {nextToken = a} :: ListMediaPipelinesResponse)
+
+-- | The response's http status code.
+listMediaPipelinesResponse_httpStatus :: Lens.Lens' ListMediaPipelinesResponse Prelude.Int
+listMediaPipelinesResponse_httpStatus = Lens.lens (\ListMediaPipelinesResponse' {httpStatus} -> httpStatus) (\s@ListMediaPipelinesResponse' {} a -> s {httpStatus = a} :: ListMediaPipelinesResponse)
+
+instance Prelude.NFData ListMediaPipelinesResponse where
+  rnf ListMediaPipelinesResponse' {..} =
+    Prelude.rnf mediaPipelines
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/ListTagsForResource.hs b/gen/Amazonka/ChimeSdkMediaPipelines/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/ListTagsForResource.hs
@@ -0,0 +1,154 @@
+{-# 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.ChimeSdkMediaPipelines.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)
+--
+-- Lists the tags available for a media pipeline.
+module Amazonka.ChimeSdkMediaPipelines.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceARN,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The ARN of the media pipeline associated with any tags. The ARN consists
+    -- of the pipeline\'s region, resource ID, and pipeline ID.
+    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 media pipeline associated with any tags. The ARN consists
+-- of the pipeline\'s region, resource ID, and pipeline ID.
+newListTagsForResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceARN_ =
+  ListTagsForResource' {resourceARN = pResourceARN_}
+
+-- | The ARN of the media pipeline associated with any tags. The ARN consists
+-- of the pipeline\'s region, resource ID, and pipeline ID.
+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")
+            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.mempty
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/tags"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery ListTagsForResource' {..} =
+    Prelude.mconcat ["arn" Data.=: resourceARN]
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | The tags associated with the specified media pipeline.
+    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - The tags associated with the specified media pipeline.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The tags associated with the specified media pipeline.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.NonEmpty Tag))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/TagResource.hs b/gen/Amazonka/ChimeSdkMediaPipelines/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/TagResource.hs
@@ -0,0 +1,164 @@
+{-# 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.ChimeSdkMediaPipelines.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)
+--
+-- The ARN of the media pipeline that you want to tag. Consists of he
+-- pipeline\'s endpoint region, resource ID, and pipeline ID.
+module Amazonka.ChimeSdkMediaPipelines.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceARN,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The ARN of the media pipeline associated with any tags. The ARN consists
+    -- of the pipeline\'s endpoint region, resource ID, and pipeline ID.
+    resourceARN :: Prelude.Text,
+    -- | The tags associated with the specified media pipeline.
+    tags :: Prelude.NonEmpty Tag
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'tagResource_resourceARN' - The ARN of the media pipeline associated with any tags. The ARN consists
+-- of the pipeline\'s endpoint region, resource ID, and pipeline ID.
+--
+-- 'tags', 'tagResource_tags' - The tags associated with the specified media pipeline.
+newTagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'tags'
+  Prelude.NonEmpty Tag ->
+  TagResource
+newTagResource pResourceARN_ pTags_ =
+  TagResource'
+    { resourceARN = pResourceARN_,
+      tags = Lens.coerced Lens.# pTags_
+    }
+
+-- | The ARN of the media pipeline associated with any tags. The ARN consists
+-- of the pipeline\'s endpoint region, resource ID, and pipeline ID.
+tagResource_resourceARN :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceARN = Lens.lens (\TagResource' {resourceARN} -> resourceARN) (\s@TagResource' {} a -> s {resourceARN = a} :: TagResource)
+
+-- | The tags associated with the specified media pipeline.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.NonEmpty Tag)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/tags"
+
+instance Data.ToQuery TagResource where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=tag-resource"])
+
+-- | /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/ChimeSdkMediaPipelines/Types.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types.hs
@@ -0,0 +1,504 @@
+{-# 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.ChimeSdkMediaPipelines.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.ChimeSdkMediaPipelines.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _BadRequestException,
+    _ForbiddenException,
+    _NotFoundException,
+    _ResourceLimitExceededException,
+    _ServiceFailureException,
+    _ServiceUnavailableException,
+    _ThrottledClientException,
+    _UnauthorizedClientException,
+
+    -- * ArtifactsConcatenationState
+    ArtifactsConcatenationState (..),
+
+    -- * ArtifactsState
+    ArtifactsState (..),
+
+    -- * AudioArtifactsConcatenationState
+    AudioArtifactsConcatenationState (..),
+
+    -- * AudioChannelsOption
+    AudioChannelsOption (..),
+
+    -- * AudioMuxType
+    AudioMuxType (..),
+
+    -- * ConcatenationSinkType
+    ConcatenationSinkType (..),
+
+    -- * ConcatenationSourceType
+    ConcatenationSourceType (..),
+
+    -- * ContentMuxType
+    ContentMuxType (..),
+
+    -- * ContentShareLayoutOption
+    ContentShareLayoutOption (..),
+
+    -- * LayoutOption
+    LayoutOption (..),
+
+    -- * LiveConnectorMuxType
+    LiveConnectorMuxType (..),
+
+    -- * LiveConnectorSinkType
+    LiveConnectorSinkType (..),
+
+    -- * LiveConnectorSourceType
+    LiveConnectorSourceType (..),
+
+    -- * MediaPipelineSinkType
+    MediaPipelineSinkType (..),
+
+    -- * MediaPipelineSourceType
+    MediaPipelineSourceType (..),
+
+    -- * MediaPipelineStatus
+    MediaPipelineStatus (..),
+
+    -- * PresenterPosition
+    PresenterPosition (..),
+
+    -- * ResolutionOption
+    ResolutionOption (..),
+
+    -- * VideoMuxType
+    VideoMuxType (..),
+
+    -- * ArtifactsConcatenationConfiguration
+    ArtifactsConcatenationConfiguration (..),
+    newArtifactsConcatenationConfiguration,
+    artifactsConcatenationConfiguration_audio,
+    artifactsConcatenationConfiguration_video,
+    artifactsConcatenationConfiguration_content,
+    artifactsConcatenationConfiguration_dataChannel,
+    artifactsConcatenationConfiguration_transcriptionMessages,
+    artifactsConcatenationConfiguration_meetingEvents,
+    artifactsConcatenationConfiguration_compositedVideo,
+
+    -- * ArtifactsConfiguration
+    ArtifactsConfiguration (..),
+    newArtifactsConfiguration,
+    artifactsConfiguration_compositedVideo,
+    artifactsConfiguration_audio,
+    artifactsConfiguration_video,
+    artifactsConfiguration_content,
+
+    -- * AudioArtifactsConfiguration
+    AudioArtifactsConfiguration (..),
+    newAudioArtifactsConfiguration,
+    audioArtifactsConfiguration_muxType,
+
+    -- * AudioConcatenationConfiguration
+    AudioConcatenationConfiguration (..),
+    newAudioConcatenationConfiguration,
+    audioConcatenationConfiguration_state,
+
+    -- * ChimeSdkMeetingConcatenationConfiguration
+    ChimeSdkMeetingConcatenationConfiguration (..),
+    newChimeSdkMeetingConcatenationConfiguration,
+    chimeSdkMeetingConcatenationConfiguration_artifactsConfiguration,
+
+    -- * ChimeSdkMeetingConfiguration
+    ChimeSdkMeetingConfiguration (..),
+    newChimeSdkMeetingConfiguration,
+    chimeSdkMeetingConfiguration_artifactsConfiguration,
+    chimeSdkMeetingConfiguration_sourceConfiguration,
+
+    -- * ChimeSdkMeetingLiveConnectorConfiguration
+    ChimeSdkMeetingLiveConnectorConfiguration (..),
+    newChimeSdkMeetingLiveConnectorConfiguration,
+    chimeSdkMeetingLiveConnectorConfiguration_compositedVideo,
+    chimeSdkMeetingLiveConnectorConfiguration_sourceConfiguration,
+    chimeSdkMeetingLiveConnectorConfiguration_arn,
+    chimeSdkMeetingLiveConnectorConfiguration_muxType,
+
+    -- * CompositedVideoArtifactsConfiguration
+    CompositedVideoArtifactsConfiguration (..),
+    newCompositedVideoArtifactsConfiguration,
+    compositedVideoArtifactsConfiguration_layout,
+    compositedVideoArtifactsConfiguration_resolution,
+    compositedVideoArtifactsConfiguration_gridViewConfiguration,
+
+    -- * CompositedVideoConcatenationConfiguration
+    CompositedVideoConcatenationConfiguration (..),
+    newCompositedVideoConcatenationConfiguration,
+    compositedVideoConcatenationConfiguration_state,
+
+    -- * ConcatenationSink
+    ConcatenationSink (..),
+    newConcatenationSink,
+    concatenationSink_type,
+    concatenationSink_s3BucketSinkConfiguration,
+
+    -- * ConcatenationSource
+    ConcatenationSource (..),
+    newConcatenationSource,
+    concatenationSource_type,
+    concatenationSource_mediaCapturePipelineSourceConfiguration,
+
+    -- * ContentArtifactsConfiguration
+    ContentArtifactsConfiguration (..),
+    newContentArtifactsConfiguration,
+    contentArtifactsConfiguration_muxType,
+    contentArtifactsConfiguration_state,
+
+    -- * ContentConcatenationConfiguration
+    ContentConcatenationConfiguration (..),
+    newContentConcatenationConfiguration,
+    contentConcatenationConfiguration_state,
+
+    -- * DataChannelConcatenationConfiguration
+    DataChannelConcatenationConfiguration (..),
+    newDataChannelConcatenationConfiguration,
+    dataChannelConcatenationConfiguration_state,
+
+    -- * GridViewConfiguration
+    GridViewConfiguration (..),
+    newGridViewConfiguration,
+    gridViewConfiguration_presenterOnlyConfiguration,
+    gridViewConfiguration_contentShareLayout,
+
+    -- * LiveConnectorRTMPConfiguration
+    LiveConnectorRTMPConfiguration (..),
+    newLiveConnectorRTMPConfiguration,
+    liveConnectorRTMPConfiguration_audioChannels,
+    liveConnectorRTMPConfiguration_audioSampleRate,
+    liveConnectorRTMPConfiguration_url,
+
+    -- * LiveConnectorSinkConfiguration
+    LiveConnectorSinkConfiguration (..),
+    newLiveConnectorSinkConfiguration,
+    liveConnectorSinkConfiguration_sinkType,
+    liveConnectorSinkConfiguration_rTMPConfiguration,
+
+    -- * LiveConnectorSourceConfiguration
+    LiveConnectorSourceConfiguration (..),
+    newLiveConnectorSourceConfiguration,
+    liveConnectorSourceConfiguration_sourceType,
+    liveConnectorSourceConfiguration_chimeSdkMeetingLiveConnectorConfiguration,
+
+    -- * MediaCapturePipeline
+    MediaCapturePipeline (..),
+    newMediaCapturePipeline,
+    mediaCapturePipeline_chimeSdkMeetingConfiguration,
+    mediaCapturePipeline_createdTimestamp,
+    mediaCapturePipeline_mediaPipelineArn,
+    mediaCapturePipeline_mediaPipelineId,
+    mediaCapturePipeline_sinkArn,
+    mediaCapturePipeline_sinkType,
+    mediaCapturePipeline_sourceArn,
+    mediaCapturePipeline_sourceType,
+    mediaCapturePipeline_status,
+    mediaCapturePipeline_updatedTimestamp,
+
+    -- * MediaCapturePipelineSourceConfiguration
+    MediaCapturePipelineSourceConfiguration (..),
+    newMediaCapturePipelineSourceConfiguration,
+    mediaCapturePipelineSourceConfiguration_mediaPipelineArn,
+    mediaCapturePipelineSourceConfiguration_chimeSdkMeetingConfiguration,
+
+    -- * MediaCapturePipelineSummary
+    MediaCapturePipelineSummary (..),
+    newMediaCapturePipelineSummary,
+    mediaCapturePipelineSummary_mediaPipelineArn,
+    mediaCapturePipelineSummary_mediaPipelineId,
+
+    -- * MediaConcatenationPipeline
+    MediaConcatenationPipeline (..),
+    newMediaConcatenationPipeline,
+    mediaConcatenationPipeline_createdTimestamp,
+    mediaConcatenationPipeline_mediaPipelineArn,
+    mediaConcatenationPipeline_mediaPipelineId,
+    mediaConcatenationPipeline_sinks,
+    mediaConcatenationPipeline_sources,
+    mediaConcatenationPipeline_status,
+    mediaConcatenationPipeline_updatedTimestamp,
+
+    -- * MediaLiveConnectorPipeline
+    MediaLiveConnectorPipeline (..),
+    newMediaLiveConnectorPipeline,
+    mediaLiveConnectorPipeline_createdTimestamp,
+    mediaLiveConnectorPipeline_mediaPipelineArn,
+    mediaLiveConnectorPipeline_mediaPipelineId,
+    mediaLiveConnectorPipeline_sinks,
+    mediaLiveConnectorPipeline_sources,
+    mediaLiveConnectorPipeline_status,
+    mediaLiveConnectorPipeline_updatedTimestamp,
+
+    -- * MediaPipeline
+    MediaPipeline (..),
+    newMediaPipeline,
+    mediaPipeline_mediaCapturePipeline,
+    mediaPipeline_mediaConcatenationPipeline,
+    mediaPipeline_mediaLiveConnectorPipeline,
+
+    -- * MediaPipelineSummary
+    MediaPipelineSummary (..),
+    newMediaPipelineSummary,
+    mediaPipelineSummary_mediaPipelineArn,
+    mediaPipelineSummary_mediaPipelineId,
+
+    -- * MeetingEventsConcatenationConfiguration
+    MeetingEventsConcatenationConfiguration (..),
+    newMeetingEventsConcatenationConfiguration,
+    meetingEventsConcatenationConfiguration_state,
+
+    -- * PresenterOnlyConfiguration
+    PresenterOnlyConfiguration (..),
+    newPresenterOnlyConfiguration,
+    presenterOnlyConfiguration_presenterPosition,
+
+    -- * S3BucketSinkConfiguration
+    S3BucketSinkConfiguration (..),
+    newS3BucketSinkConfiguration,
+    s3BucketSinkConfiguration_destination,
+
+    -- * SelectedVideoStreams
+    SelectedVideoStreams (..),
+    newSelectedVideoStreams,
+    selectedVideoStreams_attendeeIds,
+    selectedVideoStreams_externalUserIds,
+
+    -- * SourceConfiguration
+    SourceConfiguration (..),
+    newSourceConfiguration,
+    sourceConfiguration_selectedVideoStreams,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * TranscriptionMessagesConcatenationConfiguration
+    TranscriptionMessagesConcatenationConfiguration (..),
+    newTranscriptionMessagesConcatenationConfiguration,
+    transcriptionMessagesConcatenationConfiguration_state,
+
+    -- * VideoArtifactsConfiguration
+    VideoArtifactsConfiguration (..),
+    newVideoArtifactsConfiguration,
+    videoArtifactsConfiguration_muxType,
+    videoArtifactsConfiguration_state,
+
+    -- * VideoConcatenationConfiguration
+    VideoConcatenationConfiguration (..),
+    newVideoConcatenationConfiguration,
+    videoConcatenationConfiguration_state,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsState
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioArtifactsConcatenationState
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioChannelsOption
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioMuxType
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingLiveConnectorConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSink
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSinkType
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSource
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSourceType
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentMuxType
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentShareLayoutOption
+import Amazonka.ChimeSdkMediaPipelines.Types.DataChannelConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.GridViewConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LayoutOption
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorMuxType
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorRTMPConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSinkConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSinkType
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSourceConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSourceType
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSourceConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSummary
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaConcatenationPipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaLiveConnectorPipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSinkType
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSourceType
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineStatus
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSummary
+import Amazonka.ChimeSdkMediaPipelines.Types.MeetingEventsConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.PresenterOnlyConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.PresenterPosition
+import Amazonka.ChimeSdkMediaPipelines.Types.ResolutionOption
+import Amazonka.ChimeSdkMediaPipelines.Types.S3BucketSinkConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.SelectedVideoStreams
+import Amazonka.ChimeSdkMediaPipelines.Types.SourceConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.Tag
+import Amazonka.ChimeSdkMediaPipelines.Types.TranscriptionMessagesConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.VideoArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.VideoConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.VideoMuxType
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2021-07-15@ of the Amazon Chime SDK Media Pipelines SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev =
+        "ChimeSdkMediaPipelines",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "media-pipelines-chime",
+      Core.signingName = "chime",
+      Core.version = "2021-07-15",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error =
+        Core.parseJSONError "ChimeSdkMediaPipelines",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | The input parameters don\'t match the service\'s restrictions.
+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_BadRequestException =
+  Core._MatchServiceError
+    defaultService
+    "BadRequestException"
+    Prelude.. Core.hasStatus 400
+
+-- | The client is permanently forbidden from making the request.
+_ForbiddenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ForbiddenException =
+  Core._MatchServiceError
+    defaultService
+    "ForbiddenException"
+    Prelude.. Core.hasStatus 403
+
+-- | One or more of the resources in the request does not exist in the
+-- system.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | The request exceeds the resource limit.
+_ResourceLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceLimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceLimitExceededException"
+    Prelude.. Core.hasStatus 400
+
+-- | The service encountered an unexpected error.
+_ServiceFailureException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceFailureException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceFailureException"
+    Prelude.. Core.hasStatus 500
+
+-- | The service is currently unavailable.
+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceUnavailableException"
+    Prelude.. Core.hasStatus 503
+
+-- | The client exceeded its request rate limit.
+_ThrottledClientException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottledClientException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottledClientException"
+    Prelude.. Core.hasStatus 429
+
+-- | The client is not currently authorized to make the request.
+_UnauthorizedClientException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnauthorizedClientException =
+  Core._MatchServiceError
+    defaultService
+    "UnauthorizedClientException"
+    Prelude.. Core.hasStatus 401
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConcatenationConfiguration.hs
@@ -0,0 +1,209 @@
+{-# 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.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.DataChannelConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.MeetingEventsConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.TranscriptionMessagesConcatenationConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.VideoConcatenationConfiguration
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the artifacts concatenation.
+--
+-- /See:/ 'newArtifactsConcatenationConfiguration' smart constructor.
+data ArtifactsConcatenationConfiguration = ArtifactsConcatenationConfiguration'
+  { -- | The configuration for the audio artifacts concatenation.
+    audio :: AudioConcatenationConfiguration,
+    -- | The configuration for the video artifacts concatenation.
+    video :: VideoConcatenationConfiguration,
+    -- | The configuration for the content artifacts concatenation.
+    content :: ContentConcatenationConfiguration,
+    -- | The configuration for the data channel artifacts concatenation.
+    dataChannel :: DataChannelConcatenationConfiguration,
+    -- | The configuration for the transcription messages artifacts
+    -- concatenation.
+    transcriptionMessages :: TranscriptionMessagesConcatenationConfiguration,
+    -- | The configuration for the meeting events artifacts concatenation.
+    meetingEvents :: MeetingEventsConcatenationConfiguration,
+    -- | The configuration for the composited video artifacts concatenation.
+    compositedVideo :: CompositedVideoConcatenationConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArtifactsConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'audio', 'artifactsConcatenationConfiguration_audio' - The configuration for the audio artifacts concatenation.
+--
+-- 'video', 'artifactsConcatenationConfiguration_video' - The configuration for the video artifacts concatenation.
+--
+-- 'content', 'artifactsConcatenationConfiguration_content' - The configuration for the content artifacts concatenation.
+--
+-- 'dataChannel', 'artifactsConcatenationConfiguration_dataChannel' - The configuration for the data channel artifacts concatenation.
+--
+-- 'transcriptionMessages', 'artifactsConcatenationConfiguration_transcriptionMessages' - The configuration for the transcription messages artifacts
+-- concatenation.
+--
+-- 'meetingEvents', 'artifactsConcatenationConfiguration_meetingEvents' - The configuration for the meeting events artifacts concatenation.
+--
+-- 'compositedVideo', 'artifactsConcatenationConfiguration_compositedVideo' - The configuration for the composited video artifacts concatenation.
+newArtifactsConcatenationConfiguration ::
+  -- | 'audio'
+  AudioConcatenationConfiguration ->
+  -- | 'video'
+  VideoConcatenationConfiguration ->
+  -- | 'content'
+  ContentConcatenationConfiguration ->
+  -- | 'dataChannel'
+  DataChannelConcatenationConfiguration ->
+  -- | 'transcriptionMessages'
+  TranscriptionMessagesConcatenationConfiguration ->
+  -- | 'meetingEvents'
+  MeetingEventsConcatenationConfiguration ->
+  -- | 'compositedVideo'
+  CompositedVideoConcatenationConfiguration ->
+  ArtifactsConcatenationConfiguration
+newArtifactsConcatenationConfiguration
+  pAudio_
+  pVideo_
+  pContent_
+  pDataChannel_
+  pTranscriptionMessages_
+  pMeetingEvents_
+  pCompositedVideo_ =
+    ArtifactsConcatenationConfiguration'
+      { audio =
+          pAudio_,
+        video = pVideo_,
+        content = pContent_,
+        dataChannel = pDataChannel_,
+        transcriptionMessages =
+          pTranscriptionMessages_,
+        meetingEvents = pMeetingEvents_,
+        compositedVideo = pCompositedVideo_
+      }
+
+-- | The configuration for the audio artifacts concatenation.
+artifactsConcatenationConfiguration_audio :: Lens.Lens' ArtifactsConcatenationConfiguration AudioConcatenationConfiguration
+artifactsConcatenationConfiguration_audio = Lens.lens (\ArtifactsConcatenationConfiguration' {audio} -> audio) (\s@ArtifactsConcatenationConfiguration' {} a -> s {audio = a} :: ArtifactsConcatenationConfiguration)
+
+-- | The configuration for the video artifacts concatenation.
+artifactsConcatenationConfiguration_video :: Lens.Lens' ArtifactsConcatenationConfiguration VideoConcatenationConfiguration
+artifactsConcatenationConfiguration_video = Lens.lens (\ArtifactsConcatenationConfiguration' {video} -> video) (\s@ArtifactsConcatenationConfiguration' {} a -> s {video = a} :: ArtifactsConcatenationConfiguration)
+
+-- | The configuration for the content artifacts concatenation.
+artifactsConcatenationConfiguration_content :: Lens.Lens' ArtifactsConcatenationConfiguration ContentConcatenationConfiguration
+artifactsConcatenationConfiguration_content = Lens.lens (\ArtifactsConcatenationConfiguration' {content} -> content) (\s@ArtifactsConcatenationConfiguration' {} a -> s {content = a} :: ArtifactsConcatenationConfiguration)
+
+-- | The configuration for the data channel artifacts concatenation.
+artifactsConcatenationConfiguration_dataChannel :: Lens.Lens' ArtifactsConcatenationConfiguration DataChannelConcatenationConfiguration
+artifactsConcatenationConfiguration_dataChannel = Lens.lens (\ArtifactsConcatenationConfiguration' {dataChannel} -> dataChannel) (\s@ArtifactsConcatenationConfiguration' {} a -> s {dataChannel = a} :: ArtifactsConcatenationConfiguration)
+
+-- | The configuration for the transcription messages artifacts
+-- concatenation.
+artifactsConcatenationConfiguration_transcriptionMessages :: Lens.Lens' ArtifactsConcatenationConfiguration TranscriptionMessagesConcatenationConfiguration
+artifactsConcatenationConfiguration_transcriptionMessages = Lens.lens (\ArtifactsConcatenationConfiguration' {transcriptionMessages} -> transcriptionMessages) (\s@ArtifactsConcatenationConfiguration' {} a -> s {transcriptionMessages = a} :: ArtifactsConcatenationConfiguration)
+
+-- | The configuration for the meeting events artifacts concatenation.
+artifactsConcatenationConfiguration_meetingEvents :: Lens.Lens' ArtifactsConcatenationConfiguration MeetingEventsConcatenationConfiguration
+artifactsConcatenationConfiguration_meetingEvents = Lens.lens (\ArtifactsConcatenationConfiguration' {meetingEvents} -> meetingEvents) (\s@ArtifactsConcatenationConfiguration' {} a -> s {meetingEvents = a} :: ArtifactsConcatenationConfiguration)
+
+-- | The configuration for the composited video artifacts concatenation.
+artifactsConcatenationConfiguration_compositedVideo :: Lens.Lens' ArtifactsConcatenationConfiguration CompositedVideoConcatenationConfiguration
+artifactsConcatenationConfiguration_compositedVideo = Lens.lens (\ArtifactsConcatenationConfiguration' {compositedVideo} -> compositedVideo) (\s@ArtifactsConcatenationConfiguration' {} a -> s {compositedVideo = a} :: ArtifactsConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    ArtifactsConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ArtifactsConcatenationConfiguration"
+      ( \x ->
+          ArtifactsConcatenationConfiguration'
+            Prelude.<$> (x Data..: "Audio")
+            Prelude.<*> (x Data..: "Video")
+            Prelude.<*> (x Data..: "Content")
+            Prelude.<*> (x Data..: "DataChannel")
+            Prelude.<*> (x Data..: "TranscriptionMessages")
+            Prelude.<*> (x Data..: "MeetingEvents")
+            Prelude.<*> (x Data..: "CompositedVideo")
+      )
+
+instance
+  Prelude.Hashable
+    ArtifactsConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    ArtifactsConcatenationConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` audio
+        `Prelude.hashWithSalt` video
+        `Prelude.hashWithSalt` content
+        `Prelude.hashWithSalt` dataChannel
+        `Prelude.hashWithSalt` transcriptionMessages
+        `Prelude.hashWithSalt` meetingEvents
+        `Prelude.hashWithSalt` compositedVideo
+
+instance
+  Prelude.NFData
+    ArtifactsConcatenationConfiguration
+  where
+  rnf ArtifactsConcatenationConfiguration' {..} =
+    Prelude.rnf audio
+      `Prelude.seq` Prelude.rnf video
+      `Prelude.seq` Prelude.rnf content
+      `Prelude.seq` Prelude.rnf dataChannel
+      `Prelude.seq` Prelude.rnf transcriptionMessages
+      `Prelude.seq` Prelude.rnf meetingEvents
+      `Prelude.seq` Prelude.rnf compositedVideo
+
+instance
+  Data.ToJSON
+    ArtifactsConcatenationConfiguration
+  where
+  toJSON ArtifactsConcatenationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Audio" Data..= audio),
+            Prelude.Just ("Video" Data..= video),
+            Prelude.Just ("Content" Data..= content),
+            Prelude.Just ("DataChannel" Data..= dataChannel),
+            Prelude.Just
+              ( "TranscriptionMessages"
+                  Data..= transcriptionMessages
+              ),
+            Prelude.Just ("MeetingEvents" Data..= meetingEvents),
+            Prelude.Just
+              ("CompositedVideo" Data..= compositedVideo)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConcatenationState.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConcatenationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConcatenationState.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.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+-- 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.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+  ( ArtifactsConcatenationState
+      ( ..,
+        ArtifactsConcatenationState_Disabled,
+        ArtifactsConcatenationState_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ArtifactsConcatenationState = ArtifactsConcatenationState'
+  { fromArtifactsConcatenationState ::
+      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 ArtifactsConcatenationState_Disabled :: ArtifactsConcatenationState
+pattern ArtifactsConcatenationState_Disabled = ArtifactsConcatenationState' "Disabled"
+
+pattern ArtifactsConcatenationState_Enabled :: ArtifactsConcatenationState
+pattern ArtifactsConcatenationState_Enabled = ArtifactsConcatenationState' "Enabled"
+
+{-# COMPLETE
+  ArtifactsConcatenationState_Disabled,
+  ArtifactsConcatenationState_Enabled,
+  ArtifactsConcatenationState'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsConfiguration.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.ChimeSdkMediaPipelines.Types.ArtifactsConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.ArtifactsConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.VideoArtifactsConfiguration
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration for the artifacts.
+--
+-- /See:/ 'newArtifactsConfiguration' smart constructor.
+data ArtifactsConfiguration = ArtifactsConfiguration'
+  { -- | Enables video compositing.
+    compositedVideo :: Prelude.Maybe CompositedVideoArtifactsConfiguration,
+    -- | The configuration for the audio artifacts.
+    audio :: AudioArtifactsConfiguration,
+    -- | The configuration for the video artifacts.
+    video :: VideoArtifactsConfiguration,
+    -- | The configuration for the content artifacts.
+    content :: ContentArtifactsConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'compositedVideo', 'artifactsConfiguration_compositedVideo' - Enables video compositing.
+--
+-- 'audio', 'artifactsConfiguration_audio' - The configuration for the audio artifacts.
+--
+-- 'video', 'artifactsConfiguration_video' - The configuration for the video artifacts.
+--
+-- 'content', 'artifactsConfiguration_content' - The configuration for the content artifacts.
+newArtifactsConfiguration ::
+  -- | 'audio'
+  AudioArtifactsConfiguration ->
+  -- | 'video'
+  VideoArtifactsConfiguration ->
+  -- | 'content'
+  ContentArtifactsConfiguration ->
+  ArtifactsConfiguration
+newArtifactsConfiguration pAudio_ pVideo_ pContent_ =
+  ArtifactsConfiguration'
+    { compositedVideo =
+        Prelude.Nothing,
+      audio = pAudio_,
+      video = pVideo_,
+      content = pContent_
+    }
+
+-- | Enables video compositing.
+artifactsConfiguration_compositedVideo :: Lens.Lens' ArtifactsConfiguration (Prelude.Maybe CompositedVideoArtifactsConfiguration)
+artifactsConfiguration_compositedVideo = Lens.lens (\ArtifactsConfiguration' {compositedVideo} -> compositedVideo) (\s@ArtifactsConfiguration' {} a -> s {compositedVideo = a} :: ArtifactsConfiguration)
+
+-- | The configuration for the audio artifacts.
+artifactsConfiguration_audio :: Lens.Lens' ArtifactsConfiguration AudioArtifactsConfiguration
+artifactsConfiguration_audio = Lens.lens (\ArtifactsConfiguration' {audio} -> audio) (\s@ArtifactsConfiguration' {} a -> s {audio = a} :: ArtifactsConfiguration)
+
+-- | The configuration for the video artifacts.
+artifactsConfiguration_video :: Lens.Lens' ArtifactsConfiguration VideoArtifactsConfiguration
+artifactsConfiguration_video = Lens.lens (\ArtifactsConfiguration' {video} -> video) (\s@ArtifactsConfiguration' {} a -> s {video = a} :: ArtifactsConfiguration)
+
+-- | The configuration for the content artifacts.
+artifactsConfiguration_content :: Lens.Lens' ArtifactsConfiguration ContentArtifactsConfiguration
+artifactsConfiguration_content = Lens.lens (\ArtifactsConfiguration' {content} -> content) (\s@ArtifactsConfiguration' {} a -> s {content = a} :: ArtifactsConfiguration)
+
+instance Data.FromJSON ArtifactsConfiguration where
+  parseJSON =
+    Data.withObject
+      "ArtifactsConfiguration"
+      ( \x ->
+          ArtifactsConfiguration'
+            Prelude.<$> (x Data..:? "CompositedVideo")
+            Prelude.<*> (x Data..: "Audio")
+            Prelude.<*> (x Data..: "Video")
+            Prelude.<*> (x Data..: "Content")
+      )
+
+instance Prelude.Hashable ArtifactsConfiguration where
+  hashWithSalt _salt ArtifactsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` compositedVideo
+      `Prelude.hashWithSalt` audio
+      `Prelude.hashWithSalt` video
+      `Prelude.hashWithSalt` content
+
+instance Prelude.NFData ArtifactsConfiguration where
+  rnf ArtifactsConfiguration' {..} =
+    Prelude.rnf compositedVideo
+      `Prelude.seq` Prelude.rnf audio
+      `Prelude.seq` Prelude.rnf video
+      `Prelude.seq` Prelude.rnf content
+
+instance Data.ToJSON ArtifactsConfiguration where
+  toJSON ArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CompositedVideo" Data..=)
+              Prelude.<$> compositedVideo,
+            Prelude.Just ("Audio" Data..= audio),
+            Prelude.Just ("Video" Data..= video),
+            Prelude.Just ("Content" Data..= content)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsState.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ArtifactsState.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.ChimeSdkMediaPipelines.Types.ArtifactsState
+-- 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.ChimeSdkMediaPipelines.Types.ArtifactsState
+  ( ArtifactsState
+      ( ..,
+        ArtifactsState_Disabled,
+        ArtifactsState_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ArtifactsState = ArtifactsState'
+  { fromArtifactsState ::
+      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 ArtifactsState_Disabled :: ArtifactsState
+pattern ArtifactsState_Disabled = ArtifactsState' "Disabled"
+
+pattern ArtifactsState_Enabled :: ArtifactsState
+pattern ArtifactsState_Enabled = ArtifactsState' "Enabled"
+
+{-# COMPLETE
+  ArtifactsState_Disabled,
+  ArtifactsState_Enabled,
+  ArtifactsState'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioArtifactsConcatenationState.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioArtifactsConcatenationState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioArtifactsConcatenationState.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.ChimeSdkMediaPipelines.Types.AudioArtifactsConcatenationState
+-- 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.ChimeSdkMediaPipelines.Types.AudioArtifactsConcatenationState
+  ( AudioArtifactsConcatenationState
+      ( ..,
+        AudioArtifactsConcatenationState_Enabled
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AudioArtifactsConcatenationState = AudioArtifactsConcatenationState'
+  { fromAudioArtifactsConcatenationState ::
+      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 AudioArtifactsConcatenationState_Enabled :: AudioArtifactsConcatenationState
+pattern AudioArtifactsConcatenationState_Enabled = AudioArtifactsConcatenationState' "Enabled"
+
+{-# COMPLETE
+  AudioArtifactsConcatenationState_Enabled,
+  AudioArtifactsConcatenationState'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioArtifactsConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioArtifactsConfiguration.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.ChimeSdkMediaPipelines.Types.AudioArtifactsConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.AudioArtifactsConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioMuxType
+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 audio artifact configuration object.
+--
+-- /See:/ 'newAudioArtifactsConfiguration' smart constructor.
+data AudioArtifactsConfiguration = AudioArtifactsConfiguration'
+  { -- | The MUX type of the audio artifact configuration object.
+    muxType :: AudioMuxType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'muxType', 'audioArtifactsConfiguration_muxType' - The MUX type of the audio artifact configuration object.
+newAudioArtifactsConfiguration ::
+  -- | 'muxType'
+  AudioMuxType ->
+  AudioArtifactsConfiguration
+newAudioArtifactsConfiguration pMuxType_ =
+  AudioArtifactsConfiguration' {muxType = pMuxType_}
+
+-- | The MUX type of the audio artifact configuration object.
+audioArtifactsConfiguration_muxType :: Lens.Lens' AudioArtifactsConfiguration AudioMuxType
+audioArtifactsConfiguration_muxType = Lens.lens (\AudioArtifactsConfiguration' {muxType} -> muxType) (\s@AudioArtifactsConfiguration' {} a -> s {muxType = a} :: AudioArtifactsConfiguration)
+
+instance Data.FromJSON AudioArtifactsConfiguration where
+  parseJSON =
+    Data.withObject
+      "AudioArtifactsConfiguration"
+      ( \x ->
+          AudioArtifactsConfiguration'
+            Prelude.<$> (x Data..: "MuxType")
+      )
+
+instance Prelude.Hashable AudioArtifactsConfiguration where
+  hashWithSalt _salt AudioArtifactsConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` muxType
+
+instance Prelude.NFData AudioArtifactsConfiguration where
+  rnf AudioArtifactsConfiguration' {..} =
+    Prelude.rnf muxType
+
+instance Data.ToJSON AudioArtifactsConfiguration where
+  toJSON AudioArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("MuxType" Data..= muxType)]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioChannelsOption.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioChannelsOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioChannelsOption.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.ChimeSdkMediaPipelines.Types.AudioChannelsOption
+-- 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.ChimeSdkMediaPipelines.Types.AudioChannelsOption
+  ( AudioChannelsOption
+      ( ..,
+        AudioChannelsOption_Mono,
+        AudioChannelsOption_Stereo
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AudioChannelsOption = AudioChannelsOption'
+  { fromAudioChannelsOption ::
+      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 AudioChannelsOption_Mono :: AudioChannelsOption
+pattern AudioChannelsOption_Mono = AudioChannelsOption' "Mono"
+
+pattern AudioChannelsOption_Stereo :: AudioChannelsOption
+pattern AudioChannelsOption_Stereo = AudioChannelsOption' "Stereo"
+
+{-# COMPLETE
+  AudioChannelsOption_Mono,
+  AudioChannelsOption_Stereo,
+  AudioChannelsOption'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioConcatenationConfiguration.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.ChimeSdkMediaPipelines.Types.AudioConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.AudioConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioArtifactsConcatenationState
+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 audio artifact concatenation configuration object.
+--
+-- /See:/ 'newAudioConcatenationConfiguration' smart constructor.
+data AudioConcatenationConfiguration = AudioConcatenationConfiguration'
+  { -- | Enables the /name/ object, where /name/ is the name of the configuration
+    -- object, such as @AudioConcatenation@.
+    state :: AudioArtifactsConcatenationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AudioConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'state', 'audioConcatenationConfiguration_state' - Enables the /name/ object, where /name/ is the name of the configuration
+-- object, such as @AudioConcatenation@.
+newAudioConcatenationConfiguration ::
+  -- | 'state'
+  AudioArtifactsConcatenationState ->
+  AudioConcatenationConfiguration
+newAudioConcatenationConfiguration pState_ =
+  AudioConcatenationConfiguration' {state = pState_}
+
+-- | Enables the /name/ object, where /name/ is the name of the configuration
+-- object, such as @AudioConcatenation@.
+audioConcatenationConfiguration_state :: Lens.Lens' AudioConcatenationConfiguration AudioArtifactsConcatenationState
+audioConcatenationConfiguration_state = Lens.lens (\AudioConcatenationConfiguration' {state} -> state) (\s@AudioConcatenationConfiguration' {} a -> s {state = a} :: AudioConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    AudioConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "AudioConcatenationConfiguration"
+      ( \x ->
+          AudioConcatenationConfiguration'
+            Prelude.<$> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    AudioConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    AudioConcatenationConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` state
+
+instance
+  Prelude.NFData
+    AudioConcatenationConfiguration
+  where
+  rnf AudioConcatenationConfiguration' {..} =
+    Prelude.rnf state
+
+instance Data.ToJSON AudioConcatenationConfiguration where
+  toJSON AudioConcatenationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("State" Data..= state)]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioMuxType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioMuxType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/AudioMuxType.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.ChimeSdkMediaPipelines.Types.AudioMuxType
+-- 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.ChimeSdkMediaPipelines.Types.AudioMuxType
+  ( AudioMuxType
+      ( ..,
+        AudioMuxType_AudioOnly,
+        AudioMuxType_AudioWithActiveSpeakerVideo,
+        AudioMuxType_AudioWithCompositedVideo
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AudioMuxType = AudioMuxType'
+  { fromAudioMuxType ::
+      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 AudioMuxType_AudioOnly :: AudioMuxType
+pattern AudioMuxType_AudioOnly = AudioMuxType' "AudioOnly"
+
+pattern AudioMuxType_AudioWithActiveSpeakerVideo :: AudioMuxType
+pattern AudioMuxType_AudioWithActiveSpeakerVideo = AudioMuxType' "AudioWithActiveSpeakerVideo"
+
+pattern AudioMuxType_AudioWithCompositedVideo :: AudioMuxType
+pattern AudioMuxType_AudioWithCompositedVideo = AudioMuxType' "AudioWithCompositedVideo"
+
+{-# COMPLETE
+  AudioMuxType_AudioOnly,
+  AudioMuxType_AudioWithActiveSpeakerVideo,
+  AudioMuxType_AudioWithCompositedVideo,
+  AudioMuxType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingConcatenationConfiguration.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.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationConfiguration
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object of the Amazon Chime SDK meeting concatenation
+-- for a specified media pipeline.
+--
+-- /See:/ 'newChimeSdkMeetingConcatenationConfiguration' smart constructor.
+data ChimeSdkMeetingConcatenationConfiguration = ChimeSdkMeetingConcatenationConfiguration'
+  { -- | The configuration for the artifacts in an Amazon Chime SDK meeting
+    -- concatenation.
+    artifactsConfiguration :: ArtifactsConcatenationConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChimeSdkMeetingConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'artifactsConfiguration', 'chimeSdkMeetingConcatenationConfiguration_artifactsConfiguration' - The configuration for the artifacts in an Amazon Chime SDK meeting
+-- concatenation.
+newChimeSdkMeetingConcatenationConfiguration ::
+  -- | 'artifactsConfiguration'
+  ArtifactsConcatenationConfiguration ->
+  ChimeSdkMeetingConcatenationConfiguration
+newChimeSdkMeetingConcatenationConfiguration
+  pArtifactsConfiguration_ =
+    ChimeSdkMeetingConcatenationConfiguration'
+      { artifactsConfiguration =
+          pArtifactsConfiguration_
+      }
+
+-- | The configuration for the artifacts in an Amazon Chime SDK meeting
+-- concatenation.
+chimeSdkMeetingConcatenationConfiguration_artifactsConfiguration :: Lens.Lens' ChimeSdkMeetingConcatenationConfiguration ArtifactsConcatenationConfiguration
+chimeSdkMeetingConcatenationConfiguration_artifactsConfiguration = Lens.lens (\ChimeSdkMeetingConcatenationConfiguration' {artifactsConfiguration} -> artifactsConfiguration) (\s@ChimeSdkMeetingConcatenationConfiguration' {} a -> s {artifactsConfiguration = a} :: ChimeSdkMeetingConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    ChimeSdkMeetingConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ChimeSdkMeetingConcatenationConfiguration"
+      ( \x ->
+          ChimeSdkMeetingConcatenationConfiguration'
+            Prelude.<$> (x Data..: "ArtifactsConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    ChimeSdkMeetingConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    ChimeSdkMeetingConcatenationConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` artifactsConfiguration
+
+instance
+  Prelude.NFData
+    ChimeSdkMeetingConcatenationConfiguration
+  where
+  rnf ChimeSdkMeetingConcatenationConfiguration' {..} =
+    Prelude.rnf artifactsConfiguration
+
+instance
+  Data.ToJSON
+    ChimeSdkMeetingConcatenationConfiguration
+  where
+  toJSON ChimeSdkMeetingConcatenationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "ArtifactsConfiguration"
+                  Data..= artifactsConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingConfiguration.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.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.SourceConfiguration
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object of the Amazon Chime SDK meeting for a specified
+-- media pipeline. @SourceType@ must be @ChimeSdkMeeting@.
+--
+-- /See:/ 'newChimeSdkMeetingConfiguration' smart constructor.
+data ChimeSdkMeetingConfiguration = ChimeSdkMeetingConfiguration'
+  { -- | The configuration for the artifacts in an Amazon Chime SDK meeting.
+    artifactsConfiguration :: Prelude.Maybe ArtifactsConfiguration,
+    -- | The source configuration for a specified media pipline.
+    sourceConfiguration :: Prelude.Maybe SourceConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChimeSdkMeetingConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'artifactsConfiguration', 'chimeSdkMeetingConfiguration_artifactsConfiguration' - The configuration for the artifacts in an Amazon Chime SDK meeting.
+--
+-- 'sourceConfiguration', 'chimeSdkMeetingConfiguration_sourceConfiguration' - The source configuration for a specified media pipline.
+newChimeSdkMeetingConfiguration ::
+  ChimeSdkMeetingConfiguration
+newChimeSdkMeetingConfiguration =
+  ChimeSdkMeetingConfiguration'
+    { artifactsConfiguration =
+        Prelude.Nothing,
+      sourceConfiguration = Prelude.Nothing
+    }
+
+-- | The configuration for the artifacts in an Amazon Chime SDK meeting.
+chimeSdkMeetingConfiguration_artifactsConfiguration :: Lens.Lens' ChimeSdkMeetingConfiguration (Prelude.Maybe ArtifactsConfiguration)
+chimeSdkMeetingConfiguration_artifactsConfiguration = Lens.lens (\ChimeSdkMeetingConfiguration' {artifactsConfiguration} -> artifactsConfiguration) (\s@ChimeSdkMeetingConfiguration' {} a -> s {artifactsConfiguration = a} :: ChimeSdkMeetingConfiguration)
+
+-- | The source configuration for a specified media pipline.
+chimeSdkMeetingConfiguration_sourceConfiguration :: Lens.Lens' ChimeSdkMeetingConfiguration (Prelude.Maybe SourceConfiguration)
+chimeSdkMeetingConfiguration_sourceConfiguration = Lens.lens (\ChimeSdkMeetingConfiguration' {sourceConfiguration} -> sourceConfiguration) (\s@ChimeSdkMeetingConfiguration' {} a -> s {sourceConfiguration = a} :: ChimeSdkMeetingConfiguration)
+
+instance Data.FromJSON ChimeSdkMeetingConfiguration where
+  parseJSON =
+    Data.withObject
+      "ChimeSdkMeetingConfiguration"
+      ( \x ->
+          ChimeSdkMeetingConfiguration'
+            Prelude.<$> (x Data..:? "ArtifactsConfiguration")
+            Prelude.<*> (x Data..:? "SourceConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    ChimeSdkMeetingConfiguration
+  where
+  hashWithSalt _salt ChimeSdkMeetingConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` artifactsConfiguration
+      `Prelude.hashWithSalt` sourceConfiguration
+
+instance Prelude.NFData ChimeSdkMeetingConfiguration where
+  rnf ChimeSdkMeetingConfiguration' {..} =
+    Prelude.rnf artifactsConfiguration
+      `Prelude.seq` Prelude.rnf sourceConfiguration
+
+instance Data.ToJSON ChimeSdkMeetingConfiguration where
+  toJSON ChimeSdkMeetingConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ArtifactsConfiguration" Data..=)
+              Prelude.<$> artifactsConfiguration,
+            ("SourceConfiguration" Data..=)
+              Prelude.<$> sourceConfiguration
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingLiveConnectorConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingLiveConnectorConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ChimeSdkMeetingLiveConnectorConfiguration.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingLiveConnectorConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingLiveConnectorConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.CompositedVideoArtifactsConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorMuxType
+import Amazonka.ChimeSdkMediaPipelines.Types.SourceConfiguration
+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 media pipeline\'s configuration object.
+--
+-- /See:/ 'newChimeSdkMeetingLiveConnectorConfiguration' smart constructor.
+data ChimeSdkMeetingLiveConnectorConfiguration = ChimeSdkMeetingLiveConnectorConfiguration'
+  { -- | The media pipeline\'s composited video.
+    compositedVideo :: Prelude.Maybe CompositedVideoArtifactsConfiguration,
+    -- | The source configuration settings of the media pipeline\'s configuration
+    -- object.
+    sourceConfiguration :: Prelude.Maybe SourceConfiguration,
+    -- | The configuration object\'s Chime SDK meeting ARN.
+    arn :: Data.Sensitive Prelude.Text,
+    -- | The configuration object\'s multiplex type.
+    muxType :: LiveConnectorMuxType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ChimeSdkMeetingLiveConnectorConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'compositedVideo', 'chimeSdkMeetingLiveConnectorConfiguration_compositedVideo' - The media pipeline\'s composited video.
+--
+-- 'sourceConfiguration', 'chimeSdkMeetingLiveConnectorConfiguration_sourceConfiguration' - The source configuration settings of the media pipeline\'s configuration
+-- object.
+--
+-- 'arn', 'chimeSdkMeetingLiveConnectorConfiguration_arn' - The configuration object\'s Chime SDK meeting ARN.
+--
+-- 'muxType', 'chimeSdkMeetingLiveConnectorConfiguration_muxType' - The configuration object\'s multiplex type.
+newChimeSdkMeetingLiveConnectorConfiguration ::
+  -- | 'arn'
+  Prelude.Text ->
+  -- | 'muxType'
+  LiveConnectorMuxType ->
+  ChimeSdkMeetingLiveConnectorConfiguration
+newChimeSdkMeetingLiveConnectorConfiguration
+  pArn_
+  pMuxType_ =
+    ChimeSdkMeetingLiveConnectorConfiguration'
+      { compositedVideo =
+          Prelude.Nothing,
+        sourceConfiguration =
+          Prelude.Nothing,
+        arn =
+          Data._Sensitive Lens.# pArn_,
+        muxType = pMuxType_
+      }
+
+-- | The media pipeline\'s composited video.
+chimeSdkMeetingLiveConnectorConfiguration_compositedVideo :: Lens.Lens' ChimeSdkMeetingLiveConnectorConfiguration (Prelude.Maybe CompositedVideoArtifactsConfiguration)
+chimeSdkMeetingLiveConnectorConfiguration_compositedVideo = Lens.lens (\ChimeSdkMeetingLiveConnectorConfiguration' {compositedVideo} -> compositedVideo) (\s@ChimeSdkMeetingLiveConnectorConfiguration' {} a -> s {compositedVideo = a} :: ChimeSdkMeetingLiveConnectorConfiguration)
+
+-- | The source configuration settings of the media pipeline\'s configuration
+-- object.
+chimeSdkMeetingLiveConnectorConfiguration_sourceConfiguration :: Lens.Lens' ChimeSdkMeetingLiveConnectorConfiguration (Prelude.Maybe SourceConfiguration)
+chimeSdkMeetingLiveConnectorConfiguration_sourceConfiguration = Lens.lens (\ChimeSdkMeetingLiveConnectorConfiguration' {sourceConfiguration} -> sourceConfiguration) (\s@ChimeSdkMeetingLiveConnectorConfiguration' {} a -> s {sourceConfiguration = a} :: ChimeSdkMeetingLiveConnectorConfiguration)
+
+-- | The configuration object\'s Chime SDK meeting ARN.
+chimeSdkMeetingLiveConnectorConfiguration_arn :: Lens.Lens' ChimeSdkMeetingLiveConnectorConfiguration Prelude.Text
+chimeSdkMeetingLiveConnectorConfiguration_arn = Lens.lens (\ChimeSdkMeetingLiveConnectorConfiguration' {arn} -> arn) (\s@ChimeSdkMeetingLiveConnectorConfiguration' {} a -> s {arn = a} :: ChimeSdkMeetingLiveConnectorConfiguration) Prelude.. Data._Sensitive
+
+-- | The configuration object\'s multiplex type.
+chimeSdkMeetingLiveConnectorConfiguration_muxType :: Lens.Lens' ChimeSdkMeetingLiveConnectorConfiguration LiveConnectorMuxType
+chimeSdkMeetingLiveConnectorConfiguration_muxType = Lens.lens (\ChimeSdkMeetingLiveConnectorConfiguration' {muxType} -> muxType) (\s@ChimeSdkMeetingLiveConnectorConfiguration' {} a -> s {muxType = a} :: ChimeSdkMeetingLiveConnectorConfiguration)
+
+instance
+  Data.FromJSON
+    ChimeSdkMeetingLiveConnectorConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ChimeSdkMeetingLiveConnectorConfiguration"
+      ( \x ->
+          ChimeSdkMeetingLiveConnectorConfiguration'
+            Prelude.<$> (x Data..:? "CompositedVideo")
+            Prelude.<*> (x Data..:? "SourceConfiguration")
+            Prelude.<*> (x Data..: "Arn")
+            Prelude.<*> (x Data..: "MuxType")
+      )
+
+instance
+  Prelude.Hashable
+    ChimeSdkMeetingLiveConnectorConfiguration
+  where
+  hashWithSalt
+    _salt
+    ChimeSdkMeetingLiveConnectorConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` compositedVideo
+        `Prelude.hashWithSalt` sourceConfiguration
+        `Prelude.hashWithSalt` arn
+        `Prelude.hashWithSalt` muxType
+
+instance
+  Prelude.NFData
+    ChimeSdkMeetingLiveConnectorConfiguration
+  where
+  rnf ChimeSdkMeetingLiveConnectorConfiguration' {..} =
+    Prelude.rnf compositedVideo
+      `Prelude.seq` Prelude.rnf sourceConfiguration
+      `Prelude.seq` Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf muxType
+
+instance
+  Data.ToJSON
+    ChimeSdkMeetingLiveConnectorConfiguration
+  where
+  toJSON ChimeSdkMeetingLiveConnectorConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CompositedVideo" Data..=)
+              Prelude.<$> compositedVideo,
+            ("SourceConfiguration" Data..=)
+              Prelude.<$> sourceConfiguration,
+            Prelude.Just ("Arn" Data..= arn),
+            Prelude.Just ("MuxType" Data..= muxType)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/CompositedVideoArtifactsConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/CompositedVideoArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/CompositedVideoArtifactsConfiguration.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.ChimeSdkMediaPipelines.Types.CompositedVideoArtifactsConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.CompositedVideoArtifactsConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.GridViewConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LayoutOption
+import Amazonka.ChimeSdkMediaPipelines.Types.ResolutionOption
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Describes the configuration for the composited video artifacts.
+--
+-- /See:/ 'newCompositedVideoArtifactsConfiguration' smart constructor.
+data CompositedVideoArtifactsConfiguration = CompositedVideoArtifactsConfiguration'
+  { -- | The layout setting, such as @GridView@ in the configuration object.
+    layout :: Prelude.Maybe LayoutOption,
+    -- | The video resolution setting in the configuration object. Default: HD at
+    -- 1280 x 720. FHD resolution: 1920 x 1080.
+    resolution :: Prelude.Maybe ResolutionOption,
+    -- | The @GridView@ configuration setting.
+    gridViewConfiguration :: GridViewConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CompositedVideoArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'layout', 'compositedVideoArtifactsConfiguration_layout' - The layout setting, such as @GridView@ in the configuration object.
+--
+-- 'resolution', 'compositedVideoArtifactsConfiguration_resolution' - The video resolution setting in the configuration object. Default: HD at
+-- 1280 x 720. FHD resolution: 1920 x 1080.
+--
+-- 'gridViewConfiguration', 'compositedVideoArtifactsConfiguration_gridViewConfiguration' - The @GridView@ configuration setting.
+newCompositedVideoArtifactsConfiguration ::
+  -- | 'gridViewConfiguration'
+  GridViewConfiguration ->
+  CompositedVideoArtifactsConfiguration
+newCompositedVideoArtifactsConfiguration
+  pGridViewConfiguration_ =
+    CompositedVideoArtifactsConfiguration'
+      { layout =
+          Prelude.Nothing,
+        resolution = Prelude.Nothing,
+        gridViewConfiguration =
+          pGridViewConfiguration_
+      }
+
+-- | The layout setting, such as @GridView@ in the configuration object.
+compositedVideoArtifactsConfiguration_layout :: Lens.Lens' CompositedVideoArtifactsConfiguration (Prelude.Maybe LayoutOption)
+compositedVideoArtifactsConfiguration_layout = Lens.lens (\CompositedVideoArtifactsConfiguration' {layout} -> layout) (\s@CompositedVideoArtifactsConfiguration' {} a -> s {layout = a} :: CompositedVideoArtifactsConfiguration)
+
+-- | The video resolution setting in the configuration object. Default: HD at
+-- 1280 x 720. FHD resolution: 1920 x 1080.
+compositedVideoArtifactsConfiguration_resolution :: Lens.Lens' CompositedVideoArtifactsConfiguration (Prelude.Maybe ResolutionOption)
+compositedVideoArtifactsConfiguration_resolution = Lens.lens (\CompositedVideoArtifactsConfiguration' {resolution} -> resolution) (\s@CompositedVideoArtifactsConfiguration' {} a -> s {resolution = a} :: CompositedVideoArtifactsConfiguration)
+
+-- | The @GridView@ configuration setting.
+compositedVideoArtifactsConfiguration_gridViewConfiguration :: Lens.Lens' CompositedVideoArtifactsConfiguration GridViewConfiguration
+compositedVideoArtifactsConfiguration_gridViewConfiguration = Lens.lens (\CompositedVideoArtifactsConfiguration' {gridViewConfiguration} -> gridViewConfiguration) (\s@CompositedVideoArtifactsConfiguration' {} a -> s {gridViewConfiguration = a} :: CompositedVideoArtifactsConfiguration)
+
+instance
+  Data.FromJSON
+    CompositedVideoArtifactsConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "CompositedVideoArtifactsConfiguration"
+      ( \x ->
+          CompositedVideoArtifactsConfiguration'
+            Prelude.<$> (x Data..:? "Layout")
+            Prelude.<*> (x Data..:? "Resolution")
+            Prelude.<*> (x Data..: "GridViewConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    CompositedVideoArtifactsConfiguration
+  where
+  hashWithSalt
+    _salt
+    CompositedVideoArtifactsConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` layout
+        `Prelude.hashWithSalt` resolution
+        `Prelude.hashWithSalt` gridViewConfiguration
+
+instance
+  Prelude.NFData
+    CompositedVideoArtifactsConfiguration
+  where
+  rnf CompositedVideoArtifactsConfiguration' {..} =
+    Prelude.rnf layout
+      `Prelude.seq` Prelude.rnf resolution
+      `Prelude.seq` Prelude.rnf gridViewConfiguration
+
+instance
+  Data.ToJSON
+    CompositedVideoArtifactsConfiguration
+  where
+  toJSON CompositedVideoArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Layout" Data..=) Prelude.<$> layout,
+            ("Resolution" Data..=) Prelude.<$> resolution,
+            Prelude.Just
+              ( "GridViewConfiguration"
+                  Data..= gridViewConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/CompositedVideoConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/CompositedVideoConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/CompositedVideoConcatenationConfiguration.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.ChimeSdkMediaPipelines.Types.CompositedVideoConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.CompositedVideoConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+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 composited video configuration object for a specified media
+-- pipeline. @SourceType@ must be @ChimeSdkMeeting@.
+--
+-- /See:/ 'newCompositedVideoConcatenationConfiguration' smart constructor.
+data CompositedVideoConcatenationConfiguration = CompositedVideoConcatenationConfiguration'
+  { -- | Enables or disables the configuration object.
+    state :: ArtifactsConcatenationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CompositedVideoConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'state', 'compositedVideoConcatenationConfiguration_state' - Enables or disables the configuration object.
+newCompositedVideoConcatenationConfiguration ::
+  -- | 'state'
+  ArtifactsConcatenationState ->
+  CompositedVideoConcatenationConfiguration
+newCompositedVideoConcatenationConfiguration pState_ =
+  CompositedVideoConcatenationConfiguration'
+    { state =
+        pState_
+    }
+
+-- | Enables or disables the configuration object.
+compositedVideoConcatenationConfiguration_state :: Lens.Lens' CompositedVideoConcatenationConfiguration ArtifactsConcatenationState
+compositedVideoConcatenationConfiguration_state = Lens.lens (\CompositedVideoConcatenationConfiguration' {state} -> state) (\s@CompositedVideoConcatenationConfiguration' {} a -> s {state = a} :: CompositedVideoConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    CompositedVideoConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "CompositedVideoConcatenationConfiguration"
+      ( \x ->
+          CompositedVideoConcatenationConfiguration'
+            Prelude.<$> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    CompositedVideoConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    CompositedVideoConcatenationConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` state
+
+instance
+  Prelude.NFData
+    CompositedVideoConcatenationConfiguration
+  where
+  rnf CompositedVideoConcatenationConfiguration' {..} =
+    Prelude.rnf state
+
+instance
+  Data.ToJSON
+    CompositedVideoConcatenationConfiguration
+  where
+  toJSON CompositedVideoConcatenationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("State" Data..= state)]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSink.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSink.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSink.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.ChimeSdkMediaPipelines.Types.ConcatenationSink
+-- 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.ChimeSdkMediaPipelines.Types.ConcatenationSink where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSinkType
+import Amazonka.ChimeSdkMediaPipelines.Types.S3BucketSinkConfiguration
+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 data sink of the configuration object.
+--
+-- /See:/ 'newConcatenationSink' smart constructor.
+data ConcatenationSink = ConcatenationSink'
+  { -- | The type of data sink in the configuration object.
+    type' :: ConcatenationSinkType,
+    -- | The configuration settings for an Amazon S3 bucket sink.
+    s3BucketSinkConfiguration :: S3BucketSinkConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConcatenationSink' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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'', 'concatenationSink_type' - The type of data sink in the configuration object.
+--
+-- 's3BucketSinkConfiguration', 'concatenationSink_s3BucketSinkConfiguration' - The configuration settings for an Amazon S3 bucket sink.
+newConcatenationSink ::
+  -- | 'type''
+  ConcatenationSinkType ->
+  -- | 's3BucketSinkConfiguration'
+  S3BucketSinkConfiguration ->
+  ConcatenationSink
+newConcatenationSink
+  pType_
+  pS3BucketSinkConfiguration_ =
+    ConcatenationSink'
+      { type' = pType_,
+        s3BucketSinkConfiguration =
+          pS3BucketSinkConfiguration_
+      }
+
+-- | The type of data sink in the configuration object.
+concatenationSink_type :: Lens.Lens' ConcatenationSink ConcatenationSinkType
+concatenationSink_type = Lens.lens (\ConcatenationSink' {type'} -> type') (\s@ConcatenationSink' {} a -> s {type' = a} :: ConcatenationSink)
+
+-- | The configuration settings for an Amazon S3 bucket sink.
+concatenationSink_s3BucketSinkConfiguration :: Lens.Lens' ConcatenationSink S3BucketSinkConfiguration
+concatenationSink_s3BucketSinkConfiguration = Lens.lens (\ConcatenationSink' {s3BucketSinkConfiguration} -> s3BucketSinkConfiguration) (\s@ConcatenationSink' {} a -> s {s3BucketSinkConfiguration = a} :: ConcatenationSink)
+
+instance Data.FromJSON ConcatenationSink where
+  parseJSON =
+    Data.withObject
+      "ConcatenationSink"
+      ( \x ->
+          ConcatenationSink'
+            Prelude.<$> (x Data..: "Type")
+            Prelude.<*> (x Data..: "S3BucketSinkConfiguration")
+      )
+
+instance Prelude.Hashable ConcatenationSink where
+  hashWithSalt _salt ConcatenationSink' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` s3BucketSinkConfiguration
+
+instance Prelude.NFData ConcatenationSink where
+  rnf ConcatenationSink' {..} =
+    Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf s3BucketSinkConfiguration
+
+instance Data.ToJSON ConcatenationSink where
+  toJSON ConcatenationSink' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Type" Data..= type'),
+            Prelude.Just
+              ( "S3BucketSinkConfiguration"
+                  Data..= s3BucketSinkConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSinkType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSinkType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSinkType.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.ChimeSdkMediaPipelines.Types.ConcatenationSinkType
+-- 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.ChimeSdkMediaPipelines.Types.ConcatenationSinkType
+  ( ConcatenationSinkType
+      ( ..,
+        ConcatenationSinkType_S3Bucket
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConcatenationSinkType = ConcatenationSinkType'
+  { fromConcatenationSinkType ::
+      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 ConcatenationSinkType_S3Bucket :: ConcatenationSinkType
+pattern ConcatenationSinkType_S3Bucket = ConcatenationSinkType' "S3Bucket"
+
+{-# COMPLETE
+  ConcatenationSinkType_S3Bucket,
+  ConcatenationSinkType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSource.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSource.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.ChimeSdkMediaPipelines.Types.ConcatenationSource
+-- 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.ChimeSdkMediaPipelines.Types.ConcatenationSource where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSourceType
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSourceConfiguration
+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 source type and media pipeline configuration settings in a
+-- configuration object.
+--
+-- /See:/ 'newConcatenationSource' smart constructor.
+data ConcatenationSource = ConcatenationSource'
+  { -- | The type of concatenation source in a configuration object.
+    type' :: ConcatenationSourceType,
+    -- | The concatenation settings for the media pipeline in a configuration
+    -- object.
+    mediaCapturePipelineSourceConfiguration :: MediaCapturePipelineSourceConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConcatenationSource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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'', 'concatenationSource_type' - The type of concatenation source in a configuration object.
+--
+-- 'mediaCapturePipelineSourceConfiguration', 'concatenationSource_mediaCapturePipelineSourceConfiguration' - The concatenation settings for the media pipeline in a configuration
+-- object.
+newConcatenationSource ::
+  -- | 'type''
+  ConcatenationSourceType ->
+  -- | 'mediaCapturePipelineSourceConfiguration'
+  MediaCapturePipelineSourceConfiguration ->
+  ConcatenationSource
+newConcatenationSource
+  pType_
+  pMediaCapturePipelineSourceConfiguration_ =
+    ConcatenationSource'
+      { type' = pType_,
+        mediaCapturePipelineSourceConfiguration =
+          pMediaCapturePipelineSourceConfiguration_
+      }
+
+-- | The type of concatenation source in a configuration object.
+concatenationSource_type :: Lens.Lens' ConcatenationSource ConcatenationSourceType
+concatenationSource_type = Lens.lens (\ConcatenationSource' {type'} -> type') (\s@ConcatenationSource' {} a -> s {type' = a} :: ConcatenationSource)
+
+-- | The concatenation settings for the media pipeline in a configuration
+-- object.
+concatenationSource_mediaCapturePipelineSourceConfiguration :: Lens.Lens' ConcatenationSource MediaCapturePipelineSourceConfiguration
+concatenationSource_mediaCapturePipelineSourceConfiguration = Lens.lens (\ConcatenationSource' {mediaCapturePipelineSourceConfiguration} -> mediaCapturePipelineSourceConfiguration) (\s@ConcatenationSource' {} a -> s {mediaCapturePipelineSourceConfiguration = a} :: ConcatenationSource)
+
+instance Data.FromJSON ConcatenationSource where
+  parseJSON =
+    Data.withObject
+      "ConcatenationSource"
+      ( \x ->
+          ConcatenationSource'
+            Prelude.<$> (x Data..: "Type")
+            Prelude.<*> ( x
+                            Data..: "MediaCapturePipelineSourceConfiguration"
+                        )
+      )
+
+instance Prelude.Hashable ConcatenationSource where
+  hashWithSalt _salt ConcatenationSource' {..} =
+    _salt
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` mediaCapturePipelineSourceConfiguration
+
+instance Prelude.NFData ConcatenationSource where
+  rnf ConcatenationSource' {..} =
+    Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf mediaCapturePipelineSourceConfiguration
+
+instance Data.ToJSON ConcatenationSource where
+  toJSON ConcatenationSource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Type" Data..= type'),
+            Prelude.Just
+              ( "MediaCapturePipelineSourceConfiguration"
+                  Data..= mediaCapturePipelineSourceConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSourceType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ConcatenationSourceType.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.ChimeSdkMediaPipelines.Types.ConcatenationSourceType
+-- 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.ChimeSdkMediaPipelines.Types.ConcatenationSourceType
+  ( ConcatenationSourceType
+      ( ..,
+        ConcatenationSourceType_MediaCapturePipeline
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConcatenationSourceType = ConcatenationSourceType'
+  { fromConcatenationSourceType ::
+      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 ConcatenationSourceType_MediaCapturePipeline :: ConcatenationSourceType
+pattern ConcatenationSourceType_MediaCapturePipeline = ConcatenationSourceType' "MediaCapturePipeline"
+
+{-# COMPLETE
+  ConcatenationSourceType_MediaCapturePipeline,
+  ConcatenationSourceType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentArtifactsConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentArtifactsConfiguration.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.ChimeSdkMediaPipelines.Types.ContentArtifactsConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.ContentArtifactsConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsState
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentMuxType
+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 content artifact object.
+--
+-- /See:/ 'newContentArtifactsConfiguration' smart constructor.
+data ContentArtifactsConfiguration = ContentArtifactsConfiguration'
+  { -- | The MUX type of the artifact configuration.
+    muxType :: Prelude.Maybe ContentMuxType,
+    -- | Indicates whether the content artifact is enabled or disabled.
+    state :: ArtifactsState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContentArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'muxType', 'contentArtifactsConfiguration_muxType' - The MUX type of the artifact configuration.
+--
+-- 'state', 'contentArtifactsConfiguration_state' - Indicates whether the content artifact is enabled or disabled.
+newContentArtifactsConfiguration ::
+  -- | 'state'
+  ArtifactsState ->
+  ContentArtifactsConfiguration
+newContentArtifactsConfiguration pState_ =
+  ContentArtifactsConfiguration'
+    { muxType =
+        Prelude.Nothing,
+      state = pState_
+    }
+
+-- | The MUX type of the artifact configuration.
+contentArtifactsConfiguration_muxType :: Lens.Lens' ContentArtifactsConfiguration (Prelude.Maybe ContentMuxType)
+contentArtifactsConfiguration_muxType = Lens.lens (\ContentArtifactsConfiguration' {muxType} -> muxType) (\s@ContentArtifactsConfiguration' {} a -> s {muxType = a} :: ContentArtifactsConfiguration)
+
+-- | Indicates whether the content artifact is enabled or disabled.
+contentArtifactsConfiguration_state :: Lens.Lens' ContentArtifactsConfiguration ArtifactsState
+contentArtifactsConfiguration_state = Lens.lens (\ContentArtifactsConfiguration' {state} -> state) (\s@ContentArtifactsConfiguration' {} a -> s {state = a} :: ContentArtifactsConfiguration)
+
+instance Data.FromJSON ContentArtifactsConfiguration where
+  parseJSON =
+    Data.withObject
+      "ContentArtifactsConfiguration"
+      ( \x ->
+          ContentArtifactsConfiguration'
+            Prelude.<$> (x Data..:? "MuxType")
+            Prelude.<*> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    ContentArtifactsConfiguration
+  where
+  hashWithSalt _salt ContentArtifactsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` muxType
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData ContentArtifactsConfiguration where
+  rnf ContentArtifactsConfiguration' {..} =
+    Prelude.rnf muxType `Prelude.seq` Prelude.rnf state
+
+instance Data.ToJSON ContentArtifactsConfiguration where
+  toJSON ContentArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MuxType" Data..=) Prelude.<$> muxType,
+            Prelude.Just ("State" Data..= state)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentConcatenationConfiguration.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.Types.ContentConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.ContentConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+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 composited content configuration object for a specified media
+-- pipeline.
+--
+-- /See:/ 'newContentConcatenationConfiguration' smart constructor.
+data ContentConcatenationConfiguration = ContentConcatenationConfiguration'
+  { -- | Enables or disables the configuration object.
+    state :: ArtifactsConcatenationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContentConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'state', 'contentConcatenationConfiguration_state' - Enables or disables the configuration object.
+newContentConcatenationConfiguration ::
+  -- | 'state'
+  ArtifactsConcatenationState ->
+  ContentConcatenationConfiguration
+newContentConcatenationConfiguration pState_ =
+  ContentConcatenationConfiguration' {state = pState_}
+
+-- | Enables or disables the configuration object.
+contentConcatenationConfiguration_state :: Lens.Lens' ContentConcatenationConfiguration ArtifactsConcatenationState
+contentConcatenationConfiguration_state = Lens.lens (\ContentConcatenationConfiguration' {state} -> state) (\s@ContentConcatenationConfiguration' {} a -> s {state = a} :: ContentConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    ContentConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "ContentConcatenationConfiguration"
+      ( \x ->
+          ContentConcatenationConfiguration'
+            Prelude.<$> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    ContentConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    ContentConcatenationConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` state
+
+instance
+  Prelude.NFData
+    ContentConcatenationConfiguration
+  where
+  rnf ContentConcatenationConfiguration' {..} =
+    Prelude.rnf state
+
+instance
+  Data.ToJSON
+    ContentConcatenationConfiguration
+  where
+  toJSON ContentConcatenationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("State" Data..= state)]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentMuxType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentMuxType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentMuxType.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.ChimeSdkMediaPipelines.Types.ContentMuxType
+-- 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.ChimeSdkMediaPipelines.Types.ContentMuxType
+  ( ContentMuxType
+      ( ..,
+        ContentMuxType_ContentOnly
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ContentMuxType = ContentMuxType'
+  { fromContentMuxType ::
+      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 ContentMuxType_ContentOnly :: ContentMuxType
+pattern ContentMuxType_ContentOnly = ContentMuxType' "ContentOnly"
+
+{-# COMPLETE
+  ContentMuxType_ContentOnly,
+  ContentMuxType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentShareLayoutOption.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentShareLayoutOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ContentShareLayoutOption.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.ChimeSdkMediaPipelines.Types.ContentShareLayoutOption
+-- 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.ChimeSdkMediaPipelines.Types.ContentShareLayoutOption
+  ( ContentShareLayoutOption
+      ( ..,
+        ContentShareLayoutOption_Horizontal,
+        ContentShareLayoutOption_PresenterOnly,
+        ContentShareLayoutOption_Vertical
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ContentShareLayoutOption = ContentShareLayoutOption'
+  { fromContentShareLayoutOption ::
+      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 ContentShareLayoutOption_Horizontal :: ContentShareLayoutOption
+pattern ContentShareLayoutOption_Horizontal = ContentShareLayoutOption' "Horizontal"
+
+pattern ContentShareLayoutOption_PresenterOnly :: ContentShareLayoutOption
+pattern ContentShareLayoutOption_PresenterOnly = ContentShareLayoutOption' "PresenterOnly"
+
+pattern ContentShareLayoutOption_Vertical :: ContentShareLayoutOption
+pattern ContentShareLayoutOption_Vertical = ContentShareLayoutOption' "Vertical"
+
+{-# COMPLETE
+  ContentShareLayoutOption_Horizontal,
+  ContentShareLayoutOption_PresenterOnly,
+  ContentShareLayoutOption_Vertical,
+  ContentShareLayoutOption'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/DataChannelConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/DataChannelConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/DataChannelConcatenationConfiguration.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.ChimeSdkMediaPipelines.Types.DataChannelConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.DataChannelConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+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 content configuration object\'s data channel.
+--
+-- /See:/ 'newDataChannelConcatenationConfiguration' smart constructor.
+data DataChannelConcatenationConfiguration = DataChannelConcatenationConfiguration'
+  { -- | Enables or disables the configuration object.
+    state :: ArtifactsConcatenationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DataChannelConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'state', 'dataChannelConcatenationConfiguration_state' - Enables or disables the configuration object.
+newDataChannelConcatenationConfiguration ::
+  -- | 'state'
+  ArtifactsConcatenationState ->
+  DataChannelConcatenationConfiguration
+newDataChannelConcatenationConfiguration pState_ =
+  DataChannelConcatenationConfiguration'
+    { state =
+        pState_
+    }
+
+-- | Enables or disables the configuration object.
+dataChannelConcatenationConfiguration_state :: Lens.Lens' DataChannelConcatenationConfiguration ArtifactsConcatenationState
+dataChannelConcatenationConfiguration_state = Lens.lens (\DataChannelConcatenationConfiguration' {state} -> state) (\s@DataChannelConcatenationConfiguration' {} a -> s {state = a} :: DataChannelConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    DataChannelConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "DataChannelConcatenationConfiguration"
+      ( \x ->
+          DataChannelConcatenationConfiguration'
+            Prelude.<$> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    DataChannelConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    DataChannelConcatenationConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` state
+
+instance
+  Prelude.NFData
+    DataChannelConcatenationConfiguration
+  where
+  rnf DataChannelConcatenationConfiguration' {..} =
+    Prelude.rnf state
+
+instance
+  Data.ToJSON
+    DataChannelConcatenationConfiguration
+  where
+  toJSON DataChannelConcatenationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("State" Data..= state)]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/GridViewConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/GridViewConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/GridViewConfiguration.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.ChimeSdkMediaPipelines.Types.GridViewConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.GridViewConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ContentShareLayoutOption
+import Amazonka.ChimeSdkMediaPipelines.Types.PresenterOnlyConfiguration
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Specifies the type of grid layout.
+--
+-- /See:/ 'newGridViewConfiguration' smart constructor.
+data GridViewConfiguration = GridViewConfiguration'
+  { -- | Defines the configuration options for a presenter only video tile.
+    presenterOnlyConfiguration :: Prelude.Maybe PresenterOnlyConfiguration,
+    -- | Defines the layout of the video tiles when content sharing is enabled.
+    contentShareLayout :: ContentShareLayoutOption
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GridViewConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'presenterOnlyConfiguration', 'gridViewConfiguration_presenterOnlyConfiguration' - Defines the configuration options for a presenter only video tile.
+--
+-- 'contentShareLayout', 'gridViewConfiguration_contentShareLayout' - Defines the layout of the video tiles when content sharing is enabled.
+newGridViewConfiguration ::
+  -- | 'contentShareLayout'
+  ContentShareLayoutOption ->
+  GridViewConfiguration
+newGridViewConfiguration pContentShareLayout_ =
+  GridViewConfiguration'
+    { presenterOnlyConfiguration =
+        Prelude.Nothing,
+      contentShareLayout = pContentShareLayout_
+    }
+
+-- | Defines the configuration options for a presenter only video tile.
+gridViewConfiguration_presenterOnlyConfiguration :: Lens.Lens' GridViewConfiguration (Prelude.Maybe PresenterOnlyConfiguration)
+gridViewConfiguration_presenterOnlyConfiguration = Lens.lens (\GridViewConfiguration' {presenterOnlyConfiguration} -> presenterOnlyConfiguration) (\s@GridViewConfiguration' {} a -> s {presenterOnlyConfiguration = a} :: GridViewConfiguration)
+
+-- | Defines the layout of the video tiles when content sharing is enabled.
+gridViewConfiguration_contentShareLayout :: Lens.Lens' GridViewConfiguration ContentShareLayoutOption
+gridViewConfiguration_contentShareLayout = Lens.lens (\GridViewConfiguration' {contentShareLayout} -> contentShareLayout) (\s@GridViewConfiguration' {} a -> s {contentShareLayout = a} :: GridViewConfiguration)
+
+instance Data.FromJSON GridViewConfiguration where
+  parseJSON =
+    Data.withObject
+      "GridViewConfiguration"
+      ( \x ->
+          GridViewConfiguration'
+            Prelude.<$> (x Data..:? "PresenterOnlyConfiguration")
+            Prelude.<*> (x Data..: "ContentShareLayout")
+      )
+
+instance Prelude.Hashable GridViewConfiguration where
+  hashWithSalt _salt GridViewConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` presenterOnlyConfiguration
+      `Prelude.hashWithSalt` contentShareLayout
+
+instance Prelude.NFData GridViewConfiguration where
+  rnf GridViewConfiguration' {..} =
+    Prelude.rnf presenterOnlyConfiguration
+      `Prelude.seq` Prelude.rnf contentShareLayout
+
+instance Data.ToJSON GridViewConfiguration where
+  toJSON GridViewConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PresenterOnlyConfiguration" Data..=)
+              Prelude.<$> presenterOnlyConfiguration,
+            Prelude.Just
+              ("ContentShareLayout" Data..= contentShareLayout)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/LayoutOption.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LayoutOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LayoutOption.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.ChimeSdkMediaPipelines.Types.LayoutOption
+-- 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.ChimeSdkMediaPipelines.Types.LayoutOption
+  ( LayoutOption
+      ( ..,
+        LayoutOption_GridView
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LayoutOption = LayoutOption'
+  { fromLayoutOption ::
+      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 LayoutOption_GridView :: LayoutOption
+pattern LayoutOption_GridView = LayoutOption' "GridView"
+
+{-# COMPLETE
+  LayoutOption_GridView,
+  LayoutOption'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorMuxType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorMuxType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorMuxType.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.ChimeSdkMediaPipelines.Types.LiveConnectorMuxType
+-- 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.ChimeSdkMediaPipelines.Types.LiveConnectorMuxType
+  ( LiveConnectorMuxType
+      ( ..,
+        LiveConnectorMuxType_AudioWithActiveSpeakerVideo,
+        LiveConnectorMuxType_AudioWithCompositedVideo
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LiveConnectorMuxType = LiveConnectorMuxType'
+  { fromLiveConnectorMuxType ::
+      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 LiveConnectorMuxType_AudioWithActiveSpeakerVideo :: LiveConnectorMuxType
+pattern LiveConnectorMuxType_AudioWithActiveSpeakerVideo = LiveConnectorMuxType' "AudioWithActiveSpeakerVideo"
+
+pattern LiveConnectorMuxType_AudioWithCompositedVideo :: LiveConnectorMuxType
+pattern LiveConnectorMuxType_AudioWithCompositedVideo = LiveConnectorMuxType' "AudioWithCompositedVideo"
+
+{-# COMPLETE
+  LiveConnectorMuxType_AudioWithActiveSpeakerVideo,
+  LiveConnectorMuxType_AudioWithCompositedVideo,
+  LiveConnectorMuxType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorRTMPConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorRTMPConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorRTMPConfiguration.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.ChimeSdkMediaPipelines.Types.LiveConnectorRTMPConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.LiveConnectorRTMPConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.AudioChannelsOption
+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 media pipeline\'s RTMP configuration object.
+--
+-- /See:/ 'newLiveConnectorRTMPConfiguration' smart constructor.
+data LiveConnectorRTMPConfiguration = LiveConnectorRTMPConfiguration'
+  { -- | The audio channels set for the RTMP configuration
+    audioChannels :: Prelude.Maybe AudioChannelsOption,
+    -- | The audio sample rate set for the RTMP configuration. Default: 48000.
+    audioSampleRate :: Prelude.Maybe Prelude.Text,
+    -- | The URL of the RTMP configuration.
+    url :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LiveConnectorRTMPConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'audioChannels', 'liveConnectorRTMPConfiguration_audioChannels' - The audio channels set for the RTMP configuration
+--
+-- 'audioSampleRate', 'liveConnectorRTMPConfiguration_audioSampleRate' - The audio sample rate set for the RTMP configuration. Default: 48000.
+--
+-- 'url', 'liveConnectorRTMPConfiguration_url' - The URL of the RTMP configuration.
+newLiveConnectorRTMPConfiguration ::
+  -- | 'url'
+  Prelude.Text ->
+  LiveConnectorRTMPConfiguration
+newLiveConnectorRTMPConfiguration pUrl_ =
+  LiveConnectorRTMPConfiguration'
+    { audioChannels =
+        Prelude.Nothing,
+      audioSampleRate = Prelude.Nothing,
+      url = Data._Sensitive Lens.# pUrl_
+    }
+
+-- | The audio channels set for the RTMP configuration
+liveConnectorRTMPConfiguration_audioChannels :: Lens.Lens' LiveConnectorRTMPConfiguration (Prelude.Maybe AudioChannelsOption)
+liveConnectorRTMPConfiguration_audioChannels = Lens.lens (\LiveConnectorRTMPConfiguration' {audioChannels} -> audioChannels) (\s@LiveConnectorRTMPConfiguration' {} a -> s {audioChannels = a} :: LiveConnectorRTMPConfiguration)
+
+-- | The audio sample rate set for the RTMP configuration. Default: 48000.
+liveConnectorRTMPConfiguration_audioSampleRate :: Lens.Lens' LiveConnectorRTMPConfiguration (Prelude.Maybe Prelude.Text)
+liveConnectorRTMPConfiguration_audioSampleRate = Lens.lens (\LiveConnectorRTMPConfiguration' {audioSampleRate} -> audioSampleRate) (\s@LiveConnectorRTMPConfiguration' {} a -> s {audioSampleRate = a} :: LiveConnectorRTMPConfiguration)
+
+-- | The URL of the RTMP configuration.
+liveConnectorRTMPConfiguration_url :: Lens.Lens' LiveConnectorRTMPConfiguration Prelude.Text
+liveConnectorRTMPConfiguration_url = Lens.lens (\LiveConnectorRTMPConfiguration' {url} -> url) (\s@LiveConnectorRTMPConfiguration' {} a -> s {url = a} :: LiveConnectorRTMPConfiguration) Prelude.. Data._Sensitive
+
+instance Data.FromJSON LiveConnectorRTMPConfiguration where
+  parseJSON =
+    Data.withObject
+      "LiveConnectorRTMPConfiguration"
+      ( \x ->
+          LiveConnectorRTMPConfiguration'
+            Prelude.<$> (x Data..:? "AudioChannels")
+            Prelude.<*> (x Data..:? "AudioSampleRate")
+            Prelude.<*> (x Data..: "Url")
+      )
+
+instance
+  Prelude.Hashable
+    LiveConnectorRTMPConfiguration
+  where
+  hashWithSalt
+    _salt
+    LiveConnectorRTMPConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` audioChannels
+        `Prelude.hashWithSalt` audioSampleRate
+        `Prelude.hashWithSalt` url
+
+instance
+  Prelude.NFData
+    LiveConnectorRTMPConfiguration
+  where
+  rnf LiveConnectorRTMPConfiguration' {..} =
+    Prelude.rnf audioChannels
+      `Prelude.seq` Prelude.rnf audioSampleRate
+      `Prelude.seq` Prelude.rnf url
+
+instance Data.ToJSON LiveConnectorRTMPConfiguration where
+  toJSON LiveConnectorRTMPConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AudioChannels" Data..=) Prelude.<$> audioChannels,
+            ("AudioSampleRate" Data..=)
+              Prelude.<$> audioSampleRate,
+            Prelude.Just ("Url" Data..= url)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSinkConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSinkConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSinkConfiguration.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.ChimeSdkMediaPipelines.Types.LiveConnectorSinkConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.LiveConnectorSinkConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorRTMPConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSinkType
+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 media pipeline\'s sink configuration settings.
+--
+-- /See:/ 'newLiveConnectorSinkConfiguration' smart constructor.
+data LiveConnectorSinkConfiguration = LiveConnectorSinkConfiguration'
+  { -- | The sink configuration\'s sink type.
+    sinkType :: LiveConnectorSinkType,
+    -- | The sink configuration\'s RTMP configuration setttings.
+    rTMPConfiguration :: LiveConnectorRTMPConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LiveConnectorSinkConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sinkType', 'liveConnectorSinkConfiguration_sinkType' - The sink configuration\'s sink type.
+--
+-- 'rTMPConfiguration', 'liveConnectorSinkConfiguration_rTMPConfiguration' - The sink configuration\'s RTMP configuration setttings.
+newLiveConnectorSinkConfiguration ::
+  -- | 'sinkType'
+  LiveConnectorSinkType ->
+  -- | 'rTMPConfiguration'
+  LiveConnectorRTMPConfiguration ->
+  LiveConnectorSinkConfiguration
+newLiveConnectorSinkConfiguration
+  pSinkType_
+  pRTMPConfiguration_ =
+    LiveConnectorSinkConfiguration'
+      { sinkType =
+          pSinkType_,
+        rTMPConfiguration = pRTMPConfiguration_
+      }
+
+-- | The sink configuration\'s sink type.
+liveConnectorSinkConfiguration_sinkType :: Lens.Lens' LiveConnectorSinkConfiguration LiveConnectorSinkType
+liveConnectorSinkConfiguration_sinkType = Lens.lens (\LiveConnectorSinkConfiguration' {sinkType} -> sinkType) (\s@LiveConnectorSinkConfiguration' {} a -> s {sinkType = a} :: LiveConnectorSinkConfiguration)
+
+-- | The sink configuration\'s RTMP configuration setttings.
+liveConnectorSinkConfiguration_rTMPConfiguration :: Lens.Lens' LiveConnectorSinkConfiguration LiveConnectorRTMPConfiguration
+liveConnectorSinkConfiguration_rTMPConfiguration = Lens.lens (\LiveConnectorSinkConfiguration' {rTMPConfiguration} -> rTMPConfiguration) (\s@LiveConnectorSinkConfiguration' {} a -> s {rTMPConfiguration = a} :: LiveConnectorSinkConfiguration)
+
+instance Data.FromJSON LiveConnectorSinkConfiguration where
+  parseJSON =
+    Data.withObject
+      "LiveConnectorSinkConfiguration"
+      ( \x ->
+          LiveConnectorSinkConfiguration'
+            Prelude.<$> (x Data..: "SinkType")
+            Prelude.<*> (x Data..: "RTMPConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    LiveConnectorSinkConfiguration
+  where
+  hashWithSalt
+    _salt
+    LiveConnectorSinkConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` sinkType
+        `Prelude.hashWithSalt` rTMPConfiguration
+
+instance
+  Prelude.NFData
+    LiveConnectorSinkConfiguration
+  where
+  rnf LiveConnectorSinkConfiguration' {..} =
+    Prelude.rnf sinkType
+      `Prelude.seq` Prelude.rnf rTMPConfiguration
+
+instance Data.ToJSON LiveConnectorSinkConfiguration where
+  toJSON LiveConnectorSinkConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("SinkType" Data..= sinkType),
+            Prelude.Just
+              ("RTMPConfiguration" Data..= rTMPConfiguration)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSinkType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSinkType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSinkType.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.ChimeSdkMediaPipelines.Types.LiveConnectorSinkType
+-- 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.ChimeSdkMediaPipelines.Types.LiveConnectorSinkType
+  ( LiveConnectorSinkType
+      ( ..,
+        LiveConnectorSinkType_RTMP
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LiveConnectorSinkType = LiveConnectorSinkType'
+  { fromLiveConnectorSinkType ::
+      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 LiveConnectorSinkType_RTMP :: LiveConnectorSinkType
+pattern LiveConnectorSinkType_RTMP = LiveConnectorSinkType' "RTMP"
+
+{-# COMPLETE
+  LiveConnectorSinkType_RTMP,
+  LiveConnectorSinkType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSourceConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSourceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSourceConfiguration.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.ChimeSdkMediaPipelines.Types.LiveConnectorSourceConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.LiveConnectorSourceConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingLiveConnectorConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSourceType
+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 data source configuration object of a streaming media pipeline.
+--
+-- /See:/ 'newLiveConnectorSourceConfiguration' smart constructor.
+data LiveConnectorSourceConfiguration = LiveConnectorSourceConfiguration'
+  { -- | The source configuration\'s media source type.
+    sourceType :: LiveConnectorSourceType,
+    -- | The configuration settings of the connector pipeline.
+    chimeSdkMeetingLiveConnectorConfiguration :: ChimeSdkMeetingLiveConnectorConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LiveConnectorSourceConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sourceType', 'liveConnectorSourceConfiguration_sourceType' - The source configuration\'s media source type.
+--
+-- 'chimeSdkMeetingLiveConnectorConfiguration', 'liveConnectorSourceConfiguration_chimeSdkMeetingLiveConnectorConfiguration' - The configuration settings of the connector pipeline.
+newLiveConnectorSourceConfiguration ::
+  -- | 'sourceType'
+  LiveConnectorSourceType ->
+  -- | 'chimeSdkMeetingLiveConnectorConfiguration'
+  ChimeSdkMeetingLiveConnectorConfiguration ->
+  LiveConnectorSourceConfiguration
+newLiveConnectorSourceConfiguration
+  pSourceType_
+  pChimeSdkMeetingLiveConnectorConfiguration_ =
+    LiveConnectorSourceConfiguration'
+      { sourceType =
+          pSourceType_,
+        chimeSdkMeetingLiveConnectorConfiguration =
+          pChimeSdkMeetingLiveConnectorConfiguration_
+      }
+
+-- | The source configuration\'s media source type.
+liveConnectorSourceConfiguration_sourceType :: Lens.Lens' LiveConnectorSourceConfiguration LiveConnectorSourceType
+liveConnectorSourceConfiguration_sourceType = Lens.lens (\LiveConnectorSourceConfiguration' {sourceType} -> sourceType) (\s@LiveConnectorSourceConfiguration' {} a -> s {sourceType = a} :: LiveConnectorSourceConfiguration)
+
+-- | The configuration settings of the connector pipeline.
+liveConnectorSourceConfiguration_chimeSdkMeetingLiveConnectorConfiguration :: Lens.Lens' LiveConnectorSourceConfiguration ChimeSdkMeetingLiveConnectorConfiguration
+liveConnectorSourceConfiguration_chimeSdkMeetingLiveConnectorConfiguration = Lens.lens (\LiveConnectorSourceConfiguration' {chimeSdkMeetingLiveConnectorConfiguration} -> chimeSdkMeetingLiveConnectorConfiguration) (\s@LiveConnectorSourceConfiguration' {} a -> s {chimeSdkMeetingLiveConnectorConfiguration = a} :: LiveConnectorSourceConfiguration)
+
+instance
+  Data.FromJSON
+    LiveConnectorSourceConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "LiveConnectorSourceConfiguration"
+      ( \x ->
+          LiveConnectorSourceConfiguration'
+            Prelude.<$> (x Data..: "SourceType")
+            Prelude.<*> ( x
+                            Data..: "ChimeSdkMeetingLiveConnectorConfiguration"
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    LiveConnectorSourceConfiguration
+  where
+  hashWithSalt
+    _salt
+    LiveConnectorSourceConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` sourceType
+        `Prelude.hashWithSalt` chimeSdkMeetingLiveConnectorConfiguration
+
+instance
+  Prelude.NFData
+    LiveConnectorSourceConfiguration
+  where
+  rnf LiveConnectorSourceConfiguration' {..} =
+    Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf chimeSdkMeetingLiveConnectorConfiguration
+
+instance Data.ToJSON LiveConnectorSourceConfiguration where
+  toJSON LiveConnectorSourceConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("SourceType" Data..= sourceType),
+            Prelude.Just
+              ( "ChimeSdkMeetingLiveConnectorConfiguration"
+                  Data..= chimeSdkMeetingLiveConnectorConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSourceType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/LiveConnectorSourceType.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.ChimeSdkMediaPipelines.Types.LiveConnectorSourceType
+-- 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.ChimeSdkMediaPipelines.Types.LiveConnectorSourceType
+  ( LiveConnectorSourceType
+      ( ..,
+        LiveConnectorSourceType_ChimeSdkMeeting
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LiveConnectorSourceType = LiveConnectorSourceType'
+  { fromLiveConnectorSourceType ::
+      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 LiveConnectorSourceType_ChimeSdkMeeting :: LiveConnectorSourceType
+pattern LiveConnectorSourceType_ChimeSdkMeeting = LiveConnectorSourceType' "ChimeSdkMeeting"
+
+{-# COMPLETE
+  LiveConnectorSourceType_ChimeSdkMeeting,
+  LiveConnectorSourceType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipeline.hs
@@ -0,0 +1,195 @@
+{-# 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.ChimeSdkMediaPipelines.Types.MediaCapturePipeline
+-- 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.ChimeSdkMediaPipelines.Types.MediaCapturePipeline where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSinkType
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSourceType
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineStatus
+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 media pipeline object consisting of an ID, source type, source ARN, a
+-- sink type, a sink ARN, and a configuration object.
+--
+-- /See:/ 'newMediaCapturePipeline' smart constructor.
+data MediaCapturePipeline = MediaCapturePipeline'
+  { -- | The configuration for a specified media pipeline. @SourceType@ must be
+    -- @ChimeSdkMeeting@.
+    chimeSdkMeetingConfiguration :: Prelude.Maybe ChimeSdkMeetingConfiguration,
+    -- | The time at which the pipeline was created, in ISO 8601 format.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The ARN of the media capture pipeline
+    mediaPipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of a media pipeline.
+    mediaPipelineId :: Prelude.Maybe Prelude.Text,
+    -- | ARN of the destination to which the media artifacts are saved.
+    sinkArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Destination type to which the media artifacts are saved. You must use an
+    -- S3 Bucket.
+    sinkType :: Prelude.Maybe MediaPipelineSinkType,
+    -- | ARN of the source from which the media artifacts are saved.
+    sourceArn :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Source type from which media artifacts are saved. You must use
+    -- @ChimeMeeting@.
+    sourceType :: Prelude.Maybe MediaPipelineSourceType,
+    -- | The status of the media pipeline.
+    status :: Prelude.Maybe MediaPipelineStatus,
+    -- | The time at which the pipeline was updated, in ISO 8601 format.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaCapturePipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'chimeSdkMeetingConfiguration', 'mediaCapturePipeline_chimeSdkMeetingConfiguration' - The configuration for a specified media pipeline. @SourceType@ must be
+-- @ChimeSdkMeeting@.
+--
+-- 'createdTimestamp', 'mediaCapturePipeline_createdTimestamp' - The time at which the pipeline was created, in ISO 8601 format.
+--
+-- 'mediaPipelineArn', 'mediaCapturePipeline_mediaPipelineArn' - The ARN of the media capture pipeline
+--
+-- 'mediaPipelineId', 'mediaCapturePipeline_mediaPipelineId' - The ID of a media pipeline.
+--
+-- 'sinkArn', 'mediaCapturePipeline_sinkArn' - ARN of the destination to which the media artifacts are saved.
+--
+-- 'sinkType', 'mediaCapturePipeline_sinkType' - Destination type to which the media artifacts are saved. You must use an
+-- S3 Bucket.
+--
+-- 'sourceArn', 'mediaCapturePipeline_sourceArn' - ARN of the source from which the media artifacts are saved.
+--
+-- 'sourceType', 'mediaCapturePipeline_sourceType' - Source type from which media artifacts are saved. You must use
+-- @ChimeMeeting@.
+--
+-- 'status', 'mediaCapturePipeline_status' - The status of the media pipeline.
+--
+-- 'updatedTimestamp', 'mediaCapturePipeline_updatedTimestamp' - The time at which the pipeline was updated, in ISO 8601 format.
+newMediaCapturePipeline ::
+  MediaCapturePipeline
+newMediaCapturePipeline =
+  MediaCapturePipeline'
+    { chimeSdkMeetingConfiguration =
+        Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      mediaPipelineArn = Prelude.Nothing,
+      mediaPipelineId = Prelude.Nothing,
+      sinkArn = Prelude.Nothing,
+      sinkType = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      sourceType = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The configuration for a specified media pipeline. @SourceType@ must be
+-- @ChimeSdkMeeting@.
+mediaCapturePipeline_chimeSdkMeetingConfiguration :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe ChimeSdkMeetingConfiguration)
+mediaCapturePipeline_chimeSdkMeetingConfiguration = Lens.lens (\MediaCapturePipeline' {chimeSdkMeetingConfiguration} -> chimeSdkMeetingConfiguration) (\s@MediaCapturePipeline' {} a -> s {chimeSdkMeetingConfiguration = a} :: MediaCapturePipeline)
+
+-- | The time at which the pipeline was created, in ISO 8601 format.
+mediaCapturePipeline_createdTimestamp :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.UTCTime)
+mediaCapturePipeline_createdTimestamp = Lens.lens (\MediaCapturePipeline' {createdTimestamp} -> createdTimestamp) (\s@MediaCapturePipeline' {} a -> s {createdTimestamp = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the media capture pipeline
+mediaCapturePipeline_mediaPipelineArn :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
+mediaCapturePipeline_mediaPipelineArn = Lens.lens (\MediaCapturePipeline' {mediaPipelineArn} -> mediaPipelineArn) (\s@MediaCapturePipeline' {} a -> s {mediaPipelineArn = a} :: MediaCapturePipeline)
+
+-- | The ID of a media pipeline.
+mediaCapturePipeline_mediaPipelineId :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
+mediaCapturePipeline_mediaPipelineId = Lens.lens (\MediaCapturePipeline' {mediaPipelineId} -> mediaPipelineId) (\s@MediaCapturePipeline' {} a -> s {mediaPipelineId = a} :: MediaCapturePipeline)
+
+-- | ARN of the destination to which the media artifacts are saved.
+mediaCapturePipeline_sinkArn :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
+mediaCapturePipeline_sinkArn = Lens.lens (\MediaCapturePipeline' {sinkArn} -> sinkArn) (\s@MediaCapturePipeline' {} a -> s {sinkArn = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Destination type to which the media artifacts are saved. You must use an
+-- S3 Bucket.
+mediaCapturePipeline_sinkType :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineSinkType)
+mediaCapturePipeline_sinkType = Lens.lens (\MediaCapturePipeline' {sinkType} -> sinkType) (\s@MediaCapturePipeline' {} a -> s {sinkType = a} :: MediaCapturePipeline)
+
+-- | ARN of the source from which the media artifacts are saved.
+mediaCapturePipeline_sourceArn :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.Text)
+mediaCapturePipeline_sourceArn = Lens.lens (\MediaCapturePipeline' {sourceArn} -> sourceArn) (\s@MediaCapturePipeline' {} a -> s {sourceArn = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Source type from which media artifacts are saved. You must use
+-- @ChimeMeeting@.
+mediaCapturePipeline_sourceType :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineSourceType)
+mediaCapturePipeline_sourceType = Lens.lens (\MediaCapturePipeline' {sourceType} -> sourceType) (\s@MediaCapturePipeline' {} a -> s {sourceType = a} :: MediaCapturePipeline)
+
+-- | The status of the media pipeline.
+mediaCapturePipeline_status :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe MediaPipelineStatus)
+mediaCapturePipeline_status = Lens.lens (\MediaCapturePipeline' {status} -> status) (\s@MediaCapturePipeline' {} a -> s {status = a} :: MediaCapturePipeline)
+
+-- | The time at which the pipeline was updated, in ISO 8601 format.
+mediaCapturePipeline_updatedTimestamp :: Lens.Lens' MediaCapturePipeline (Prelude.Maybe Prelude.UTCTime)
+mediaCapturePipeline_updatedTimestamp = Lens.lens (\MediaCapturePipeline' {updatedTimestamp} -> updatedTimestamp) (\s@MediaCapturePipeline' {} a -> s {updatedTimestamp = a} :: MediaCapturePipeline) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON MediaCapturePipeline where
+  parseJSON =
+    Data.withObject
+      "MediaCapturePipeline"
+      ( \x ->
+          MediaCapturePipeline'
+            Prelude.<$> (x Data..:? "ChimeSdkMeetingConfiguration")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "MediaPipelineArn")
+            Prelude.<*> (x Data..:? "MediaPipelineId")
+            Prelude.<*> (x Data..:? "SinkArn")
+            Prelude.<*> (x Data..:? "SinkType")
+            Prelude.<*> (x Data..:? "SourceArn")
+            Prelude.<*> (x Data..:? "SourceType")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable MediaCapturePipeline where
+  hashWithSalt _salt MediaCapturePipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` chimeSdkMeetingConfiguration
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` mediaPipelineArn
+      `Prelude.hashWithSalt` mediaPipelineId
+      `Prelude.hashWithSalt` sinkArn
+      `Prelude.hashWithSalt` sinkType
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` sourceType
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData MediaCapturePipeline where
+  rnf MediaCapturePipeline' {..} =
+    Prelude.rnf chimeSdkMeetingConfiguration
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf mediaPipelineArn
+      `Prelude.seq` Prelude.rnf mediaPipelineId
+      `Prelude.seq` Prelude.rnf sinkArn
+      `Prelude.seq` Prelude.rnf sinkType
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf sourceType
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipelineSourceConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipelineSourceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipelineSourceConfiguration.hs
@@ -0,0 +1,127 @@
+{-# 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.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSourceConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSourceConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ChimeSdkMeetingConcatenationConfiguration
+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 source configuration object of a media capture pipeline.
+--
+-- /See:/ 'newMediaCapturePipelineSourceConfiguration' smart constructor.
+data MediaCapturePipelineSourceConfiguration = MediaCapturePipelineSourceConfiguration'
+  { -- | The media pipeline ARN in the configuration object of a media capture
+    -- pipeline.
+    mediaPipelineArn :: Data.Sensitive Prelude.Text,
+    -- | The meeting configuration settings in a media capture pipeline
+    -- configuration object.
+    chimeSdkMeetingConfiguration :: ChimeSdkMeetingConcatenationConfiguration
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaCapturePipelineSourceConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineArn', 'mediaCapturePipelineSourceConfiguration_mediaPipelineArn' - The media pipeline ARN in the configuration object of a media capture
+-- pipeline.
+--
+-- 'chimeSdkMeetingConfiguration', 'mediaCapturePipelineSourceConfiguration_chimeSdkMeetingConfiguration' - The meeting configuration settings in a media capture pipeline
+-- configuration object.
+newMediaCapturePipelineSourceConfiguration ::
+  -- | 'mediaPipelineArn'
+  Prelude.Text ->
+  -- | 'chimeSdkMeetingConfiguration'
+  ChimeSdkMeetingConcatenationConfiguration ->
+  MediaCapturePipelineSourceConfiguration
+newMediaCapturePipelineSourceConfiguration
+  pMediaPipelineArn_
+  pChimeSdkMeetingConfiguration_ =
+    MediaCapturePipelineSourceConfiguration'
+      { mediaPipelineArn =
+          Data._Sensitive
+            Lens.# pMediaPipelineArn_,
+        chimeSdkMeetingConfiguration =
+          pChimeSdkMeetingConfiguration_
+      }
+
+-- | The media pipeline ARN in the configuration object of a media capture
+-- pipeline.
+mediaCapturePipelineSourceConfiguration_mediaPipelineArn :: Lens.Lens' MediaCapturePipelineSourceConfiguration Prelude.Text
+mediaCapturePipelineSourceConfiguration_mediaPipelineArn = Lens.lens (\MediaCapturePipelineSourceConfiguration' {mediaPipelineArn} -> mediaPipelineArn) (\s@MediaCapturePipelineSourceConfiguration' {} a -> s {mediaPipelineArn = a} :: MediaCapturePipelineSourceConfiguration) Prelude.. Data._Sensitive
+
+-- | The meeting configuration settings in a media capture pipeline
+-- configuration object.
+mediaCapturePipelineSourceConfiguration_chimeSdkMeetingConfiguration :: Lens.Lens' MediaCapturePipelineSourceConfiguration ChimeSdkMeetingConcatenationConfiguration
+mediaCapturePipelineSourceConfiguration_chimeSdkMeetingConfiguration = Lens.lens (\MediaCapturePipelineSourceConfiguration' {chimeSdkMeetingConfiguration} -> chimeSdkMeetingConfiguration) (\s@MediaCapturePipelineSourceConfiguration' {} a -> s {chimeSdkMeetingConfiguration = a} :: MediaCapturePipelineSourceConfiguration)
+
+instance
+  Data.FromJSON
+    MediaCapturePipelineSourceConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "MediaCapturePipelineSourceConfiguration"
+      ( \x ->
+          MediaCapturePipelineSourceConfiguration'
+            Prelude.<$> (x Data..: "MediaPipelineArn")
+            Prelude.<*> (x Data..: "ChimeSdkMeetingConfiguration")
+      )
+
+instance
+  Prelude.Hashable
+    MediaCapturePipelineSourceConfiguration
+  where
+  hashWithSalt
+    _salt
+    MediaCapturePipelineSourceConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` mediaPipelineArn
+        `Prelude.hashWithSalt` chimeSdkMeetingConfiguration
+
+instance
+  Prelude.NFData
+    MediaCapturePipelineSourceConfiguration
+  where
+  rnf MediaCapturePipelineSourceConfiguration' {..} =
+    Prelude.rnf mediaPipelineArn
+      `Prelude.seq` Prelude.rnf chimeSdkMeetingConfiguration
+
+instance
+  Data.ToJSON
+    MediaCapturePipelineSourceConfiguration
+  where
+  toJSON MediaCapturePipelineSourceConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("MediaPipelineArn" Data..= mediaPipelineArn),
+            Prelude.Just
+              ( "ChimeSdkMeetingConfiguration"
+                  Data..= chimeSdkMeetingConfiguration
+              )
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipelineSummary.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipelineSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaCapturePipelineSummary.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSummary
+-- 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.ChimeSdkMediaPipelines.Types.MediaCapturePipelineSummary 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 summary data of a media capture pipeline.
+--
+-- /See:/ 'newMediaCapturePipelineSummary' smart constructor.
+data MediaCapturePipelineSummary = MediaCapturePipelineSummary'
+  { -- | The ARN of the media pipeline in the summary.
+    mediaPipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the media pipeline in the summary.
+    mediaPipelineId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaCapturePipelineSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineArn', 'mediaCapturePipelineSummary_mediaPipelineArn' - The ARN of the media pipeline in the summary.
+--
+-- 'mediaPipelineId', 'mediaCapturePipelineSummary_mediaPipelineId' - The ID of the media pipeline in the summary.
+newMediaCapturePipelineSummary ::
+  MediaCapturePipelineSummary
+newMediaCapturePipelineSummary =
+  MediaCapturePipelineSummary'
+    { mediaPipelineArn =
+        Prelude.Nothing,
+      mediaPipelineId = Prelude.Nothing
+    }
+
+-- | The ARN of the media pipeline in the summary.
+mediaCapturePipelineSummary_mediaPipelineArn :: Lens.Lens' MediaCapturePipelineSummary (Prelude.Maybe Prelude.Text)
+mediaCapturePipelineSummary_mediaPipelineArn = Lens.lens (\MediaCapturePipelineSummary' {mediaPipelineArn} -> mediaPipelineArn) (\s@MediaCapturePipelineSummary' {} a -> s {mediaPipelineArn = a} :: MediaCapturePipelineSummary)
+
+-- | The ID of the media pipeline in the summary.
+mediaCapturePipelineSummary_mediaPipelineId :: Lens.Lens' MediaCapturePipelineSummary (Prelude.Maybe Prelude.Text)
+mediaCapturePipelineSummary_mediaPipelineId = Lens.lens (\MediaCapturePipelineSummary' {mediaPipelineId} -> mediaPipelineId) (\s@MediaCapturePipelineSummary' {} a -> s {mediaPipelineId = a} :: MediaCapturePipelineSummary)
+
+instance Data.FromJSON MediaCapturePipelineSummary where
+  parseJSON =
+    Data.withObject
+      "MediaCapturePipelineSummary"
+      ( \x ->
+          MediaCapturePipelineSummary'
+            Prelude.<$> (x Data..:? "MediaPipelineArn")
+            Prelude.<*> (x Data..:? "MediaPipelineId")
+      )
+
+instance Prelude.Hashable MediaCapturePipelineSummary where
+  hashWithSalt _salt MediaCapturePipelineSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` mediaPipelineArn
+      `Prelude.hashWithSalt` mediaPipelineId
+
+instance Prelude.NFData MediaCapturePipelineSummary where
+  rnf MediaCapturePipelineSummary' {..} =
+    Prelude.rnf mediaPipelineArn
+      `Prelude.seq` Prelude.rnf mediaPipelineId
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaConcatenationPipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaConcatenationPipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaConcatenationPipeline.hs
@@ -0,0 +1,151 @@
+{-# 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.ChimeSdkMediaPipelines.Types.MediaConcatenationPipeline
+-- 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.ChimeSdkMediaPipelines.Types.MediaConcatenationPipeline where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSink
+import Amazonka.ChimeSdkMediaPipelines.Types.ConcatenationSource
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineStatus
+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
+
+-- | Concatenates audio and video data from one or more data streams.
+--
+-- /See:/ 'newMediaConcatenationPipeline' smart constructor.
+data MediaConcatenationPipeline = MediaConcatenationPipeline'
+  { -- | The time at which the concatenation pipeline was created.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The ARN of the media pipeline that you specify in the
+    -- @SourceConfiguration@ object.
+    mediaPipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the media pipeline being concatenated.
+    mediaPipelineId :: Prelude.Maybe Prelude.Text,
+    -- | The data sinks of the concatenation pipeline.
+    sinks :: Prelude.Maybe (Prelude.NonEmpty ConcatenationSink),
+    -- | The data sources being concatnated.
+    sources :: Prelude.Maybe (Prelude.NonEmpty ConcatenationSource),
+    -- | The status of the concatenation pipeline.
+    status :: Prelude.Maybe MediaPipelineStatus,
+    -- | The time at which the concatenation pipeline was last updated.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaConcatenationPipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdTimestamp', 'mediaConcatenationPipeline_createdTimestamp' - The time at which the concatenation pipeline was created.
+--
+-- 'mediaPipelineArn', 'mediaConcatenationPipeline_mediaPipelineArn' - The ARN of the media pipeline that you specify in the
+-- @SourceConfiguration@ object.
+--
+-- 'mediaPipelineId', 'mediaConcatenationPipeline_mediaPipelineId' - The ID of the media pipeline being concatenated.
+--
+-- 'sinks', 'mediaConcatenationPipeline_sinks' - The data sinks of the concatenation pipeline.
+--
+-- 'sources', 'mediaConcatenationPipeline_sources' - The data sources being concatnated.
+--
+-- 'status', 'mediaConcatenationPipeline_status' - The status of the concatenation pipeline.
+--
+-- 'updatedTimestamp', 'mediaConcatenationPipeline_updatedTimestamp' - The time at which the concatenation pipeline was last updated.
+newMediaConcatenationPipeline ::
+  MediaConcatenationPipeline
+newMediaConcatenationPipeline =
+  MediaConcatenationPipeline'
+    { createdTimestamp =
+        Prelude.Nothing,
+      mediaPipelineArn = Prelude.Nothing,
+      mediaPipelineId = Prelude.Nothing,
+      sinks = Prelude.Nothing,
+      sources = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | The time at which the concatenation pipeline was created.
+mediaConcatenationPipeline_createdTimestamp :: Lens.Lens' MediaConcatenationPipeline (Prelude.Maybe Prelude.UTCTime)
+mediaConcatenationPipeline_createdTimestamp = Lens.lens (\MediaConcatenationPipeline' {createdTimestamp} -> createdTimestamp) (\s@MediaConcatenationPipeline' {} a -> s {createdTimestamp = a} :: MediaConcatenationPipeline) Prelude.. Lens.mapping Data._Time
+
+-- | The ARN of the media pipeline that you specify in the
+-- @SourceConfiguration@ object.
+mediaConcatenationPipeline_mediaPipelineArn :: Lens.Lens' MediaConcatenationPipeline (Prelude.Maybe Prelude.Text)
+mediaConcatenationPipeline_mediaPipelineArn = Lens.lens (\MediaConcatenationPipeline' {mediaPipelineArn} -> mediaPipelineArn) (\s@MediaConcatenationPipeline' {} a -> s {mediaPipelineArn = a} :: MediaConcatenationPipeline)
+
+-- | The ID of the media pipeline being concatenated.
+mediaConcatenationPipeline_mediaPipelineId :: Lens.Lens' MediaConcatenationPipeline (Prelude.Maybe Prelude.Text)
+mediaConcatenationPipeline_mediaPipelineId = Lens.lens (\MediaConcatenationPipeline' {mediaPipelineId} -> mediaPipelineId) (\s@MediaConcatenationPipeline' {} a -> s {mediaPipelineId = a} :: MediaConcatenationPipeline)
+
+-- | The data sinks of the concatenation pipeline.
+mediaConcatenationPipeline_sinks :: Lens.Lens' MediaConcatenationPipeline (Prelude.Maybe (Prelude.NonEmpty ConcatenationSink))
+mediaConcatenationPipeline_sinks = Lens.lens (\MediaConcatenationPipeline' {sinks} -> sinks) (\s@MediaConcatenationPipeline' {} a -> s {sinks = a} :: MediaConcatenationPipeline) Prelude.. Lens.mapping Lens.coerced
+
+-- | The data sources being concatnated.
+mediaConcatenationPipeline_sources :: Lens.Lens' MediaConcatenationPipeline (Prelude.Maybe (Prelude.NonEmpty ConcatenationSource))
+mediaConcatenationPipeline_sources = Lens.lens (\MediaConcatenationPipeline' {sources} -> sources) (\s@MediaConcatenationPipeline' {} a -> s {sources = a} :: MediaConcatenationPipeline) Prelude.. Lens.mapping Lens.coerced
+
+-- | The status of the concatenation pipeline.
+mediaConcatenationPipeline_status :: Lens.Lens' MediaConcatenationPipeline (Prelude.Maybe MediaPipelineStatus)
+mediaConcatenationPipeline_status = Lens.lens (\MediaConcatenationPipeline' {status} -> status) (\s@MediaConcatenationPipeline' {} a -> s {status = a} :: MediaConcatenationPipeline)
+
+-- | The time at which the concatenation pipeline was last updated.
+mediaConcatenationPipeline_updatedTimestamp :: Lens.Lens' MediaConcatenationPipeline (Prelude.Maybe Prelude.UTCTime)
+mediaConcatenationPipeline_updatedTimestamp = Lens.lens (\MediaConcatenationPipeline' {updatedTimestamp} -> updatedTimestamp) (\s@MediaConcatenationPipeline' {} a -> s {updatedTimestamp = a} :: MediaConcatenationPipeline) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON MediaConcatenationPipeline where
+  parseJSON =
+    Data.withObject
+      "MediaConcatenationPipeline"
+      ( \x ->
+          MediaConcatenationPipeline'
+            Prelude.<$> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "MediaPipelineArn")
+            Prelude.<*> (x Data..:? "MediaPipelineId")
+            Prelude.<*> (x Data..:? "Sinks")
+            Prelude.<*> (x Data..:? "Sources")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable MediaConcatenationPipeline where
+  hashWithSalt _salt MediaConcatenationPipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` mediaPipelineArn
+      `Prelude.hashWithSalt` mediaPipelineId
+      `Prelude.hashWithSalt` sinks
+      `Prelude.hashWithSalt` sources
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData MediaConcatenationPipeline where
+  rnf MediaConcatenationPipeline' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf mediaPipelineArn
+      `Prelude.seq` Prelude.rnf mediaPipelineId
+      `Prelude.seq` Prelude.rnf sinks
+      `Prelude.seq` Prelude.rnf sources
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaLiveConnectorPipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaLiveConnectorPipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaLiveConnectorPipeline.hs
@@ -0,0 +1,148 @@
+{-# 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.ChimeSdkMediaPipelines.Types.MediaLiveConnectorPipeline
+-- 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.ChimeSdkMediaPipelines.Types.MediaLiveConnectorPipeline where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSinkConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.LiveConnectorSourceConfiguration
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineStatus
+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 connector pipeline.
+--
+-- /See:/ 'newMediaLiveConnectorPipeline' smart constructor.
+data MediaLiveConnectorPipeline = MediaLiveConnectorPipeline'
+  { -- | Thetime at which the connector pipeline was created.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The connector pipeline\'s ARN.
+    mediaPipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The connector pipeline\'s ID.
+    mediaPipelineId :: Prelude.Maybe Prelude.Text,
+    -- | The connector pipeline\'s data sinks.
+    sinks :: Prelude.Maybe (Prelude.NonEmpty LiveConnectorSinkConfiguration),
+    -- | The connector pipeline\'s data sources.
+    sources :: Prelude.Maybe (Prelude.NonEmpty LiveConnectorSourceConfiguration),
+    -- | The connector pipeline\'s status.
+    status :: Prelude.Maybe MediaPipelineStatus,
+    -- | The time at which the connector pipeline was last updated.
+    updatedTimestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaLiveConnectorPipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdTimestamp', 'mediaLiveConnectorPipeline_createdTimestamp' - Thetime at which the connector pipeline was created.
+--
+-- 'mediaPipelineArn', 'mediaLiveConnectorPipeline_mediaPipelineArn' - The connector pipeline\'s ARN.
+--
+-- 'mediaPipelineId', 'mediaLiveConnectorPipeline_mediaPipelineId' - The connector pipeline\'s ID.
+--
+-- 'sinks', 'mediaLiveConnectorPipeline_sinks' - The connector pipeline\'s data sinks.
+--
+-- 'sources', 'mediaLiveConnectorPipeline_sources' - The connector pipeline\'s data sources.
+--
+-- 'status', 'mediaLiveConnectorPipeline_status' - The connector pipeline\'s status.
+--
+-- 'updatedTimestamp', 'mediaLiveConnectorPipeline_updatedTimestamp' - The time at which the connector pipeline was last updated.
+newMediaLiveConnectorPipeline ::
+  MediaLiveConnectorPipeline
+newMediaLiveConnectorPipeline =
+  MediaLiveConnectorPipeline'
+    { createdTimestamp =
+        Prelude.Nothing,
+      mediaPipelineArn = Prelude.Nothing,
+      mediaPipelineId = Prelude.Nothing,
+      sinks = Prelude.Nothing,
+      sources = Prelude.Nothing,
+      status = Prelude.Nothing,
+      updatedTimestamp = Prelude.Nothing
+    }
+
+-- | Thetime at which the connector pipeline was created.
+mediaLiveConnectorPipeline_createdTimestamp :: Lens.Lens' MediaLiveConnectorPipeline (Prelude.Maybe Prelude.UTCTime)
+mediaLiveConnectorPipeline_createdTimestamp = Lens.lens (\MediaLiveConnectorPipeline' {createdTimestamp} -> createdTimestamp) (\s@MediaLiveConnectorPipeline' {} a -> s {createdTimestamp = a} :: MediaLiveConnectorPipeline) Prelude.. Lens.mapping Data._Time
+
+-- | The connector pipeline\'s ARN.
+mediaLiveConnectorPipeline_mediaPipelineArn :: Lens.Lens' MediaLiveConnectorPipeline (Prelude.Maybe Prelude.Text)
+mediaLiveConnectorPipeline_mediaPipelineArn = Lens.lens (\MediaLiveConnectorPipeline' {mediaPipelineArn} -> mediaPipelineArn) (\s@MediaLiveConnectorPipeline' {} a -> s {mediaPipelineArn = a} :: MediaLiveConnectorPipeline)
+
+-- | The connector pipeline\'s ID.
+mediaLiveConnectorPipeline_mediaPipelineId :: Lens.Lens' MediaLiveConnectorPipeline (Prelude.Maybe Prelude.Text)
+mediaLiveConnectorPipeline_mediaPipelineId = Lens.lens (\MediaLiveConnectorPipeline' {mediaPipelineId} -> mediaPipelineId) (\s@MediaLiveConnectorPipeline' {} a -> s {mediaPipelineId = a} :: MediaLiveConnectorPipeline)
+
+-- | The connector pipeline\'s data sinks.
+mediaLiveConnectorPipeline_sinks :: Lens.Lens' MediaLiveConnectorPipeline (Prelude.Maybe (Prelude.NonEmpty LiveConnectorSinkConfiguration))
+mediaLiveConnectorPipeline_sinks = Lens.lens (\MediaLiveConnectorPipeline' {sinks} -> sinks) (\s@MediaLiveConnectorPipeline' {} a -> s {sinks = a} :: MediaLiveConnectorPipeline) Prelude.. Lens.mapping Lens.coerced
+
+-- | The connector pipeline\'s data sources.
+mediaLiveConnectorPipeline_sources :: Lens.Lens' MediaLiveConnectorPipeline (Prelude.Maybe (Prelude.NonEmpty LiveConnectorSourceConfiguration))
+mediaLiveConnectorPipeline_sources = Lens.lens (\MediaLiveConnectorPipeline' {sources} -> sources) (\s@MediaLiveConnectorPipeline' {} a -> s {sources = a} :: MediaLiveConnectorPipeline) Prelude.. Lens.mapping Lens.coerced
+
+-- | The connector pipeline\'s status.
+mediaLiveConnectorPipeline_status :: Lens.Lens' MediaLiveConnectorPipeline (Prelude.Maybe MediaPipelineStatus)
+mediaLiveConnectorPipeline_status = Lens.lens (\MediaLiveConnectorPipeline' {status} -> status) (\s@MediaLiveConnectorPipeline' {} a -> s {status = a} :: MediaLiveConnectorPipeline)
+
+-- | The time at which the connector pipeline was last updated.
+mediaLiveConnectorPipeline_updatedTimestamp :: Lens.Lens' MediaLiveConnectorPipeline (Prelude.Maybe Prelude.UTCTime)
+mediaLiveConnectorPipeline_updatedTimestamp = Lens.lens (\MediaLiveConnectorPipeline' {updatedTimestamp} -> updatedTimestamp) (\s@MediaLiveConnectorPipeline' {} a -> s {updatedTimestamp = a} :: MediaLiveConnectorPipeline) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON MediaLiveConnectorPipeline where
+  parseJSON =
+    Data.withObject
+      "MediaLiveConnectorPipeline"
+      ( \x ->
+          MediaLiveConnectorPipeline'
+            Prelude.<$> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "MediaPipelineArn")
+            Prelude.<*> (x Data..:? "MediaPipelineId")
+            Prelude.<*> (x Data..:? "Sinks")
+            Prelude.<*> (x Data..:? "Sources")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "UpdatedTimestamp")
+      )
+
+instance Prelude.Hashable MediaLiveConnectorPipeline where
+  hashWithSalt _salt MediaLiveConnectorPipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` mediaPipelineArn
+      `Prelude.hashWithSalt` mediaPipelineId
+      `Prelude.hashWithSalt` sinks
+      `Prelude.hashWithSalt` sources
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` updatedTimestamp
+
+instance Prelude.NFData MediaLiveConnectorPipeline where
+  rnf MediaLiveConnectorPipeline' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf mediaPipelineArn
+      `Prelude.seq` Prelude.rnf mediaPipelineId
+      `Prelude.seq` Prelude.rnf sinks
+      `Prelude.seq` Prelude.rnf sources
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf updatedTimestamp
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipeline.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipeline.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.ChimeSdkMediaPipelines.Types.MediaPipeline
+-- 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.ChimeSdkMediaPipelines.Types.MediaPipeline where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaCapturePipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaConcatenationPipeline
+import Amazonka.ChimeSdkMediaPipelines.Types.MediaLiveConnectorPipeline
+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 pipeline consisting of a media capture, media concatenation, or
+-- live-streaming pipeline.
+--
+-- /See:/ 'newMediaPipeline' smart constructor.
+data MediaPipeline = MediaPipeline'
+  { -- | A pipeline that enables users to capture audio and video.
+    mediaCapturePipeline :: Prelude.Maybe MediaCapturePipeline,
+    -- | The media concatenation pipeline in a media pipeline.
+    mediaConcatenationPipeline :: Prelude.Maybe MediaConcatenationPipeline,
+    -- | The connector pipeline of the media pipeline.
+    mediaLiveConnectorPipeline :: Prelude.Maybe MediaLiveConnectorPipeline
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaPipeline' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaCapturePipeline', 'mediaPipeline_mediaCapturePipeline' - A pipeline that enables users to capture audio and video.
+--
+-- 'mediaConcatenationPipeline', 'mediaPipeline_mediaConcatenationPipeline' - The media concatenation pipeline in a media pipeline.
+--
+-- 'mediaLiveConnectorPipeline', 'mediaPipeline_mediaLiveConnectorPipeline' - The connector pipeline of the media pipeline.
+newMediaPipeline ::
+  MediaPipeline
+newMediaPipeline =
+  MediaPipeline'
+    { mediaCapturePipeline =
+        Prelude.Nothing,
+      mediaConcatenationPipeline = Prelude.Nothing,
+      mediaLiveConnectorPipeline = Prelude.Nothing
+    }
+
+-- | A pipeline that enables users to capture audio and video.
+mediaPipeline_mediaCapturePipeline :: Lens.Lens' MediaPipeline (Prelude.Maybe MediaCapturePipeline)
+mediaPipeline_mediaCapturePipeline = Lens.lens (\MediaPipeline' {mediaCapturePipeline} -> mediaCapturePipeline) (\s@MediaPipeline' {} a -> s {mediaCapturePipeline = a} :: MediaPipeline)
+
+-- | The media concatenation pipeline in a media pipeline.
+mediaPipeline_mediaConcatenationPipeline :: Lens.Lens' MediaPipeline (Prelude.Maybe MediaConcatenationPipeline)
+mediaPipeline_mediaConcatenationPipeline = Lens.lens (\MediaPipeline' {mediaConcatenationPipeline} -> mediaConcatenationPipeline) (\s@MediaPipeline' {} a -> s {mediaConcatenationPipeline = a} :: MediaPipeline)
+
+-- | The connector pipeline of the media pipeline.
+mediaPipeline_mediaLiveConnectorPipeline :: Lens.Lens' MediaPipeline (Prelude.Maybe MediaLiveConnectorPipeline)
+mediaPipeline_mediaLiveConnectorPipeline = Lens.lens (\MediaPipeline' {mediaLiveConnectorPipeline} -> mediaLiveConnectorPipeline) (\s@MediaPipeline' {} a -> s {mediaLiveConnectorPipeline = a} :: MediaPipeline)
+
+instance Data.FromJSON MediaPipeline where
+  parseJSON =
+    Data.withObject
+      "MediaPipeline"
+      ( \x ->
+          MediaPipeline'
+            Prelude.<$> (x Data..:? "MediaCapturePipeline")
+            Prelude.<*> (x Data..:? "MediaConcatenationPipeline")
+            Prelude.<*> (x Data..:? "MediaLiveConnectorPipeline")
+      )
+
+instance Prelude.Hashable MediaPipeline where
+  hashWithSalt _salt MediaPipeline' {..} =
+    _salt
+      `Prelude.hashWithSalt` mediaCapturePipeline
+      `Prelude.hashWithSalt` mediaConcatenationPipeline
+      `Prelude.hashWithSalt` mediaLiveConnectorPipeline
+
+instance Prelude.NFData MediaPipeline where
+  rnf MediaPipeline' {..} =
+    Prelude.rnf mediaCapturePipeline
+      `Prelude.seq` Prelude.rnf mediaConcatenationPipeline
+      `Prelude.seq` Prelude.rnf mediaLiveConnectorPipeline
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSinkType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSinkType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSinkType.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.ChimeSdkMediaPipelines.Types.MediaPipelineSinkType
+-- 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.ChimeSdkMediaPipelines.Types.MediaPipelineSinkType
+  ( MediaPipelineSinkType
+      ( ..,
+        MediaPipelineSinkType_S3Bucket
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MediaPipelineSinkType = MediaPipelineSinkType'
+  { fromMediaPipelineSinkType ::
+      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 MediaPipelineSinkType_S3Bucket :: MediaPipelineSinkType
+pattern MediaPipelineSinkType_S3Bucket = MediaPipelineSinkType' "S3Bucket"
+
+{-# COMPLETE
+  MediaPipelineSinkType_S3Bucket,
+  MediaPipelineSinkType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSourceType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSourceType.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.ChimeSdkMediaPipelines.Types.MediaPipelineSourceType
+-- 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.ChimeSdkMediaPipelines.Types.MediaPipelineSourceType
+  ( MediaPipelineSourceType
+      ( ..,
+        MediaPipelineSourceType_ChimeSdkMeeting
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MediaPipelineSourceType = MediaPipelineSourceType'
+  { fromMediaPipelineSourceType ::
+      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 MediaPipelineSourceType_ChimeSdkMeeting :: MediaPipelineSourceType
+pattern MediaPipelineSourceType_ChimeSdkMeeting = MediaPipelineSourceType' "ChimeSdkMeeting"
+
+{-# COMPLETE
+  MediaPipelineSourceType_ChimeSdkMeeting,
+  MediaPipelineSourceType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineStatus.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineStatus
+-- 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.ChimeSdkMediaPipelines.Types.MediaPipelineStatus
+  ( MediaPipelineStatus
+      ( ..,
+        MediaPipelineStatus_Failed,
+        MediaPipelineStatus_InProgress,
+        MediaPipelineStatus_Initializing,
+        MediaPipelineStatus_Stopped,
+        MediaPipelineStatus_Stopping
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype MediaPipelineStatus = MediaPipelineStatus'
+  { fromMediaPipelineStatus ::
+      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 MediaPipelineStatus_Failed :: MediaPipelineStatus
+pattern MediaPipelineStatus_Failed = MediaPipelineStatus' "Failed"
+
+pattern MediaPipelineStatus_InProgress :: MediaPipelineStatus
+pattern MediaPipelineStatus_InProgress = MediaPipelineStatus' "InProgress"
+
+pattern MediaPipelineStatus_Initializing :: MediaPipelineStatus
+pattern MediaPipelineStatus_Initializing = MediaPipelineStatus' "Initializing"
+
+pattern MediaPipelineStatus_Stopped :: MediaPipelineStatus
+pattern MediaPipelineStatus_Stopped = MediaPipelineStatus' "Stopped"
+
+pattern MediaPipelineStatus_Stopping :: MediaPipelineStatus
+pattern MediaPipelineStatus_Stopping = MediaPipelineStatus' "Stopping"
+
+{-# COMPLETE
+  MediaPipelineStatus_Failed,
+  MediaPipelineStatus_InProgress,
+  MediaPipelineStatus_Initializing,
+  MediaPipelineStatus_Stopped,
+  MediaPipelineStatus_Stopping,
+  MediaPipelineStatus'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSummary.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MediaPipelineSummary.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.Types.MediaPipelineSummary
+-- 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.ChimeSdkMediaPipelines.Types.MediaPipelineSummary 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 summary of the media pipeline.
+--
+-- /See:/ 'newMediaPipelineSummary' smart constructor.
+data MediaPipelineSummary = MediaPipelineSummary'
+  { -- | The ARN of the media pipeline in the summary.
+    mediaPipelineArn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the media pipeline in the summary.
+    mediaPipelineId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MediaPipelineSummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mediaPipelineArn', 'mediaPipelineSummary_mediaPipelineArn' - The ARN of the media pipeline in the summary.
+--
+-- 'mediaPipelineId', 'mediaPipelineSummary_mediaPipelineId' - The ID of the media pipeline in the summary.
+newMediaPipelineSummary ::
+  MediaPipelineSummary
+newMediaPipelineSummary =
+  MediaPipelineSummary'
+    { mediaPipelineArn =
+        Prelude.Nothing,
+      mediaPipelineId = Prelude.Nothing
+    }
+
+-- | The ARN of the media pipeline in the summary.
+mediaPipelineSummary_mediaPipelineArn :: Lens.Lens' MediaPipelineSummary (Prelude.Maybe Prelude.Text)
+mediaPipelineSummary_mediaPipelineArn = Lens.lens (\MediaPipelineSummary' {mediaPipelineArn} -> mediaPipelineArn) (\s@MediaPipelineSummary' {} a -> s {mediaPipelineArn = a} :: MediaPipelineSummary)
+
+-- | The ID of the media pipeline in the summary.
+mediaPipelineSummary_mediaPipelineId :: Lens.Lens' MediaPipelineSummary (Prelude.Maybe Prelude.Text)
+mediaPipelineSummary_mediaPipelineId = Lens.lens (\MediaPipelineSummary' {mediaPipelineId} -> mediaPipelineId) (\s@MediaPipelineSummary' {} a -> s {mediaPipelineId = a} :: MediaPipelineSummary)
+
+instance Data.FromJSON MediaPipelineSummary where
+  parseJSON =
+    Data.withObject
+      "MediaPipelineSummary"
+      ( \x ->
+          MediaPipelineSummary'
+            Prelude.<$> (x Data..:? "MediaPipelineArn")
+            Prelude.<*> (x Data..:? "MediaPipelineId")
+      )
+
+instance Prelude.Hashable MediaPipelineSummary where
+  hashWithSalt _salt MediaPipelineSummary' {..} =
+    _salt
+      `Prelude.hashWithSalt` mediaPipelineArn
+      `Prelude.hashWithSalt` mediaPipelineId
+
+instance Prelude.NFData MediaPipelineSummary where
+  rnf MediaPipelineSummary' {..} =
+    Prelude.rnf mediaPipelineArn
+      `Prelude.seq` Prelude.rnf mediaPipelineId
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/MeetingEventsConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MeetingEventsConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/MeetingEventsConcatenationConfiguration.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.ChimeSdkMediaPipelines.Types.MeetingEventsConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.MeetingEventsConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object for an event concatenation pipeline.
+--
+-- /See:/ 'newMeetingEventsConcatenationConfiguration' smart constructor.
+data MeetingEventsConcatenationConfiguration = MeetingEventsConcatenationConfiguration'
+  { -- | Enables or disables the configuration object.
+    state :: ArtifactsConcatenationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MeetingEventsConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'state', 'meetingEventsConcatenationConfiguration_state' - Enables or disables the configuration object.
+newMeetingEventsConcatenationConfiguration ::
+  -- | 'state'
+  ArtifactsConcatenationState ->
+  MeetingEventsConcatenationConfiguration
+newMeetingEventsConcatenationConfiguration pState_ =
+  MeetingEventsConcatenationConfiguration'
+    { state =
+        pState_
+    }
+
+-- | Enables or disables the configuration object.
+meetingEventsConcatenationConfiguration_state :: Lens.Lens' MeetingEventsConcatenationConfiguration ArtifactsConcatenationState
+meetingEventsConcatenationConfiguration_state = Lens.lens (\MeetingEventsConcatenationConfiguration' {state} -> state) (\s@MeetingEventsConcatenationConfiguration' {} a -> s {state = a} :: MeetingEventsConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    MeetingEventsConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "MeetingEventsConcatenationConfiguration"
+      ( \x ->
+          MeetingEventsConcatenationConfiguration'
+            Prelude.<$> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    MeetingEventsConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    MeetingEventsConcatenationConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` state
+
+instance
+  Prelude.NFData
+    MeetingEventsConcatenationConfiguration
+  where
+  rnf MeetingEventsConcatenationConfiguration' {..} =
+    Prelude.rnf state
+
+instance
+  Data.ToJSON
+    MeetingEventsConcatenationConfiguration
+  where
+  toJSON MeetingEventsConcatenationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("State" Data..= state)]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/PresenterOnlyConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/PresenterOnlyConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/PresenterOnlyConfiguration.hs
@@ -0,0 +1,82 @@
+{-# 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.ChimeSdkMediaPipelines.Types.PresenterOnlyConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.PresenterOnlyConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.PresenterPosition
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Defines the configuration for a presenter only video tile.
+--
+-- /See:/ 'newPresenterOnlyConfiguration' smart constructor.
+data PresenterOnlyConfiguration = PresenterOnlyConfiguration'
+  { -- | Defines the position of the presenter video tile. Default: @TopRight@.
+    presenterPosition :: Prelude.Maybe PresenterPosition
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PresenterOnlyConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'presenterPosition', 'presenterOnlyConfiguration_presenterPosition' - Defines the position of the presenter video tile. Default: @TopRight@.
+newPresenterOnlyConfiguration ::
+  PresenterOnlyConfiguration
+newPresenterOnlyConfiguration =
+  PresenterOnlyConfiguration'
+    { presenterPosition =
+        Prelude.Nothing
+    }
+
+-- | Defines the position of the presenter video tile. Default: @TopRight@.
+presenterOnlyConfiguration_presenterPosition :: Lens.Lens' PresenterOnlyConfiguration (Prelude.Maybe PresenterPosition)
+presenterOnlyConfiguration_presenterPosition = Lens.lens (\PresenterOnlyConfiguration' {presenterPosition} -> presenterPosition) (\s@PresenterOnlyConfiguration' {} a -> s {presenterPosition = a} :: PresenterOnlyConfiguration)
+
+instance Data.FromJSON PresenterOnlyConfiguration where
+  parseJSON =
+    Data.withObject
+      "PresenterOnlyConfiguration"
+      ( \x ->
+          PresenterOnlyConfiguration'
+            Prelude.<$> (x Data..:? "PresenterPosition")
+      )
+
+instance Prelude.Hashable PresenterOnlyConfiguration where
+  hashWithSalt _salt PresenterOnlyConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` presenterPosition
+
+instance Prelude.NFData PresenterOnlyConfiguration where
+  rnf PresenterOnlyConfiguration' {..} =
+    Prelude.rnf presenterPosition
+
+instance Data.ToJSON PresenterOnlyConfiguration where
+  toJSON PresenterOnlyConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("PresenterPosition" Data..=)
+              Prelude.<$> presenterPosition
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/PresenterPosition.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/PresenterPosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/PresenterPosition.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.Types.PresenterPosition
+-- 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.ChimeSdkMediaPipelines.Types.PresenterPosition
+  ( PresenterPosition
+      ( ..,
+        PresenterPosition_BottomLeft,
+        PresenterPosition_BottomRight,
+        PresenterPosition_TopLeft,
+        PresenterPosition_TopRight
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PresenterPosition = PresenterPosition'
+  { fromPresenterPosition ::
+      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 PresenterPosition_BottomLeft :: PresenterPosition
+pattern PresenterPosition_BottomLeft = PresenterPosition' "BottomLeft"
+
+pattern PresenterPosition_BottomRight :: PresenterPosition
+pattern PresenterPosition_BottomRight = PresenterPosition' "BottomRight"
+
+pattern PresenterPosition_TopLeft :: PresenterPosition
+pattern PresenterPosition_TopLeft = PresenterPosition' "TopLeft"
+
+pattern PresenterPosition_TopRight :: PresenterPosition
+pattern PresenterPosition_TopRight = PresenterPosition' "TopRight"
+
+{-# COMPLETE
+  PresenterPosition_BottomLeft,
+  PresenterPosition_BottomRight,
+  PresenterPosition_TopLeft,
+  PresenterPosition_TopRight,
+  PresenterPosition'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/ResolutionOption.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ResolutionOption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/ResolutionOption.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.ChimeSdkMediaPipelines.Types.ResolutionOption
+-- 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.ChimeSdkMediaPipelines.Types.ResolutionOption
+  ( ResolutionOption
+      ( ..,
+        ResolutionOption_FHD,
+        ResolutionOption_HD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResolutionOption = ResolutionOption'
+  { fromResolutionOption ::
+      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 ResolutionOption_FHD :: ResolutionOption
+pattern ResolutionOption_FHD = ResolutionOption' "FHD"
+
+pattern ResolutionOption_HD :: ResolutionOption
+pattern ResolutionOption_HD = ResolutionOption' "HD"
+
+{-# COMPLETE
+  ResolutionOption_FHD,
+  ResolutionOption_HD,
+  ResolutionOption'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/S3BucketSinkConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/S3BucketSinkConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/S3BucketSinkConfiguration.hs
@@ -0,0 +1,81 @@
+{-# 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.ChimeSdkMediaPipelines.Types.S3BucketSinkConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.S3BucketSinkConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration settings for the S3 bucket.
+--
+-- /See:/ 'newS3BucketSinkConfiguration' smart constructor.
+data S3BucketSinkConfiguration = S3BucketSinkConfiguration'
+  { -- | The destination URL of the S3 bucket.
+    destination :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3BucketSinkConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destination', 's3BucketSinkConfiguration_destination' - The destination URL of the S3 bucket.
+newS3BucketSinkConfiguration ::
+  -- | 'destination'
+  Prelude.Text ->
+  S3BucketSinkConfiguration
+newS3BucketSinkConfiguration pDestination_ =
+  S3BucketSinkConfiguration'
+    { destination =
+        Data._Sensitive Lens.# pDestination_
+    }
+
+-- | The destination URL of the S3 bucket.
+s3BucketSinkConfiguration_destination :: Lens.Lens' S3BucketSinkConfiguration Prelude.Text
+s3BucketSinkConfiguration_destination = Lens.lens (\S3BucketSinkConfiguration' {destination} -> destination) (\s@S3BucketSinkConfiguration' {} a -> s {destination = a} :: S3BucketSinkConfiguration) Prelude.. Data._Sensitive
+
+instance Data.FromJSON S3BucketSinkConfiguration where
+  parseJSON =
+    Data.withObject
+      "S3BucketSinkConfiguration"
+      ( \x ->
+          S3BucketSinkConfiguration'
+            Prelude.<$> (x Data..: "Destination")
+      )
+
+instance Prelude.Hashable S3BucketSinkConfiguration where
+  hashWithSalt _salt S3BucketSinkConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` destination
+
+instance Prelude.NFData S3BucketSinkConfiguration where
+  rnf S3BucketSinkConfiguration' {..} =
+    Prelude.rnf destination
+
+instance Data.ToJSON S3BucketSinkConfiguration where
+  toJSON S3BucketSinkConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Destination" Data..= destination)]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/SelectedVideoStreams.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/SelectedVideoStreams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/SelectedVideoStreams.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.ChimeSdkMediaPipelines.Types.SelectedVideoStreams
+-- 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.ChimeSdkMediaPipelines.Types.SelectedVideoStreams 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 video streams for a specified media pipeline. The total number of
+-- video streams can\'t exceed 25.
+--
+-- /See:/ 'newSelectedVideoStreams' smart constructor.
+data SelectedVideoStreams = SelectedVideoStreams'
+  { -- | The attendee IDs of the streams selected for a media pipeline.
+    attendeeIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
+    -- | The external user IDs of the streams selected for a media pipeline.
+    externalUserIds :: Prelude.Maybe (Prelude.NonEmpty (Data.Sensitive Prelude.Text))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SelectedVideoStreams' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'attendeeIds', 'selectedVideoStreams_attendeeIds' - The attendee IDs of the streams selected for a media pipeline.
+--
+-- 'externalUserIds', 'selectedVideoStreams_externalUserIds' - The external user IDs of the streams selected for a media pipeline.
+newSelectedVideoStreams ::
+  SelectedVideoStreams
+newSelectedVideoStreams =
+  SelectedVideoStreams'
+    { attendeeIds =
+        Prelude.Nothing,
+      externalUserIds = Prelude.Nothing
+    }
+
+-- | The attendee IDs of the streams selected for a media pipeline.
+selectedVideoStreams_attendeeIds :: Lens.Lens' SelectedVideoStreams (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+selectedVideoStreams_attendeeIds = Lens.lens (\SelectedVideoStreams' {attendeeIds} -> attendeeIds) (\s@SelectedVideoStreams' {} a -> s {attendeeIds = a} :: SelectedVideoStreams) Prelude.. Lens.mapping Lens.coerced
+
+-- | The external user IDs of the streams selected for a media pipeline.
+selectedVideoStreams_externalUserIds :: Lens.Lens' SelectedVideoStreams (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+selectedVideoStreams_externalUserIds = Lens.lens (\SelectedVideoStreams' {externalUserIds} -> externalUserIds) (\s@SelectedVideoStreams' {} a -> s {externalUserIds = a} :: SelectedVideoStreams) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON SelectedVideoStreams where
+  parseJSON =
+    Data.withObject
+      "SelectedVideoStreams"
+      ( \x ->
+          SelectedVideoStreams'
+            Prelude.<$> (x Data..:? "AttendeeIds")
+            Prelude.<*> (x Data..:? "ExternalUserIds")
+      )
+
+instance Prelude.Hashable SelectedVideoStreams where
+  hashWithSalt _salt SelectedVideoStreams' {..} =
+    _salt
+      `Prelude.hashWithSalt` attendeeIds
+      `Prelude.hashWithSalt` externalUserIds
+
+instance Prelude.NFData SelectedVideoStreams where
+  rnf SelectedVideoStreams' {..} =
+    Prelude.rnf attendeeIds
+      `Prelude.seq` Prelude.rnf externalUserIds
+
+instance Data.ToJSON SelectedVideoStreams where
+  toJSON SelectedVideoStreams' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("AttendeeIds" Data..=) Prelude.<$> attendeeIds,
+            ("ExternalUserIds" Data..=)
+              Prelude.<$> externalUserIds
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/SourceConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/SourceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/SourceConfiguration.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.Types.SourceConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.SourceConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.SelectedVideoStreams
+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
+
+-- | Source configuration for a specified media pipeline.
+--
+-- /See:/ 'newSourceConfiguration' smart constructor.
+data SourceConfiguration = SourceConfiguration'
+  { -- | The selected video streams for a specified media pipeline. The number of
+    -- video streams can\'t exceed 25.
+    selectedVideoStreams :: Prelude.Maybe SelectedVideoStreams
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SourceConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'selectedVideoStreams', 'sourceConfiguration_selectedVideoStreams' - The selected video streams for a specified media pipeline. The number of
+-- video streams can\'t exceed 25.
+newSourceConfiguration ::
+  SourceConfiguration
+newSourceConfiguration =
+  SourceConfiguration'
+    { selectedVideoStreams =
+        Prelude.Nothing
+    }
+
+-- | The selected video streams for a specified media pipeline. The number of
+-- video streams can\'t exceed 25.
+sourceConfiguration_selectedVideoStreams :: Lens.Lens' SourceConfiguration (Prelude.Maybe SelectedVideoStreams)
+sourceConfiguration_selectedVideoStreams = Lens.lens (\SourceConfiguration' {selectedVideoStreams} -> selectedVideoStreams) (\s@SourceConfiguration' {} a -> s {selectedVideoStreams = a} :: SourceConfiguration)
+
+instance Data.FromJSON SourceConfiguration where
+  parseJSON =
+    Data.withObject
+      "SourceConfiguration"
+      ( \x ->
+          SourceConfiguration'
+            Prelude.<$> (x Data..:? "SelectedVideoStreams")
+      )
+
+instance Prelude.Hashable SourceConfiguration where
+  hashWithSalt _salt SourceConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` selectedVideoStreams
+
+instance Prelude.NFData SourceConfiguration where
+  rnf SourceConfiguration' {..} =
+    Prelude.rnf selectedVideoStreams
+
+instance Data.ToJSON SourceConfiguration where
+  toJSON SourceConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("SelectedVideoStreams" Data..=)
+              Prelude.<$> selectedVideoStreams
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/Tag.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/Tag.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.ChimeSdkMediaPipelines.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.ChimeSdkMediaPipelines.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 that grants users access to meeting resources.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The key half of a tag.
+    key :: Prelude.Text,
+    -- | The value half of a tag.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - The key half of a tag.
+--
+-- 'value', 'tag_value' - The value half of a tag.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | The key half of a tag.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | The value half of a tag.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/TranscriptionMessagesConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/TranscriptionMessagesConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/TranscriptionMessagesConcatenationConfiguration.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.ChimeSdkMediaPipelines.Types.TranscriptionMessagesConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.TranscriptionMessagesConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object for concatenating transcription messages.
+--
+-- /See:/ 'newTranscriptionMessagesConcatenationConfiguration' smart constructor.
+data TranscriptionMessagesConcatenationConfiguration = TranscriptionMessagesConcatenationConfiguration'
+  { -- | Enables or disables the configuration object.
+    state :: ArtifactsConcatenationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TranscriptionMessagesConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'state', 'transcriptionMessagesConcatenationConfiguration_state' - Enables or disables the configuration object.
+newTranscriptionMessagesConcatenationConfiguration ::
+  -- | 'state'
+  ArtifactsConcatenationState ->
+  TranscriptionMessagesConcatenationConfiguration
+newTranscriptionMessagesConcatenationConfiguration
+  pState_ =
+    TranscriptionMessagesConcatenationConfiguration'
+      { state =
+          pState_
+      }
+
+-- | Enables or disables the configuration object.
+transcriptionMessagesConcatenationConfiguration_state :: Lens.Lens' TranscriptionMessagesConcatenationConfiguration ArtifactsConcatenationState
+transcriptionMessagesConcatenationConfiguration_state = Lens.lens (\TranscriptionMessagesConcatenationConfiguration' {state} -> state) (\s@TranscriptionMessagesConcatenationConfiguration' {} a -> s {state = a} :: TranscriptionMessagesConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    TranscriptionMessagesConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "TranscriptionMessagesConcatenationConfiguration"
+      ( \x ->
+          TranscriptionMessagesConcatenationConfiguration'
+            Prelude.<$> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    TranscriptionMessagesConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    TranscriptionMessagesConcatenationConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` state
+
+instance
+  Prelude.NFData
+    TranscriptionMessagesConcatenationConfiguration
+  where
+  rnf
+    TranscriptionMessagesConcatenationConfiguration' {..} =
+      Prelude.rnf state
+
+instance
+  Data.ToJSON
+    TranscriptionMessagesConcatenationConfiguration
+  where
+  toJSON
+    TranscriptionMessagesConcatenationConfiguration' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [Prelude.Just ("State" Data..= state)]
+        )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoArtifactsConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoArtifactsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoArtifactsConfiguration.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.ChimeSdkMediaPipelines.Types.VideoArtifactsConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.VideoArtifactsConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsState
+import Amazonka.ChimeSdkMediaPipelines.Types.VideoMuxType
+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 video artifact configuration object.
+--
+-- /See:/ 'newVideoArtifactsConfiguration' smart constructor.
+data VideoArtifactsConfiguration = VideoArtifactsConfiguration'
+  { -- | The MUX type of the video artifact configuration object.
+    muxType :: Prelude.Maybe VideoMuxType,
+    -- | Indicates whether the video artifact is enabled or disabled.
+    state :: ArtifactsState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VideoArtifactsConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'muxType', 'videoArtifactsConfiguration_muxType' - The MUX type of the video artifact configuration object.
+--
+-- 'state', 'videoArtifactsConfiguration_state' - Indicates whether the video artifact is enabled or disabled.
+newVideoArtifactsConfiguration ::
+  -- | 'state'
+  ArtifactsState ->
+  VideoArtifactsConfiguration
+newVideoArtifactsConfiguration pState_ =
+  VideoArtifactsConfiguration'
+    { muxType =
+        Prelude.Nothing,
+      state = pState_
+    }
+
+-- | The MUX type of the video artifact configuration object.
+videoArtifactsConfiguration_muxType :: Lens.Lens' VideoArtifactsConfiguration (Prelude.Maybe VideoMuxType)
+videoArtifactsConfiguration_muxType = Lens.lens (\VideoArtifactsConfiguration' {muxType} -> muxType) (\s@VideoArtifactsConfiguration' {} a -> s {muxType = a} :: VideoArtifactsConfiguration)
+
+-- | Indicates whether the video artifact is enabled or disabled.
+videoArtifactsConfiguration_state :: Lens.Lens' VideoArtifactsConfiguration ArtifactsState
+videoArtifactsConfiguration_state = Lens.lens (\VideoArtifactsConfiguration' {state} -> state) (\s@VideoArtifactsConfiguration' {} a -> s {state = a} :: VideoArtifactsConfiguration)
+
+instance Data.FromJSON VideoArtifactsConfiguration where
+  parseJSON =
+    Data.withObject
+      "VideoArtifactsConfiguration"
+      ( \x ->
+          VideoArtifactsConfiguration'
+            Prelude.<$> (x Data..:? "MuxType")
+            Prelude.<*> (x Data..: "State")
+      )
+
+instance Prelude.Hashable VideoArtifactsConfiguration where
+  hashWithSalt _salt VideoArtifactsConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` muxType
+      `Prelude.hashWithSalt` state
+
+instance Prelude.NFData VideoArtifactsConfiguration where
+  rnf VideoArtifactsConfiguration' {..} =
+    Prelude.rnf muxType `Prelude.seq` Prelude.rnf state
+
+instance Data.ToJSON VideoArtifactsConfiguration where
+  toJSON VideoArtifactsConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("MuxType" Data..=) Prelude.<$> muxType,
+            Prelude.Just ("State" Data..= state)
+          ]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoConcatenationConfiguration.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoConcatenationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoConcatenationConfiguration.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.ChimeSdkMediaPipelines.Types.VideoConcatenationConfiguration
+-- 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.ChimeSdkMediaPipelines.Types.VideoConcatenationConfiguration where
+
+import Amazonka.ChimeSdkMediaPipelines.Types.ArtifactsConcatenationState
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration object of a video contacatentation pipeline.
+--
+-- /See:/ 'newVideoConcatenationConfiguration' smart constructor.
+data VideoConcatenationConfiguration = VideoConcatenationConfiguration'
+  { -- | Enables or disables the configuration object.
+    state :: ArtifactsConcatenationState
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VideoConcatenationConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'state', 'videoConcatenationConfiguration_state' - Enables or disables the configuration object.
+newVideoConcatenationConfiguration ::
+  -- | 'state'
+  ArtifactsConcatenationState ->
+  VideoConcatenationConfiguration
+newVideoConcatenationConfiguration pState_ =
+  VideoConcatenationConfiguration' {state = pState_}
+
+-- | Enables or disables the configuration object.
+videoConcatenationConfiguration_state :: Lens.Lens' VideoConcatenationConfiguration ArtifactsConcatenationState
+videoConcatenationConfiguration_state = Lens.lens (\VideoConcatenationConfiguration' {state} -> state) (\s@VideoConcatenationConfiguration' {} a -> s {state = a} :: VideoConcatenationConfiguration)
+
+instance
+  Data.FromJSON
+    VideoConcatenationConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "VideoConcatenationConfiguration"
+      ( \x ->
+          VideoConcatenationConfiguration'
+            Prelude.<$> (x Data..: "State")
+      )
+
+instance
+  Prelude.Hashable
+    VideoConcatenationConfiguration
+  where
+  hashWithSalt
+    _salt
+    VideoConcatenationConfiguration' {..} =
+      _salt `Prelude.hashWithSalt` state
+
+instance
+  Prelude.NFData
+    VideoConcatenationConfiguration
+  where
+  rnf VideoConcatenationConfiguration' {..} =
+    Prelude.rnf state
+
+instance Data.ToJSON VideoConcatenationConfiguration where
+  toJSON VideoConcatenationConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("State" Data..= state)]
+      )
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoMuxType.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoMuxType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/Types/VideoMuxType.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.ChimeSdkMediaPipelines.Types.VideoMuxType
+-- 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.ChimeSdkMediaPipelines.Types.VideoMuxType
+  ( VideoMuxType
+      ( ..,
+        VideoMuxType_VideoOnly
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VideoMuxType = VideoMuxType'
+  { fromVideoMuxType ::
+      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 VideoMuxType_VideoOnly :: VideoMuxType
+pattern VideoMuxType_VideoOnly = VideoMuxType' "VideoOnly"
+
+{-# COMPLETE
+  VideoMuxType_VideoOnly,
+  VideoMuxType'
+  #-}
diff --git a/gen/Amazonka/ChimeSdkMediaPipelines/UntagResource.hs b/gen/Amazonka/ChimeSdkMediaPipelines/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/UntagResource.hs
@@ -0,0 +1,163 @@
+{-# 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.ChimeSdkMediaPipelines.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 any tags from a media pipeline.
+module Amazonka.ChimeSdkMediaPipelines.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+where
+
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The ARN of the pipeline that you want to untag.
+    resourceARN :: Prelude.Text,
+    -- | The key\/value pairs in the tag that you want to remove.
+    tagKeys :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceARN', 'untagResource_resourceARN' - The ARN of the pipeline that you want to untag.
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The key\/value pairs in the tag that you want to remove.
+newUntagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  -- | 'tagKeys'
+  Prelude.NonEmpty Prelude.Text ->
+  UntagResource
+newUntagResource pResourceARN_ pTagKeys_ =
+  UntagResource'
+    { resourceARN = pResourceARN_,
+      tagKeys = Lens.coerced Lens.# pTagKeys_
+    }
+
+-- | The ARN of the pipeline that you want to untag.
+untagResource_resourceARN :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceARN = Lens.lens (\UntagResource' {resourceARN} -> resourceARN) (\s@UntagResource' {} a -> s {resourceARN = a} :: UntagResource)
+
+-- | The key\/value pairs in the tag that you want to remove.
+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath = Prelude.const "/tags"
+
+instance Data.ToQuery UntagResource where
+  toQuery =
+    Prelude.const
+      (Prelude.mconcat ["operation=untag-resource"])
+
+-- | /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/ChimeSdkMediaPipelines/Waiters.hs b/gen/Amazonka/ChimeSdkMediaPipelines/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/ChimeSdkMediaPipelines/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.ChimeSdkMediaPipelines.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.ChimeSdkMediaPipelines.Waiters where
+
+import Amazonka.ChimeSdkMediaPipelines.Lens
+import Amazonka.ChimeSdkMediaPipelines.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.ChimeSdkMediaPipelines
+import Test.Amazonka.ChimeSdkMediaPipelines.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "ChimeSdkMediaPipelines"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/ChimeSdkMediaPipelines.hs b/test/Test/Amazonka/ChimeSdkMediaPipelines.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ChimeSdkMediaPipelines.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.ChimeSdkMediaPipelines
+-- 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.ChimeSdkMediaPipelines
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/ChimeSdkMediaPipelines/Internal.hs b/test/Test/Amazonka/ChimeSdkMediaPipelines/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/ChimeSdkMediaPipelines/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.ChimeSdkMediaPipelines.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.ChimeSdkMediaPipelines.Internal where
diff --git a/test/Test/Amazonka/Gen/ChimeSdkMediaPipelines.hs b/test/Test/Amazonka/Gen/ChimeSdkMediaPipelines.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/ChimeSdkMediaPipelines.hs
@@ -0,0 +1,278 @@
+{-# 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.ChimeSdkMediaPipelines
+-- 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.ChimeSdkMediaPipelines where
+
+import Amazonka.ChimeSdkMediaPipelines
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.ChimeSdkMediaPipelines.Internal
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestCreateMediaCapturePipeline $
+--             newCreateMediaCapturePipeline
+--
+--         , requestCreateMediaConcatenationPipeline $
+--             newCreateMediaConcatenationPipeline
+--
+--         , requestCreateMediaLiveConnectorPipeline $
+--             newCreateMediaLiveConnectorPipeline
+--
+--         , requestDeleteMediaCapturePipeline $
+--             newDeleteMediaCapturePipeline
+--
+--         , requestDeleteMediaPipeline $
+--             newDeleteMediaPipeline
+--
+--         , requestGetMediaCapturePipeline $
+--             newGetMediaCapturePipeline
+--
+--         , requestGetMediaPipeline $
+--             newGetMediaPipeline
+--
+--         , requestListMediaCapturePipelines $
+--             newListMediaCapturePipelines
+--
+--         , requestListMediaPipelines $
+--             newListMediaPipelines
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreateMediaCapturePipeline $
+--             newCreateMediaCapturePipelineResponse
+--
+--         , responseCreateMediaConcatenationPipeline $
+--             newCreateMediaConcatenationPipelineResponse
+--
+--         , responseCreateMediaLiveConnectorPipeline $
+--             newCreateMediaLiveConnectorPipelineResponse
+--
+--         , responseDeleteMediaCapturePipeline $
+--             newDeleteMediaCapturePipelineResponse
+--
+--         , responseDeleteMediaPipeline $
+--             newDeleteMediaPipelineResponse
+--
+--         , responseGetMediaCapturePipeline $
+--             newGetMediaCapturePipelineResponse
+--
+--         , responseGetMediaPipeline $
+--             newGetMediaPipelineResponse
+--
+--         , responseListMediaCapturePipelines $
+--             newListMediaCapturePipelinesResponse
+--
+--         , responseListMediaPipelines $
+--             newListMediaPipelinesResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreateMediaCapturePipeline :: CreateMediaCapturePipeline -> TestTree
+requestCreateMediaCapturePipeline =
+  req
+    "CreateMediaCapturePipeline"
+    "fixture/CreateMediaCapturePipeline.yaml"
+
+requestCreateMediaConcatenationPipeline :: CreateMediaConcatenationPipeline -> TestTree
+requestCreateMediaConcatenationPipeline =
+  req
+    "CreateMediaConcatenationPipeline"
+    "fixture/CreateMediaConcatenationPipeline.yaml"
+
+requestCreateMediaLiveConnectorPipeline :: CreateMediaLiveConnectorPipeline -> TestTree
+requestCreateMediaLiveConnectorPipeline =
+  req
+    "CreateMediaLiveConnectorPipeline"
+    "fixture/CreateMediaLiveConnectorPipeline.yaml"
+
+requestDeleteMediaCapturePipeline :: DeleteMediaCapturePipeline -> TestTree
+requestDeleteMediaCapturePipeline =
+  req
+    "DeleteMediaCapturePipeline"
+    "fixture/DeleteMediaCapturePipeline.yaml"
+
+requestDeleteMediaPipeline :: DeleteMediaPipeline -> TestTree
+requestDeleteMediaPipeline =
+  req
+    "DeleteMediaPipeline"
+    "fixture/DeleteMediaPipeline.yaml"
+
+requestGetMediaCapturePipeline :: GetMediaCapturePipeline -> TestTree
+requestGetMediaCapturePipeline =
+  req
+    "GetMediaCapturePipeline"
+    "fixture/GetMediaCapturePipeline.yaml"
+
+requestGetMediaPipeline :: GetMediaPipeline -> TestTree
+requestGetMediaPipeline =
+  req
+    "GetMediaPipeline"
+    "fixture/GetMediaPipeline.yaml"
+
+requestListMediaCapturePipelines :: ListMediaCapturePipelines -> TestTree
+requestListMediaCapturePipelines =
+  req
+    "ListMediaCapturePipelines"
+    "fixture/ListMediaCapturePipelines.yaml"
+
+requestListMediaPipelines :: ListMediaPipelines -> TestTree
+requestListMediaPipelines =
+  req
+    "ListMediaPipelines"
+    "fixture/ListMediaPipelines.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+-- Responses
+
+responseCreateMediaCapturePipeline :: CreateMediaCapturePipelineResponse -> TestTree
+responseCreateMediaCapturePipeline =
+  res
+    "CreateMediaCapturePipelineResponse"
+    "fixture/CreateMediaCapturePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMediaCapturePipeline)
+
+responseCreateMediaConcatenationPipeline :: CreateMediaConcatenationPipelineResponse -> TestTree
+responseCreateMediaConcatenationPipeline =
+  res
+    "CreateMediaConcatenationPipelineResponse"
+    "fixture/CreateMediaConcatenationPipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMediaConcatenationPipeline)
+
+responseCreateMediaLiveConnectorPipeline :: CreateMediaLiveConnectorPipelineResponse -> TestTree
+responseCreateMediaLiveConnectorPipeline =
+  res
+    "CreateMediaLiveConnectorPipelineResponse"
+    "fixture/CreateMediaLiveConnectorPipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateMediaLiveConnectorPipeline)
+
+responseDeleteMediaCapturePipeline :: DeleteMediaCapturePipelineResponse -> TestTree
+responseDeleteMediaCapturePipeline =
+  res
+    "DeleteMediaCapturePipelineResponse"
+    "fixture/DeleteMediaCapturePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteMediaCapturePipeline)
+
+responseDeleteMediaPipeline :: DeleteMediaPipelineResponse -> TestTree
+responseDeleteMediaPipeline =
+  res
+    "DeleteMediaPipelineResponse"
+    "fixture/DeleteMediaPipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteMediaPipeline)
+
+responseGetMediaCapturePipeline :: GetMediaCapturePipelineResponse -> TestTree
+responseGetMediaCapturePipeline =
+  res
+    "GetMediaCapturePipelineResponse"
+    "fixture/GetMediaCapturePipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetMediaCapturePipeline)
+
+responseGetMediaPipeline :: GetMediaPipelineResponse -> TestTree
+responseGetMediaPipeline =
+  res
+    "GetMediaPipelineResponse"
+    "fixture/GetMediaPipelineResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetMediaPipeline)
+
+responseListMediaCapturePipelines :: ListMediaCapturePipelinesResponse -> TestTree
+responseListMediaCapturePipelines =
+  res
+    "ListMediaCapturePipelinesResponse"
+    "fixture/ListMediaCapturePipelinesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMediaCapturePipelines)
+
+responseListMediaPipelines :: ListMediaPipelinesResponse -> TestTree
+responseListMediaPipelines =
+  res
+    "ListMediaPipelinesResponse"
+    "fixture/ListMediaPipelinesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListMediaPipelines)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+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)
