diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,9 +7,8 @@
 
 
 ## Version
-
-`1.6.1`
-
+ 
+`2.0` - Derived from API version @2017-10-12@ of the AWS service descriptions, licensed under Apache 2.0.
 
 ## Description
 
@@ -26,7 +25,7 @@
 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 [Network.AWS.MediaPackage](http://hackage.haskell.org/package/amazonka-mediapackage/docs/Network-AWS-MediaPackage.html)
+See [Amazonka.MediaPackage](http://hackage.haskell.org/package/amazonka-mediapackage/docs/Amazonka-MediaPackage.html)
 or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
 
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import           Distribution.Simple
-main = defaultMain
diff --git a/amazonka-mediapackage.cabal b/amazonka-mediapackage.cabal
--- a/amazonka-mediapackage.cabal
+++ b/amazonka-mediapackage.cabal
@@ -1,96 +1,140 @@
-name:                  amazonka-mediapackage
-version:               1.6.1
-synopsis:              Amazon Elemental MediaPackage 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>
-copyright:             Copyright (c) 2013-2018 Brendan Hay
-category:              Network, AWS, Cloud, Distributed Computing
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
+cabal-version:      2.2
+name:               amazonka-mediapackage
+version:            2.0
+synopsis:           Amazon Elemental MediaPackage 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:
-    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.
-    .
-    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
-    such as <http://hackage.haskell.org/package/lens lens> or
-    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
-    .
-    See "Network.AWS.MediaPackage" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2017-10-12@ 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.MediaPackage.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.MediaPackage" 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-mediapackage
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-mediapackage
 
 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:
-          Network.AWS.MediaPackage
-        , Network.AWS.MediaPackage.CreateChannel
-        , Network.AWS.MediaPackage.CreateOriginEndpoint
-        , Network.AWS.MediaPackage.DeleteChannel
-        , Network.AWS.MediaPackage.DeleteOriginEndpoint
-        , Network.AWS.MediaPackage.DescribeChannel
-        , Network.AWS.MediaPackage.DescribeOriginEndpoint
-        , Network.AWS.MediaPackage.ListChannels
-        , Network.AWS.MediaPackage.ListOriginEndpoints
-        , Network.AWS.MediaPackage.RotateChannelCredentials
-        , Network.AWS.MediaPackage.Types
-        , Network.AWS.MediaPackage.UpdateChannel
-        , Network.AWS.MediaPackage.UpdateOriginEndpoint
-        , Network.AWS.MediaPackage.Waiters
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
 
-    other-modules:
-          Network.AWS.MediaPackage.Types.Product
-        , Network.AWS.MediaPackage.Types.Sum
+  exposed-modules:
+    Amazonka.MediaPackage
+    Amazonka.MediaPackage.ConfigureLogs
+    Amazonka.MediaPackage.CreateChannel
+    Amazonka.MediaPackage.CreateHarvestJob
+    Amazonka.MediaPackage.CreateOriginEndpoint
+    Amazonka.MediaPackage.DeleteChannel
+    Amazonka.MediaPackage.DeleteOriginEndpoint
+    Amazonka.MediaPackage.DescribeChannel
+    Amazonka.MediaPackage.DescribeHarvestJob
+    Amazonka.MediaPackage.DescribeOriginEndpoint
+    Amazonka.MediaPackage.Lens
+    Amazonka.MediaPackage.ListChannels
+    Amazonka.MediaPackage.ListHarvestJobs
+    Amazonka.MediaPackage.ListOriginEndpoints
+    Amazonka.MediaPackage.ListTagsForResource
+    Amazonka.MediaPackage.RotateIngestEndpointCredentials
+    Amazonka.MediaPackage.TagResource
+    Amazonka.MediaPackage.Types
+    Amazonka.MediaPackage.Types.AdMarkers
+    Amazonka.MediaPackage.Types.AdsOnDeliveryRestrictions
+    Amazonka.MediaPackage.Types.AdTriggersElement
+    Amazonka.MediaPackage.Types.Authorization
+    Amazonka.MediaPackage.Types.Channel
+    Amazonka.MediaPackage.Types.CmafEncryption
+    Amazonka.MediaPackage.Types.CmafEncryptionMethod
+    Amazonka.MediaPackage.Types.CmafPackage
+    Amazonka.MediaPackage.Types.CmafPackageCreateOrUpdateParameters
+    Amazonka.MediaPackage.Types.DashEncryption
+    Amazonka.MediaPackage.Types.DashPackage
+    Amazonka.MediaPackage.Types.EgressAccessLogs
+    Amazonka.MediaPackage.Types.EncryptionContractConfiguration
+    Amazonka.MediaPackage.Types.EncryptionMethod
+    Amazonka.MediaPackage.Types.HarvestJob
+    Amazonka.MediaPackage.Types.HlsEncryption
+    Amazonka.MediaPackage.Types.HlsIngest
+    Amazonka.MediaPackage.Types.HlsManifest
+    Amazonka.MediaPackage.Types.HlsManifestCreateOrUpdateParameters
+    Amazonka.MediaPackage.Types.HlsPackage
+    Amazonka.MediaPackage.Types.IngestEndpoint
+    Amazonka.MediaPackage.Types.IngressAccessLogs
+    Amazonka.MediaPackage.Types.ManifestLayout
+    Amazonka.MediaPackage.Types.MssEncryption
+    Amazonka.MediaPackage.Types.MssPackage
+    Amazonka.MediaPackage.Types.Origination
+    Amazonka.MediaPackage.Types.OriginEndpoint
+    Amazonka.MediaPackage.Types.PeriodTriggersElement
+    Amazonka.MediaPackage.Types.PlaylistType
+    Amazonka.MediaPackage.Types.PresetSpeke20Audio
+    Amazonka.MediaPackage.Types.PresetSpeke20Video
+    Amazonka.MediaPackage.Types.Profile
+    Amazonka.MediaPackage.Types.S3Destination
+    Amazonka.MediaPackage.Types.SegmentTemplateFormat
+    Amazonka.MediaPackage.Types.SpekeKeyProvider
+    Amazonka.MediaPackage.Types.Status
+    Amazonka.MediaPackage.Types.StreamOrder
+    Amazonka.MediaPackage.Types.StreamSelection
+    Amazonka.MediaPackage.Types.UtcTiming
+    Amazonka.MediaPackage.UntagResource
+    Amazonka.MediaPackage.UpdateChannel
+    Amazonka.MediaPackage.UpdateOriginEndpoint
+    Amazonka.MediaPackage.Waiters
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , base          >= 4.7     && < 5
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
 
 test-suite amazonka-mediapackage-test
-    type:              exitcode-stdio-1.0
-    default-language:  Haskell2010
-    hs-source-dirs:    test
-    main-is:           Main.hs
-
-    ghc-options:       -Wall -threaded
+  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.AWS.MediaPackage
-        , Test.AWS.Gen.MediaPackage
-        , Test.AWS.MediaPackage.Internal
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.Gen.MediaPackage
+    Test.Amazonka.MediaPackage
+    Test.Amazonka.MediaPackage.Internal
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-mediapackage
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core          >=2.0 && <2.1
+    , amazonka-mediapackage
+    , amazonka-test          >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/ConfigureLogs.yaml b/fixture/ConfigureLogs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ConfigureLogs.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediapackage/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediapackage.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/ConfigureLogsResponse.proto b/fixture/ConfigureLogsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ConfigureLogsResponse.proto
diff --git a/fixture/CreateHarvestJob.yaml b/fixture/CreateHarvestJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateHarvestJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediapackage/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediapackage.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/CreateHarvestJobResponse.proto b/fixture/CreateHarvestJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateHarvestJobResponse.proto
diff --git a/fixture/DescribeHarvestJob.yaml b/fixture/DescribeHarvestJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHarvestJob.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediapackage/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediapackage.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/DescribeHarvestJobResponse.proto b/fixture/DescribeHarvestJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeHarvestJobResponse.proto
diff --git a/fixture/ListHarvestJobs.yaml b/fixture/ListHarvestJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListHarvestJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediapackage/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediapackage.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/ListHarvestJobsResponse.proto b/fixture/ListHarvestJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListHarvestJobsResponse.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/mediapackage/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediapackage.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/RotateIngestEndpointCredentials.yaml b/fixture/RotateIngestEndpointCredentials.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RotateIngestEndpointCredentials.yaml
@@ -0,0 +1,10 @@
+---
+method: PUT
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediapackage/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediapackage.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/RotateIngestEndpointCredentialsResponse.proto b/fixture/RotateIngestEndpointCredentialsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RotateIngestEndpointCredentialsResponse.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/mediapackage/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediapackage.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/mediapackage/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  mediapackage.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/MediaPackage.hs b/gen/Amazonka/MediaPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage.hs
@@ -0,0 +1,345 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.MediaPackage
+-- 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 @2017-10-12@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- AWS Elemental MediaPackage
+module Amazonka.MediaPackage
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** ForbiddenException
+    _ForbiddenException,
+
+    -- ** InternalServerErrorException
+    _InternalServerErrorException,
+
+    -- ** NotFoundException
+    _NotFoundException,
+
+    -- ** ServiceUnavailableException
+    _ServiceUnavailableException,
+
+    -- ** TooManyRequestsException
+    _TooManyRequestsException,
+
+    -- ** UnprocessableEntityException
+    _UnprocessableEntityException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** ConfigureLogs
+    ConfigureLogs (ConfigureLogs'),
+    newConfigureLogs,
+    ConfigureLogsResponse (ConfigureLogsResponse'),
+    newConfigureLogsResponse,
+
+    -- ** CreateChannel
+    CreateChannel (CreateChannel'),
+    newCreateChannel,
+    CreateChannelResponse (CreateChannelResponse'),
+    newCreateChannelResponse,
+
+    -- ** CreateHarvestJob
+    CreateHarvestJob (CreateHarvestJob'),
+    newCreateHarvestJob,
+    CreateHarvestJobResponse (CreateHarvestJobResponse'),
+    newCreateHarvestJobResponse,
+
+    -- ** CreateOriginEndpoint
+    CreateOriginEndpoint (CreateOriginEndpoint'),
+    newCreateOriginEndpoint,
+    CreateOriginEndpointResponse (CreateOriginEndpointResponse'),
+    newCreateOriginEndpointResponse,
+
+    -- ** DeleteChannel
+    DeleteChannel (DeleteChannel'),
+    newDeleteChannel,
+    DeleteChannelResponse (DeleteChannelResponse'),
+    newDeleteChannelResponse,
+
+    -- ** DeleteOriginEndpoint
+    DeleteOriginEndpoint (DeleteOriginEndpoint'),
+    newDeleteOriginEndpoint,
+    DeleteOriginEndpointResponse (DeleteOriginEndpointResponse'),
+    newDeleteOriginEndpointResponse,
+
+    -- ** DescribeChannel
+    DescribeChannel (DescribeChannel'),
+    newDescribeChannel,
+    DescribeChannelResponse (DescribeChannelResponse'),
+    newDescribeChannelResponse,
+
+    -- ** DescribeHarvestJob
+    DescribeHarvestJob (DescribeHarvestJob'),
+    newDescribeHarvestJob,
+    DescribeHarvestJobResponse (DescribeHarvestJobResponse'),
+    newDescribeHarvestJobResponse,
+
+    -- ** DescribeOriginEndpoint
+    DescribeOriginEndpoint (DescribeOriginEndpoint'),
+    newDescribeOriginEndpoint,
+    DescribeOriginEndpointResponse (DescribeOriginEndpointResponse'),
+    newDescribeOriginEndpointResponse,
+
+    -- ** ListChannels (Paginated)
+    ListChannels (ListChannels'),
+    newListChannels,
+    ListChannelsResponse (ListChannelsResponse'),
+    newListChannelsResponse,
+
+    -- ** ListHarvestJobs (Paginated)
+    ListHarvestJobs (ListHarvestJobs'),
+    newListHarvestJobs,
+    ListHarvestJobsResponse (ListHarvestJobsResponse'),
+    newListHarvestJobsResponse,
+
+    -- ** ListOriginEndpoints (Paginated)
+    ListOriginEndpoints (ListOriginEndpoints'),
+    newListOriginEndpoints,
+    ListOriginEndpointsResponse (ListOriginEndpointsResponse'),
+    newListOriginEndpointsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** RotateIngestEndpointCredentials
+    RotateIngestEndpointCredentials (RotateIngestEndpointCredentials'),
+    newRotateIngestEndpointCredentials,
+    RotateIngestEndpointCredentialsResponse (RotateIngestEndpointCredentialsResponse'),
+    newRotateIngestEndpointCredentialsResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- ** UpdateChannel
+    UpdateChannel (UpdateChannel'),
+    newUpdateChannel,
+    UpdateChannelResponse (UpdateChannelResponse'),
+    newUpdateChannelResponse,
+
+    -- ** UpdateOriginEndpoint
+    UpdateOriginEndpoint (UpdateOriginEndpoint'),
+    newUpdateOriginEndpoint,
+    UpdateOriginEndpointResponse (UpdateOriginEndpointResponse'),
+    newUpdateOriginEndpointResponse,
+
+    -- * Types
+
+    -- ** AdMarkers
+    AdMarkers (..),
+
+    -- ** AdTriggersElement
+    AdTriggersElement (..),
+
+    -- ** AdsOnDeliveryRestrictions
+    AdsOnDeliveryRestrictions (..),
+
+    -- ** CmafEncryptionMethod
+    CmafEncryptionMethod (..),
+
+    -- ** EncryptionMethod
+    EncryptionMethod (..),
+
+    -- ** ManifestLayout
+    ManifestLayout (..),
+
+    -- ** Origination
+    Origination (..),
+
+    -- ** PeriodTriggersElement
+    PeriodTriggersElement (..),
+
+    -- ** PlaylistType
+    PlaylistType (..),
+
+    -- ** PresetSpeke20Audio
+    PresetSpeke20Audio (..),
+
+    -- ** PresetSpeke20Video
+    PresetSpeke20Video (..),
+
+    -- ** Profile
+    Profile (..),
+
+    -- ** SegmentTemplateFormat
+    SegmentTemplateFormat (..),
+
+    -- ** Status
+    Status (..),
+
+    -- ** StreamOrder
+    StreamOrder (..),
+
+    -- ** UtcTiming
+    UtcTiming (..),
+
+    -- ** Authorization
+    Authorization (Authorization'),
+    newAuthorization,
+
+    -- ** Channel
+    Channel (Channel'),
+    newChannel,
+
+    -- ** CmafEncryption
+    CmafEncryption (CmafEncryption'),
+    newCmafEncryption,
+
+    -- ** CmafPackage
+    CmafPackage (CmafPackage'),
+    newCmafPackage,
+
+    -- ** CmafPackageCreateOrUpdateParameters
+    CmafPackageCreateOrUpdateParameters (CmafPackageCreateOrUpdateParameters'),
+    newCmafPackageCreateOrUpdateParameters,
+
+    -- ** DashEncryption
+    DashEncryption (DashEncryption'),
+    newDashEncryption,
+
+    -- ** DashPackage
+    DashPackage (DashPackage'),
+    newDashPackage,
+
+    -- ** EgressAccessLogs
+    EgressAccessLogs (EgressAccessLogs'),
+    newEgressAccessLogs,
+
+    -- ** EncryptionContractConfiguration
+    EncryptionContractConfiguration (EncryptionContractConfiguration'),
+    newEncryptionContractConfiguration,
+
+    -- ** HarvestJob
+    HarvestJob (HarvestJob'),
+    newHarvestJob,
+
+    -- ** HlsEncryption
+    HlsEncryption (HlsEncryption'),
+    newHlsEncryption,
+
+    -- ** HlsIngest
+    HlsIngest (HlsIngest'),
+    newHlsIngest,
+
+    -- ** HlsManifest
+    HlsManifest (HlsManifest'),
+    newHlsManifest,
+
+    -- ** HlsManifestCreateOrUpdateParameters
+    HlsManifestCreateOrUpdateParameters (HlsManifestCreateOrUpdateParameters'),
+    newHlsManifestCreateOrUpdateParameters,
+
+    -- ** HlsPackage
+    HlsPackage (HlsPackage'),
+    newHlsPackage,
+
+    -- ** IngestEndpoint
+    IngestEndpoint (IngestEndpoint'),
+    newIngestEndpoint,
+
+    -- ** IngressAccessLogs
+    IngressAccessLogs (IngressAccessLogs'),
+    newIngressAccessLogs,
+
+    -- ** MssEncryption
+    MssEncryption (MssEncryption'),
+    newMssEncryption,
+
+    -- ** MssPackage
+    MssPackage (MssPackage'),
+    newMssPackage,
+
+    -- ** OriginEndpoint
+    OriginEndpoint (OriginEndpoint'),
+    newOriginEndpoint,
+
+    -- ** S3Destination
+    S3Destination (S3Destination'),
+    newS3Destination,
+
+    -- ** SpekeKeyProvider
+    SpekeKeyProvider (SpekeKeyProvider'),
+    newSpekeKeyProvider,
+
+    -- ** StreamSelection
+    StreamSelection (StreamSelection'),
+    newStreamSelection,
+  )
+where
+
+import Amazonka.MediaPackage.ConfigureLogs
+import Amazonka.MediaPackage.CreateChannel
+import Amazonka.MediaPackage.CreateHarvestJob
+import Amazonka.MediaPackage.CreateOriginEndpoint
+import Amazonka.MediaPackage.DeleteChannel
+import Amazonka.MediaPackage.DeleteOriginEndpoint
+import Amazonka.MediaPackage.DescribeChannel
+import Amazonka.MediaPackage.DescribeHarvestJob
+import Amazonka.MediaPackage.DescribeOriginEndpoint
+import Amazonka.MediaPackage.Lens
+import Amazonka.MediaPackage.ListChannels
+import Amazonka.MediaPackage.ListHarvestJobs
+import Amazonka.MediaPackage.ListOriginEndpoints
+import Amazonka.MediaPackage.ListTagsForResource
+import Amazonka.MediaPackage.RotateIngestEndpointCredentials
+import Amazonka.MediaPackage.TagResource
+import Amazonka.MediaPackage.Types
+import Amazonka.MediaPackage.UntagResource
+import Amazonka.MediaPackage.UpdateChannel
+import Amazonka.MediaPackage.UpdateOriginEndpoint
+import Amazonka.MediaPackage.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 'MediaPackage'.
+
+-- $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/MediaPackage/ConfigureLogs.hs b/gen/Amazonka/MediaPackage/ConfigureLogs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/ConfigureLogs.hs
@@ -0,0 +1,265 @@
+{-# 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.MediaPackage.ConfigureLogs
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes the Channel\'s properities to configure log subscription
+module Amazonka.MediaPackage.ConfigureLogs
+  ( -- * Creating a Request
+    ConfigureLogs (..),
+    newConfigureLogs,
+
+    -- * Request Lenses
+    configureLogs_egressAccessLogs,
+    configureLogs_ingressAccessLogs,
+    configureLogs_id,
+
+    -- * Destructuring the Response
+    ConfigureLogsResponse (..),
+    newConfigureLogsResponse,
+
+    -- * Response Lenses
+    configureLogsResponse_arn,
+    configureLogsResponse_description,
+    configureLogsResponse_egressAccessLogs,
+    configureLogsResponse_hlsIngest,
+    configureLogsResponse_id,
+    configureLogsResponse_ingressAccessLogs,
+    configureLogsResponse_tags,
+    configureLogsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | the option to configure log subscription.
+--
+-- /See:/ 'newConfigureLogs' smart constructor.
+data ConfigureLogs = ConfigureLogs'
+  { egressAccessLogs :: Prelude.Maybe EgressAccessLogs,
+    ingressAccessLogs :: Prelude.Maybe IngressAccessLogs,
+    -- | The ID of the channel to log subscription.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConfigureLogs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'egressAccessLogs', 'configureLogs_egressAccessLogs' - Undocumented member.
+--
+-- 'ingressAccessLogs', 'configureLogs_ingressAccessLogs' - Undocumented member.
+--
+-- 'id', 'configureLogs_id' - The ID of the channel to log subscription.
+newConfigureLogs ::
+  -- | 'id'
+  Prelude.Text ->
+  ConfigureLogs
+newConfigureLogs pId_ =
+  ConfigureLogs'
+    { egressAccessLogs = Prelude.Nothing,
+      ingressAccessLogs = Prelude.Nothing,
+      id = pId_
+    }
+
+-- | Undocumented member.
+configureLogs_egressAccessLogs :: Lens.Lens' ConfigureLogs (Prelude.Maybe EgressAccessLogs)
+configureLogs_egressAccessLogs = Lens.lens (\ConfigureLogs' {egressAccessLogs} -> egressAccessLogs) (\s@ConfigureLogs' {} a -> s {egressAccessLogs = a} :: ConfigureLogs)
+
+-- | Undocumented member.
+configureLogs_ingressAccessLogs :: Lens.Lens' ConfigureLogs (Prelude.Maybe IngressAccessLogs)
+configureLogs_ingressAccessLogs = Lens.lens (\ConfigureLogs' {ingressAccessLogs} -> ingressAccessLogs) (\s@ConfigureLogs' {} a -> s {ingressAccessLogs = a} :: ConfigureLogs)
+
+-- | The ID of the channel to log subscription.
+configureLogs_id :: Lens.Lens' ConfigureLogs Prelude.Text
+configureLogs_id = Lens.lens (\ConfigureLogs' {id} -> id) (\s@ConfigureLogs' {} a -> s {id = a} :: ConfigureLogs)
+
+instance Core.AWSRequest ConfigureLogs where
+  type
+    AWSResponse ConfigureLogs =
+      ConfigureLogsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ConfigureLogsResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> (x Data..?> "egressAccessLogs")
+            Prelude.<*> (x Data..?> "hlsIngest")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "ingressAccessLogs")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ConfigureLogs where
+  hashWithSalt _salt ConfigureLogs' {..} =
+    _salt
+      `Prelude.hashWithSalt` egressAccessLogs
+      `Prelude.hashWithSalt` ingressAccessLogs
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData ConfigureLogs where
+  rnf ConfigureLogs' {..} =
+    Prelude.rnf egressAccessLogs
+      `Prelude.seq` Prelude.rnf ingressAccessLogs
+      `Prelude.seq` Prelude.rnf id
+
+instance Data.ToHeaders ConfigureLogs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ConfigureLogs where
+  toJSON ConfigureLogs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("egressAccessLogs" Data..=)
+              Prelude.<$> egressAccessLogs,
+            ("ingressAccessLogs" Data..=)
+              Prelude.<$> ingressAccessLogs
+          ]
+      )
+
+instance Data.ToPath ConfigureLogs where
+  toPath ConfigureLogs' {..} =
+    Prelude.mconcat
+      ["/channels/", Data.toBS id, "/configure_logs"]
+
+instance Data.ToQuery ConfigureLogs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newConfigureLogsResponse' smart constructor.
+data ConfigureLogsResponse = ConfigureLogsResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the Channel.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A short text description of the Channel.
+    description :: Prelude.Maybe Prelude.Text,
+    egressAccessLogs :: Prelude.Maybe EgressAccessLogs,
+    hlsIngest :: Prelude.Maybe HlsIngest,
+    -- | The ID of the Channel.
+    id :: Prelude.Maybe Prelude.Text,
+    ingressAccessLogs :: Prelude.Maybe IngressAccessLogs,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConfigureLogsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'configureLogsResponse_arn' - The Amazon Resource Name (ARN) assigned to the Channel.
+--
+-- 'description', 'configureLogsResponse_description' - A short text description of the Channel.
+--
+-- 'egressAccessLogs', 'configureLogsResponse_egressAccessLogs' - Undocumented member.
+--
+-- 'hlsIngest', 'configureLogsResponse_hlsIngest' - Undocumented member.
+--
+-- 'id', 'configureLogsResponse_id' - The ID of the Channel.
+--
+-- 'ingressAccessLogs', 'configureLogsResponse_ingressAccessLogs' - Undocumented member.
+--
+-- 'tags', 'configureLogsResponse_tags' - Undocumented member.
+--
+-- 'httpStatus', 'configureLogsResponse_httpStatus' - The response's http status code.
+newConfigureLogsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ConfigureLogsResponse
+newConfigureLogsResponse pHttpStatus_ =
+  ConfigureLogsResponse'
+    { arn = Prelude.Nothing,
+      description = Prelude.Nothing,
+      egressAccessLogs = Prelude.Nothing,
+      hlsIngest = Prelude.Nothing,
+      id = Prelude.Nothing,
+      ingressAccessLogs = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the Channel.
+configureLogsResponse_arn :: Lens.Lens' ConfigureLogsResponse (Prelude.Maybe Prelude.Text)
+configureLogsResponse_arn = Lens.lens (\ConfigureLogsResponse' {arn} -> arn) (\s@ConfigureLogsResponse' {} a -> s {arn = a} :: ConfigureLogsResponse)
+
+-- | A short text description of the Channel.
+configureLogsResponse_description :: Lens.Lens' ConfigureLogsResponse (Prelude.Maybe Prelude.Text)
+configureLogsResponse_description = Lens.lens (\ConfigureLogsResponse' {description} -> description) (\s@ConfigureLogsResponse' {} a -> s {description = a} :: ConfigureLogsResponse)
+
+-- | Undocumented member.
+configureLogsResponse_egressAccessLogs :: Lens.Lens' ConfigureLogsResponse (Prelude.Maybe EgressAccessLogs)
+configureLogsResponse_egressAccessLogs = Lens.lens (\ConfigureLogsResponse' {egressAccessLogs} -> egressAccessLogs) (\s@ConfigureLogsResponse' {} a -> s {egressAccessLogs = a} :: ConfigureLogsResponse)
+
+-- | Undocumented member.
+configureLogsResponse_hlsIngest :: Lens.Lens' ConfigureLogsResponse (Prelude.Maybe HlsIngest)
+configureLogsResponse_hlsIngest = Lens.lens (\ConfigureLogsResponse' {hlsIngest} -> hlsIngest) (\s@ConfigureLogsResponse' {} a -> s {hlsIngest = a} :: ConfigureLogsResponse)
+
+-- | The ID of the Channel.
+configureLogsResponse_id :: Lens.Lens' ConfigureLogsResponse (Prelude.Maybe Prelude.Text)
+configureLogsResponse_id = Lens.lens (\ConfigureLogsResponse' {id} -> id) (\s@ConfigureLogsResponse' {} a -> s {id = a} :: ConfigureLogsResponse)
+
+-- | Undocumented member.
+configureLogsResponse_ingressAccessLogs :: Lens.Lens' ConfigureLogsResponse (Prelude.Maybe IngressAccessLogs)
+configureLogsResponse_ingressAccessLogs = Lens.lens (\ConfigureLogsResponse' {ingressAccessLogs} -> ingressAccessLogs) (\s@ConfigureLogsResponse' {} a -> s {ingressAccessLogs = a} :: ConfigureLogsResponse)
+
+-- | Undocumented member.
+configureLogsResponse_tags :: Lens.Lens' ConfigureLogsResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+configureLogsResponse_tags = Lens.lens (\ConfigureLogsResponse' {tags} -> tags) (\s@ConfigureLogsResponse' {} a -> s {tags = a} :: ConfigureLogsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+configureLogsResponse_httpStatus :: Lens.Lens' ConfigureLogsResponse Prelude.Int
+configureLogsResponse_httpStatus = Lens.lens (\ConfigureLogsResponse' {httpStatus} -> httpStatus) (\s@ConfigureLogsResponse' {} a -> s {httpStatus = a} :: ConfigureLogsResponse)
+
+instance Prelude.NFData ConfigureLogsResponse where
+  rnf ConfigureLogsResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf egressAccessLogs
+      `Prelude.seq` Prelude.rnf hlsIngest
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf ingressAccessLogs
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/CreateChannel.hs b/gen/Amazonka/MediaPackage/CreateChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/CreateChannel.hs
@@ -0,0 +1,266 @@
+{-# 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.MediaPackage.CreateChannel
+-- 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 new Channel.
+module Amazonka.MediaPackage.CreateChannel
+  ( -- * Creating a Request
+    CreateChannel (..),
+    newCreateChannel,
+
+    -- * Request Lenses
+    createChannel_description,
+    createChannel_tags,
+    createChannel_id,
+
+    -- * Destructuring the Response
+    CreateChannelResponse (..),
+    newCreateChannelResponse,
+
+    -- * Response Lenses
+    createChannelResponse_arn,
+    createChannelResponse_description,
+    createChannelResponse_egressAccessLogs,
+    createChannelResponse_hlsIngest,
+    createChannelResponse_id,
+    createChannelResponse_ingressAccessLogs,
+    createChannelResponse_tags,
+    createChannelResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A new Channel configuration.
+--
+-- /See:/ 'newCreateChannel' smart constructor.
+data CreateChannel = CreateChannel'
+  { -- | A short text description of the Channel.
+    description :: Prelude.Maybe Prelude.Text,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The ID of the Channel. The ID must be unique within the region and it
+    -- cannot be changed after a Channel is created.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'createChannel_description' - A short text description of the Channel.
+--
+-- 'tags', 'createChannel_tags' - Undocumented member.
+--
+-- 'id', 'createChannel_id' - The ID of the Channel. The ID must be unique within the region and it
+-- cannot be changed after a Channel is created.
+newCreateChannel ::
+  -- | 'id'
+  Prelude.Text ->
+  CreateChannel
+newCreateChannel pId_ =
+  CreateChannel'
+    { description = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      id = pId_
+    }
+
+-- | A short text description of the Channel.
+createChannel_description :: Lens.Lens' CreateChannel (Prelude.Maybe Prelude.Text)
+createChannel_description = Lens.lens (\CreateChannel' {description} -> description) (\s@CreateChannel' {} a -> s {description = a} :: CreateChannel)
+
+-- | Undocumented member.
+createChannel_tags :: Lens.Lens' CreateChannel (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createChannel_tags = Lens.lens (\CreateChannel' {tags} -> tags) (\s@CreateChannel' {} a -> s {tags = a} :: CreateChannel) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the Channel. The ID must be unique within the region and it
+-- cannot be changed after a Channel is created.
+createChannel_id :: Lens.Lens' CreateChannel Prelude.Text
+createChannel_id = Lens.lens (\CreateChannel' {id} -> id) (\s@CreateChannel' {} a -> s {id = a} :: CreateChannel)
+
+instance Core.AWSRequest CreateChannel where
+  type
+    AWSResponse CreateChannel =
+      CreateChannelResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateChannelResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> (x Data..?> "egressAccessLogs")
+            Prelude.<*> (x Data..?> "hlsIngest")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "ingressAccessLogs")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateChannel where
+  hashWithSalt _salt CreateChannel' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData CreateChannel where
+  rnf CreateChannel' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf id
+
+instance Data.ToHeaders CreateChannel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateChannel where
+  toJSON CreateChannel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("description" Data..=) Prelude.<$> description,
+            ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just ("id" Data..= id)
+          ]
+      )
+
+instance Data.ToPath CreateChannel where
+  toPath = Prelude.const "/channels"
+
+instance Data.ToQuery CreateChannel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateChannelResponse' smart constructor.
+data CreateChannelResponse = CreateChannelResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the Channel.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A short text description of the Channel.
+    description :: Prelude.Maybe Prelude.Text,
+    egressAccessLogs :: Prelude.Maybe EgressAccessLogs,
+    hlsIngest :: Prelude.Maybe HlsIngest,
+    -- | The ID of the Channel.
+    id :: Prelude.Maybe Prelude.Text,
+    ingressAccessLogs :: Prelude.Maybe IngressAccessLogs,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateChannelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createChannelResponse_arn' - The Amazon Resource Name (ARN) assigned to the Channel.
+--
+-- 'description', 'createChannelResponse_description' - A short text description of the Channel.
+--
+-- 'egressAccessLogs', 'createChannelResponse_egressAccessLogs' - Undocumented member.
+--
+-- 'hlsIngest', 'createChannelResponse_hlsIngest' - Undocumented member.
+--
+-- 'id', 'createChannelResponse_id' - The ID of the Channel.
+--
+-- 'ingressAccessLogs', 'createChannelResponse_ingressAccessLogs' - Undocumented member.
+--
+-- 'tags', 'createChannelResponse_tags' - Undocumented member.
+--
+-- 'httpStatus', 'createChannelResponse_httpStatus' - The response's http status code.
+newCreateChannelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateChannelResponse
+newCreateChannelResponse pHttpStatus_ =
+  CreateChannelResponse'
+    { arn = Prelude.Nothing,
+      description = Prelude.Nothing,
+      egressAccessLogs = Prelude.Nothing,
+      hlsIngest = Prelude.Nothing,
+      id = Prelude.Nothing,
+      ingressAccessLogs = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the Channel.
+createChannelResponse_arn :: Lens.Lens' CreateChannelResponse (Prelude.Maybe Prelude.Text)
+createChannelResponse_arn = Lens.lens (\CreateChannelResponse' {arn} -> arn) (\s@CreateChannelResponse' {} a -> s {arn = a} :: CreateChannelResponse)
+
+-- | A short text description of the Channel.
+createChannelResponse_description :: Lens.Lens' CreateChannelResponse (Prelude.Maybe Prelude.Text)
+createChannelResponse_description = Lens.lens (\CreateChannelResponse' {description} -> description) (\s@CreateChannelResponse' {} a -> s {description = a} :: CreateChannelResponse)
+
+-- | Undocumented member.
+createChannelResponse_egressAccessLogs :: Lens.Lens' CreateChannelResponse (Prelude.Maybe EgressAccessLogs)
+createChannelResponse_egressAccessLogs = Lens.lens (\CreateChannelResponse' {egressAccessLogs} -> egressAccessLogs) (\s@CreateChannelResponse' {} a -> s {egressAccessLogs = a} :: CreateChannelResponse)
+
+-- | Undocumented member.
+createChannelResponse_hlsIngest :: Lens.Lens' CreateChannelResponse (Prelude.Maybe HlsIngest)
+createChannelResponse_hlsIngest = Lens.lens (\CreateChannelResponse' {hlsIngest} -> hlsIngest) (\s@CreateChannelResponse' {} a -> s {hlsIngest = a} :: CreateChannelResponse)
+
+-- | The ID of the Channel.
+createChannelResponse_id :: Lens.Lens' CreateChannelResponse (Prelude.Maybe Prelude.Text)
+createChannelResponse_id = Lens.lens (\CreateChannelResponse' {id} -> id) (\s@CreateChannelResponse' {} a -> s {id = a} :: CreateChannelResponse)
+
+-- | Undocumented member.
+createChannelResponse_ingressAccessLogs :: Lens.Lens' CreateChannelResponse (Prelude.Maybe IngressAccessLogs)
+createChannelResponse_ingressAccessLogs = Lens.lens (\CreateChannelResponse' {ingressAccessLogs} -> ingressAccessLogs) (\s@CreateChannelResponse' {} a -> s {ingressAccessLogs = a} :: CreateChannelResponse)
+
+-- | Undocumented member.
+createChannelResponse_tags :: Lens.Lens' CreateChannelResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createChannelResponse_tags = Lens.lens (\CreateChannelResponse' {tags} -> tags) (\s@CreateChannelResponse' {} a -> s {tags = a} :: CreateChannelResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+createChannelResponse_httpStatus :: Lens.Lens' CreateChannelResponse Prelude.Int
+createChannelResponse_httpStatus = Lens.lens (\CreateChannelResponse' {httpStatus} -> httpStatus) (\s@CreateChannelResponse' {} a -> s {httpStatus = a} :: CreateChannelResponse)
+
+instance Prelude.NFData CreateChannelResponse where
+  rnf CreateChannelResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf egressAccessLogs
+      `Prelude.seq` Prelude.rnf hlsIngest
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf ingressAccessLogs
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/CreateHarvestJob.hs b/gen/Amazonka/MediaPackage/CreateHarvestJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/CreateHarvestJob.hs
@@ -0,0 +1,352 @@
+{-# 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.MediaPackage.CreateHarvestJob
+-- 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 new HarvestJob record.
+module Amazonka.MediaPackage.CreateHarvestJob
+  ( -- * Creating a Request
+    CreateHarvestJob (..),
+    newCreateHarvestJob,
+
+    -- * Request Lenses
+    createHarvestJob_s3Destination,
+    createHarvestJob_endTime,
+    createHarvestJob_originEndpointId,
+    createHarvestJob_startTime,
+    createHarvestJob_id,
+
+    -- * Destructuring the Response
+    CreateHarvestJobResponse (..),
+    newCreateHarvestJobResponse,
+
+    -- * Response Lenses
+    createHarvestJobResponse_arn,
+    createHarvestJobResponse_channelId,
+    createHarvestJobResponse_createdAt,
+    createHarvestJobResponse_endTime,
+    createHarvestJobResponse_id,
+    createHarvestJobResponse_originEndpointId,
+    createHarvestJobResponse_s3Destination,
+    createHarvestJobResponse_startTime,
+    createHarvestJobResponse_status,
+    createHarvestJobResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Configuration parameters used to create a new HarvestJob.
+--
+-- /See:/ 'newCreateHarvestJob' smart constructor.
+data CreateHarvestJob = CreateHarvestJob'
+  { s3Destination :: S3Destination,
+    -- | The end of the time-window which will be harvested
+    endTime :: Prelude.Text,
+    -- | The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+    -- cannot be changed after the HarvestJob is submitted.
+    originEndpointId :: Prelude.Text,
+    -- | The start of the time-window which will be harvested
+    startTime :: Prelude.Text,
+    -- | The ID of the HarvestJob. The ID must be unique within the region and it
+    -- cannot be changed after the HarvestJob is submitted
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateHarvestJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 's3Destination', 'createHarvestJob_s3Destination' - Undocumented member.
+--
+-- 'endTime', 'createHarvestJob_endTime' - The end of the time-window which will be harvested
+--
+-- 'originEndpointId', 'createHarvestJob_originEndpointId' - The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+-- cannot be changed after the HarvestJob is submitted.
+--
+-- 'startTime', 'createHarvestJob_startTime' - The start of the time-window which will be harvested
+--
+-- 'id', 'createHarvestJob_id' - The ID of the HarvestJob. The ID must be unique within the region and it
+-- cannot be changed after the HarvestJob is submitted
+newCreateHarvestJob ::
+  -- | 's3Destination'
+  S3Destination ->
+  -- | 'endTime'
+  Prelude.Text ->
+  -- | 'originEndpointId'
+  Prelude.Text ->
+  -- | 'startTime'
+  Prelude.Text ->
+  -- | 'id'
+  Prelude.Text ->
+  CreateHarvestJob
+newCreateHarvestJob
+  pS3Destination_
+  pEndTime_
+  pOriginEndpointId_
+  pStartTime_
+  pId_ =
+    CreateHarvestJob'
+      { s3Destination = pS3Destination_,
+        endTime = pEndTime_,
+        originEndpointId = pOriginEndpointId_,
+        startTime = pStartTime_,
+        id = pId_
+      }
+
+-- | Undocumented member.
+createHarvestJob_s3Destination :: Lens.Lens' CreateHarvestJob S3Destination
+createHarvestJob_s3Destination = Lens.lens (\CreateHarvestJob' {s3Destination} -> s3Destination) (\s@CreateHarvestJob' {} a -> s {s3Destination = a} :: CreateHarvestJob)
+
+-- | The end of the time-window which will be harvested
+createHarvestJob_endTime :: Lens.Lens' CreateHarvestJob Prelude.Text
+createHarvestJob_endTime = Lens.lens (\CreateHarvestJob' {endTime} -> endTime) (\s@CreateHarvestJob' {} a -> s {endTime = a} :: CreateHarvestJob)
+
+-- | The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+-- cannot be changed after the HarvestJob is submitted.
+createHarvestJob_originEndpointId :: Lens.Lens' CreateHarvestJob Prelude.Text
+createHarvestJob_originEndpointId = Lens.lens (\CreateHarvestJob' {originEndpointId} -> originEndpointId) (\s@CreateHarvestJob' {} a -> s {originEndpointId = a} :: CreateHarvestJob)
+
+-- | The start of the time-window which will be harvested
+createHarvestJob_startTime :: Lens.Lens' CreateHarvestJob Prelude.Text
+createHarvestJob_startTime = Lens.lens (\CreateHarvestJob' {startTime} -> startTime) (\s@CreateHarvestJob' {} a -> s {startTime = a} :: CreateHarvestJob)
+
+-- | The ID of the HarvestJob. The ID must be unique within the region and it
+-- cannot be changed after the HarvestJob is submitted
+createHarvestJob_id :: Lens.Lens' CreateHarvestJob Prelude.Text
+createHarvestJob_id = Lens.lens (\CreateHarvestJob' {id} -> id) (\s@CreateHarvestJob' {} a -> s {id = a} :: CreateHarvestJob)
+
+instance Core.AWSRequest CreateHarvestJob where
+  type
+    AWSResponse CreateHarvestJob =
+      CreateHarvestJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateHarvestJobResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "channelId")
+            Prelude.<*> (x Data..?> "createdAt")
+            Prelude.<*> (x Data..?> "endTime")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "originEndpointId")
+            Prelude.<*> (x Data..?> "s3Destination")
+            Prelude.<*> (x Data..?> "startTime")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateHarvestJob where
+  hashWithSalt _salt CreateHarvestJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` s3Destination
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` originEndpointId
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData CreateHarvestJob where
+  rnf CreateHarvestJob' {..} =
+    Prelude.rnf s3Destination
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf originEndpointId
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf id
+
+instance Data.ToHeaders CreateHarvestJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateHarvestJob where
+  toJSON CreateHarvestJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("s3Destination" Data..= s3Destination),
+            Prelude.Just ("endTime" Data..= endTime),
+            Prelude.Just
+              ("originEndpointId" Data..= originEndpointId),
+            Prelude.Just ("startTime" Data..= startTime),
+            Prelude.Just ("id" Data..= id)
+          ]
+      )
+
+instance Data.ToPath CreateHarvestJob where
+  toPath = Prelude.const "/harvest_jobs"
+
+instance Data.ToQuery CreateHarvestJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateHarvestJobResponse' smart constructor.
+data CreateHarvestJobResponse = CreateHarvestJobResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the HarvestJob.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Channel that the HarvestJob will harvest from.
+    channelId :: Prelude.Maybe Prelude.Text,
+    -- | The time the HarvestJob was submitted
+    createdAt :: Prelude.Maybe Prelude.Text,
+    -- | The end of the time-window which will be harvested.
+    endTime :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the HarvestJob. The ID must be unique within the region and it
+    -- cannot be changed after the HarvestJob is submitted.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+    -- cannot be changed after the HarvestJob is submitted.
+    originEndpointId :: Prelude.Maybe Prelude.Text,
+    s3Destination :: Prelude.Maybe S3Destination,
+    -- | The start of the time-window which will be harvested.
+    startTime :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the HarvestJob. Consider setting up a CloudWatch
+    -- Event to listen for HarvestJobs as they succeed or fail. In the event of
+    -- failure, the CloudWatch Event will include an explanation of why the
+    -- HarvestJob failed.
+    status :: Prelude.Maybe Status,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateHarvestJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createHarvestJobResponse_arn' - The Amazon Resource Name (ARN) assigned to the HarvestJob.
+--
+-- 'channelId', 'createHarvestJobResponse_channelId' - The ID of the Channel that the HarvestJob will harvest from.
+--
+-- 'createdAt', 'createHarvestJobResponse_createdAt' - The time the HarvestJob was submitted
+--
+-- 'endTime', 'createHarvestJobResponse_endTime' - The end of the time-window which will be harvested.
+--
+-- 'id', 'createHarvestJobResponse_id' - The ID of the HarvestJob. The ID must be unique within the region and it
+-- cannot be changed after the HarvestJob is submitted.
+--
+-- 'originEndpointId', 'createHarvestJobResponse_originEndpointId' - The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+-- cannot be changed after the HarvestJob is submitted.
+--
+-- 's3Destination', 'createHarvestJobResponse_s3Destination' - Undocumented member.
+--
+-- 'startTime', 'createHarvestJobResponse_startTime' - The start of the time-window which will be harvested.
+--
+-- 'status', 'createHarvestJobResponse_status' - The current status of the HarvestJob. Consider setting up a CloudWatch
+-- Event to listen for HarvestJobs as they succeed or fail. In the event of
+-- failure, the CloudWatch Event will include an explanation of why the
+-- HarvestJob failed.
+--
+-- 'httpStatus', 'createHarvestJobResponse_httpStatus' - The response's http status code.
+newCreateHarvestJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateHarvestJobResponse
+newCreateHarvestJobResponse pHttpStatus_ =
+  CreateHarvestJobResponse'
+    { arn = Prelude.Nothing,
+      channelId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      id = Prelude.Nothing,
+      originEndpointId = Prelude.Nothing,
+      s3Destination = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the HarvestJob.
+createHarvestJobResponse_arn :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe Prelude.Text)
+createHarvestJobResponse_arn = Lens.lens (\CreateHarvestJobResponse' {arn} -> arn) (\s@CreateHarvestJobResponse' {} a -> s {arn = a} :: CreateHarvestJobResponse)
+
+-- | The ID of the Channel that the HarvestJob will harvest from.
+createHarvestJobResponse_channelId :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe Prelude.Text)
+createHarvestJobResponse_channelId = Lens.lens (\CreateHarvestJobResponse' {channelId} -> channelId) (\s@CreateHarvestJobResponse' {} a -> s {channelId = a} :: CreateHarvestJobResponse)
+
+-- | The time the HarvestJob was submitted
+createHarvestJobResponse_createdAt :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe Prelude.Text)
+createHarvestJobResponse_createdAt = Lens.lens (\CreateHarvestJobResponse' {createdAt} -> createdAt) (\s@CreateHarvestJobResponse' {} a -> s {createdAt = a} :: CreateHarvestJobResponse)
+
+-- | The end of the time-window which will be harvested.
+createHarvestJobResponse_endTime :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe Prelude.Text)
+createHarvestJobResponse_endTime = Lens.lens (\CreateHarvestJobResponse' {endTime} -> endTime) (\s@CreateHarvestJobResponse' {} a -> s {endTime = a} :: CreateHarvestJobResponse)
+
+-- | The ID of the HarvestJob. The ID must be unique within the region and it
+-- cannot be changed after the HarvestJob is submitted.
+createHarvestJobResponse_id :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe Prelude.Text)
+createHarvestJobResponse_id = Lens.lens (\CreateHarvestJobResponse' {id} -> id) (\s@CreateHarvestJobResponse' {} a -> s {id = a} :: CreateHarvestJobResponse)
+
+-- | The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+-- cannot be changed after the HarvestJob is submitted.
+createHarvestJobResponse_originEndpointId :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe Prelude.Text)
+createHarvestJobResponse_originEndpointId = Lens.lens (\CreateHarvestJobResponse' {originEndpointId} -> originEndpointId) (\s@CreateHarvestJobResponse' {} a -> s {originEndpointId = a} :: CreateHarvestJobResponse)
+
+-- | Undocumented member.
+createHarvestJobResponse_s3Destination :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe S3Destination)
+createHarvestJobResponse_s3Destination = Lens.lens (\CreateHarvestJobResponse' {s3Destination} -> s3Destination) (\s@CreateHarvestJobResponse' {} a -> s {s3Destination = a} :: CreateHarvestJobResponse)
+
+-- | The start of the time-window which will be harvested.
+createHarvestJobResponse_startTime :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe Prelude.Text)
+createHarvestJobResponse_startTime = Lens.lens (\CreateHarvestJobResponse' {startTime} -> startTime) (\s@CreateHarvestJobResponse' {} a -> s {startTime = a} :: CreateHarvestJobResponse)
+
+-- | The current status of the HarvestJob. Consider setting up a CloudWatch
+-- Event to listen for HarvestJobs as they succeed or fail. In the event of
+-- failure, the CloudWatch Event will include an explanation of why the
+-- HarvestJob failed.
+createHarvestJobResponse_status :: Lens.Lens' CreateHarvestJobResponse (Prelude.Maybe Status)
+createHarvestJobResponse_status = Lens.lens (\CreateHarvestJobResponse' {status} -> status) (\s@CreateHarvestJobResponse' {} a -> s {status = a} :: CreateHarvestJobResponse)
+
+-- | The response's http status code.
+createHarvestJobResponse_httpStatus :: Lens.Lens' CreateHarvestJobResponse Prelude.Int
+createHarvestJobResponse_httpStatus = Lens.lens (\CreateHarvestJobResponse' {httpStatus} -> httpStatus) (\s@CreateHarvestJobResponse' {} a -> s {httpStatus = a} :: CreateHarvestJobResponse)
+
+instance Prelude.NFData CreateHarvestJobResponse where
+  rnf CreateHarvestJobResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf originEndpointId
+      `Prelude.seq` Prelude.rnf s3Destination
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/CreateOriginEndpoint.hs b/gen/Amazonka/MediaPackage/CreateOriginEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/CreateOriginEndpoint.hs
@@ -0,0 +1,576 @@
+{-# 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.MediaPackage.CreateOriginEndpoint
+-- 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 new OriginEndpoint record.
+module Amazonka.MediaPackage.CreateOriginEndpoint
+  ( -- * Creating a Request
+    CreateOriginEndpoint (..),
+    newCreateOriginEndpoint,
+
+    -- * Request Lenses
+    createOriginEndpoint_authorization,
+    createOriginEndpoint_cmafPackage,
+    createOriginEndpoint_dashPackage,
+    createOriginEndpoint_description,
+    createOriginEndpoint_hlsPackage,
+    createOriginEndpoint_manifestName,
+    createOriginEndpoint_mssPackage,
+    createOriginEndpoint_origination,
+    createOriginEndpoint_startoverWindowSeconds,
+    createOriginEndpoint_tags,
+    createOriginEndpoint_timeDelaySeconds,
+    createOriginEndpoint_whitelist,
+    createOriginEndpoint_channelId,
+    createOriginEndpoint_id,
+
+    -- * Destructuring the Response
+    CreateOriginEndpointResponse (..),
+    newCreateOriginEndpointResponse,
+
+    -- * Response Lenses
+    createOriginEndpointResponse_arn,
+    createOriginEndpointResponse_authorization,
+    createOriginEndpointResponse_channelId,
+    createOriginEndpointResponse_cmafPackage,
+    createOriginEndpointResponse_dashPackage,
+    createOriginEndpointResponse_description,
+    createOriginEndpointResponse_hlsPackage,
+    createOriginEndpointResponse_id,
+    createOriginEndpointResponse_manifestName,
+    createOriginEndpointResponse_mssPackage,
+    createOriginEndpointResponse_origination,
+    createOriginEndpointResponse_startoverWindowSeconds,
+    createOriginEndpointResponse_tags,
+    createOriginEndpointResponse_timeDelaySeconds,
+    createOriginEndpointResponse_url,
+    createOriginEndpointResponse_whitelist,
+    createOriginEndpointResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Configuration parameters used to create a new OriginEndpoint.
+--
+-- /See:/ 'newCreateOriginEndpoint' smart constructor.
+data CreateOriginEndpoint = CreateOriginEndpoint'
+  { authorization :: Prelude.Maybe Authorization,
+    cmafPackage :: Prelude.Maybe CmafPackageCreateOrUpdateParameters,
+    dashPackage :: Prelude.Maybe DashPackage,
+    -- | A short text description of the OriginEndpoint.
+    description :: Prelude.Maybe Prelude.Text,
+    hlsPackage :: Prelude.Maybe HlsPackage,
+    -- | A short string that will be used as the filename of the OriginEndpoint
+    -- URL (defaults to \"index\").
+    manifestName :: Prelude.Maybe Prelude.Text,
+    mssPackage :: Prelude.Maybe MssPackage,
+    -- | Control whether origination of video is allowed for this OriginEndpoint.
+    -- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+    -- other form of access control. If set to DENY, the OriginEndpoint may not
+    -- be requested. This can be helpful for Live to VOD harvesting, or for
+    -- temporarily disabling origination
+    origination :: Prelude.Maybe Origination,
+    -- | Maximum duration (seconds) of content to retain for startover playback.
+    -- If not specified, startover playback will be disabled for the
+    -- OriginEndpoint.
+    startoverWindowSeconds :: Prelude.Maybe Prelude.Int,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Amount of delay (seconds) to enforce on the playback of live content. If
+    -- not specified, there will be no time delay in effect for the
+    -- OriginEndpoint.
+    timeDelaySeconds :: Prelude.Maybe Prelude.Int,
+    -- | A list of source IP CIDR blocks that will be allowed to access the
+    -- OriginEndpoint.
+    whitelist :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the Channel that the OriginEndpoint will be associated with.
+    -- This cannot be changed after the OriginEndpoint is created.
+    channelId :: Prelude.Text,
+    -- | The ID of the OriginEndpoint. The ID must be unique within the region
+    -- and it cannot be changed after the OriginEndpoint is created.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateOriginEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'authorization', 'createOriginEndpoint_authorization' - Undocumented member.
+--
+-- 'cmafPackage', 'createOriginEndpoint_cmafPackage' - Undocumented member.
+--
+-- 'dashPackage', 'createOriginEndpoint_dashPackage' - Undocumented member.
+--
+-- 'description', 'createOriginEndpoint_description' - A short text description of the OriginEndpoint.
+--
+-- 'hlsPackage', 'createOriginEndpoint_hlsPackage' - Undocumented member.
+--
+-- 'manifestName', 'createOriginEndpoint_manifestName' - A short string that will be used as the filename of the OriginEndpoint
+-- URL (defaults to \"index\").
+--
+-- 'mssPackage', 'createOriginEndpoint_mssPackage' - Undocumented member.
+--
+-- 'origination', 'createOriginEndpoint_origination' - Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+--
+-- 'startoverWindowSeconds', 'createOriginEndpoint_startoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+--
+-- 'tags', 'createOriginEndpoint_tags' - Undocumented member.
+--
+-- 'timeDelaySeconds', 'createOriginEndpoint_timeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+--
+-- 'whitelist', 'createOriginEndpoint_whitelist' - A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+--
+-- 'channelId', 'createOriginEndpoint_channelId' - The ID of the Channel that the OriginEndpoint will be associated with.
+-- This cannot be changed after the OriginEndpoint is created.
+--
+-- 'id', 'createOriginEndpoint_id' - The ID of the OriginEndpoint. The ID must be unique within the region
+-- and it cannot be changed after the OriginEndpoint is created.
+newCreateOriginEndpoint ::
+  -- | 'channelId'
+  Prelude.Text ->
+  -- | 'id'
+  Prelude.Text ->
+  CreateOriginEndpoint
+newCreateOriginEndpoint pChannelId_ pId_ =
+  CreateOriginEndpoint'
+    { authorization =
+        Prelude.Nothing,
+      cmafPackage = Prelude.Nothing,
+      dashPackage = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hlsPackage = Prelude.Nothing,
+      manifestName = Prelude.Nothing,
+      mssPackage = Prelude.Nothing,
+      origination = Prelude.Nothing,
+      startoverWindowSeconds = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      timeDelaySeconds = Prelude.Nothing,
+      whitelist = Prelude.Nothing,
+      channelId = pChannelId_,
+      id = pId_
+    }
+
+-- | Undocumented member.
+createOriginEndpoint_authorization :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe Authorization)
+createOriginEndpoint_authorization = Lens.lens (\CreateOriginEndpoint' {authorization} -> authorization) (\s@CreateOriginEndpoint' {} a -> s {authorization = a} :: CreateOriginEndpoint)
+
+-- | Undocumented member.
+createOriginEndpoint_cmafPackage :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe CmafPackageCreateOrUpdateParameters)
+createOriginEndpoint_cmafPackage = Lens.lens (\CreateOriginEndpoint' {cmafPackage} -> cmafPackage) (\s@CreateOriginEndpoint' {} a -> s {cmafPackage = a} :: CreateOriginEndpoint)
+
+-- | Undocumented member.
+createOriginEndpoint_dashPackage :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe DashPackage)
+createOriginEndpoint_dashPackage = Lens.lens (\CreateOriginEndpoint' {dashPackage} -> dashPackage) (\s@CreateOriginEndpoint' {} a -> s {dashPackage = a} :: CreateOriginEndpoint)
+
+-- | A short text description of the OriginEndpoint.
+createOriginEndpoint_description :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe Prelude.Text)
+createOriginEndpoint_description = Lens.lens (\CreateOriginEndpoint' {description} -> description) (\s@CreateOriginEndpoint' {} a -> s {description = a} :: CreateOriginEndpoint)
+
+-- | Undocumented member.
+createOriginEndpoint_hlsPackage :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe HlsPackage)
+createOriginEndpoint_hlsPackage = Lens.lens (\CreateOriginEndpoint' {hlsPackage} -> hlsPackage) (\s@CreateOriginEndpoint' {} a -> s {hlsPackage = a} :: CreateOriginEndpoint)
+
+-- | A short string that will be used as the filename of the OriginEndpoint
+-- URL (defaults to \"index\").
+createOriginEndpoint_manifestName :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe Prelude.Text)
+createOriginEndpoint_manifestName = Lens.lens (\CreateOriginEndpoint' {manifestName} -> manifestName) (\s@CreateOriginEndpoint' {} a -> s {manifestName = a} :: CreateOriginEndpoint)
+
+-- | Undocumented member.
+createOriginEndpoint_mssPackage :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe MssPackage)
+createOriginEndpoint_mssPackage = Lens.lens (\CreateOriginEndpoint' {mssPackage} -> mssPackage) (\s@CreateOriginEndpoint' {} a -> s {mssPackage = a} :: CreateOriginEndpoint)
+
+-- | Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+createOriginEndpoint_origination :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe Origination)
+createOriginEndpoint_origination = Lens.lens (\CreateOriginEndpoint' {origination} -> origination) (\s@CreateOriginEndpoint' {} a -> s {origination = a} :: CreateOriginEndpoint)
+
+-- | Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+createOriginEndpoint_startoverWindowSeconds :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe Prelude.Int)
+createOriginEndpoint_startoverWindowSeconds = Lens.lens (\CreateOriginEndpoint' {startoverWindowSeconds} -> startoverWindowSeconds) (\s@CreateOriginEndpoint' {} a -> s {startoverWindowSeconds = a} :: CreateOriginEndpoint)
+
+-- | Undocumented member.
+createOriginEndpoint_tags :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createOriginEndpoint_tags = Lens.lens (\CreateOriginEndpoint' {tags} -> tags) (\s@CreateOriginEndpoint' {} a -> s {tags = a} :: CreateOriginEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+createOriginEndpoint_timeDelaySeconds :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe Prelude.Int)
+createOriginEndpoint_timeDelaySeconds = Lens.lens (\CreateOriginEndpoint' {timeDelaySeconds} -> timeDelaySeconds) (\s@CreateOriginEndpoint' {} a -> s {timeDelaySeconds = a} :: CreateOriginEndpoint)
+
+-- | A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+createOriginEndpoint_whitelist :: Lens.Lens' CreateOriginEndpoint (Prelude.Maybe [Prelude.Text])
+createOriginEndpoint_whitelist = Lens.lens (\CreateOriginEndpoint' {whitelist} -> whitelist) (\s@CreateOriginEndpoint' {} a -> s {whitelist = a} :: CreateOriginEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the Channel that the OriginEndpoint will be associated with.
+-- This cannot be changed after the OriginEndpoint is created.
+createOriginEndpoint_channelId :: Lens.Lens' CreateOriginEndpoint Prelude.Text
+createOriginEndpoint_channelId = Lens.lens (\CreateOriginEndpoint' {channelId} -> channelId) (\s@CreateOriginEndpoint' {} a -> s {channelId = a} :: CreateOriginEndpoint)
+
+-- | The ID of the OriginEndpoint. The ID must be unique within the region
+-- and it cannot be changed after the OriginEndpoint is created.
+createOriginEndpoint_id :: Lens.Lens' CreateOriginEndpoint Prelude.Text
+createOriginEndpoint_id = Lens.lens (\CreateOriginEndpoint' {id} -> id) (\s@CreateOriginEndpoint' {} a -> s {id = a} :: CreateOriginEndpoint)
+
+instance Core.AWSRequest CreateOriginEndpoint where
+  type
+    AWSResponse CreateOriginEndpoint =
+      CreateOriginEndpointResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateOriginEndpointResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "authorization")
+            Prelude.<*> (x Data..?> "channelId")
+            Prelude.<*> (x Data..?> "cmafPackage")
+            Prelude.<*> (x Data..?> "dashPackage")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> (x Data..?> "hlsPackage")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "manifestName")
+            Prelude.<*> (x Data..?> "mssPackage")
+            Prelude.<*> (x Data..?> "origination")
+            Prelude.<*> (x Data..?> "startoverWindowSeconds")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "timeDelaySeconds")
+            Prelude.<*> (x Data..?> "url")
+            Prelude.<*> (x Data..?> "whitelist" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateOriginEndpoint where
+  hashWithSalt _salt CreateOriginEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` authorization
+      `Prelude.hashWithSalt` cmafPackage
+      `Prelude.hashWithSalt` dashPackage
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` hlsPackage
+      `Prelude.hashWithSalt` manifestName
+      `Prelude.hashWithSalt` mssPackage
+      `Prelude.hashWithSalt` origination
+      `Prelude.hashWithSalt` startoverWindowSeconds
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` timeDelaySeconds
+      `Prelude.hashWithSalt` whitelist
+      `Prelude.hashWithSalt` channelId
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData CreateOriginEndpoint where
+  rnf CreateOriginEndpoint' {..} =
+    Prelude.rnf authorization
+      `Prelude.seq` Prelude.rnf cmafPackage
+      `Prelude.seq` Prelude.rnf dashPackage
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hlsPackage
+      `Prelude.seq` Prelude.rnf manifestName
+      `Prelude.seq` Prelude.rnf mssPackage
+      `Prelude.seq` Prelude.rnf origination
+      `Prelude.seq` Prelude.rnf startoverWindowSeconds
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf timeDelaySeconds
+      `Prelude.seq` Prelude.rnf whitelist
+      `Prelude.seq` Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf id
+
+instance Data.ToHeaders CreateOriginEndpoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateOriginEndpoint where
+  toJSON CreateOriginEndpoint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("authorization" Data..=) Prelude.<$> authorization,
+            ("cmafPackage" Data..=) Prelude.<$> cmafPackage,
+            ("dashPackage" Data..=) Prelude.<$> dashPackage,
+            ("description" Data..=) Prelude.<$> description,
+            ("hlsPackage" Data..=) Prelude.<$> hlsPackage,
+            ("manifestName" Data..=) Prelude.<$> manifestName,
+            ("mssPackage" Data..=) Prelude.<$> mssPackage,
+            ("origination" Data..=) Prelude.<$> origination,
+            ("startoverWindowSeconds" Data..=)
+              Prelude.<$> startoverWindowSeconds,
+            ("tags" Data..=) Prelude.<$> tags,
+            ("timeDelaySeconds" Data..=)
+              Prelude.<$> timeDelaySeconds,
+            ("whitelist" Data..=) Prelude.<$> whitelist,
+            Prelude.Just ("channelId" Data..= channelId),
+            Prelude.Just ("id" Data..= id)
+          ]
+      )
+
+instance Data.ToPath CreateOriginEndpoint where
+  toPath = Prelude.const "/origin_endpoints"
+
+instance Data.ToQuery CreateOriginEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateOriginEndpointResponse' smart constructor.
+data CreateOriginEndpointResponse = CreateOriginEndpointResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+    arn :: Prelude.Maybe Prelude.Text,
+    authorization :: Prelude.Maybe Authorization,
+    -- | The ID of the Channel the OriginEndpoint is associated with.
+    channelId :: Prelude.Maybe Prelude.Text,
+    cmafPackage :: Prelude.Maybe CmafPackage,
+    dashPackage :: Prelude.Maybe DashPackage,
+    -- | A short text description of the OriginEndpoint.
+    description :: Prelude.Maybe Prelude.Text,
+    hlsPackage :: Prelude.Maybe HlsPackage,
+    -- | The ID of the OriginEndpoint.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | A short string appended to the end of the OriginEndpoint URL.
+    manifestName :: Prelude.Maybe Prelude.Text,
+    mssPackage :: Prelude.Maybe MssPackage,
+    -- | Control whether origination of video is allowed for this OriginEndpoint.
+    -- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+    -- other form of access control. If set to DENY, the OriginEndpoint may not
+    -- be requested. This can be helpful for Live to VOD harvesting, or for
+    -- temporarily disabling origination
+    origination :: Prelude.Maybe Origination,
+    -- | Maximum duration (seconds) of content to retain for startover playback.
+    -- If not specified, startover playback will be disabled for the
+    -- OriginEndpoint.
+    startoverWindowSeconds :: Prelude.Maybe Prelude.Int,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Amount of delay (seconds) to enforce on the playback of live content. If
+    -- not specified, there will be no time delay in effect for the
+    -- OriginEndpoint.
+    timeDelaySeconds :: Prelude.Maybe Prelude.Int,
+    -- | The URL of the packaged OriginEndpoint for consumption.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | A list of source IP CIDR blocks that will be allowed to access the
+    -- OriginEndpoint.
+    whitelist :: 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 'CreateOriginEndpointResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'createOriginEndpointResponse_arn' - The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+--
+-- 'authorization', 'createOriginEndpointResponse_authorization' - Undocumented member.
+--
+-- 'channelId', 'createOriginEndpointResponse_channelId' - The ID of the Channel the OriginEndpoint is associated with.
+--
+-- 'cmafPackage', 'createOriginEndpointResponse_cmafPackage' - Undocumented member.
+--
+-- 'dashPackage', 'createOriginEndpointResponse_dashPackage' - Undocumented member.
+--
+-- 'description', 'createOriginEndpointResponse_description' - A short text description of the OriginEndpoint.
+--
+-- 'hlsPackage', 'createOriginEndpointResponse_hlsPackage' - Undocumented member.
+--
+-- 'id', 'createOriginEndpointResponse_id' - The ID of the OriginEndpoint.
+--
+-- 'manifestName', 'createOriginEndpointResponse_manifestName' - A short string appended to the end of the OriginEndpoint URL.
+--
+-- 'mssPackage', 'createOriginEndpointResponse_mssPackage' - Undocumented member.
+--
+-- 'origination', 'createOriginEndpointResponse_origination' - Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+--
+-- 'startoverWindowSeconds', 'createOriginEndpointResponse_startoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+--
+-- 'tags', 'createOriginEndpointResponse_tags' - Undocumented member.
+--
+-- 'timeDelaySeconds', 'createOriginEndpointResponse_timeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+--
+-- 'url', 'createOriginEndpointResponse_url' - The URL of the packaged OriginEndpoint for consumption.
+--
+-- 'whitelist', 'createOriginEndpointResponse_whitelist' - A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+--
+-- 'httpStatus', 'createOriginEndpointResponse_httpStatus' - The response's http status code.
+newCreateOriginEndpointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateOriginEndpointResponse
+newCreateOriginEndpointResponse pHttpStatus_ =
+  CreateOriginEndpointResponse'
+    { arn =
+        Prelude.Nothing,
+      authorization = Prelude.Nothing,
+      channelId = Prelude.Nothing,
+      cmafPackage = Prelude.Nothing,
+      dashPackage = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hlsPackage = Prelude.Nothing,
+      id = Prelude.Nothing,
+      manifestName = Prelude.Nothing,
+      mssPackage = Prelude.Nothing,
+      origination = Prelude.Nothing,
+      startoverWindowSeconds = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      timeDelaySeconds = Prelude.Nothing,
+      url = Prelude.Nothing,
+      whitelist = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+createOriginEndpointResponse_arn :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+createOriginEndpointResponse_arn = Lens.lens (\CreateOriginEndpointResponse' {arn} -> arn) (\s@CreateOriginEndpointResponse' {} a -> s {arn = a} :: CreateOriginEndpointResponse)
+
+-- | Undocumented member.
+createOriginEndpointResponse_authorization :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Authorization)
+createOriginEndpointResponse_authorization = Lens.lens (\CreateOriginEndpointResponse' {authorization} -> authorization) (\s@CreateOriginEndpointResponse' {} a -> s {authorization = a} :: CreateOriginEndpointResponse)
+
+-- | The ID of the Channel the OriginEndpoint is associated with.
+createOriginEndpointResponse_channelId :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+createOriginEndpointResponse_channelId = Lens.lens (\CreateOriginEndpointResponse' {channelId} -> channelId) (\s@CreateOriginEndpointResponse' {} a -> s {channelId = a} :: CreateOriginEndpointResponse)
+
+-- | Undocumented member.
+createOriginEndpointResponse_cmafPackage :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe CmafPackage)
+createOriginEndpointResponse_cmafPackage = Lens.lens (\CreateOriginEndpointResponse' {cmafPackage} -> cmafPackage) (\s@CreateOriginEndpointResponse' {} a -> s {cmafPackage = a} :: CreateOriginEndpointResponse)
+
+-- | Undocumented member.
+createOriginEndpointResponse_dashPackage :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe DashPackage)
+createOriginEndpointResponse_dashPackage = Lens.lens (\CreateOriginEndpointResponse' {dashPackage} -> dashPackage) (\s@CreateOriginEndpointResponse' {} a -> s {dashPackage = a} :: CreateOriginEndpointResponse)
+
+-- | A short text description of the OriginEndpoint.
+createOriginEndpointResponse_description :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+createOriginEndpointResponse_description = Lens.lens (\CreateOriginEndpointResponse' {description} -> description) (\s@CreateOriginEndpointResponse' {} a -> s {description = a} :: CreateOriginEndpointResponse)
+
+-- | Undocumented member.
+createOriginEndpointResponse_hlsPackage :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe HlsPackage)
+createOriginEndpointResponse_hlsPackage = Lens.lens (\CreateOriginEndpointResponse' {hlsPackage} -> hlsPackage) (\s@CreateOriginEndpointResponse' {} a -> s {hlsPackage = a} :: CreateOriginEndpointResponse)
+
+-- | The ID of the OriginEndpoint.
+createOriginEndpointResponse_id :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+createOriginEndpointResponse_id = Lens.lens (\CreateOriginEndpointResponse' {id} -> id) (\s@CreateOriginEndpointResponse' {} a -> s {id = a} :: CreateOriginEndpointResponse)
+
+-- | A short string appended to the end of the OriginEndpoint URL.
+createOriginEndpointResponse_manifestName :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+createOriginEndpointResponse_manifestName = Lens.lens (\CreateOriginEndpointResponse' {manifestName} -> manifestName) (\s@CreateOriginEndpointResponse' {} a -> s {manifestName = a} :: CreateOriginEndpointResponse)
+
+-- | Undocumented member.
+createOriginEndpointResponse_mssPackage :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe MssPackage)
+createOriginEndpointResponse_mssPackage = Lens.lens (\CreateOriginEndpointResponse' {mssPackage} -> mssPackage) (\s@CreateOriginEndpointResponse' {} a -> s {mssPackage = a} :: CreateOriginEndpointResponse)
+
+-- | Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+createOriginEndpointResponse_origination :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Origination)
+createOriginEndpointResponse_origination = Lens.lens (\CreateOriginEndpointResponse' {origination} -> origination) (\s@CreateOriginEndpointResponse' {} a -> s {origination = a} :: CreateOriginEndpointResponse)
+
+-- | Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+createOriginEndpointResponse_startoverWindowSeconds :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Prelude.Int)
+createOriginEndpointResponse_startoverWindowSeconds = Lens.lens (\CreateOriginEndpointResponse' {startoverWindowSeconds} -> startoverWindowSeconds) (\s@CreateOriginEndpointResponse' {} a -> s {startoverWindowSeconds = a} :: CreateOriginEndpointResponse)
+
+-- | Undocumented member.
+createOriginEndpointResponse_tags :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+createOriginEndpointResponse_tags = Lens.lens (\CreateOriginEndpointResponse' {tags} -> tags) (\s@CreateOriginEndpointResponse' {} a -> s {tags = a} :: CreateOriginEndpointResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+createOriginEndpointResponse_timeDelaySeconds :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Prelude.Int)
+createOriginEndpointResponse_timeDelaySeconds = Lens.lens (\CreateOriginEndpointResponse' {timeDelaySeconds} -> timeDelaySeconds) (\s@CreateOriginEndpointResponse' {} a -> s {timeDelaySeconds = a} :: CreateOriginEndpointResponse)
+
+-- | The URL of the packaged OriginEndpoint for consumption.
+createOriginEndpointResponse_url :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+createOriginEndpointResponse_url = Lens.lens (\CreateOriginEndpointResponse' {url} -> url) (\s@CreateOriginEndpointResponse' {} a -> s {url = a} :: CreateOriginEndpointResponse)
+
+-- | A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+createOriginEndpointResponse_whitelist :: Lens.Lens' CreateOriginEndpointResponse (Prelude.Maybe [Prelude.Text])
+createOriginEndpointResponse_whitelist = Lens.lens (\CreateOriginEndpointResponse' {whitelist} -> whitelist) (\s@CreateOriginEndpointResponse' {} a -> s {whitelist = a} :: CreateOriginEndpointResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+createOriginEndpointResponse_httpStatus :: Lens.Lens' CreateOriginEndpointResponse Prelude.Int
+createOriginEndpointResponse_httpStatus = Lens.lens (\CreateOriginEndpointResponse' {httpStatus} -> httpStatus) (\s@CreateOriginEndpointResponse' {} a -> s {httpStatus = a} :: CreateOriginEndpointResponse)
+
+instance Prelude.NFData CreateOriginEndpointResponse where
+  rnf CreateOriginEndpointResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf authorization
+      `Prelude.seq` Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf cmafPackage
+      `Prelude.seq` Prelude.rnf dashPackage
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hlsPackage
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf manifestName
+      `Prelude.seq` Prelude.rnf mssPackage
+      `Prelude.seq` Prelude.rnf origination
+      `Prelude.seq` Prelude.rnf startoverWindowSeconds
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf timeDelaySeconds
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf whitelist
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/DeleteChannel.hs b/gen/Amazonka/MediaPackage/DeleteChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/DeleteChannel.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaPackage.DeleteChannel
+-- 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 an existing Channel.
+module Amazonka.MediaPackage.DeleteChannel
+  ( -- * Creating a Request
+    DeleteChannel (..),
+    newDeleteChannel,
+
+    -- * Request Lenses
+    deleteChannel_id,
+
+    -- * Destructuring the Response
+    DeleteChannelResponse (..),
+    newDeleteChannelResponse,
+
+    -- * Response Lenses
+    deleteChannelResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteChannel' smart constructor.
+data DeleteChannel = DeleteChannel'
+  { -- | The ID of the Channel to delete.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'id', 'deleteChannel_id' - The ID of the Channel to delete.
+newDeleteChannel ::
+  -- | 'id'
+  Prelude.Text ->
+  DeleteChannel
+newDeleteChannel pId_ = DeleteChannel' {id = pId_}
+
+-- | The ID of the Channel to delete.
+deleteChannel_id :: Lens.Lens' DeleteChannel Prelude.Text
+deleteChannel_id = Lens.lens (\DeleteChannel' {id} -> id) (\s@DeleteChannel' {} a -> s {id = a} :: DeleteChannel)
+
+instance Core.AWSRequest DeleteChannel where
+  type
+    AWSResponse DeleteChannel =
+      DeleteChannelResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteChannelResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteChannel where
+  hashWithSalt _salt DeleteChannel' {..} =
+    _salt `Prelude.hashWithSalt` id
+
+instance Prelude.NFData DeleteChannel where
+  rnf DeleteChannel' {..} = Prelude.rnf id
+
+instance Data.ToHeaders DeleteChannel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteChannel where
+  toPath DeleteChannel' {..} =
+    Prelude.mconcat ["/channels/", Data.toBS id]
+
+instance Data.ToQuery DeleteChannel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteChannelResponse' smart constructor.
+data DeleteChannelResponse = DeleteChannelResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteChannelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteChannelResponse_httpStatus' - The response's http status code.
+newDeleteChannelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteChannelResponse
+newDeleteChannelResponse pHttpStatus_ =
+  DeleteChannelResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteChannelResponse_httpStatus :: Lens.Lens' DeleteChannelResponse Prelude.Int
+deleteChannelResponse_httpStatus = Lens.lens (\DeleteChannelResponse' {httpStatus} -> httpStatus) (\s@DeleteChannelResponse' {} a -> s {httpStatus = a} :: DeleteChannelResponse)
+
+instance Prelude.NFData DeleteChannelResponse where
+  rnf DeleteChannelResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/DeleteOriginEndpoint.hs b/gen/Amazonka/MediaPackage/DeleteOriginEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/DeleteOriginEndpoint.hs
@@ -0,0 +1,147 @@
+{-# 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.MediaPackage.DeleteOriginEndpoint
+-- 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 an existing OriginEndpoint.
+module Amazonka.MediaPackage.DeleteOriginEndpoint
+  ( -- * Creating a Request
+    DeleteOriginEndpoint (..),
+    newDeleteOriginEndpoint,
+
+    -- * Request Lenses
+    deleteOriginEndpoint_id,
+
+    -- * Destructuring the Response
+    DeleteOriginEndpointResponse (..),
+    newDeleteOriginEndpointResponse,
+
+    -- * Response Lenses
+    deleteOriginEndpointResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteOriginEndpoint' smart constructor.
+data DeleteOriginEndpoint = DeleteOriginEndpoint'
+  { -- | The ID of the OriginEndpoint to delete.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteOriginEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'id', 'deleteOriginEndpoint_id' - The ID of the OriginEndpoint to delete.
+newDeleteOriginEndpoint ::
+  -- | 'id'
+  Prelude.Text ->
+  DeleteOriginEndpoint
+newDeleteOriginEndpoint pId_ =
+  DeleteOriginEndpoint' {id = pId_}
+
+-- | The ID of the OriginEndpoint to delete.
+deleteOriginEndpoint_id :: Lens.Lens' DeleteOriginEndpoint Prelude.Text
+deleteOriginEndpoint_id = Lens.lens (\DeleteOriginEndpoint' {id} -> id) (\s@DeleteOriginEndpoint' {} a -> s {id = a} :: DeleteOriginEndpoint)
+
+instance Core.AWSRequest DeleteOriginEndpoint where
+  type
+    AWSResponse DeleteOriginEndpoint =
+      DeleteOriginEndpointResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteOriginEndpointResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteOriginEndpoint where
+  hashWithSalt _salt DeleteOriginEndpoint' {..} =
+    _salt `Prelude.hashWithSalt` id
+
+instance Prelude.NFData DeleteOriginEndpoint where
+  rnf DeleteOriginEndpoint' {..} = Prelude.rnf id
+
+instance Data.ToHeaders DeleteOriginEndpoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteOriginEndpoint where
+  toPath DeleteOriginEndpoint' {..} =
+    Prelude.mconcat
+      ["/origin_endpoints/", Data.toBS id]
+
+instance Data.ToQuery DeleteOriginEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteOriginEndpointResponse' smart constructor.
+data DeleteOriginEndpointResponse = DeleteOriginEndpointResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteOriginEndpointResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteOriginEndpointResponse_httpStatus' - The response's http status code.
+newDeleteOriginEndpointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteOriginEndpointResponse
+newDeleteOriginEndpointResponse pHttpStatus_ =
+  DeleteOriginEndpointResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteOriginEndpointResponse_httpStatus :: Lens.Lens' DeleteOriginEndpointResponse Prelude.Int
+deleteOriginEndpointResponse_httpStatus = Lens.lens (\DeleteOriginEndpointResponse' {httpStatus} -> httpStatus) (\s@DeleteOriginEndpointResponse' {} a -> s {httpStatus = a} :: DeleteOriginEndpointResponse)
+
+instance Prelude.NFData DeleteOriginEndpointResponse where
+  rnf DeleteOriginEndpointResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/DescribeChannel.hs b/gen/Amazonka/MediaPackage/DescribeChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/DescribeChannel.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaPackage.DescribeChannel
+-- 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 details about a Channel.
+module Amazonka.MediaPackage.DescribeChannel
+  ( -- * Creating a Request
+    DescribeChannel (..),
+    newDescribeChannel,
+
+    -- * Request Lenses
+    describeChannel_id,
+
+    -- * Destructuring the Response
+    DescribeChannelResponse (..),
+    newDescribeChannelResponse,
+
+    -- * Response Lenses
+    describeChannelResponse_arn,
+    describeChannelResponse_description,
+    describeChannelResponse_egressAccessLogs,
+    describeChannelResponse_hlsIngest,
+    describeChannelResponse_id,
+    describeChannelResponse_ingressAccessLogs,
+    describeChannelResponse_tags,
+    describeChannelResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeChannel' smart constructor.
+data DescribeChannel = DescribeChannel'
+  { -- | The ID of a Channel.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'id', 'describeChannel_id' - The ID of a Channel.
+newDescribeChannel ::
+  -- | 'id'
+  Prelude.Text ->
+  DescribeChannel
+newDescribeChannel pId_ = DescribeChannel' {id = pId_}
+
+-- | The ID of a Channel.
+describeChannel_id :: Lens.Lens' DescribeChannel Prelude.Text
+describeChannel_id = Lens.lens (\DescribeChannel' {id} -> id) (\s@DescribeChannel' {} a -> s {id = a} :: DescribeChannel)
+
+instance Core.AWSRequest DescribeChannel where
+  type
+    AWSResponse DescribeChannel =
+      DescribeChannelResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeChannelResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> (x Data..?> "egressAccessLogs")
+            Prelude.<*> (x Data..?> "hlsIngest")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "ingressAccessLogs")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeChannel where
+  hashWithSalt _salt DescribeChannel' {..} =
+    _salt `Prelude.hashWithSalt` id
+
+instance Prelude.NFData DescribeChannel where
+  rnf DescribeChannel' {..} = Prelude.rnf id
+
+instance Data.ToHeaders DescribeChannel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeChannel where
+  toPath DescribeChannel' {..} =
+    Prelude.mconcat ["/channels/", Data.toBS id]
+
+instance Data.ToQuery DescribeChannel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeChannelResponse' smart constructor.
+data DescribeChannelResponse = DescribeChannelResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the Channel.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A short text description of the Channel.
+    description :: Prelude.Maybe Prelude.Text,
+    egressAccessLogs :: Prelude.Maybe EgressAccessLogs,
+    hlsIngest :: Prelude.Maybe HlsIngest,
+    -- | The ID of the Channel.
+    id :: Prelude.Maybe Prelude.Text,
+    ingressAccessLogs :: Prelude.Maybe IngressAccessLogs,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeChannelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'describeChannelResponse_arn' - The Amazon Resource Name (ARN) assigned to the Channel.
+--
+-- 'description', 'describeChannelResponse_description' - A short text description of the Channel.
+--
+-- 'egressAccessLogs', 'describeChannelResponse_egressAccessLogs' - Undocumented member.
+--
+-- 'hlsIngest', 'describeChannelResponse_hlsIngest' - Undocumented member.
+--
+-- 'id', 'describeChannelResponse_id' - The ID of the Channel.
+--
+-- 'ingressAccessLogs', 'describeChannelResponse_ingressAccessLogs' - Undocumented member.
+--
+-- 'tags', 'describeChannelResponse_tags' - Undocumented member.
+--
+-- 'httpStatus', 'describeChannelResponse_httpStatus' - The response's http status code.
+newDescribeChannelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeChannelResponse
+newDescribeChannelResponse pHttpStatus_ =
+  DescribeChannelResponse'
+    { arn = Prelude.Nothing,
+      description = Prelude.Nothing,
+      egressAccessLogs = Prelude.Nothing,
+      hlsIngest = Prelude.Nothing,
+      id = Prelude.Nothing,
+      ingressAccessLogs = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the Channel.
+describeChannelResponse_arn :: Lens.Lens' DescribeChannelResponse (Prelude.Maybe Prelude.Text)
+describeChannelResponse_arn = Lens.lens (\DescribeChannelResponse' {arn} -> arn) (\s@DescribeChannelResponse' {} a -> s {arn = a} :: DescribeChannelResponse)
+
+-- | A short text description of the Channel.
+describeChannelResponse_description :: Lens.Lens' DescribeChannelResponse (Prelude.Maybe Prelude.Text)
+describeChannelResponse_description = Lens.lens (\DescribeChannelResponse' {description} -> description) (\s@DescribeChannelResponse' {} a -> s {description = a} :: DescribeChannelResponse)
+
+-- | Undocumented member.
+describeChannelResponse_egressAccessLogs :: Lens.Lens' DescribeChannelResponse (Prelude.Maybe EgressAccessLogs)
+describeChannelResponse_egressAccessLogs = Lens.lens (\DescribeChannelResponse' {egressAccessLogs} -> egressAccessLogs) (\s@DescribeChannelResponse' {} a -> s {egressAccessLogs = a} :: DescribeChannelResponse)
+
+-- | Undocumented member.
+describeChannelResponse_hlsIngest :: Lens.Lens' DescribeChannelResponse (Prelude.Maybe HlsIngest)
+describeChannelResponse_hlsIngest = Lens.lens (\DescribeChannelResponse' {hlsIngest} -> hlsIngest) (\s@DescribeChannelResponse' {} a -> s {hlsIngest = a} :: DescribeChannelResponse)
+
+-- | The ID of the Channel.
+describeChannelResponse_id :: Lens.Lens' DescribeChannelResponse (Prelude.Maybe Prelude.Text)
+describeChannelResponse_id = Lens.lens (\DescribeChannelResponse' {id} -> id) (\s@DescribeChannelResponse' {} a -> s {id = a} :: DescribeChannelResponse)
+
+-- | Undocumented member.
+describeChannelResponse_ingressAccessLogs :: Lens.Lens' DescribeChannelResponse (Prelude.Maybe IngressAccessLogs)
+describeChannelResponse_ingressAccessLogs = Lens.lens (\DescribeChannelResponse' {ingressAccessLogs} -> ingressAccessLogs) (\s@DescribeChannelResponse' {} a -> s {ingressAccessLogs = a} :: DescribeChannelResponse)
+
+-- | Undocumented member.
+describeChannelResponse_tags :: Lens.Lens' DescribeChannelResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeChannelResponse_tags = Lens.lens (\DescribeChannelResponse' {tags} -> tags) (\s@DescribeChannelResponse' {} a -> s {tags = a} :: DescribeChannelResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeChannelResponse_httpStatus :: Lens.Lens' DescribeChannelResponse Prelude.Int
+describeChannelResponse_httpStatus = Lens.lens (\DescribeChannelResponse' {httpStatus} -> httpStatus) (\s@DescribeChannelResponse' {} a -> s {httpStatus = a} :: DescribeChannelResponse)
+
+instance Prelude.NFData DescribeChannelResponse where
+  rnf DescribeChannelResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf egressAccessLogs
+      `Prelude.seq` Prelude.rnf hlsIngest
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf ingressAccessLogs
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/DescribeHarvestJob.hs b/gen/Amazonka/MediaPackage/DescribeHarvestJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/DescribeHarvestJob.hs
@@ -0,0 +1,267 @@
+{-# 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.MediaPackage.DescribeHarvestJob
+-- 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 details about an existing HarvestJob.
+module Amazonka.MediaPackage.DescribeHarvestJob
+  ( -- * Creating a Request
+    DescribeHarvestJob (..),
+    newDescribeHarvestJob,
+
+    -- * Request Lenses
+    describeHarvestJob_id,
+
+    -- * Destructuring the Response
+    DescribeHarvestJobResponse (..),
+    newDescribeHarvestJobResponse,
+
+    -- * Response Lenses
+    describeHarvestJobResponse_arn,
+    describeHarvestJobResponse_channelId,
+    describeHarvestJobResponse_createdAt,
+    describeHarvestJobResponse_endTime,
+    describeHarvestJobResponse_id,
+    describeHarvestJobResponse_originEndpointId,
+    describeHarvestJobResponse_s3Destination,
+    describeHarvestJobResponse_startTime,
+    describeHarvestJobResponse_status,
+    describeHarvestJobResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeHarvestJob' smart constructor.
+data DescribeHarvestJob = DescribeHarvestJob'
+  { -- | The ID of the HarvestJob.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHarvestJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'id', 'describeHarvestJob_id' - The ID of the HarvestJob.
+newDescribeHarvestJob ::
+  -- | 'id'
+  Prelude.Text ->
+  DescribeHarvestJob
+newDescribeHarvestJob pId_ =
+  DescribeHarvestJob' {id = pId_}
+
+-- | The ID of the HarvestJob.
+describeHarvestJob_id :: Lens.Lens' DescribeHarvestJob Prelude.Text
+describeHarvestJob_id = Lens.lens (\DescribeHarvestJob' {id} -> id) (\s@DescribeHarvestJob' {} a -> s {id = a} :: DescribeHarvestJob)
+
+instance Core.AWSRequest DescribeHarvestJob where
+  type
+    AWSResponse DescribeHarvestJob =
+      DescribeHarvestJobResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeHarvestJobResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "channelId")
+            Prelude.<*> (x Data..?> "createdAt")
+            Prelude.<*> (x Data..?> "endTime")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "originEndpointId")
+            Prelude.<*> (x Data..?> "s3Destination")
+            Prelude.<*> (x Data..?> "startTime")
+            Prelude.<*> (x Data..?> "status")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeHarvestJob where
+  hashWithSalt _salt DescribeHarvestJob' {..} =
+    _salt `Prelude.hashWithSalt` id
+
+instance Prelude.NFData DescribeHarvestJob where
+  rnf DescribeHarvestJob' {..} = Prelude.rnf id
+
+instance Data.ToHeaders DescribeHarvestJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeHarvestJob where
+  toPath DescribeHarvestJob' {..} =
+    Prelude.mconcat ["/harvest_jobs/", Data.toBS id]
+
+instance Data.ToQuery DescribeHarvestJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeHarvestJobResponse' smart constructor.
+data DescribeHarvestJobResponse = DescribeHarvestJobResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the HarvestJob.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Channel that the HarvestJob will harvest from.
+    channelId :: Prelude.Maybe Prelude.Text,
+    -- | The time the HarvestJob was submitted
+    createdAt :: Prelude.Maybe Prelude.Text,
+    -- | The end of the time-window which will be harvested.
+    endTime :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the HarvestJob. The ID must be unique within the region and it
+    -- cannot be changed after the HarvestJob is submitted.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+    -- cannot be changed after the HarvestJob is submitted.
+    originEndpointId :: Prelude.Maybe Prelude.Text,
+    s3Destination :: Prelude.Maybe S3Destination,
+    -- | The start of the time-window which will be harvested.
+    startTime :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the HarvestJob. Consider setting up a CloudWatch
+    -- Event to listen for HarvestJobs as they succeed or fail. In the event of
+    -- failure, the CloudWatch Event will include an explanation of why the
+    -- HarvestJob failed.
+    status :: Prelude.Maybe Status,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeHarvestJobResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'describeHarvestJobResponse_arn' - The Amazon Resource Name (ARN) assigned to the HarvestJob.
+--
+-- 'channelId', 'describeHarvestJobResponse_channelId' - The ID of the Channel that the HarvestJob will harvest from.
+--
+-- 'createdAt', 'describeHarvestJobResponse_createdAt' - The time the HarvestJob was submitted
+--
+-- 'endTime', 'describeHarvestJobResponse_endTime' - The end of the time-window which will be harvested.
+--
+-- 'id', 'describeHarvestJobResponse_id' - The ID of the HarvestJob. The ID must be unique within the region and it
+-- cannot be changed after the HarvestJob is submitted.
+--
+-- 'originEndpointId', 'describeHarvestJobResponse_originEndpointId' - The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+-- cannot be changed after the HarvestJob is submitted.
+--
+-- 's3Destination', 'describeHarvestJobResponse_s3Destination' - Undocumented member.
+--
+-- 'startTime', 'describeHarvestJobResponse_startTime' - The start of the time-window which will be harvested.
+--
+-- 'status', 'describeHarvestJobResponse_status' - The current status of the HarvestJob. Consider setting up a CloudWatch
+-- Event to listen for HarvestJobs as they succeed or fail. In the event of
+-- failure, the CloudWatch Event will include an explanation of why the
+-- HarvestJob failed.
+--
+-- 'httpStatus', 'describeHarvestJobResponse_httpStatus' - The response's http status code.
+newDescribeHarvestJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeHarvestJobResponse
+newDescribeHarvestJobResponse pHttpStatus_ =
+  DescribeHarvestJobResponse'
+    { arn = Prelude.Nothing,
+      channelId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      id = Prelude.Nothing,
+      originEndpointId = Prelude.Nothing,
+      s3Destination = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the HarvestJob.
+describeHarvestJobResponse_arn :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe Prelude.Text)
+describeHarvestJobResponse_arn = Lens.lens (\DescribeHarvestJobResponse' {arn} -> arn) (\s@DescribeHarvestJobResponse' {} a -> s {arn = a} :: DescribeHarvestJobResponse)
+
+-- | The ID of the Channel that the HarvestJob will harvest from.
+describeHarvestJobResponse_channelId :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe Prelude.Text)
+describeHarvestJobResponse_channelId = Lens.lens (\DescribeHarvestJobResponse' {channelId} -> channelId) (\s@DescribeHarvestJobResponse' {} a -> s {channelId = a} :: DescribeHarvestJobResponse)
+
+-- | The time the HarvestJob was submitted
+describeHarvestJobResponse_createdAt :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe Prelude.Text)
+describeHarvestJobResponse_createdAt = Lens.lens (\DescribeHarvestJobResponse' {createdAt} -> createdAt) (\s@DescribeHarvestJobResponse' {} a -> s {createdAt = a} :: DescribeHarvestJobResponse)
+
+-- | The end of the time-window which will be harvested.
+describeHarvestJobResponse_endTime :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe Prelude.Text)
+describeHarvestJobResponse_endTime = Lens.lens (\DescribeHarvestJobResponse' {endTime} -> endTime) (\s@DescribeHarvestJobResponse' {} a -> s {endTime = a} :: DescribeHarvestJobResponse)
+
+-- | The ID of the HarvestJob. The ID must be unique within the region and it
+-- cannot be changed after the HarvestJob is submitted.
+describeHarvestJobResponse_id :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe Prelude.Text)
+describeHarvestJobResponse_id = Lens.lens (\DescribeHarvestJobResponse' {id} -> id) (\s@DescribeHarvestJobResponse' {} a -> s {id = a} :: DescribeHarvestJobResponse)
+
+-- | The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+-- cannot be changed after the HarvestJob is submitted.
+describeHarvestJobResponse_originEndpointId :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe Prelude.Text)
+describeHarvestJobResponse_originEndpointId = Lens.lens (\DescribeHarvestJobResponse' {originEndpointId} -> originEndpointId) (\s@DescribeHarvestJobResponse' {} a -> s {originEndpointId = a} :: DescribeHarvestJobResponse)
+
+-- | Undocumented member.
+describeHarvestJobResponse_s3Destination :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe S3Destination)
+describeHarvestJobResponse_s3Destination = Lens.lens (\DescribeHarvestJobResponse' {s3Destination} -> s3Destination) (\s@DescribeHarvestJobResponse' {} a -> s {s3Destination = a} :: DescribeHarvestJobResponse)
+
+-- | The start of the time-window which will be harvested.
+describeHarvestJobResponse_startTime :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe Prelude.Text)
+describeHarvestJobResponse_startTime = Lens.lens (\DescribeHarvestJobResponse' {startTime} -> startTime) (\s@DescribeHarvestJobResponse' {} a -> s {startTime = a} :: DescribeHarvestJobResponse)
+
+-- | The current status of the HarvestJob. Consider setting up a CloudWatch
+-- Event to listen for HarvestJobs as they succeed or fail. In the event of
+-- failure, the CloudWatch Event will include an explanation of why the
+-- HarvestJob failed.
+describeHarvestJobResponse_status :: Lens.Lens' DescribeHarvestJobResponse (Prelude.Maybe Status)
+describeHarvestJobResponse_status = Lens.lens (\DescribeHarvestJobResponse' {status} -> status) (\s@DescribeHarvestJobResponse' {} a -> s {status = a} :: DescribeHarvestJobResponse)
+
+-- | The response's http status code.
+describeHarvestJobResponse_httpStatus :: Lens.Lens' DescribeHarvestJobResponse Prelude.Int
+describeHarvestJobResponse_httpStatus = Lens.lens (\DescribeHarvestJobResponse' {httpStatus} -> httpStatus) (\s@DescribeHarvestJobResponse' {} a -> s {httpStatus = a} :: DescribeHarvestJobResponse)
+
+instance Prelude.NFData DescribeHarvestJobResponse where
+  rnf DescribeHarvestJobResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf originEndpointId
+      `Prelude.seq` Prelude.rnf s3Destination
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/DescribeOriginEndpoint.hs b/gen/Amazonka/MediaPackage/DescribeOriginEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/DescribeOriginEndpoint.hs
@@ -0,0 +1,363 @@
+{-# 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.MediaPackage.DescribeOriginEndpoint
+-- 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 details about an existing OriginEndpoint.
+module Amazonka.MediaPackage.DescribeOriginEndpoint
+  ( -- * Creating a Request
+    DescribeOriginEndpoint (..),
+    newDescribeOriginEndpoint,
+
+    -- * Request Lenses
+    describeOriginEndpoint_id,
+
+    -- * Destructuring the Response
+    DescribeOriginEndpointResponse (..),
+    newDescribeOriginEndpointResponse,
+
+    -- * Response Lenses
+    describeOriginEndpointResponse_arn,
+    describeOriginEndpointResponse_authorization,
+    describeOriginEndpointResponse_channelId,
+    describeOriginEndpointResponse_cmafPackage,
+    describeOriginEndpointResponse_dashPackage,
+    describeOriginEndpointResponse_description,
+    describeOriginEndpointResponse_hlsPackage,
+    describeOriginEndpointResponse_id,
+    describeOriginEndpointResponse_manifestName,
+    describeOriginEndpointResponse_mssPackage,
+    describeOriginEndpointResponse_origination,
+    describeOriginEndpointResponse_startoverWindowSeconds,
+    describeOriginEndpointResponse_tags,
+    describeOriginEndpointResponse_timeDelaySeconds,
+    describeOriginEndpointResponse_url,
+    describeOriginEndpointResponse_whitelist,
+    describeOriginEndpointResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeOriginEndpoint' smart constructor.
+data DescribeOriginEndpoint = DescribeOriginEndpoint'
+  { -- | The ID of the OriginEndpoint.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeOriginEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'id', 'describeOriginEndpoint_id' - The ID of the OriginEndpoint.
+newDescribeOriginEndpoint ::
+  -- | 'id'
+  Prelude.Text ->
+  DescribeOriginEndpoint
+newDescribeOriginEndpoint pId_ =
+  DescribeOriginEndpoint' {id = pId_}
+
+-- | The ID of the OriginEndpoint.
+describeOriginEndpoint_id :: Lens.Lens' DescribeOriginEndpoint Prelude.Text
+describeOriginEndpoint_id = Lens.lens (\DescribeOriginEndpoint' {id} -> id) (\s@DescribeOriginEndpoint' {} a -> s {id = a} :: DescribeOriginEndpoint)
+
+instance Core.AWSRequest DescribeOriginEndpoint where
+  type
+    AWSResponse DescribeOriginEndpoint =
+      DescribeOriginEndpointResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeOriginEndpointResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "authorization")
+            Prelude.<*> (x Data..?> "channelId")
+            Prelude.<*> (x Data..?> "cmafPackage")
+            Prelude.<*> (x Data..?> "dashPackage")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> (x Data..?> "hlsPackage")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "manifestName")
+            Prelude.<*> (x Data..?> "mssPackage")
+            Prelude.<*> (x Data..?> "origination")
+            Prelude.<*> (x Data..?> "startoverWindowSeconds")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "timeDelaySeconds")
+            Prelude.<*> (x Data..?> "url")
+            Prelude.<*> (x Data..?> "whitelist" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeOriginEndpoint where
+  hashWithSalt _salt DescribeOriginEndpoint' {..} =
+    _salt `Prelude.hashWithSalt` id
+
+instance Prelude.NFData DescribeOriginEndpoint where
+  rnf DescribeOriginEndpoint' {..} = Prelude.rnf id
+
+instance Data.ToHeaders DescribeOriginEndpoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeOriginEndpoint where
+  toPath DescribeOriginEndpoint' {..} =
+    Prelude.mconcat
+      ["/origin_endpoints/", Data.toBS id]
+
+instance Data.ToQuery DescribeOriginEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeOriginEndpointResponse' smart constructor.
+data DescribeOriginEndpointResponse = DescribeOriginEndpointResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+    arn :: Prelude.Maybe Prelude.Text,
+    authorization :: Prelude.Maybe Authorization,
+    -- | The ID of the Channel the OriginEndpoint is associated with.
+    channelId :: Prelude.Maybe Prelude.Text,
+    cmafPackage :: Prelude.Maybe CmafPackage,
+    dashPackage :: Prelude.Maybe DashPackage,
+    -- | A short text description of the OriginEndpoint.
+    description :: Prelude.Maybe Prelude.Text,
+    hlsPackage :: Prelude.Maybe HlsPackage,
+    -- | The ID of the OriginEndpoint.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | A short string appended to the end of the OriginEndpoint URL.
+    manifestName :: Prelude.Maybe Prelude.Text,
+    mssPackage :: Prelude.Maybe MssPackage,
+    -- | Control whether origination of video is allowed for this OriginEndpoint.
+    -- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+    -- other form of access control. If set to DENY, the OriginEndpoint may not
+    -- be requested. This can be helpful for Live to VOD harvesting, or for
+    -- temporarily disabling origination
+    origination :: Prelude.Maybe Origination,
+    -- | Maximum duration (seconds) of content to retain for startover playback.
+    -- If not specified, startover playback will be disabled for the
+    -- OriginEndpoint.
+    startoverWindowSeconds :: Prelude.Maybe Prelude.Int,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Amount of delay (seconds) to enforce on the playback of live content. If
+    -- not specified, there will be no time delay in effect for the
+    -- OriginEndpoint.
+    timeDelaySeconds :: Prelude.Maybe Prelude.Int,
+    -- | The URL of the packaged OriginEndpoint for consumption.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | A list of source IP CIDR blocks that will be allowed to access the
+    -- OriginEndpoint.
+    whitelist :: 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 'DescribeOriginEndpointResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'describeOriginEndpointResponse_arn' - The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+--
+-- 'authorization', 'describeOriginEndpointResponse_authorization' - Undocumented member.
+--
+-- 'channelId', 'describeOriginEndpointResponse_channelId' - The ID of the Channel the OriginEndpoint is associated with.
+--
+-- 'cmafPackage', 'describeOriginEndpointResponse_cmafPackage' - Undocumented member.
+--
+-- 'dashPackage', 'describeOriginEndpointResponse_dashPackage' - Undocumented member.
+--
+-- 'description', 'describeOriginEndpointResponse_description' - A short text description of the OriginEndpoint.
+--
+-- 'hlsPackage', 'describeOriginEndpointResponse_hlsPackage' - Undocumented member.
+--
+-- 'id', 'describeOriginEndpointResponse_id' - The ID of the OriginEndpoint.
+--
+-- 'manifestName', 'describeOriginEndpointResponse_manifestName' - A short string appended to the end of the OriginEndpoint URL.
+--
+-- 'mssPackage', 'describeOriginEndpointResponse_mssPackage' - Undocumented member.
+--
+-- 'origination', 'describeOriginEndpointResponse_origination' - Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+--
+-- 'startoverWindowSeconds', 'describeOriginEndpointResponse_startoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+--
+-- 'tags', 'describeOriginEndpointResponse_tags' - Undocumented member.
+--
+-- 'timeDelaySeconds', 'describeOriginEndpointResponse_timeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+--
+-- 'url', 'describeOriginEndpointResponse_url' - The URL of the packaged OriginEndpoint for consumption.
+--
+-- 'whitelist', 'describeOriginEndpointResponse_whitelist' - A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+--
+-- 'httpStatus', 'describeOriginEndpointResponse_httpStatus' - The response's http status code.
+newDescribeOriginEndpointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeOriginEndpointResponse
+newDescribeOriginEndpointResponse pHttpStatus_ =
+  DescribeOriginEndpointResponse'
+    { arn =
+        Prelude.Nothing,
+      authorization = Prelude.Nothing,
+      channelId = Prelude.Nothing,
+      cmafPackage = Prelude.Nothing,
+      dashPackage = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hlsPackage = Prelude.Nothing,
+      id = Prelude.Nothing,
+      manifestName = Prelude.Nothing,
+      mssPackage = Prelude.Nothing,
+      origination = Prelude.Nothing,
+      startoverWindowSeconds = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      timeDelaySeconds = Prelude.Nothing,
+      url = Prelude.Nothing,
+      whitelist = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+describeOriginEndpointResponse_arn :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+describeOriginEndpointResponse_arn = Lens.lens (\DescribeOriginEndpointResponse' {arn} -> arn) (\s@DescribeOriginEndpointResponse' {} a -> s {arn = a} :: DescribeOriginEndpointResponse)
+
+-- | Undocumented member.
+describeOriginEndpointResponse_authorization :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Authorization)
+describeOriginEndpointResponse_authorization = Lens.lens (\DescribeOriginEndpointResponse' {authorization} -> authorization) (\s@DescribeOriginEndpointResponse' {} a -> s {authorization = a} :: DescribeOriginEndpointResponse)
+
+-- | The ID of the Channel the OriginEndpoint is associated with.
+describeOriginEndpointResponse_channelId :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+describeOriginEndpointResponse_channelId = Lens.lens (\DescribeOriginEndpointResponse' {channelId} -> channelId) (\s@DescribeOriginEndpointResponse' {} a -> s {channelId = a} :: DescribeOriginEndpointResponse)
+
+-- | Undocumented member.
+describeOriginEndpointResponse_cmafPackage :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe CmafPackage)
+describeOriginEndpointResponse_cmafPackage = Lens.lens (\DescribeOriginEndpointResponse' {cmafPackage} -> cmafPackage) (\s@DescribeOriginEndpointResponse' {} a -> s {cmafPackage = a} :: DescribeOriginEndpointResponse)
+
+-- | Undocumented member.
+describeOriginEndpointResponse_dashPackage :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe DashPackage)
+describeOriginEndpointResponse_dashPackage = Lens.lens (\DescribeOriginEndpointResponse' {dashPackage} -> dashPackage) (\s@DescribeOriginEndpointResponse' {} a -> s {dashPackage = a} :: DescribeOriginEndpointResponse)
+
+-- | A short text description of the OriginEndpoint.
+describeOriginEndpointResponse_description :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+describeOriginEndpointResponse_description = Lens.lens (\DescribeOriginEndpointResponse' {description} -> description) (\s@DescribeOriginEndpointResponse' {} a -> s {description = a} :: DescribeOriginEndpointResponse)
+
+-- | Undocumented member.
+describeOriginEndpointResponse_hlsPackage :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe HlsPackage)
+describeOriginEndpointResponse_hlsPackage = Lens.lens (\DescribeOriginEndpointResponse' {hlsPackage} -> hlsPackage) (\s@DescribeOriginEndpointResponse' {} a -> s {hlsPackage = a} :: DescribeOriginEndpointResponse)
+
+-- | The ID of the OriginEndpoint.
+describeOriginEndpointResponse_id :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+describeOriginEndpointResponse_id = Lens.lens (\DescribeOriginEndpointResponse' {id} -> id) (\s@DescribeOriginEndpointResponse' {} a -> s {id = a} :: DescribeOriginEndpointResponse)
+
+-- | A short string appended to the end of the OriginEndpoint URL.
+describeOriginEndpointResponse_manifestName :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+describeOriginEndpointResponse_manifestName = Lens.lens (\DescribeOriginEndpointResponse' {manifestName} -> manifestName) (\s@DescribeOriginEndpointResponse' {} a -> s {manifestName = a} :: DescribeOriginEndpointResponse)
+
+-- | Undocumented member.
+describeOriginEndpointResponse_mssPackage :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe MssPackage)
+describeOriginEndpointResponse_mssPackage = Lens.lens (\DescribeOriginEndpointResponse' {mssPackage} -> mssPackage) (\s@DescribeOriginEndpointResponse' {} a -> s {mssPackage = a} :: DescribeOriginEndpointResponse)
+
+-- | Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+describeOriginEndpointResponse_origination :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Origination)
+describeOriginEndpointResponse_origination = Lens.lens (\DescribeOriginEndpointResponse' {origination} -> origination) (\s@DescribeOriginEndpointResponse' {} a -> s {origination = a} :: DescribeOriginEndpointResponse)
+
+-- | Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+describeOriginEndpointResponse_startoverWindowSeconds :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Prelude.Int)
+describeOriginEndpointResponse_startoverWindowSeconds = Lens.lens (\DescribeOriginEndpointResponse' {startoverWindowSeconds} -> startoverWindowSeconds) (\s@DescribeOriginEndpointResponse' {} a -> s {startoverWindowSeconds = a} :: DescribeOriginEndpointResponse)
+
+-- | Undocumented member.
+describeOriginEndpointResponse_tags :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+describeOriginEndpointResponse_tags = Lens.lens (\DescribeOriginEndpointResponse' {tags} -> tags) (\s@DescribeOriginEndpointResponse' {} a -> s {tags = a} :: DescribeOriginEndpointResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+describeOriginEndpointResponse_timeDelaySeconds :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Prelude.Int)
+describeOriginEndpointResponse_timeDelaySeconds = Lens.lens (\DescribeOriginEndpointResponse' {timeDelaySeconds} -> timeDelaySeconds) (\s@DescribeOriginEndpointResponse' {} a -> s {timeDelaySeconds = a} :: DescribeOriginEndpointResponse)
+
+-- | The URL of the packaged OriginEndpoint for consumption.
+describeOriginEndpointResponse_url :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+describeOriginEndpointResponse_url = Lens.lens (\DescribeOriginEndpointResponse' {url} -> url) (\s@DescribeOriginEndpointResponse' {} a -> s {url = a} :: DescribeOriginEndpointResponse)
+
+-- | A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+describeOriginEndpointResponse_whitelist :: Lens.Lens' DescribeOriginEndpointResponse (Prelude.Maybe [Prelude.Text])
+describeOriginEndpointResponse_whitelist = Lens.lens (\DescribeOriginEndpointResponse' {whitelist} -> whitelist) (\s@DescribeOriginEndpointResponse' {} a -> s {whitelist = a} :: DescribeOriginEndpointResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeOriginEndpointResponse_httpStatus :: Lens.Lens' DescribeOriginEndpointResponse Prelude.Int
+describeOriginEndpointResponse_httpStatus = Lens.lens (\DescribeOriginEndpointResponse' {httpStatus} -> httpStatus) (\s@DescribeOriginEndpointResponse' {} a -> s {httpStatus = a} :: DescribeOriginEndpointResponse)
+
+instance
+  Prelude.NFData
+    DescribeOriginEndpointResponse
+  where
+  rnf DescribeOriginEndpointResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf authorization
+      `Prelude.seq` Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf cmafPackage
+      `Prelude.seq` Prelude.rnf dashPackage
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hlsPackage
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf manifestName
+      `Prelude.seq` Prelude.rnf mssPackage
+      `Prelude.seq` Prelude.rnf origination
+      `Prelude.seq` Prelude.rnf startoverWindowSeconds
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf timeDelaySeconds
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf whitelist
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/Lens.hs b/gen/Amazonka/MediaPackage/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Lens.hs
@@ -0,0 +1,455 @@
+{-# 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.MediaPackage.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.MediaPackage.Lens
+  ( -- * Operations
+
+    -- ** ConfigureLogs
+    configureLogs_egressAccessLogs,
+    configureLogs_ingressAccessLogs,
+    configureLogs_id,
+    configureLogsResponse_arn,
+    configureLogsResponse_description,
+    configureLogsResponse_egressAccessLogs,
+    configureLogsResponse_hlsIngest,
+    configureLogsResponse_id,
+    configureLogsResponse_ingressAccessLogs,
+    configureLogsResponse_tags,
+    configureLogsResponse_httpStatus,
+
+    -- ** CreateChannel
+    createChannel_description,
+    createChannel_tags,
+    createChannel_id,
+    createChannelResponse_arn,
+    createChannelResponse_description,
+    createChannelResponse_egressAccessLogs,
+    createChannelResponse_hlsIngest,
+    createChannelResponse_id,
+    createChannelResponse_ingressAccessLogs,
+    createChannelResponse_tags,
+    createChannelResponse_httpStatus,
+
+    -- ** CreateHarvestJob
+    createHarvestJob_s3Destination,
+    createHarvestJob_endTime,
+    createHarvestJob_originEndpointId,
+    createHarvestJob_startTime,
+    createHarvestJob_id,
+    createHarvestJobResponse_arn,
+    createHarvestJobResponse_channelId,
+    createHarvestJobResponse_createdAt,
+    createHarvestJobResponse_endTime,
+    createHarvestJobResponse_id,
+    createHarvestJobResponse_originEndpointId,
+    createHarvestJobResponse_s3Destination,
+    createHarvestJobResponse_startTime,
+    createHarvestJobResponse_status,
+    createHarvestJobResponse_httpStatus,
+
+    -- ** CreateOriginEndpoint
+    createOriginEndpoint_authorization,
+    createOriginEndpoint_cmafPackage,
+    createOriginEndpoint_dashPackage,
+    createOriginEndpoint_description,
+    createOriginEndpoint_hlsPackage,
+    createOriginEndpoint_manifestName,
+    createOriginEndpoint_mssPackage,
+    createOriginEndpoint_origination,
+    createOriginEndpoint_startoverWindowSeconds,
+    createOriginEndpoint_tags,
+    createOriginEndpoint_timeDelaySeconds,
+    createOriginEndpoint_whitelist,
+    createOriginEndpoint_channelId,
+    createOriginEndpoint_id,
+    createOriginEndpointResponse_arn,
+    createOriginEndpointResponse_authorization,
+    createOriginEndpointResponse_channelId,
+    createOriginEndpointResponse_cmafPackage,
+    createOriginEndpointResponse_dashPackage,
+    createOriginEndpointResponse_description,
+    createOriginEndpointResponse_hlsPackage,
+    createOriginEndpointResponse_id,
+    createOriginEndpointResponse_manifestName,
+    createOriginEndpointResponse_mssPackage,
+    createOriginEndpointResponse_origination,
+    createOriginEndpointResponse_startoverWindowSeconds,
+    createOriginEndpointResponse_tags,
+    createOriginEndpointResponse_timeDelaySeconds,
+    createOriginEndpointResponse_url,
+    createOriginEndpointResponse_whitelist,
+    createOriginEndpointResponse_httpStatus,
+
+    -- ** DeleteChannel
+    deleteChannel_id,
+    deleteChannelResponse_httpStatus,
+
+    -- ** DeleteOriginEndpoint
+    deleteOriginEndpoint_id,
+    deleteOriginEndpointResponse_httpStatus,
+
+    -- ** DescribeChannel
+    describeChannel_id,
+    describeChannelResponse_arn,
+    describeChannelResponse_description,
+    describeChannelResponse_egressAccessLogs,
+    describeChannelResponse_hlsIngest,
+    describeChannelResponse_id,
+    describeChannelResponse_ingressAccessLogs,
+    describeChannelResponse_tags,
+    describeChannelResponse_httpStatus,
+
+    -- ** DescribeHarvestJob
+    describeHarvestJob_id,
+    describeHarvestJobResponse_arn,
+    describeHarvestJobResponse_channelId,
+    describeHarvestJobResponse_createdAt,
+    describeHarvestJobResponse_endTime,
+    describeHarvestJobResponse_id,
+    describeHarvestJobResponse_originEndpointId,
+    describeHarvestJobResponse_s3Destination,
+    describeHarvestJobResponse_startTime,
+    describeHarvestJobResponse_status,
+    describeHarvestJobResponse_httpStatus,
+
+    -- ** DescribeOriginEndpoint
+    describeOriginEndpoint_id,
+    describeOriginEndpointResponse_arn,
+    describeOriginEndpointResponse_authorization,
+    describeOriginEndpointResponse_channelId,
+    describeOriginEndpointResponse_cmafPackage,
+    describeOriginEndpointResponse_dashPackage,
+    describeOriginEndpointResponse_description,
+    describeOriginEndpointResponse_hlsPackage,
+    describeOriginEndpointResponse_id,
+    describeOriginEndpointResponse_manifestName,
+    describeOriginEndpointResponse_mssPackage,
+    describeOriginEndpointResponse_origination,
+    describeOriginEndpointResponse_startoverWindowSeconds,
+    describeOriginEndpointResponse_tags,
+    describeOriginEndpointResponse_timeDelaySeconds,
+    describeOriginEndpointResponse_url,
+    describeOriginEndpointResponse_whitelist,
+    describeOriginEndpointResponse_httpStatus,
+
+    -- ** ListChannels
+    listChannels_maxResults,
+    listChannels_nextToken,
+    listChannelsResponse_channels,
+    listChannelsResponse_nextToken,
+    listChannelsResponse_httpStatus,
+
+    -- ** ListHarvestJobs
+    listHarvestJobs_includeChannelId,
+    listHarvestJobs_includeStatus,
+    listHarvestJobs_maxResults,
+    listHarvestJobs_nextToken,
+    listHarvestJobsResponse_harvestJobs,
+    listHarvestJobsResponse_nextToken,
+    listHarvestJobsResponse_httpStatus,
+
+    -- ** ListOriginEndpoints
+    listOriginEndpoints_channelId,
+    listOriginEndpoints_maxResults,
+    listOriginEndpoints_nextToken,
+    listOriginEndpointsResponse_nextToken,
+    listOriginEndpointsResponse_originEndpoints,
+    listOriginEndpointsResponse_httpStatus,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceArn,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** RotateIngestEndpointCredentials
+    rotateIngestEndpointCredentials_ingestEndpointId,
+    rotateIngestEndpointCredentials_id,
+    rotateIngestEndpointCredentialsResponse_arn,
+    rotateIngestEndpointCredentialsResponse_description,
+    rotateIngestEndpointCredentialsResponse_egressAccessLogs,
+    rotateIngestEndpointCredentialsResponse_hlsIngest,
+    rotateIngestEndpointCredentialsResponse_id,
+    rotateIngestEndpointCredentialsResponse_ingressAccessLogs,
+    rotateIngestEndpointCredentialsResponse_tags,
+    rotateIngestEndpointCredentialsResponse_httpStatus,
+
+    -- ** TagResource
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- ** UntagResource
+    untagResource_tagKeys,
+    untagResource_resourceArn,
+
+    -- ** UpdateChannel
+    updateChannel_description,
+    updateChannel_id,
+    updateChannelResponse_arn,
+    updateChannelResponse_description,
+    updateChannelResponse_egressAccessLogs,
+    updateChannelResponse_hlsIngest,
+    updateChannelResponse_id,
+    updateChannelResponse_ingressAccessLogs,
+    updateChannelResponse_tags,
+    updateChannelResponse_httpStatus,
+
+    -- ** UpdateOriginEndpoint
+    updateOriginEndpoint_authorization,
+    updateOriginEndpoint_cmafPackage,
+    updateOriginEndpoint_dashPackage,
+    updateOriginEndpoint_description,
+    updateOriginEndpoint_hlsPackage,
+    updateOriginEndpoint_manifestName,
+    updateOriginEndpoint_mssPackage,
+    updateOriginEndpoint_origination,
+    updateOriginEndpoint_startoverWindowSeconds,
+    updateOriginEndpoint_timeDelaySeconds,
+    updateOriginEndpoint_whitelist,
+    updateOriginEndpoint_id,
+    updateOriginEndpointResponse_arn,
+    updateOriginEndpointResponse_authorization,
+    updateOriginEndpointResponse_channelId,
+    updateOriginEndpointResponse_cmafPackage,
+    updateOriginEndpointResponse_dashPackage,
+    updateOriginEndpointResponse_description,
+    updateOriginEndpointResponse_hlsPackage,
+    updateOriginEndpointResponse_id,
+    updateOriginEndpointResponse_manifestName,
+    updateOriginEndpointResponse_mssPackage,
+    updateOriginEndpointResponse_origination,
+    updateOriginEndpointResponse_startoverWindowSeconds,
+    updateOriginEndpointResponse_tags,
+    updateOriginEndpointResponse_timeDelaySeconds,
+    updateOriginEndpointResponse_url,
+    updateOriginEndpointResponse_whitelist,
+    updateOriginEndpointResponse_httpStatus,
+
+    -- * Types
+
+    -- ** Authorization
+    authorization_secretsRoleArn,
+    authorization_cdnIdentifierSecret,
+
+    -- ** Channel
+    channel_arn,
+    channel_description,
+    channel_egressAccessLogs,
+    channel_hlsIngest,
+    channel_id,
+    channel_ingressAccessLogs,
+    channel_tags,
+
+    -- ** CmafEncryption
+    cmafEncryption_constantInitializationVector,
+    cmafEncryption_encryptionMethod,
+    cmafEncryption_keyRotationIntervalSeconds,
+    cmafEncryption_spekeKeyProvider,
+
+    -- ** CmafPackage
+    cmafPackage_encryption,
+    cmafPackage_hlsManifests,
+    cmafPackage_segmentDurationSeconds,
+    cmafPackage_segmentPrefix,
+    cmafPackage_streamSelection,
+
+    -- ** CmafPackageCreateOrUpdateParameters
+    cmafPackageCreateOrUpdateParameters_encryption,
+    cmafPackageCreateOrUpdateParameters_hlsManifests,
+    cmafPackageCreateOrUpdateParameters_segmentDurationSeconds,
+    cmafPackageCreateOrUpdateParameters_segmentPrefix,
+    cmafPackageCreateOrUpdateParameters_streamSelection,
+
+    -- ** DashEncryption
+    dashEncryption_keyRotationIntervalSeconds,
+    dashEncryption_spekeKeyProvider,
+
+    -- ** DashPackage
+    dashPackage_adTriggers,
+    dashPackage_adsOnDeliveryRestrictions,
+    dashPackage_encryption,
+    dashPackage_includeIframeOnlyStream,
+    dashPackage_manifestLayout,
+    dashPackage_manifestWindowSeconds,
+    dashPackage_minBufferTimeSeconds,
+    dashPackage_minUpdatePeriodSeconds,
+    dashPackage_periodTriggers,
+    dashPackage_profile,
+    dashPackage_segmentDurationSeconds,
+    dashPackage_segmentTemplateFormat,
+    dashPackage_streamSelection,
+    dashPackage_suggestedPresentationDelaySeconds,
+    dashPackage_utcTiming,
+    dashPackage_utcTimingUri,
+
+    -- ** EgressAccessLogs
+    egressAccessLogs_logGroupName,
+
+    -- ** EncryptionContractConfiguration
+    encryptionContractConfiguration_presetSpeke20Audio,
+    encryptionContractConfiguration_presetSpeke20Video,
+
+    -- ** HarvestJob
+    harvestJob_arn,
+    harvestJob_channelId,
+    harvestJob_createdAt,
+    harvestJob_endTime,
+    harvestJob_id,
+    harvestJob_originEndpointId,
+    harvestJob_s3Destination,
+    harvestJob_startTime,
+    harvestJob_status,
+
+    -- ** HlsEncryption
+    hlsEncryption_constantInitializationVector,
+    hlsEncryption_encryptionMethod,
+    hlsEncryption_keyRotationIntervalSeconds,
+    hlsEncryption_repeatExtXKey,
+    hlsEncryption_spekeKeyProvider,
+
+    -- ** HlsIngest
+    hlsIngest_ingestEndpoints,
+
+    -- ** HlsManifest
+    hlsManifest_adMarkers,
+    hlsManifest_adTriggers,
+    hlsManifest_adsOnDeliveryRestrictions,
+    hlsManifest_includeIframeOnlyStream,
+    hlsManifest_manifestName,
+    hlsManifest_playlistType,
+    hlsManifest_playlistWindowSeconds,
+    hlsManifest_programDateTimeIntervalSeconds,
+    hlsManifest_url,
+    hlsManifest_id,
+
+    -- ** HlsManifestCreateOrUpdateParameters
+    hlsManifestCreateOrUpdateParameters_adMarkers,
+    hlsManifestCreateOrUpdateParameters_adTriggers,
+    hlsManifestCreateOrUpdateParameters_adsOnDeliveryRestrictions,
+    hlsManifestCreateOrUpdateParameters_includeIframeOnlyStream,
+    hlsManifestCreateOrUpdateParameters_manifestName,
+    hlsManifestCreateOrUpdateParameters_playlistType,
+    hlsManifestCreateOrUpdateParameters_playlistWindowSeconds,
+    hlsManifestCreateOrUpdateParameters_programDateTimeIntervalSeconds,
+    hlsManifestCreateOrUpdateParameters_id,
+
+    -- ** HlsPackage
+    hlsPackage_adMarkers,
+    hlsPackage_adTriggers,
+    hlsPackage_adsOnDeliveryRestrictions,
+    hlsPackage_encryption,
+    hlsPackage_includeDvbSubtitles,
+    hlsPackage_includeIframeOnlyStream,
+    hlsPackage_playlistType,
+    hlsPackage_playlistWindowSeconds,
+    hlsPackage_programDateTimeIntervalSeconds,
+    hlsPackage_segmentDurationSeconds,
+    hlsPackage_streamSelection,
+    hlsPackage_useAudioRenditionGroup,
+
+    -- ** IngestEndpoint
+    ingestEndpoint_id,
+    ingestEndpoint_password,
+    ingestEndpoint_url,
+    ingestEndpoint_username,
+
+    -- ** IngressAccessLogs
+    ingressAccessLogs_logGroupName,
+
+    -- ** MssEncryption
+    mssEncryption_spekeKeyProvider,
+
+    -- ** MssPackage
+    mssPackage_encryption,
+    mssPackage_manifestWindowSeconds,
+    mssPackage_segmentDurationSeconds,
+    mssPackage_streamSelection,
+
+    -- ** OriginEndpoint
+    originEndpoint_arn,
+    originEndpoint_authorization,
+    originEndpoint_channelId,
+    originEndpoint_cmafPackage,
+    originEndpoint_dashPackage,
+    originEndpoint_description,
+    originEndpoint_hlsPackage,
+    originEndpoint_id,
+    originEndpoint_manifestName,
+    originEndpoint_mssPackage,
+    originEndpoint_origination,
+    originEndpoint_startoverWindowSeconds,
+    originEndpoint_tags,
+    originEndpoint_timeDelaySeconds,
+    originEndpoint_url,
+    originEndpoint_whitelist,
+
+    -- ** S3Destination
+    s3Destination_manifestKey,
+    s3Destination_bucketName,
+    s3Destination_roleArn,
+
+    -- ** SpekeKeyProvider
+    spekeKeyProvider_certificateArn,
+    spekeKeyProvider_encryptionContractConfiguration,
+    spekeKeyProvider_resourceId,
+    spekeKeyProvider_systemIds,
+    spekeKeyProvider_url,
+    spekeKeyProvider_roleArn,
+
+    -- ** StreamSelection
+    streamSelection_maxVideoBitsPerSecond,
+    streamSelection_minVideoBitsPerSecond,
+    streamSelection_streamOrder,
+  )
+where
+
+import Amazonka.MediaPackage.ConfigureLogs
+import Amazonka.MediaPackage.CreateChannel
+import Amazonka.MediaPackage.CreateHarvestJob
+import Amazonka.MediaPackage.CreateOriginEndpoint
+import Amazonka.MediaPackage.DeleteChannel
+import Amazonka.MediaPackage.DeleteOriginEndpoint
+import Amazonka.MediaPackage.DescribeChannel
+import Amazonka.MediaPackage.DescribeHarvestJob
+import Amazonka.MediaPackage.DescribeOriginEndpoint
+import Amazonka.MediaPackage.ListChannels
+import Amazonka.MediaPackage.ListHarvestJobs
+import Amazonka.MediaPackage.ListOriginEndpoints
+import Amazonka.MediaPackage.ListTagsForResource
+import Amazonka.MediaPackage.RotateIngestEndpointCredentials
+import Amazonka.MediaPackage.TagResource
+import Amazonka.MediaPackage.Types.Authorization
+import Amazonka.MediaPackage.Types.Channel
+import Amazonka.MediaPackage.Types.CmafEncryption
+import Amazonka.MediaPackage.Types.CmafPackage
+import Amazonka.MediaPackage.Types.CmafPackageCreateOrUpdateParameters
+import Amazonka.MediaPackage.Types.DashEncryption
+import Amazonka.MediaPackage.Types.DashPackage
+import Amazonka.MediaPackage.Types.EgressAccessLogs
+import Amazonka.MediaPackage.Types.EncryptionContractConfiguration
+import Amazonka.MediaPackage.Types.HarvestJob
+import Amazonka.MediaPackage.Types.HlsEncryption
+import Amazonka.MediaPackage.Types.HlsIngest
+import Amazonka.MediaPackage.Types.HlsManifest
+import Amazonka.MediaPackage.Types.HlsManifestCreateOrUpdateParameters
+import Amazonka.MediaPackage.Types.HlsPackage
+import Amazonka.MediaPackage.Types.IngestEndpoint
+import Amazonka.MediaPackage.Types.IngressAccessLogs
+import Amazonka.MediaPackage.Types.MssEncryption
+import Amazonka.MediaPackage.Types.MssPackage
+import Amazonka.MediaPackage.Types.OriginEndpoint
+import Amazonka.MediaPackage.Types.S3Destination
+import Amazonka.MediaPackage.Types.SpekeKeyProvider
+import Amazonka.MediaPackage.Types.StreamSelection
+import Amazonka.MediaPackage.UntagResource
+import Amazonka.MediaPackage.UpdateChannel
+import Amazonka.MediaPackage.UpdateOriginEndpoint
diff --git a/gen/Amazonka/MediaPackage/ListChannels.hs b/gen/Amazonka/MediaPackage/ListChannels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/ListChannels.hs
@@ -0,0 +1,211 @@
+{-# 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.MediaPackage.ListChannels
+-- 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 collection of Channels.
+--
+-- This operation returns paginated results.
+module Amazonka.MediaPackage.ListChannels
+  ( -- * Creating a Request
+    ListChannels (..),
+    newListChannels,
+
+    -- * Request Lenses
+    listChannels_maxResults,
+    listChannels_nextToken,
+
+    -- * Destructuring the Response
+    ListChannelsResponse (..),
+    newListChannelsResponse,
+
+    -- * Response Lenses
+    listChannelsResponse_channels,
+    listChannelsResponse_nextToken,
+    listChannelsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListChannels' smart constructor.
+data ListChannels = ListChannels'
+  { -- | Upper bound on number of records to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token used to resume pagination from the end of a previous request.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListChannels' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listChannels_maxResults' - Upper bound on number of records to return.
+--
+-- 'nextToken', 'listChannels_nextToken' - A token used to resume pagination from the end of a previous request.
+newListChannels ::
+  ListChannels
+newListChannels =
+  ListChannels'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Upper bound on number of records to return.
+listChannels_maxResults :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Natural)
+listChannels_maxResults = Lens.lens (\ListChannels' {maxResults} -> maxResults) (\s@ListChannels' {} a -> s {maxResults = a} :: ListChannels)
+
+-- | A token used to resume pagination from the end of a previous request.
+listChannels_nextToken :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Text)
+listChannels_nextToken = Lens.lens (\ListChannels' {nextToken} -> nextToken) (\s@ListChannels' {} a -> s {nextToken = a} :: ListChannels)
+
+instance Core.AWSPager ListChannels where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listChannelsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listChannelsResponse_channels
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listChannels_nextToken
+          Lens..~ rs
+          Lens.^? listChannelsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListChannels where
+  type AWSResponse ListChannels = ListChannelsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListChannelsResponse'
+            Prelude.<$> (x Data..?> "channels" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListChannels where
+  hashWithSalt _salt ListChannels' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListChannels where
+  rnf ListChannels' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListChannels where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListChannels where
+  toPath = Prelude.const "/channels"
+
+instance Data.ToQuery ListChannels where
+  toQuery ListChannels' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListChannelsResponse' smart constructor.
+data ListChannelsResponse = ListChannelsResponse'
+  { -- | A list of Channel records.
+    channels :: Prelude.Maybe [Channel],
+    -- | A token that can be used to resume pagination from the end of the
+    -- collection.
+    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 'ListChannelsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channels', 'listChannelsResponse_channels' - A list of Channel records.
+--
+-- 'nextToken', 'listChannelsResponse_nextToken' - A token that can be used to resume pagination from the end of the
+-- collection.
+--
+-- 'httpStatus', 'listChannelsResponse_httpStatus' - The response's http status code.
+newListChannelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListChannelsResponse
+newListChannelsResponse pHttpStatus_ =
+  ListChannelsResponse'
+    { channels = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of Channel records.
+listChannelsResponse_channels :: Lens.Lens' ListChannelsResponse (Prelude.Maybe [Channel])
+listChannelsResponse_channels = Lens.lens (\ListChannelsResponse' {channels} -> channels) (\s@ListChannelsResponse' {} a -> s {channels = a} :: ListChannelsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token that can be used to resume pagination from the end of the
+-- collection.
+listChannelsResponse_nextToken :: Lens.Lens' ListChannelsResponse (Prelude.Maybe Prelude.Text)
+listChannelsResponse_nextToken = Lens.lens (\ListChannelsResponse' {nextToken} -> nextToken) (\s@ListChannelsResponse' {} a -> s {nextToken = a} :: ListChannelsResponse)
+
+-- | The response's http status code.
+listChannelsResponse_httpStatus :: Lens.Lens' ListChannelsResponse Prelude.Int
+listChannelsResponse_httpStatus = Lens.lens (\ListChannelsResponse' {httpStatus} -> httpStatus) (\s@ListChannelsResponse' {} a -> s {httpStatus = a} :: ListChannelsResponse)
+
+instance Prelude.NFData ListChannelsResponse where
+  rnf ListChannelsResponse' {..} =
+    Prelude.rnf channels
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/ListHarvestJobs.hs b/gen/Amazonka/MediaPackage/ListHarvestJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/ListHarvestJobs.hs
@@ -0,0 +1,247 @@
+{-# 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.MediaPackage.ListHarvestJobs
+-- 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 collection of HarvestJob records.
+--
+-- This operation returns paginated results.
+module Amazonka.MediaPackage.ListHarvestJobs
+  ( -- * Creating a Request
+    ListHarvestJobs (..),
+    newListHarvestJobs,
+
+    -- * Request Lenses
+    listHarvestJobs_includeChannelId,
+    listHarvestJobs_includeStatus,
+    listHarvestJobs_maxResults,
+    listHarvestJobs_nextToken,
+
+    -- * Destructuring the Response
+    ListHarvestJobsResponse (..),
+    newListHarvestJobsResponse,
+
+    -- * Response Lenses
+    listHarvestJobsResponse_harvestJobs,
+    listHarvestJobsResponse_nextToken,
+    listHarvestJobsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListHarvestJobs' smart constructor.
+data ListHarvestJobs = ListHarvestJobs'
+  { -- | When specified, the request will return only HarvestJobs associated with
+    -- the given Channel ID.
+    includeChannelId :: Prelude.Maybe Prelude.Text,
+    -- | When specified, the request will return only HarvestJobs in the given
+    -- status.
+    includeStatus :: Prelude.Maybe Prelude.Text,
+    -- | The upper bound on the number of records to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token used to resume pagination from the end of a previous request.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListHarvestJobs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'includeChannelId', 'listHarvestJobs_includeChannelId' - When specified, the request will return only HarvestJobs associated with
+-- the given Channel ID.
+--
+-- 'includeStatus', 'listHarvestJobs_includeStatus' - When specified, the request will return only HarvestJobs in the given
+-- status.
+--
+-- 'maxResults', 'listHarvestJobs_maxResults' - The upper bound on the number of records to return.
+--
+-- 'nextToken', 'listHarvestJobs_nextToken' - A token used to resume pagination from the end of a previous request.
+newListHarvestJobs ::
+  ListHarvestJobs
+newListHarvestJobs =
+  ListHarvestJobs'
+    { includeChannelId =
+        Prelude.Nothing,
+      includeStatus = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | When specified, the request will return only HarvestJobs associated with
+-- the given Channel ID.
+listHarvestJobs_includeChannelId :: Lens.Lens' ListHarvestJobs (Prelude.Maybe Prelude.Text)
+listHarvestJobs_includeChannelId = Lens.lens (\ListHarvestJobs' {includeChannelId} -> includeChannelId) (\s@ListHarvestJobs' {} a -> s {includeChannelId = a} :: ListHarvestJobs)
+
+-- | When specified, the request will return only HarvestJobs in the given
+-- status.
+listHarvestJobs_includeStatus :: Lens.Lens' ListHarvestJobs (Prelude.Maybe Prelude.Text)
+listHarvestJobs_includeStatus = Lens.lens (\ListHarvestJobs' {includeStatus} -> includeStatus) (\s@ListHarvestJobs' {} a -> s {includeStatus = a} :: ListHarvestJobs)
+
+-- | The upper bound on the number of records to return.
+listHarvestJobs_maxResults :: Lens.Lens' ListHarvestJobs (Prelude.Maybe Prelude.Natural)
+listHarvestJobs_maxResults = Lens.lens (\ListHarvestJobs' {maxResults} -> maxResults) (\s@ListHarvestJobs' {} a -> s {maxResults = a} :: ListHarvestJobs)
+
+-- | A token used to resume pagination from the end of a previous request.
+listHarvestJobs_nextToken :: Lens.Lens' ListHarvestJobs (Prelude.Maybe Prelude.Text)
+listHarvestJobs_nextToken = Lens.lens (\ListHarvestJobs' {nextToken} -> nextToken) (\s@ListHarvestJobs' {} a -> s {nextToken = a} :: ListHarvestJobs)
+
+instance Core.AWSPager ListHarvestJobs where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listHarvestJobsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listHarvestJobsResponse_harvestJobs
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listHarvestJobs_nextToken
+          Lens..~ rs
+          Lens.^? listHarvestJobsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListHarvestJobs where
+  type
+    AWSResponse ListHarvestJobs =
+      ListHarvestJobsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListHarvestJobsResponse'
+            Prelude.<$> (x Data..?> "harvestJobs" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListHarvestJobs where
+  hashWithSalt _salt ListHarvestJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` includeChannelId
+      `Prelude.hashWithSalt` includeStatus
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListHarvestJobs where
+  rnf ListHarvestJobs' {..} =
+    Prelude.rnf includeChannelId
+      `Prelude.seq` Prelude.rnf includeStatus
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListHarvestJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListHarvestJobs where
+  toPath = Prelude.const "/harvest_jobs"
+
+instance Data.ToQuery ListHarvestJobs where
+  toQuery ListHarvestJobs' {..} =
+    Prelude.mconcat
+      [ "includeChannelId" Data.=: includeChannelId,
+        "includeStatus" Data.=: includeStatus,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListHarvestJobsResponse' smart constructor.
+data ListHarvestJobsResponse = ListHarvestJobsResponse'
+  { -- | A list of HarvestJob records.
+    harvestJobs :: Prelude.Maybe [HarvestJob],
+    -- | A token that can be used to resume pagination from the end of the
+    -- collection.
+    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 'ListHarvestJobsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'harvestJobs', 'listHarvestJobsResponse_harvestJobs' - A list of HarvestJob records.
+--
+-- 'nextToken', 'listHarvestJobsResponse_nextToken' - A token that can be used to resume pagination from the end of the
+-- collection.
+--
+-- 'httpStatus', 'listHarvestJobsResponse_httpStatus' - The response's http status code.
+newListHarvestJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListHarvestJobsResponse
+newListHarvestJobsResponse pHttpStatus_ =
+  ListHarvestJobsResponse'
+    { harvestJobs =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of HarvestJob records.
+listHarvestJobsResponse_harvestJobs :: Lens.Lens' ListHarvestJobsResponse (Prelude.Maybe [HarvestJob])
+listHarvestJobsResponse_harvestJobs = Lens.lens (\ListHarvestJobsResponse' {harvestJobs} -> harvestJobs) (\s@ListHarvestJobsResponse' {} a -> s {harvestJobs = a} :: ListHarvestJobsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token that can be used to resume pagination from the end of the
+-- collection.
+listHarvestJobsResponse_nextToken :: Lens.Lens' ListHarvestJobsResponse (Prelude.Maybe Prelude.Text)
+listHarvestJobsResponse_nextToken = Lens.lens (\ListHarvestJobsResponse' {nextToken} -> nextToken) (\s@ListHarvestJobsResponse' {} a -> s {nextToken = a} :: ListHarvestJobsResponse)
+
+-- | The response's http status code.
+listHarvestJobsResponse_httpStatus :: Lens.Lens' ListHarvestJobsResponse Prelude.Int
+listHarvestJobsResponse_httpStatus = Lens.lens (\ListHarvestJobsResponse' {httpStatus} -> httpStatus) (\s@ListHarvestJobsResponse' {} a -> s {httpStatus = a} :: ListHarvestJobsResponse)
+
+instance Prelude.NFData ListHarvestJobsResponse where
+  rnf ListHarvestJobsResponse' {..} =
+    Prelude.rnf harvestJobs
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/ListOriginEndpoints.hs b/gen/Amazonka/MediaPackage/ListOriginEndpoints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/ListOriginEndpoints.hs
@@ -0,0 +1,233 @@
+{-# 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.MediaPackage.ListOriginEndpoints
+-- 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 collection of OriginEndpoint records.
+--
+-- This operation returns paginated results.
+module Amazonka.MediaPackage.ListOriginEndpoints
+  ( -- * Creating a Request
+    ListOriginEndpoints (..),
+    newListOriginEndpoints,
+
+    -- * Request Lenses
+    listOriginEndpoints_channelId,
+    listOriginEndpoints_maxResults,
+    listOriginEndpoints_nextToken,
+
+    -- * Destructuring the Response
+    ListOriginEndpointsResponse (..),
+    newListOriginEndpointsResponse,
+
+    -- * Response Lenses
+    listOriginEndpointsResponse_nextToken,
+    listOriginEndpointsResponse_originEndpoints,
+    listOriginEndpointsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListOriginEndpoints' smart constructor.
+data ListOriginEndpoints = ListOriginEndpoints'
+  { -- | When specified, the request will return only OriginEndpoints associated
+    -- with the given Channel ID.
+    channelId :: Prelude.Maybe Prelude.Text,
+    -- | The upper bound on the number of records to return.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A token used to resume pagination from the end of a previous request.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListOriginEndpoints' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'channelId', 'listOriginEndpoints_channelId' - When specified, the request will return only OriginEndpoints associated
+-- with the given Channel ID.
+--
+-- 'maxResults', 'listOriginEndpoints_maxResults' - The upper bound on the number of records to return.
+--
+-- 'nextToken', 'listOriginEndpoints_nextToken' - A token used to resume pagination from the end of a previous request.
+newListOriginEndpoints ::
+  ListOriginEndpoints
+newListOriginEndpoints =
+  ListOriginEndpoints'
+    { channelId = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | When specified, the request will return only OriginEndpoints associated
+-- with the given Channel ID.
+listOriginEndpoints_channelId :: Lens.Lens' ListOriginEndpoints (Prelude.Maybe Prelude.Text)
+listOriginEndpoints_channelId = Lens.lens (\ListOriginEndpoints' {channelId} -> channelId) (\s@ListOriginEndpoints' {} a -> s {channelId = a} :: ListOriginEndpoints)
+
+-- | The upper bound on the number of records to return.
+listOriginEndpoints_maxResults :: Lens.Lens' ListOriginEndpoints (Prelude.Maybe Prelude.Natural)
+listOriginEndpoints_maxResults = Lens.lens (\ListOriginEndpoints' {maxResults} -> maxResults) (\s@ListOriginEndpoints' {} a -> s {maxResults = a} :: ListOriginEndpoints)
+
+-- | A token used to resume pagination from the end of a previous request.
+listOriginEndpoints_nextToken :: Lens.Lens' ListOriginEndpoints (Prelude.Maybe Prelude.Text)
+listOriginEndpoints_nextToken = Lens.lens (\ListOriginEndpoints' {nextToken} -> nextToken) (\s@ListOriginEndpoints' {} a -> s {nextToken = a} :: ListOriginEndpoints)
+
+instance Core.AWSPager ListOriginEndpoints where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listOriginEndpointsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listOriginEndpointsResponse_originEndpoints
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listOriginEndpoints_nextToken
+          Lens..~ rs
+          Lens.^? listOriginEndpointsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListOriginEndpoints where
+  type
+    AWSResponse ListOriginEndpoints =
+      ListOriginEndpointsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListOriginEndpointsResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> ( x
+                            Data..?> "originEndpoints"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListOriginEndpoints where
+  hashWithSalt _salt ListOriginEndpoints' {..} =
+    _salt
+      `Prelude.hashWithSalt` channelId
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListOriginEndpoints where
+  rnf ListOriginEndpoints' {..} =
+    Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListOriginEndpoints where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListOriginEndpoints where
+  toPath = Prelude.const "/origin_endpoints"
+
+instance Data.ToQuery ListOriginEndpoints where
+  toQuery ListOriginEndpoints' {..} =
+    Prelude.mconcat
+      [ "channelId" Data.=: channelId,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListOriginEndpointsResponse' smart constructor.
+data ListOriginEndpointsResponse = ListOriginEndpointsResponse'
+  { -- | A token that can be used to resume pagination from the end of the
+    -- collection.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of OriginEndpoint records.
+    originEndpoints :: Prelude.Maybe [OriginEndpoint],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListOriginEndpointsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listOriginEndpointsResponse_nextToken' - A token that can be used to resume pagination from the end of the
+-- collection.
+--
+-- 'originEndpoints', 'listOriginEndpointsResponse_originEndpoints' - A list of OriginEndpoint records.
+--
+-- 'httpStatus', 'listOriginEndpointsResponse_httpStatus' - The response's http status code.
+newListOriginEndpointsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListOriginEndpointsResponse
+newListOriginEndpointsResponse pHttpStatus_ =
+  ListOriginEndpointsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      originEndpoints = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A token that can be used to resume pagination from the end of the
+-- collection.
+listOriginEndpointsResponse_nextToken :: Lens.Lens' ListOriginEndpointsResponse (Prelude.Maybe Prelude.Text)
+listOriginEndpointsResponse_nextToken = Lens.lens (\ListOriginEndpointsResponse' {nextToken} -> nextToken) (\s@ListOriginEndpointsResponse' {} a -> s {nextToken = a} :: ListOriginEndpointsResponse)
+
+-- | A list of OriginEndpoint records.
+listOriginEndpointsResponse_originEndpoints :: Lens.Lens' ListOriginEndpointsResponse (Prelude.Maybe [OriginEndpoint])
+listOriginEndpointsResponse_originEndpoints = Lens.lens (\ListOriginEndpointsResponse' {originEndpoints} -> originEndpoints) (\s@ListOriginEndpointsResponse' {} a -> s {originEndpoints = a} :: ListOriginEndpointsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listOriginEndpointsResponse_httpStatus :: Lens.Lens' ListOriginEndpointsResponse Prelude.Int
+listOriginEndpointsResponse_httpStatus = Lens.lens (\ListOriginEndpointsResponse' {httpStatus} -> httpStatus) (\s@ListOriginEndpointsResponse' {} a -> s {httpStatus = a} :: ListOriginEndpointsResponse)
+
+instance Prelude.NFData ListOriginEndpointsResponse where
+  rnf ListOriginEndpointsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf originEndpoints
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/ListTagsForResource.hs b/gen/Amazonka/MediaPackage/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/ListTagsForResource.hs
@@ -0,0 +1,157 @@
+{-# 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.MediaPackage.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.MediaPackage.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceArn,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { 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' - Undocumented member.
+newListTagsForResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceArn_ =
+  ListTagsForResource' {resourceArn = pResourceArn_}
+
+-- | Undocumented member.
+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceArn
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath ListTagsForResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - Undocumented member.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/RotateIngestEndpointCredentials.hs b/gen/Amazonka/MediaPackage/RotateIngestEndpointCredentials.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/RotateIngestEndpointCredentials.hs
@@ -0,0 +1,276 @@
+{-# 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.MediaPackage.RotateIngestEndpointCredentials
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Rotate the IngestEndpoint\'s username and password, as specified by the
+-- IngestEndpoint\'s id.
+module Amazonka.MediaPackage.RotateIngestEndpointCredentials
+  ( -- * Creating a Request
+    RotateIngestEndpointCredentials (..),
+    newRotateIngestEndpointCredentials,
+
+    -- * Request Lenses
+    rotateIngestEndpointCredentials_ingestEndpointId,
+    rotateIngestEndpointCredentials_id,
+
+    -- * Destructuring the Response
+    RotateIngestEndpointCredentialsResponse (..),
+    newRotateIngestEndpointCredentialsResponse,
+
+    -- * Response Lenses
+    rotateIngestEndpointCredentialsResponse_arn,
+    rotateIngestEndpointCredentialsResponse_description,
+    rotateIngestEndpointCredentialsResponse_egressAccessLogs,
+    rotateIngestEndpointCredentialsResponse_hlsIngest,
+    rotateIngestEndpointCredentialsResponse_id,
+    rotateIngestEndpointCredentialsResponse_ingressAccessLogs,
+    rotateIngestEndpointCredentialsResponse_tags,
+    rotateIngestEndpointCredentialsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newRotateIngestEndpointCredentials' smart constructor.
+data RotateIngestEndpointCredentials = RotateIngestEndpointCredentials'
+  { -- | The id of the IngestEndpoint whose credentials should be rotated
+    ingestEndpointId :: Prelude.Text,
+    -- | The ID of the channel the IngestEndpoint is on.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RotateIngestEndpointCredentials' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ingestEndpointId', 'rotateIngestEndpointCredentials_ingestEndpointId' - The id of the IngestEndpoint whose credentials should be rotated
+--
+-- 'id', 'rotateIngestEndpointCredentials_id' - The ID of the channel the IngestEndpoint is on.
+newRotateIngestEndpointCredentials ::
+  -- | 'ingestEndpointId'
+  Prelude.Text ->
+  -- | 'id'
+  Prelude.Text ->
+  RotateIngestEndpointCredentials
+newRotateIngestEndpointCredentials
+  pIngestEndpointId_
+  pId_ =
+    RotateIngestEndpointCredentials'
+      { ingestEndpointId =
+          pIngestEndpointId_,
+        id = pId_
+      }
+
+-- | The id of the IngestEndpoint whose credentials should be rotated
+rotateIngestEndpointCredentials_ingestEndpointId :: Lens.Lens' RotateIngestEndpointCredentials Prelude.Text
+rotateIngestEndpointCredentials_ingestEndpointId = Lens.lens (\RotateIngestEndpointCredentials' {ingestEndpointId} -> ingestEndpointId) (\s@RotateIngestEndpointCredentials' {} a -> s {ingestEndpointId = a} :: RotateIngestEndpointCredentials)
+
+-- | The ID of the channel the IngestEndpoint is on.
+rotateIngestEndpointCredentials_id :: Lens.Lens' RotateIngestEndpointCredentials Prelude.Text
+rotateIngestEndpointCredentials_id = Lens.lens (\RotateIngestEndpointCredentials' {id} -> id) (\s@RotateIngestEndpointCredentials' {} a -> s {id = a} :: RotateIngestEndpointCredentials)
+
+instance
+  Core.AWSRequest
+    RotateIngestEndpointCredentials
+  where
+  type
+    AWSResponse RotateIngestEndpointCredentials =
+      RotateIngestEndpointCredentialsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RotateIngestEndpointCredentialsResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> (x Data..?> "egressAccessLogs")
+            Prelude.<*> (x Data..?> "hlsIngest")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "ingressAccessLogs")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    RotateIngestEndpointCredentials
+  where
+  hashWithSalt
+    _salt
+    RotateIngestEndpointCredentials' {..} =
+      _salt
+        `Prelude.hashWithSalt` ingestEndpointId
+        `Prelude.hashWithSalt` id
+
+instance
+  Prelude.NFData
+    RotateIngestEndpointCredentials
+  where
+  rnf RotateIngestEndpointCredentials' {..} =
+    Prelude.rnf ingestEndpointId
+      `Prelude.seq` Prelude.rnf id
+
+instance
+  Data.ToHeaders
+    RotateIngestEndpointCredentials
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RotateIngestEndpointCredentials where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RotateIngestEndpointCredentials where
+  toPath RotateIngestEndpointCredentials' {..} =
+    Prelude.mconcat
+      [ "/channels/",
+        Data.toBS id,
+        "/ingest_endpoints/",
+        Data.toBS ingestEndpointId,
+        "/credentials"
+      ]
+
+instance Data.ToQuery RotateIngestEndpointCredentials where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRotateIngestEndpointCredentialsResponse' smart constructor.
+data RotateIngestEndpointCredentialsResponse = RotateIngestEndpointCredentialsResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the Channel.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A short text description of the Channel.
+    description :: Prelude.Maybe Prelude.Text,
+    egressAccessLogs :: Prelude.Maybe EgressAccessLogs,
+    hlsIngest :: Prelude.Maybe HlsIngest,
+    -- | The ID of the Channel.
+    id :: Prelude.Maybe Prelude.Text,
+    ingressAccessLogs :: Prelude.Maybe IngressAccessLogs,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RotateIngestEndpointCredentialsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'rotateIngestEndpointCredentialsResponse_arn' - The Amazon Resource Name (ARN) assigned to the Channel.
+--
+-- 'description', 'rotateIngestEndpointCredentialsResponse_description' - A short text description of the Channel.
+--
+-- 'egressAccessLogs', 'rotateIngestEndpointCredentialsResponse_egressAccessLogs' - Undocumented member.
+--
+-- 'hlsIngest', 'rotateIngestEndpointCredentialsResponse_hlsIngest' - Undocumented member.
+--
+-- 'id', 'rotateIngestEndpointCredentialsResponse_id' - The ID of the Channel.
+--
+-- 'ingressAccessLogs', 'rotateIngestEndpointCredentialsResponse_ingressAccessLogs' - Undocumented member.
+--
+-- 'tags', 'rotateIngestEndpointCredentialsResponse_tags' - Undocumented member.
+--
+-- 'httpStatus', 'rotateIngestEndpointCredentialsResponse_httpStatus' - The response's http status code.
+newRotateIngestEndpointCredentialsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RotateIngestEndpointCredentialsResponse
+newRotateIngestEndpointCredentialsResponse
+  pHttpStatus_ =
+    RotateIngestEndpointCredentialsResponse'
+      { arn =
+          Prelude.Nothing,
+        description = Prelude.Nothing,
+        egressAccessLogs = Prelude.Nothing,
+        hlsIngest = Prelude.Nothing,
+        id = Prelude.Nothing,
+        ingressAccessLogs =
+          Prelude.Nothing,
+        tags = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The Amazon Resource Name (ARN) assigned to the Channel.
+rotateIngestEndpointCredentialsResponse_arn :: Lens.Lens' RotateIngestEndpointCredentialsResponse (Prelude.Maybe Prelude.Text)
+rotateIngestEndpointCredentialsResponse_arn = Lens.lens (\RotateIngestEndpointCredentialsResponse' {arn} -> arn) (\s@RotateIngestEndpointCredentialsResponse' {} a -> s {arn = a} :: RotateIngestEndpointCredentialsResponse)
+
+-- | A short text description of the Channel.
+rotateIngestEndpointCredentialsResponse_description :: Lens.Lens' RotateIngestEndpointCredentialsResponse (Prelude.Maybe Prelude.Text)
+rotateIngestEndpointCredentialsResponse_description = Lens.lens (\RotateIngestEndpointCredentialsResponse' {description} -> description) (\s@RotateIngestEndpointCredentialsResponse' {} a -> s {description = a} :: RotateIngestEndpointCredentialsResponse)
+
+-- | Undocumented member.
+rotateIngestEndpointCredentialsResponse_egressAccessLogs :: Lens.Lens' RotateIngestEndpointCredentialsResponse (Prelude.Maybe EgressAccessLogs)
+rotateIngestEndpointCredentialsResponse_egressAccessLogs = Lens.lens (\RotateIngestEndpointCredentialsResponse' {egressAccessLogs} -> egressAccessLogs) (\s@RotateIngestEndpointCredentialsResponse' {} a -> s {egressAccessLogs = a} :: RotateIngestEndpointCredentialsResponse)
+
+-- | Undocumented member.
+rotateIngestEndpointCredentialsResponse_hlsIngest :: Lens.Lens' RotateIngestEndpointCredentialsResponse (Prelude.Maybe HlsIngest)
+rotateIngestEndpointCredentialsResponse_hlsIngest = Lens.lens (\RotateIngestEndpointCredentialsResponse' {hlsIngest} -> hlsIngest) (\s@RotateIngestEndpointCredentialsResponse' {} a -> s {hlsIngest = a} :: RotateIngestEndpointCredentialsResponse)
+
+-- | The ID of the Channel.
+rotateIngestEndpointCredentialsResponse_id :: Lens.Lens' RotateIngestEndpointCredentialsResponse (Prelude.Maybe Prelude.Text)
+rotateIngestEndpointCredentialsResponse_id = Lens.lens (\RotateIngestEndpointCredentialsResponse' {id} -> id) (\s@RotateIngestEndpointCredentialsResponse' {} a -> s {id = a} :: RotateIngestEndpointCredentialsResponse)
+
+-- | Undocumented member.
+rotateIngestEndpointCredentialsResponse_ingressAccessLogs :: Lens.Lens' RotateIngestEndpointCredentialsResponse (Prelude.Maybe IngressAccessLogs)
+rotateIngestEndpointCredentialsResponse_ingressAccessLogs = Lens.lens (\RotateIngestEndpointCredentialsResponse' {ingressAccessLogs} -> ingressAccessLogs) (\s@RotateIngestEndpointCredentialsResponse' {} a -> s {ingressAccessLogs = a} :: RotateIngestEndpointCredentialsResponse)
+
+-- | Undocumented member.
+rotateIngestEndpointCredentialsResponse_tags :: Lens.Lens' RotateIngestEndpointCredentialsResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+rotateIngestEndpointCredentialsResponse_tags = Lens.lens (\RotateIngestEndpointCredentialsResponse' {tags} -> tags) (\s@RotateIngestEndpointCredentialsResponse' {} a -> s {tags = a} :: RotateIngestEndpointCredentialsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+rotateIngestEndpointCredentialsResponse_httpStatus :: Lens.Lens' RotateIngestEndpointCredentialsResponse Prelude.Int
+rotateIngestEndpointCredentialsResponse_httpStatus = Lens.lens (\RotateIngestEndpointCredentialsResponse' {httpStatus} -> httpStatus) (\s@RotateIngestEndpointCredentialsResponse' {} a -> s {httpStatus = a} :: RotateIngestEndpointCredentialsResponse)
+
+instance
+  Prelude.NFData
+    RotateIngestEndpointCredentialsResponse
+  where
+  rnf RotateIngestEndpointCredentialsResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf egressAccessLogs
+      `Prelude.seq` Prelude.rnf hlsIngest
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf ingressAccessLogs
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/TagResource.hs b/gen/Amazonka/MediaPackage/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/TagResource.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaPackage.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.MediaPackage.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceArn,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { resourceArn :: Prelude.Text,
+    tags :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'resourceArn', 'tagResource_resourceArn' - Undocumented member.
+--
+-- 'tags', 'tagResource_tags' - Undocumented member.
+newTagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceArn_ =
+  TagResource'
+    { resourceArn = pResourceArn_,
+      tags = Prelude.mempty
+    }
+
+-- | Undocumented member.
+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)
+
+-- | Undocumented member.
+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response = Response.receiveNull TagResourceResponse'
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceArn
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceArn
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("tags" Data..= tags)]
+      )
+
+instance Data.ToPath TagResource where
+  toPath TagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newTagResourceResponse ::
+  TagResourceResponse
+newTagResourceResponse = TagResourceResponse'
+
+instance Prelude.NFData TagResourceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/MediaPackage/Types.hs b/gen/Amazonka/MediaPackage/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types.hs
@@ -0,0 +1,458 @@
+{-# 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.MediaPackage.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.MediaPackage.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _ForbiddenException,
+    _InternalServerErrorException,
+    _NotFoundException,
+    _ServiceUnavailableException,
+    _TooManyRequestsException,
+    _UnprocessableEntityException,
+
+    -- * AdMarkers
+    AdMarkers (..),
+
+    -- * AdTriggersElement
+    AdTriggersElement (..),
+
+    -- * AdsOnDeliveryRestrictions
+    AdsOnDeliveryRestrictions (..),
+
+    -- * CmafEncryptionMethod
+    CmafEncryptionMethod (..),
+
+    -- * EncryptionMethod
+    EncryptionMethod (..),
+
+    -- * ManifestLayout
+    ManifestLayout (..),
+
+    -- * Origination
+    Origination (..),
+
+    -- * PeriodTriggersElement
+    PeriodTriggersElement (..),
+
+    -- * PlaylistType
+    PlaylistType (..),
+
+    -- * PresetSpeke20Audio
+    PresetSpeke20Audio (..),
+
+    -- * PresetSpeke20Video
+    PresetSpeke20Video (..),
+
+    -- * Profile
+    Profile (..),
+
+    -- * SegmentTemplateFormat
+    SegmentTemplateFormat (..),
+
+    -- * Status
+    Status (..),
+
+    -- * StreamOrder
+    StreamOrder (..),
+
+    -- * UtcTiming
+    UtcTiming (..),
+
+    -- * Authorization
+    Authorization (..),
+    newAuthorization,
+    authorization_secretsRoleArn,
+    authorization_cdnIdentifierSecret,
+
+    -- * Channel
+    Channel (..),
+    newChannel,
+    channel_arn,
+    channel_description,
+    channel_egressAccessLogs,
+    channel_hlsIngest,
+    channel_id,
+    channel_ingressAccessLogs,
+    channel_tags,
+
+    -- * CmafEncryption
+    CmafEncryption (..),
+    newCmafEncryption,
+    cmafEncryption_constantInitializationVector,
+    cmafEncryption_encryptionMethod,
+    cmafEncryption_keyRotationIntervalSeconds,
+    cmafEncryption_spekeKeyProvider,
+
+    -- * CmafPackage
+    CmafPackage (..),
+    newCmafPackage,
+    cmafPackage_encryption,
+    cmafPackage_hlsManifests,
+    cmafPackage_segmentDurationSeconds,
+    cmafPackage_segmentPrefix,
+    cmafPackage_streamSelection,
+
+    -- * CmafPackageCreateOrUpdateParameters
+    CmafPackageCreateOrUpdateParameters (..),
+    newCmafPackageCreateOrUpdateParameters,
+    cmafPackageCreateOrUpdateParameters_encryption,
+    cmafPackageCreateOrUpdateParameters_hlsManifests,
+    cmafPackageCreateOrUpdateParameters_segmentDurationSeconds,
+    cmafPackageCreateOrUpdateParameters_segmentPrefix,
+    cmafPackageCreateOrUpdateParameters_streamSelection,
+
+    -- * DashEncryption
+    DashEncryption (..),
+    newDashEncryption,
+    dashEncryption_keyRotationIntervalSeconds,
+    dashEncryption_spekeKeyProvider,
+
+    -- * DashPackage
+    DashPackage (..),
+    newDashPackage,
+    dashPackage_adTriggers,
+    dashPackage_adsOnDeliveryRestrictions,
+    dashPackage_encryption,
+    dashPackage_includeIframeOnlyStream,
+    dashPackage_manifestLayout,
+    dashPackage_manifestWindowSeconds,
+    dashPackage_minBufferTimeSeconds,
+    dashPackage_minUpdatePeriodSeconds,
+    dashPackage_periodTriggers,
+    dashPackage_profile,
+    dashPackage_segmentDurationSeconds,
+    dashPackage_segmentTemplateFormat,
+    dashPackage_streamSelection,
+    dashPackage_suggestedPresentationDelaySeconds,
+    dashPackage_utcTiming,
+    dashPackage_utcTimingUri,
+
+    -- * EgressAccessLogs
+    EgressAccessLogs (..),
+    newEgressAccessLogs,
+    egressAccessLogs_logGroupName,
+
+    -- * EncryptionContractConfiguration
+    EncryptionContractConfiguration (..),
+    newEncryptionContractConfiguration,
+    encryptionContractConfiguration_presetSpeke20Audio,
+    encryptionContractConfiguration_presetSpeke20Video,
+
+    -- * HarvestJob
+    HarvestJob (..),
+    newHarvestJob,
+    harvestJob_arn,
+    harvestJob_channelId,
+    harvestJob_createdAt,
+    harvestJob_endTime,
+    harvestJob_id,
+    harvestJob_originEndpointId,
+    harvestJob_s3Destination,
+    harvestJob_startTime,
+    harvestJob_status,
+
+    -- * HlsEncryption
+    HlsEncryption (..),
+    newHlsEncryption,
+    hlsEncryption_constantInitializationVector,
+    hlsEncryption_encryptionMethod,
+    hlsEncryption_keyRotationIntervalSeconds,
+    hlsEncryption_repeatExtXKey,
+    hlsEncryption_spekeKeyProvider,
+
+    -- * HlsIngest
+    HlsIngest (..),
+    newHlsIngest,
+    hlsIngest_ingestEndpoints,
+
+    -- * HlsManifest
+    HlsManifest (..),
+    newHlsManifest,
+    hlsManifest_adMarkers,
+    hlsManifest_adTriggers,
+    hlsManifest_adsOnDeliveryRestrictions,
+    hlsManifest_includeIframeOnlyStream,
+    hlsManifest_manifestName,
+    hlsManifest_playlistType,
+    hlsManifest_playlistWindowSeconds,
+    hlsManifest_programDateTimeIntervalSeconds,
+    hlsManifest_url,
+    hlsManifest_id,
+
+    -- * HlsManifestCreateOrUpdateParameters
+    HlsManifestCreateOrUpdateParameters (..),
+    newHlsManifestCreateOrUpdateParameters,
+    hlsManifestCreateOrUpdateParameters_adMarkers,
+    hlsManifestCreateOrUpdateParameters_adTriggers,
+    hlsManifestCreateOrUpdateParameters_adsOnDeliveryRestrictions,
+    hlsManifestCreateOrUpdateParameters_includeIframeOnlyStream,
+    hlsManifestCreateOrUpdateParameters_manifestName,
+    hlsManifestCreateOrUpdateParameters_playlistType,
+    hlsManifestCreateOrUpdateParameters_playlistWindowSeconds,
+    hlsManifestCreateOrUpdateParameters_programDateTimeIntervalSeconds,
+    hlsManifestCreateOrUpdateParameters_id,
+
+    -- * HlsPackage
+    HlsPackage (..),
+    newHlsPackage,
+    hlsPackage_adMarkers,
+    hlsPackage_adTriggers,
+    hlsPackage_adsOnDeliveryRestrictions,
+    hlsPackage_encryption,
+    hlsPackage_includeDvbSubtitles,
+    hlsPackage_includeIframeOnlyStream,
+    hlsPackage_playlistType,
+    hlsPackage_playlistWindowSeconds,
+    hlsPackage_programDateTimeIntervalSeconds,
+    hlsPackage_segmentDurationSeconds,
+    hlsPackage_streamSelection,
+    hlsPackage_useAudioRenditionGroup,
+
+    -- * IngestEndpoint
+    IngestEndpoint (..),
+    newIngestEndpoint,
+    ingestEndpoint_id,
+    ingestEndpoint_password,
+    ingestEndpoint_url,
+    ingestEndpoint_username,
+
+    -- * IngressAccessLogs
+    IngressAccessLogs (..),
+    newIngressAccessLogs,
+    ingressAccessLogs_logGroupName,
+
+    -- * MssEncryption
+    MssEncryption (..),
+    newMssEncryption,
+    mssEncryption_spekeKeyProvider,
+
+    -- * MssPackage
+    MssPackage (..),
+    newMssPackage,
+    mssPackage_encryption,
+    mssPackage_manifestWindowSeconds,
+    mssPackage_segmentDurationSeconds,
+    mssPackage_streamSelection,
+
+    -- * OriginEndpoint
+    OriginEndpoint (..),
+    newOriginEndpoint,
+    originEndpoint_arn,
+    originEndpoint_authorization,
+    originEndpoint_channelId,
+    originEndpoint_cmafPackage,
+    originEndpoint_dashPackage,
+    originEndpoint_description,
+    originEndpoint_hlsPackage,
+    originEndpoint_id,
+    originEndpoint_manifestName,
+    originEndpoint_mssPackage,
+    originEndpoint_origination,
+    originEndpoint_startoverWindowSeconds,
+    originEndpoint_tags,
+    originEndpoint_timeDelaySeconds,
+    originEndpoint_url,
+    originEndpoint_whitelist,
+
+    -- * S3Destination
+    S3Destination (..),
+    newS3Destination,
+    s3Destination_manifestKey,
+    s3Destination_bucketName,
+    s3Destination_roleArn,
+
+    -- * SpekeKeyProvider
+    SpekeKeyProvider (..),
+    newSpekeKeyProvider,
+    spekeKeyProvider_certificateArn,
+    spekeKeyProvider_encryptionContractConfiguration,
+    spekeKeyProvider_resourceId,
+    spekeKeyProvider_systemIds,
+    spekeKeyProvider_url,
+    spekeKeyProvider_roleArn,
+
+    -- * StreamSelection
+    StreamSelection (..),
+    newStreamSelection,
+    streamSelection_maxVideoBitsPerSecond,
+    streamSelection_minVideoBitsPerSecond,
+    streamSelection_streamOrder,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.MediaPackage.Types.AdMarkers
+import Amazonka.MediaPackage.Types.AdTriggersElement
+import Amazonka.MediaPackage.Types.AdsOnDeliveryRestrictions
+import Amazonka.MediaPackage.Types.Authorization
+import Amazonka.MediaPackage.Types.Channel
+import Amazonka.MediaPackage.Types.CmafEncryption
+import Amazonka.MediaPackage.Types.CmafEncryptionMethod
+import Amazonka.MediaPackage.Types.CmafPackage
+import Amazonka.MediaPackage.Types.CmafPackageCreateOrUpdateParameters
+import Amazonka.MediaPackage.Types.DashEncryption
+import Amazonka.MediaPackage.Types.DashPackage
+import Amazonka.MediaPackage.Types.EgressAccessLogs
+import Amazonka.MediaPackage.Types.EncryptionContractConfiguration
+import Amazonka.MediaPackage.Types.EncryptionMethod
+import Amazonka.MediaPackage.Types.HarvestJob
+import Amazonka.MediaPackage.Types.HlsEncryption
+import Amazonka.MediaPackage.Types.HlsIngest
+import Amazonka.MediaPackage.Types.HlsManifest
+import Amazonka.MediaPackage.Types.HlsManifestCreateOrUpdateParameters
+import Amazonka.MediaPackage.Types.HlsPackage
+import Amazonka.MediaPackage.Types.IngestEndpoint
+import Amazonka.MediaPackage.Types.IngressAccessLogs
+import Amazonka.MediaPackage.Types.ManifestLayout
+import Amazonka.MediaPackage.Types.MssEncryption
+import Amazonka.MediaPackage.Types.MssPackage
+import Amazonka.MediaPackage.Types.OriginEndpoint
+import Amazonka.MediaPackage.Types.Origination
+import Amazonka.MediaPackage.Types.PeriodTriggersElement
+import Amazonka.MediaPackage.Types.PlaylistType
+import Amazonka.MediaPackage.Types.PresetSpeke20Audio
+import Amazonka.MediaPackage.Types.PresetSpeke20Video
+import Amazonka.MediaPackage.Types.Profile
+import Amazonka.MediaPackage.Types.S3Destination
+import Amazonka.MediaPackage.Types.SegmentTemplateFormat
+import Amazonka.MediaPackage.Types.SpekeKeyProvider
+import Amazonka.MediaPackage.Types.Status
+import Amazonka.MediaPackage.Types.StreamOrder
+import Amazonka.MediaPackage.Types.StreamSelection
+import Amazonka.MediaPackage.Types.UtcTiming
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2017-10-12@ of the Amazon Elemental MediaPackage SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "MediaPackage",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "mediapackage",
+      Core.signingName = "mediapackage",
+      Core.version = "2017-10-12",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "MediaPackage",
+      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 client is not authorized to access the requested resource.
+_ForbiddenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ForbiddenException =
+  Core._MatchServiceError
+    defaultService
+    "ForbiddenException"
+    Prelude.. Core.hasStatus 403
+
+-- | An unexpected error occurred.
+_InternalServerErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerErrorException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerErrorException"
+    Prelude.. Core.hasStatus 500
+
+-- | The requested resource does not exist.
+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "NotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | An unexpected error occurred.
+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceUnavailableException"
+    Prelude.. Core.hasStatus 503
+
+-- | The client has exceeded their resource or throttling limits.
+_TooManyRequestsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyRequestsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyRequestsException"
+    Prelude.. Core.hasStatus 429
+
+-- | The parameters sent in the request are not valid.
+_UnprocessableEntityException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnprocessableEntityException =
+  Core._MatchServiceError
+    defaultService
+    "UnprocessableEntityException"
+    Prelude.. Core.hasStatus 422
diff --git a/gen/Amazonka/MediaPackage/Types/AdMarkers.hs b/gen/Amazonka/MediaPackage/Types/AdMarkers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/AdMarkers.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.MediaPackage.Types.AdMarkers
+-- 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.MediaPackage.Types.AdMarkers
+  ( AdMarkers
+      ( ..,
+        AdMarkers_DATERANGE,
+        AdMarkers_NONE,
+        AdMarkers_PASSTHROUGH,
+        AdMarkers_SCTE35_ENHANCED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AdMarkers = AdMarkers'
+  { fromAdMarkers ::
+      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 AdMarkers_DATERANGE :: AdMarkers
+pattern AdMarkers_DATERANGE = AdMarkers' "DATERANGE"
+
+pattern AdMarkers_NONE :: AdMarkers
+pattern AdMarkers_NONE = AdMarkers' "NONE"
+
+pattern AdMarkers_PASSTHROUGH :: AdMarkers
+pattern AdMarkers_PASSTHROUGH = AdMarkers' "PASSTHROUGH"
+
+pattern AdMarkers_SCTE35_ENHANCED :: AdMarkers
+pattern AdMarkers_SCTE35_ENHANCED = AdMarkers' "SCTE35_ENHANCED"
+
+{-# COMPLETE
+  AdMarkers_DATERANGE,
+  AdMarkers_NONE,
+  AdMarkers_PASSTHROUGH,
+  AdMarkers_SCTE35_ENHANCED,
+  AdMarkers'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/AdTriggersElement.hs b/gen/Amazonka/MediaPackage/Types/AdTriggersElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/AdTriggersElement.hs
@@ -0,0 +1,101 @@
+{-# 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.MediaPackage.Types.AdTriggersElement
+-- 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.MediaPackage.Types.AdTriggersElement
+  ( AdTriggersElement
+      ( ..,
+        AdTriggersElement_BREAK,
+        AdTriggersElement_DISTRIBUTOR_ADVERTISEMENT,
+        AdTriggersElement_DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY,
+        AdTriggersElement_DISTRIBUTOR_PLACEMENT_OPPORTUNITY,
+        AdTriggersElement_PROVIDER_ADVERTISEMENT,
+        AdTriggersElement_PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY,
+        AdTriggersElement_PROVIDER_PLACEMENT_OPPORTUNITY,
+        AdTriggersElement_SPLICE_INSERT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AdTriggersElement = AdTriggersElement'
+  { fromAdTriggersElement ::
+      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 AdTriggersElement_BREAK :: AdTriggersElement
+pattern AdTriggersElement_BREAK = AdTriggersElement' "BREAK"
+
+pattern AdTriggersElement_DISTRIBUTOR_ADVERTISEMENT :: AdTriggersElement
+pattern AdTriggersElement_DISTRIBUTOR_ADVERTISEMENT = AdTriggersElement' "DISTRIBUTOR_ADVERTISEMENT"
+
+pattern AdTriggersElement_DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY :: AdTriggersElement
+pattern AdTriggersElement_DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY = AdTriggersElement' "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY"
+
+pattern AdTriggersElement_DISTRIBUTOR_PLACEMENT_OPPORTUNITY :: AdTriggersElement
+pattern AdTriggersElement_DISTRIBUTOR_PLACEMENT_OPPORTUNITY = AdTriggersElement' "DISTRIBUTOR_PLACEMENT_OPPORTUNITY"
+
+pattern AdTriggersElement_PROVIDER_ADVERTISEMENT :: AdTriggersElement
+pattern AdTriggersElement_PROVIDER_ADVERTISEMENT = AdTriggersElement' "PROVIDER_ADVERTISEMENT"
+
+pattern AdTriggersElement_PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY :: AdTriggersElement
+pattern AdTriggersElement_PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY = AdTriggersElement' "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY"
+
+pattern AdTriggersElement_PROVIDER_PLACEMENT_OPPORTUNITY :: AdTriggersElement
+pattern AdTriggersElement_PROVIDER_PLACEMENT_OPPORTUNITY = AdTriggersElement' "PROVIDER_PLACEMENT_OPPORTUNITY"
+
+pattern AdTriggersElement_SPLICE_INSERT :: AdTriggersElement
+pattern AdTriggersElement_SPLICE_INSERT = AdTriggersElement' "SPLICE_INSERT"
+
+{-# COMPLETE
+  AdTriggersElement_BREAK,
+  AdTriggersElement_DISTRIBUTOR_ADVERTISEMENT,
+  AdTriggersElement_DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY,
+  AdTriggersElement_DISTRIBUTOR_PLACEMENT_OPPORTUNITY,
+  AdTriggersElement_PROVIDER_ADVERTISEMENT,
+  AdTriggersElement_PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY,
+  AdTriggersElement_PROVIDER_PLACEMENT_OPPORTUNITY,
+  AdTriggersElement_SPLICE_INSERT,
+  AdTriggersElement'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/AdsOnDeliveryRestrictions.hs b/gen/Amazonka/MediaPackage/Types/AdsOnDeliveryRestrictions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/AdsOnDeliveryRestrictions.hs
@@ -0,0 +1,92 @@
+{-# 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.MediaPackage.Types.AdsOnDeliveryRestrictions
+-- 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.MediaPackage.Types.AdsOnDeliveryRestrictions
+  ( AdsOnDeliveryRestrictions
+      ( ..,
+        AdsOnDeliveryRestrictions_BOTH,
+        AdsOnDeliveryRestrictions_NONE,
+        AdsOnDeliveryRestrictions_RESTRICTED,
+        AdsOnDeliveryRestrictions_UNRESTRICTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | This setting allows the delivery restriction flags on SCTE-35
+-- segmentation descriptors to determine whether a message signals an ad.
+-- Choosing \"NONE\" means no SCTE-35 messages become ads. Choosing
+-- \"RESTRICTED\" means SCTE-35 messages of the types specified in
+-- AdTriggers that contain delivery restrictions will be treated as ads.
+-- Choosing \"UNRESTRICTED\" means SCTE-35 messages of the types specified
+-- in AdTriggers that do not contain delivery restrictions will be treated
+-- as ads. Choosing \"BOTH\" means all SCTE-35 messages of the types
+-- specified in AdTriggers will be treated as ads. Note that Splice Insert
+-- messages do not have these flags and are always treated as ads if
+-- specified in AdTriggers.
+newtype AdsOnDeliveryRestrictions = AdsOnDeliveryRestrictions'
+  { fromAdsOnDeliveryRestrictions ::
+      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 AdsOnDeliveryRestrictions_BOTH :: AdsOnDeliveryRestrictions
+pattern AdsOnDeliveryRestrictions_BOTH = AdsOnDeliveryRestrictions' "BOTH"
+
+pattern AdsOnDeliveryRestrictions_NONE :: AdsOnDeliveryRestrictions
+pattern AdsOnDeliveryRestrictions_NONE = AdsOnDeliveryRestrictions' "NONE"
+
+pattern AdsOnDeliveryRestrictions_RESTRICTED :: AdsOnDeliveryRestrictions
+pattern AdsOnDeliveryRestrictions_RESTRICTED = AdsOnDeliveryRestrictions' "RESTRICTED"
+
+pattern AdsOnDeliveryRestrictions_UNRESTRICTED :: AdsOnDeliveryRestrictions
+pattern AdsOnDeliveryRestrictions_UNRESTRICTED = AdsOnDeliveryRestrictions' "UNRESTRICTED"
+
+{-# COMPLETE
+  AdsOnDeliveryRestrictions_BOTH,
+  AdsOnDeliveryRestrictions_NONE,
+  AdsOnDeliveryRestrictions_RESTRICTED,
+  AdsOnDeliveryRestrictions_UNRESTRICTED,
+  AdsOnDeliveryRestrictions'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/Authorization.hs b/gen/Amazonka/MediaPackage/Types/Authorization.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/Authorization.hs
@@ -0,0 +1,110 @@
+{-# 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.MediaPackage.Types.Authorization
+-- 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.MediaPackage.Types.Authorization 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
+
+-- | CDN Authorization credentials
+--
+-- /See:/ 'newAuthorization' smart constructor.
+data Authorization = Authorization'
+  { -- | The Amazon Resource Name (ARN) for the IAM role that allows MediaPackage
+    -- to communicate with AWS Secrets Manager.
+    secretsRoleArn :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) for the secret in Secrets Manager that
+    -- your Content Distribution Network (CDN) uses for authorization to access
+    -- your endpoint.
+    cdnIdentifierSecret :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Authorization' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'secretsRoleArn', 'authorization_secretsRoleArn' - The Amazon Resource Name (ARN) for the IAM role that allows MediaPackage
+-- to communicate with AWS Secrets Manager.
+--
+-- 'cdnIdentifierSecret', 'authorization_cdnIdentifierSecret' - The Amazon Resource Name (ARN) for the secret in Secrets Manager that
+-- your Content Distribution Network (CDN) uses for authorization to access
+-- your endpoint.
+newAuthorization ::
+  -- | 'secretsRoleArn'
+  Prelude.Text ->
+  -- | 'cdnIdentifierSecret'
+  Prelude.Text ->
+  Authorization
+newAuthorization
+  pSecretsRoleArn_
+  pCdnIdentifierSecret_ =
+    Authorization'
+      { secretsRoleArn = pSecretsRoleArn_,
+        cdnIdentifierSecret = pCdnIdentifierSecret_
+      }
+
+-- | The Amazon Resource Name (ARN) for the IAM role that allows MediaPackage
+-- to communicate with AWS Secrets Manager.
+authorization_secretsRoleArn :: Lens.Lens' Authorization Prelude.Text
+authorization_secretsRoleArn = Lens.lens (\Authorization' {secretsRoleArn} -> secretsRoleArn) (\s@Authorization' {} a -> s {secretsRoleArn = a} :: Authorization)
+
+-- | The Amazon Resource Name (ARN) for the secret in Secrets Manager that
+-- your Content Distribution Network (CDN) uses for authorization to access
+-- your endpoint.
+authorization_cdnIdentifierSecret :: Lens.Lens' Authorization Prelude.Text
+authorization_cdnIdentifierSecret = Lens.lens (\Authorization' {cdnIdentifierSecret} -> cdnIdentifierSecret) (\s@Authorization' {} a -> s {cdnIdentifierSecret = a} :: Authorization)
+
+instance Data.FromJSON Authorization where
+  parseJSON =
+    Data.withObject
+      "Authorization"
+      ( \x ->
+          Authorization'
+            Prelude.<$> (x Data..: "secretsRoleArn")
+            Prelude.<*> (x Data..: "cdnIdentifierSecret")
+      )
+
+instance Prelude.Hashable Authorization where
+  hashWithSalt _salt Authorization' {..} =
+    _salt
+      `Prelude.hashWithSalt` secretsRoleArn
+      `Prelude.hashWithSalt` cdnIdentifierSecret
+
+instance Prelude.NFData Authorization where
+  rnf Authorization' {..} =
+    Prelude.rnf secretsRoleArn
+      `Prelude.seq` Prelude.rnf cdnIdentifierSecret
+
+instance Data.ToJSON Authorization where
+  toJSON Authorization' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("secretsRoleArn" Data..= secretsRoleArn),
+            Prelude.Just
+              ("cdnIdentifierSecret" Data..= cdnIdentifierSecret)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/Channel.hs b/gen/Amazonka/MediaPackage/Types/Channel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/Channel.hs
@@ -0,0 +1,143 @@
+{-# 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.MediaPackage.Types.Channel
+-- 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.MediaPackage.Types.Channel where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.EgressAccessLogs
+import Amazonka.MediaPackage.Types.HlsIngest
+import Amazonka.MediaPackage.Types.IngressAccessLogs
+import qualified Amazonka.Prelude as Prelude
+
+-- | A Channel resource configuration.
+--
+-- /See:/ 'newChannel' smart constructor.
+data Channel = Channel'
+  { -- | The Amazon Resource Name (ARN) assigned to the Channel.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A short text description of the Channel.
+    description :: Prelude.Maybe Prelude.Text,
+    egressAccessLogs :: Prelude.Maybe EgressAccessLogs,
+    hlsIngest :: Prelude.Maybe HlsIngest,
+    -- | The ID of the Channel.
+    id :: Prelude.Maybe Prelude.Text,
+    ingressAccessLogs :: Prelude.Maybe IngressAccessLogs,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Channel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'channel_arn' - The Amazon Resource Name (ARN) assigned to the Channel.
+--
+-- 'description', 'channel_description' - A short text description of the Channel.
+--
+-- 'egressAccessLogs', 'channel_egressAccessLogs' - Undocumented member.
+--
+-- 'hlsIngest', 'channel_hlsIngest' - Undocumented member.
+--
+-- 'id', 'channel_id' - The ID of the Channel.
+--
+-- 'ingressAccessLogs', 'channel_ingressAccessLogs' - Undocumented member.
+--
+-- 'tags', 'channel_tags' - Undocumented member.
+newChannel ::
+  Channel
+newChannel =
+  Channel'
+    { arn = Prelude.Nothing,
+      description = Prelude.Nothing,
+      egressAccessLogs = Prelude.Nothing,
+      hlsIngest = Prelude.Nothing,
+      id = Prelude.Nothing,
+      ingressAccessLogs = Prelude.Nothing,
+      tags = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the Channel.
+channel_arn :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)
+channel_arn = Lens.lens (\Channel' {arn} -> arn) (\s@Channel' {} a -> s {arn = a} :: Channel)
+
+-- | A short text description of the Channel.
+channel_description :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)
+channel_description = Lens.lens (\Channel' {description} -> description) (\s@Channel' {} a -> s {description = a} :: Channel)
+
+-- | Undocumented member.
+channel_egressAccessLogs :: Lens.Lens' Channel (Prelude.Maybe EgressAccessLogs)
+channel_egressAccessLogs = Lens.lens (\Channel' {egressAccessLogs} -> egressAccessLogs) (\s@Channel' {} a -> s {egressAccessLogs = a} :: Channel)
+
+-- | Undocumented member.
+channel_hlsIngest :: Lens.Lens' Channel (Prelude.Maybe HlsIngest)
+channel_hlsIngest = Lens.lens (\Channel' {hlsIngest} -> hlsIngest) (\s@Channel' {} a -> s {hlsIngest = a} :: Channel)
+
+-- | The ID of the Channel.
+channel_id :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)
+channel_id = Lens.lens (\Channel' {id} -> id) (\s@Channel' {} a -> s {id = a} :: Channel)
+
+-- | Undocumented member.
+channel_ingressAccessLogs :: Lens.Lens' Channel (Prelude.Maybe IngressAccessLogs)
+channel_ingressAccessLogs = Lens.lens (\Channel' {ingressAccessLogs} -> ingressAccessLogs) (\s@Channel' {} a -> s {ingressAccessLogs = a} :: Channel)
+
+-- | Undocumented member.
+channel_tags :: Lens.Lens' Channel (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+channel_tags = Lens.lens (\Channel' {tags} -> tags) (\s@Channel' {} a -> s {tags = a} :: Channel) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Channel where
+  parseJSON =
+    Data.withObject
+      "Channel"
+      ( \x ->
+          Channel'
+            Prelude.<$> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "egressAccessLogs")
+            Prelude.<*> (x Data..:? "hlsIngest")
+            Prelude.<*> (x Data..:? "id")
+            Prelude.<*> (x Data..:? "ingressAccessLogs")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Channel where
+  hashWithSalt _salt Channel' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` egressAccessLogs
+      `Prelude.hashWithSalt` hlsIngest
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` ingressAccessLogs
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData Channel where
+  rnf Channel' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf egressAccessLogs
+      `Prelude.seq` Prelude.rnf hlsIngest
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf ingressAccessLogs
+      `Prelude.seq` Prelude.rnf tags
diff --git a/gen/Amazonka/MediaPackage/Types/CmafEncryption.hs b/gen/Amazonka/MediaPackage/Types/CmafEncryption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/CmafEncryption.hs
@@ -0,0 +1,135 @@
+{-# 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.MediaPackage.Types.CmafEncryption
+-- 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.MediaPackage.Types.CmafEncryption where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.CmafEncryptionMethod
+import Amazonka.MediaPackage.Types.SpekeKeyProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | A Common Media Application Format (CMAF) encryption configuration.
+--
+-- /See:/ 'newCmafEncryption' smart constructor.
+data CmafEncryption = CmafEncryption'
+  { -- | An optional 128-bit, 16-byte hex value represented by a 32-character
+    -- string, used in conjunction with the key for encrypting blocks. If you
+    -- don\'t specify a value, then MediaPackage creates the constant
+    -- initialization vector (IV).
+    constantInitializationVector :: Prelude.Maybe Prelude.Text,
+    encryptionMethod :: Prelude.Maybe CmafEncryptionMethod,
+    -- | Time (in seconds) between each encryption key rotation.
+    keyRotationIntervalSeconds :: Prelude.Maybe Prelude.Int,
+    spekeKeyProvider :: SpekeKeyProvider
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CmafEncryption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'constantInitializationVector', 'cmafEncryption_constantInitializationVector' - An optional 128-bit, 16-byte hex value represented by a 32-character
+-- string, used in conjunction with the key for encrypting blocks. If you
+-- don\'t specify a value, then MediaPackage creates the constant
+-- initialization vector (IV).
+--
+-- 'encryptionMethod', 'cmafEncryption_encryptionMethod' - Undocumented member.
+--
+-- 'keyRotationIntervalSeconds', 'cmafEncryption_keyRotationIntervalSeconds' - Time (in seconds) between each encryption key rotation.
+--
+-- 'spekeKeyProvider', 'cmafEncryption_spekeKeyProvider' - Undocumented member.
+newCmafEncryption ::
+  -- | 'spekeKeyProvider'
+  SpekeKeyProvider ->
+  CmafEncryption
+newCmafEncryption pSpekeKeyProvider_ =
+  CmafEncryption'
+    { constantInitializationVector =
+        Prelude.Nothing,
+      encryptionMethod = Prelude.Nothing,
+      keyRotationIntervalSeconds = Prelude.Nothing,
+      spekeKeyProvider = pSpekeKeyProvider_
+    }
+
+-- | An optional 128-bit, 16-byte hex value represented by a 32-character
+-- string, used in conjunction with the key for encrypting blocks. If you
+-- don\'t specify a value, then MediaPackage creates the constant
+-- initialization vector (IV).
+cmafEncryption_constantInitializationVector :: Lens.Lens' CmafEncryption (Prelude.Maybe Prelude.Text)
+cmafEncryption_constantInitializationVector = Lens.lens (\CmafEncryption' {constantInitializationVector} -> constantInitializationVector) (\s@CmafEncryption' {} a -> s {constantInitializationVector = a} :: CmafEncryption)
+
+-- | Undocumented member.
+cmafEncryption_encryptionMethod :: Lens.Lens' CmafEncryption (Prelude.Maybe CmafEncryptionMethod)
+cmafEncryption_encryptionMethod = Lens.lens (\CmafEncryption' {encryptionMethod} -> encryptionMethod) (\s@CmafEncryption' {} a -> s {encryptionMethod = a} :: CmafEncryption)
+
+-- | Time (in seconds) between each encryption key rotation.
+cmafEncryption_keyRotationIntervalSeconds :: Lens.Lens' CmafEncryption (Prelude.Maybe Prelude.Int)
+cmafEncryption_keyRotationIntervalSeconds = Lens.lens (\CmafEncryption' {keyRotationIntervalSeconds} -> keyRotationIntervalSeconds) (\s@CmafEncryption' {} a -> s {keyRotationIntervalSeconds = a} :: CmafEncryption)
+
+-- | Undocumented member.
+cmafEncryption_spekeKeyProvider :: Lens.Lens' CmafEncryption SpekeKeyProvider
+cmafEncryption_spekeKeyProvider = Lens.lens (\CmafEncryption' {spekeKeyProvider} -> spekeKeyProvider) (\s@CmafEncryption' {} a -> s {spekeKeyProvider = a} :: CmafEncryption)
+
+instance Data.FromJSON CmafEncryption where
+  parseJSON =
+    Data.withObject
+      "CmafEncryption"
+      ( \x ->
+          CmafEncryption'
+            Prelude.<$> (x Data..:? "constantInitializationVector")
+            Prelude.<*> (x Data..:? "encryptionMethod")
+            Prelude.<*> (x Data..:? "keyRotationIntervalSeconds")
+            Prelude.<*> (x Data..: "spekeKeyProvider")
+      )
+
+instance Prelude.Hashable CmafEncryption where
+  hashWithSalt _salt CmafEncryption' {..} =
+    _salt
+      `Prelude.hashWithSalt` constantInitializationVector
+      `Prelude.hashWithSalt` encryptionMethod
+      `Prelude.hashWithSalt` keyRotationIntervalSeconds
+      `Prelude.hashWithSalt` spekeKeyProvider
+
+instance Prelude.NFData CmafEncryption where
+  rnf CmafEncryption' {..} =
+    Prelude.rnf constantInitializationVector
+      `Prelude.seq` Prelude.rnf encryptionMethod
+      `Prelude.seq` Prelude.rnf keyRotationIntervalSeconds
+      `Prelude.seq` Prelude.rnf spekeKeyProvider
+
+instance Data.ToJSON CmafEncryption where
+  toJSON CmafEncryption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("constantInitializationVector" Data..=)
+              Prelude.<$> constantInitializationVector,
+            ("encryptionMethod" Data..=)
+              Prelude.<$> encryptionMethod,
+            ("keyRotationIntervalSeconds" Data..=)
+              Prelude.<$> keyRotationIntervalSeconds,
+            Prelude.Just
+              ("spekeKeyProvider" Data..= spekeKeyProvider)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/CmafEncryptionMethod.hs b/gen/Amazonka/MediaPackage/Types/CmafEncryptionMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/CmafEncryptionMethod.hs
@@ -0,0 +1,72 @@
+{-# 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.MediaPackage.Types.CmafEncryptionMethod
+-- 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.MediaPackage.Types.CmafEncryptionMethod
+  ( CmafEncryptionMethod
+      ( ..,
+        CmafEncryptionMethod_AES_CTR,
+        CmafEncryptionMethod_SAMPLE_AES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The encryption method to use.
+newtype CmafEncryptionMethod = CmafEncryptionMethod'
+  { fromCmafEncryptionMethod ::
+      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 CmafEncryptionMethod_AES_CTR :: CmafEncryptionMethod
+pattern CmafEncryptionMethod_AES_CTR = CmafEncryptionMethod' "AES_CTR"
+
+pattern CmafEncryptionMethod_SAMPLE_AES :: CmafEncryptionMethod
+pattern CmafEncryptionMethod_SAMPLE_AES = CmafEncryptionMethod' "SAMPLE_AES"
+
+{-# COMPLETE
+  CmafEncryptionMethod_AES_CTR,
+  CmafEncryptionMethod_SAMPLE_AES,
+  CmafEncryptionMethod'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/CmafPackage.hs b/gen/Amazonka/MediaPackage/Types/CmafPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/CmafPackage.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.MediaPackage.Types.CmafPackage
+-- 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.MediaPackage.Types.CmafPackage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.CmafEncryption
+import Amazonka.MediaPackage.Types.HlsManifest
+import Amazonka.MediaPackage.Types.StreamSelection
+import qualified Amazonka.Prelude as Prelude
+
+-- | A Common Media Application Format (CMAF) packaging configuration.
+--
+-- /See:/ 'newCmafPackage' smart constructor.
+data CmafPackage = CmafPackage'
+  { encryption :: Prelude.Maybe CmafEncryption,
+    -- | A list of HLS manifest configurations
+    hlsManifests :: Prelude.Maybe [HlsManifest],
+    -- | Duration (in seconds) of each segment. Actual segments will be rounded
+    -- to the nearest multiple of the source segment duration.
+    segmentDurationSeconds :: Prelude.Maybe Prelude.Int,
+    -- | An optional custom string that is prepended to the name of each segment.
+    -- If not specified, it defaults to the ChannelId.
+    segmentPrefix :: Prelude.Maybe Prelude.Text,
+    streamSelection :: Prelude.Maybe StreamSelection
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CmafPackage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'encryption', 'cmafPackage_encryption' - Undocumented member.
+--
+-- 'hlsManifests', 'cmafPackage_hlsManifests' - A list of HLS manifest configurations
+--
+-- 'segmentDurationSeconds', 'cmafPackage_segmentDurationSeconds' - Duration (in seconds) of each segment. Actual segments will be rounded
+-- to the nearest multiple of the source segment duration.
+--
+-- 'segmentPrefix', 'cmafPackage_segmentPrefix' - An optional custom string that is prepended to the name of each segment.
+-- If not specified, it defaults to the ChannelId.
+--
+-- 'streamSelection', 'cmafPackage_streamSelection' - Undocumented member.
+newCmafPackage ::
+  CmafPackage
+newCmafPackage =
+  CmafPackage'
+    { encryption = Prelude.Nothing,
+      hlsManifests = Prelude.Nothing,
+      segmentDurationSeconds = Prelude.Nothing,
+      segmentPrefix = Prelude.Nothing,
+      streamSelection = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+cmafPackage_encryption :: Lens.Lens' CmafPackage (Prelude.Maybe CmafEncryption)
+cmafPackage_encryption = Lens.lens (\CmafPackage' {encryption} -> encryption) (\s@CmafPackage' {} a -> s {encryption = a} :: CmafPackage)
+
+-- | A list of HLS manifest configurations
+cmafPackage_hlsManifests :: Lens.Lens' CmafPackage (Prelude.Maybe [HlsManifest])
+cmafPackage_hlsManifests = Lens.lens (\CmafPackage' {hlsManifests} -> hlsManifests) (\s@CmafPackage' {} a -> s {hlsManifests = a} :: CmafPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | Duration (in seconds) of each segment. Actual segments will be rounded
+-- to the nearest multiple of the source segment duration.
+cmafPackage_segmentDurationSeconds :: Lens.Lens' CmafPackage (Prelude.Maybe Prelude.Int)
+cmafPackage_segmentDurationSeconds = Lens.lens (\CmafPackage' {segmentDurationSeconds} -> segmentDurationSeconds) (\s@CmafPackage' {} a -> s {segmentDurationSeconds = a} :: CmafPackage)
+
+-- | An optional custom string that is prepended to the name of each segment.
+-- If not specified, it defaults to the ChannelId.
+cmafPackage_segmentPrefix :: Lens.Lens' CmafPackage (Prelude.Maybe Prelude.Text)
+cmafPackage_segmentPrefix = Lens.lens (\CmafPackage' {segmentPrefix} -> segmentPrefix) (\s@CmafPackage' {} a -> s {segmentPrefix = a} :: CmafPackage)
+
+-- | Undocumented member.
+cmafPackage_streamSelection :: Lens.Lens' CmafPackage (Prelude.Maybe StreamSelection)
+cmafPackage_streamSelection = Lens.lens (\CmafPackage' {streamSelection} -> streamSelection) (\s@CmafPackage' {} a -> s {streamSelection = a} :: CmafPackage)
+
+instance Data.FromJSON CmafPackage where
+  parseJSON =
+    Data.withObject
+      "CmafPackage"
+      ( \x ->
+          CmafPackage'
+            Prelude.<$> (x Data..:? "encryption")
+            Prelude.<*> (x Data..:? "hlsManifests" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "segmentDurationSeconds")
+            Prelude.<*> (x Data..:? "segmentPrefix")
+            Prelude.<*> (x Data..:? "streamSelection")
+      )
+
+instance Prelude.Hashable CmafPackage where
+  hashWithSalt _salt CmafPackage' {..} =
+    _salt
+      `Prelude.hashWithSalt` encryption
+      `Prelude.hashWithSalt` hlsManifests
+      `Prelude.hashWithSalt` segmentDurationSeconds
+      `Prelude.hashWithSalt` segmentPrefix
+      `Prelude.hashWithSalt` streamSelection
+
+instance Prelude.NFData CmafPackage where
+  rnf CmafPackage' {..} =
+    Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf hlsManifests
+      `Prelude.seq` Prelude.rnf segmentDurationSeconds
+      `Prelude.seq` Prelude.rnf segmentPrefix
+      `Prelude.seq` Prelude.rnf streamSelection
diff --git a/gen/Amazonka/MediaPackage/Types/CmafPackageCreateOrUpdateParameters.hs b/gen/Amazonka/MediaPackage/Types/CmafPackageCreateOrUpdateParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/CmafPackageCreateOrUpdateParameters.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaPackage.Types.CmafPackageCreateOrUpdateParameters
+-- 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.MediaPackage.Types.CmafPackageCreateOrUpdateParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.CmafEncryption
+import Amazonka.MediaPackage.Types.HlsManifestCreateOrUpdateParameters
+import Amazonka.MediaPackage.Types.StreamSelection
+import qualified Amazonka.Prelude as Prelude
+
+-- | A Common Media Application Format (CMAF) packaging configuration.
+--
+-- /See:/ 'newCmafPackageCreateOrUpdateParameters' smart constructor.
+data CmafPackageCreateOrUpdateParameters = CmafPackageCreateOrUpdateParameters'
+  { encryption :: Prelude.Maybe CmafEncryption,
+    -- | A list of HLS manifest configurations
+    hlsManifests :: Prelude.Maybe [HlsManifestCreateOrUpdateParameters],
+    -- | Duration (in seconds) of each segment. Actual segments will be rounded
+    -- to the nearest multiple of the source segment duration.
+    segmentDurationSeconds :: Prelude.Maybe Prelude.Int,
+    -- | An optional custom string that is prepended to the name of each segment.
+    -- If not specified, it defaults to the ChannelId.
+    segmentPrefix :: Prelude.Maybe Prelude.Text,
+    streamSelection :: Prelude.Maybe StreamSelection
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CmafPackageCreateOrUpdateParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'encryption', 'cmafPackageCreateOrUpdateParameters_encryption' - Undocumented member.
+--
+-- 'hlsManifests', 'cmafPackageCreateOrUpdateParameters_hlsManifests' - A list of HLS manifest configurations
+--
+-- 'segmentDurationSeconds', 'cmafPackageCreateOrUpdateParameters_segmentDurationSeconds' - Duration (in seconds) of each segment. Actual segments will be rounded
+-- to the nearest multiple of the source segment duration.
+--
+-- 'segmentPrefix', 'cmafPackageCreateOrUpdateParameters_segmentPrefix' - An optional custom string that is prepended to the name of each segment.
+-- If not specified, it defaults to the ChannelId.
+--
+-- 'streamSelection', 'cmafPackageCreateOrUpdateParameters_streamSelection' - Undocumented member.
+newCmafPackageCreateOrUpdateParameters ::
+  CmafPackageCreateOrUpdateParameters
+newCmafPackageCreateOrUpdateParameters =
+  CmafPackageCreateOrUpdateParameters'
+    { encryption =
+        Prelude.Nothing,
+      hlsManifests = Prelude.Nothing,
+      segmentDurationSeconds =
+        Prelude.Nothing,
+      segmentPrefix = Prelude.Nothing,
+      streamSelection = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+cmafPackageCreateOrUpdateParameters_encryption :: Lens.Lens' CmafPackageCreateOrUpdateParameters (Prelude.Maybe CmafEncryption)
+cmafPackageCreateOrUpdateParameters_encryption = Lens.lens (\CmafPackageCreateOrUpdateParameters' {encryption} -> encryption) (\s@CmafPackageCreateOrUpdateParameters' {} a -> s {encryption = a} :: CmafPackageCreateOrUpdateParameters)
+
+-- | A list of HLS manifest configurations
+cmafPackageCreateOrUpdateParameters_hlsManifests :: Lens.Lens' CmafPackageCreateOrUpdateParameters (Prelude.Maybe [HlsManifestCreateOrUpdateParameters])
+cmafPackageCreateOrUpdateParameters_hlsManifests = Lens.lens (\CmafPackageCreateOrUpdateParameters' {hlsManifests} -> hlsManifests) (\s@CmafPackageCreateOrUpdateParameters' {} a -> s {hlsManifests = a} :: CmafPackageCreateOrUpdateParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | Duration (in seconds) of each segment. Actual segments will be rounded
+-- to the nearest multiple of the source segment duration.
+cmafPackageCreateOrUpdateParameters_segmentDurationSeconds :: Lens.Lens' CmafPackageCreateOrUpdateParameters (Prelude.Maybe Prelude.Int)
+cmafPackageCreateOrUpdateParameters_segmentDurationSeconds = Lens.lens (\CmafPackageCreateOrUpdateParameters' {segmentDurationSeconds} -> segmentDurationSeconds) (\s@CmafPackageCreateOrUpdateParameters' {} a -> s {segmentDurationSeconds = a} :: CmafPackageCreateOrUpdateParameters)
+
+-- | An optional custom string that is prepended to the name of each segment.
+-- If not specified, it defaults to the ChannelId.
+cmafPackageCreateOrUpdateParameters_segmentPrefix :: Lens.Lens' CmafPackageCreateOrUpdateParameters (Prelude.Maybe Prelude.Text)
+cmafPackageCreateOrUpdateParameters_segmentPrefix = Lens.lens (\CmafPackageCreateOrUpdateParameters' {segmentPrefix} -> segmentPrefix) (\s@CmafPackageCreateOrUpdateParameters' {} a -> s {segmentPrefix = a} :: CmafPackageCreateOrUpdateParameters)
+
+-- | Undocumented member.
+cmafPackageCreateOrUpdateParameters_streamSelection :: Lens.Lens' CmafPackageCreateOrUpdateParameters (Prelude.Maybe StreamSelection)
+cmafPackageCreateOrUpdateParameters_streamSelection = Lens.lens (\CmafPackageCreateOrUpdateParameters' {streamSelection} -> streamSelection) (\s@CmafPackageCreateOrUpdateParameters' {} a -> s {streamSelection = a} :: CmafPackageCreateOrUpdateParameters)
+
+instance
+  Prelude.Hashable
+    CmafPackageCreateOrUpdateParameters
+  where
+  hashWithSalt
+    _salt
+    CmafPackageCreateOrUpdateParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` encryption
+        `Prelude.hashWithSalt` hlsManifests
+        `Prelude.hashWithSalt` segmentDurationSeconds
+        `Prelude.hashWithSalt` segmentPrefix
+        `Prelude.hashWithSalt` streamSelection
+
+instance
+  Prelude.NFData
+    CmafPackageCreateOrUpdateParameters
+  where
+  rnf CmafPackageCreateOrUpdateParameters' {..} =
+    Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf hlsManifests
+      `Prelude.seq` Prelude.rnf segmentDurationSeconds
+      `Prelude.seq` Prelude.rnf segmentPrefix
+      `Prelude.seq` Prelude.rnf streamSelection
+
+instance
+  Data.ToJSON
+    CmafPackageCreateOrUpdateParameters
+  where
+  toJSON CmafPackageCreateOrUpdateParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("encryption" Data..=) Prelude.<$> encryption,
+            ("hlsManifests" Data..=) Prelude.<$> hlsManifests,
+            ("segmentDurationSeconds" Data..=)
+              Prelude.<$> segmentDurationSeconds,
+            ("segmentPrefix" Data..=) Prelude.<$> segmentPrefix,
+            ("streamSelection" Data..=)
+              Prelude.<$> streamSelection
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/DashEncryption.hs b/gen/Amazonka/MediaPackage/Types/DashEncryption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/DashEncryption.hs
@@ -0,0 +1,98 @@
+{-# 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.MediaPackage.Types.DashEncryption
+-- 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.MediaPackage.Types.DashEncryption where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.SpekeKeyProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | A Dynamic Adaptive Streaming over HTTP (DASH) encryption configuration.
+--
+-- /See:/ 'newDashEncryption' smart constructor.
+data DashEncryption = DashEncryption'
+  { -- | Time (in seconds) between each encryption key rotation.
+    keyRotationIntervalSeconds :: Prelude.Maybe Prelude.Int,
+    spekeKeyProvider :: SpekeKeyProvider
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashEncryption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'keyRotationIntervalSeconds', 'dashEncryption_keyRotationIntervalSeconds' - Time (in seconds) between each encryption key rotation.
+--
+-- 'spekeKeyProvider', 'dashEncryption_spekeKeyProvider' - Undocumented member.
+newDashEncryption ::
+  -- | 'spekeKeyProvider'
+  SpekeKeyProvider ->
+  DashEncryption
+newDashEncryption pSpekeKeyProvider_ =
+  DashEncryption'
+    { keyRotationIntervalSeconds =
+        Prelude.Nothing,
+      spekeKeyProvider = pSpekeKeyProvider_
+    }
+
+-- | Time (in seconds) between each encryption key rotation.
+dashEncryption_keyRotationIntervalSeconds :: Lens.Lens' DashEncryption (Prelude.Maybe Prelude.Int)
+dashEncryption_keyRotationIntervalSeconds = Lens.lens (\DashEncryption' {keyRotationIntervalSeconds} -> keyRotationIntervalSeconds) (\s@DashEncryption' {} a -> s {keyRotationIntervalSeconds = a} :: DashEncryption)
+
+-- | Undocumented member.
+dashEncryption_spekeKeyProvider :: Lens.Lens' DashEncryption SpekeKeyProvider
+dashEncryption_spekeKeyProvider = Lens.lens (\DashEncryption' {spekeKeyProvider} -> spekeKeyProvider) (\s@DashEncryption' {} a -> s {spekeKeyProvider = a} :: DashEncryption)
+
+instance Data.FromJSON DashEncryption where
+  parseJSON =
+    Data.withObject
+      "DashEncryption"
+      ( \x ->
+          DashEncryption'
+            Prelude.<$> (x Data..:? "keyRotationIntervalSeconds")
+            Prelude.<*> (x Data..: "spekeKeyProvider")
+      )
+
+instance Prelude.Hashable DashEncryption where
+  hashWithSalt _salt DashEncryption' {..} =
+    _salt
+      `Prelude.hashWithSalt` keyRotationIntervalSeconds
+      `Prelude.hashWithSalt` spekeKeyProvider
+
+instance Prelude.NFData DashEncryption where
+  rnf DashEncryption' {..} =
+    Prelude.rnf keyRotationIntervalSeconds
+      `Prelude.seq` Prelude.rnf spekeKeyProvider
+
+instance Data.ToJSON DashEncryption where
+  toJSON DashEncryption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("keyRotationIntervalSeconds" Data..=)
+              Prelude.<$> keyRotationIntervalSeconds,
+            Prelude.Just
+              ("spekeKeyProvider" Data..= spekeKeyProvider)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/DashPackage.hs b/gen/Amazonka/MediaPackage/Types/DashPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/DashPackage.hs
@@ -0,0 +1,361 @@
+{-# 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.MediaPackage.Types.DashPackage
+-- 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.MediaPackage.Types.DashPackage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.AdTriggersElement
+import Amazonka.MediaPackage.Types.AdsOnDeliveryRestrictions
+import Amazonka.MediaPackage.Types.DashEncryption
+import Amazonka.MediaPackage.Types.ManifestLayout
+import Amazonka.MediaPackage.Types.PeriodTriggersElement
+import Amazonka.MediaPackage.Types.Profile
+import Amazonka.MediaPackage.Types.SegmentTemplateFormat
+import Amazonka.MediaPackage.Types.StreamSelection
+import Amazonka.MediaPackage.Types.UtcTiming
+import qualified Amazonka.Prelude as Prelude
+
+-- | A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration.
+--
+-- /See:/ 'newDashPackage' smart constructor.
+data DashPackage = DashPackage'
+  { adTriggers :: Prelude.Maybe [AdTriggersElement],
+    adsOnDeliveryRestrictions :: Prelude.Maybe AdsOnDeliveryRestrictions,
+    encryption :: Prelude.Maybe DashEncryption,
+    -- | When enabled, an I-Frame only stream will be included in the output.
+    includeIframeOnlyStream :: Prelude.Maybe Prelude.Bool,
+    -- | Determines the position of some tags in the Media Presentation
+    -- Description (MPD). When set to FULL, elements like SegmentTemplate and
+    -- ContentProtection are included in each Representation. When set to
+    -- COMPACT, duplicate elements are combined and presented at the
+    -- AdaptationSet level.
+    manifestLayout :: Prelude.Maybe ManifestLayout,
+    -- | Time window (in seconds) contained in each manifest.
+    manifestWindowSeconds :: Prelude.Maybe Prelude.Int,
+    -- | Minimum duration (in seconds) that a player will buffer media before
+    -- starting the presentation.
+    minBufferTimeSeconds :: Prelude.Maybe Prelude.Int,
+    -- | Minimum duration (in seconds) between potential changes to the Dynamic
+    -- Adaptive Streaming over HTTP (DASH) Media Presentation Description
+    -- (MPD).
+    minUpdatePeriodSeconds :: Prelude.Maybe Prelude.Int,
+    -- | A list of triggers that controls when the outgoing Dynamic Adaptive
+    -- Streaming over HTTP (DASH) Media Presentation Description (MPD) will be
+    -- partitioned into multiple periods. If empty, the content will not be
+    -- partitioned into more than one period. If the list contains \"ADS\", new
+    -- periods will be created where the Channel source contains SCTE-35 ad
+    -- markers.
+    periodTriggers :: Prelude.Maybe [PeriodTriggersElement],
+    -- | The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set
+    -- to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled. When set to
+    -- \"DVB-DASH_2014\", DVB-DASH 2014 compliant output is enabled.
+    profile :: Prelude.Maybe Profile,
+    -- | Duration (in seconds) of each segment. Actual segments will be rounded
+    -- to the nearest multiple of the source segment duration.
+    segmentDurationSeconds :: Prelude.Maybe Prelude.Int,
+    -- | Determines the type of SegmentTemplate included in the Media
+    -- Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full
+    -- timeline is presented in each SegmentTemplate, with $Number$ media URLs.
+    -- When set to TIME_WITH_TIMELINE, a full timeline is presented in each
+    -- SegmentTemplate, with $Time$ media URLs. When set to
+    -- NUMBER_WITH_DURATION, only a duration is included in each
+    -- SegmentTemplate, with $Number$ media URLs.
+    segmentTemplateFormat :: Prelude.Maybe SegmentTemplateFormat,
+    streamSelection :: Prelude.Maybe StreamSelection,
+    -- | Duration (in seconds) to delay live content before presentation.
+    suggestedPresentationDelaySeconds :: Prelude.Maybe Prelude.Int,
+    -- | Determines the type of UTCTiming included in the Media Presentation
+    -- Description (MPD)
+    utcTiming :: Prelude.Maybe UtcTiming,
+    -- | Specifies the value attribute of the UTCTiming field when utcTiming is
+    -- set to HTTP-ISO, HTTP-HEAD or HTTP-XSDATE
+    utcTimingUri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DashPackage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'adTriggers', 'dashPackage_adTriggers' - Undocumented member.
+--
+-- 'adsOnDeliveryRestrictions', 'dashPackage_adsOnDeliveryRestrictions' - Undocumented member.
+--
+-- 'encryption', 'dashPackage_encryption' - Undocumented member.
+--
+-- 'includeIframeOnlyStream', 'dashPackage_includeIframeOnlyStream' - When enabled, an I-Frame only stream will be included in the output.
+--
+-- 'manifestLayout', 'dashPackage_manifestLayout' - Determines the position of some tags in the Media Presentation
+-- Description (MPD). When set to FULL, elements like SegmentTemplate and
+-- ContentProtection are included in each Representation. When set to
+-- COMPACT, duplicate elements are combined and presented at the
+-- AdaptationSet level.
+--
+-- 'manifestWindowSeconds', 'dashPackage_manifestWindowSeconds' - Time window (in seconds) contained in each manifest.
+--
+-- 'minBufferTimeSeconds', 'dashPackage_minBufferTimeSeconds' - Minimum duration (in seconds) that a player will buffer media before
+-- starting the presentation.
+--
+-- 'minUpdatePeriodSeconds', 'dashPackage_minUpdatePeriodSeconds' - Minimum duration (in seconds) between potential changes to the Dynamic
+-- Adaptive Streaming over HTTP (DASH) Media Presentation Description
+-- (MPD).
+--
+-- 'periodTriggers', 'dashPackage_periodTriggers' - A list of triggers that controls when the outgoing Dynamic Adaptive
+-- Streaming over HTTP (DASH) Media Presentation Description (MPD) will be
+-- partitioned into multiple periods. If empty, the content will not be
+-- partitioned into more than one period. If the list contains \"ADS\", new
+-- periods will be created where the Channel source contains SCTE-35 ad
+-- markers.
+--
+-- 'profile', 'dashPackage_profile' - The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set
+-- to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled. When set to
+-- \"DVB-DASH_2014\", DVB-DASH 2014 compliant output is enabled.
+--
+-- 'segmentDurationSeconds', 'dashPackage_segmentDurationSeconds' - Duration (in seconds) of each segment. Actual segments will be rounded
+-- to the nearest multiple of the source segment duration.
+--
+-- 'segmentTemplateFormat', 'dashPackage_segmentTemplateFormat' - Determines the type of SegmentTemplate included in the Media
+-- Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full
+-- timeline is presented in each SegmentTemplate, with $Number$ media URLs.
+-- When set to TIME_WITH_TIMELINE, a full timeline is presented in each
+-- SegmentTemplate, with $Time$ media URLs. When set to
+-- NUMBER_WITH_DURATION, only a duration is included in each
+-- SegmentTemplate, with $Number$ media URLs.
+--
+-- 'streamSelection', 'dashPackage_streamSelection' - Undocumented member.
+--
+-- 'suggestedPresentationDelaySeconds', 'dashPackage_suggestedPresentationDelaySeconds' - Duration (in seconds) to delay live content before presentation.
+--
+-- 'utcTiming', 'dashPackage_utcTiming' - Determines the type of UTCTiming included in the Media Presentation
+-- Description (MPD)
+--
+-- 'utcTimingUri', 'dashPackage_utcTimingUri' - Specifies the value attribute of the UTCTiming field when utcTiming is
+-- set to HTTP-ISO, HTTP-HEAD or HTTP-XSDATE
+newDashPackage ::
+  DashPackage
+newDashPackage =
+  DashPackage'
+    { adTriggers = Prelude.Nothing,
+      adsOnDeliveryRestrictions = Prelude.Nothing,
+      encryption = Prelude.Nothing,
+      includeIframeOnlyStream = Prelude.Nothing,
+      manifestLayout = Prelude.Nothing,
+      manifestWindowSeconds = Prelude.Nothing,
+      minBufferTimeSeconds = Prelude.Nothing,
+      minUpdatePeriodSeconds = Prelude.Nothing,
+      periodTriggers = Prelude.Nothing,
+      profile = Prelude.Nothing,
+      segmentDurationSeconds = Prelude.Nothing,
+      segmentTemplateFormat = Prelude.Nothing,
+      streamSelection = Prelude.Nothing,
+      suggestedPresentationDelaySeconds = Prelude.Nothing,
+      utcTiming = Prelude.Nothing,
+      utcTimingUri = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+dashPackage_adTriggers :: Lens.Lens' DashPackage (Prelude.Maybe [AdTriggersElement])
+dashPackage_adTriggers = Lens.lens (\DashPackage' {adTriggers} -> adTriggers) (\s@DashPackage' {} a -> s {adTriggers = a} :: DashPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+dashPackage_adsOnDeliveryRestrictions :: Lens.Lens' DashPackage (Prelude.Maybe AdsOnDeliveryRestrictions)
+dashPackage_adsOnDeliveryRestrictions = Lens.lens (\DashPackage' {adsOnDeliveryRestrictions} -> adsOnDeliveryRestrictions) (\s@DashPackage' {} a -> s {adsOnDeliveryRestrictions = a} :: DashPackage)
+
+-- | Undocumented member.
+dashPackage_encryption :: Lens.Lens' DashPackage (Prelude.Maybe DashEncryption)
+dashPackage_encryption = Lens.lens (\DashPackage' {encryption} -> encryption) (\s@DashPackage' {} a -> s {encryption = a} :: DashPackage)
+
+-- | When enabled, an I-Frame only stream will be included in the output.
+dashPackage_includeIframeOnlyStream :: Lens.Lens' DashPackage (Prelude.Maybe Prelude.Bool)
+dashPackage_includeIframeOnlyStream = Lens.lens (\DashPackage' {includeIframeOnlyStream} -> includeIframeOnlyStream) (\s@DashPackage' {} a -> s {includeIframeOnlyStream = a} :: DashPackage)
+
+-- | Determines the position of some tags in the Media Presentation
+-- Description (MPD). When set to FULL, elements like SegmentTemplate and
+-- ContentProtection are included in each Representation. When set to
+-- COMPACT, duplicate elements are combined and presented at the
+-- AdaptationSet level.
+dashPackage_manifestLayout :: Lens.Lens' DashPackage (Prelude.Maybe ManifestLayout)
+dashPackage_manifestLayout = Lens.lens (\DashPackage' {manifestLayout} -> manifestLayout) (\s@DashPackage' {} a -> s {manifestLayout = a} :: DashPackage)
+
+-- | Time window (in seconds) contained in each manifest.
+dashPackage_manifestWindowSeconds :: Lens.Lens' DashPackage (Prelude.Maybe Prelude.Int)
+dashPackage_manifestWindowSeconds = Lens.lens (\DashPackage' {manifestWindowSeconds} -> manifestWindowSeconds) (\s@DashPackage' {} a -> s {manifestWindowSeconds = a} :: DashPackage)
+
+-- | Minimum duration (in seconds) that a player will buffer media before
+-- starting the presentation.
+dashPackage_minBufferTimeSeconds :: Lens.Lens' DashPackage (Prelude.Maybe Prelude.Int)
+dashPackage_minBufferTimeSeconds = Lens.lens (\DashPackage' {minBufferTimeSeconds} -> minBufferTimeSeconds) (\s@DashPackage' {} a -> s {minBufferTimeSeconds = a} :: DashPackage)
+
+-- | Minimum duration (in seconds) between potential changes to the Dynamic
+-- Adaptive Streaming over HTTP (DASH) Media Presentation Description
+-- (MPD).
+dashPackage_minUpdatePeriodSeconds :: Lens.Lens' DashPackage (Prelude.Maybe Prelude.Int)
+dashPackage_minUpdatePeriodSeconds = Lens.lens (\DashPackage' {minUpdatePeriodSeconds} -> minUpdatePeriodSeconds) (\s@DashPackage' {} a -> s {minUpdatePeriodSeconds = a} :: DashPackage)
+
+-- | A list of triggers that controls when the outgoing Dynamic Adaptive
+-- Streaming over HTTP (DASH) Media Presentation Description (MPD) will be
+-- partitioned into multiple periods. If empty, the content will not be
+-- partitioned into more than one period. If the list contains \"ADS\", new
+-- periods will be created where the Channel source contains SCTE-35 ad
+-- markers.
+dashPackage_periodTriggers :: Lens.Lens' DashPackage (Prelude.Maybe [PeriodTriggersElement])
+dashPackage_periodTriggers = Lens.lens (\DashPackage' {periodTriggers} -> periodTriggers) (\s@DashPackage' {} a -> s {periodTriggers = a} :: DashPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set
+-- to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled. When set to
+-- \"DVB-DASH_2014\", DVB-DASH 2014 compliant output is enabled.
+dashPackage_profile :: Lens.Lens' DashPackage (Prelude.Maybe Profile)
+dashPackage_profile = Lens.lens (\DashPackage' {profile} -> profile) (\s@DashPackage' {} a -> s {profile = a} :: DashPackage)
+
+-- | Duration (in seconds) of each segment. Actual segments will be rounded
+-- to the nearest multiple of the source segment duration.
+dashPackage_segmentDurationSeconds :: Lens.Lens' DashPackage (Prelude.Maybe Prelude.Int)
+dashPackage_segmentDurationSeconds = Lens.lens (\DashPackage' {segmentDurationSeconds} -> segmentDurationSeconds) (\s@DashPackage' {} a -> s {segmentDurationSeconds = a} :: DashPackage)
+
+-- | Determines the type of SegmentTemplate included in the Media
+-- Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full
+-- timeline is presented in each SegmentTemplate, with $Number$ media URLs.
+-- When set to TIME_WITH_TIMELINE, a full timeline is presented in each
+-- SegmentTemplate, with $Time$ media URLs. When set to
+-- NUMBER_WITH_DURATION, only a duration is included in each
+-- SegmentTemplate, with $Number$ media URLs.
+dashPackage_segmentTemplateFormat :: Lens.Lens' DashPackage (Prelude.Maybe SegmentTemplateFormat)
+dashPackage_segmentTemplateFormat = Lens.lens (\DashPackage' {segmentTemplateFormat} -> segmentTemplateFormat) (\s@DashPackage' {} a -> s {segmentTemplateFormat = a} :: DashPackage)
+
+-- | Undocumented member.
+dashPackage_streamSelection :: Lens.Lens' DashPackage (Prelude.Maybe StreamSelection)
+dashPackage_streamSelection = Lens.lens (\DashPackage' {streamSelection} -> streamSelection) (\s@DashPackage' {} a -> s {streamSelection = a} :: DashPackage)
+
+-- | Duration (in seconds) to delay live content before presentation.
+dashPackage_suggestedPresentationDelaySeconds :: Lens.Lens' DashPackage (Prelude.Maybe Prelude.Int)
+dashPackage_suggestedPresentationDelaySeconds = Lens.lens (\DashPackage' {suggestedPresentationDelaySeconds} -> suggestedPresentationDelaySeconds) (\s@DashPackage' {} a -> s {suggestedPresentationDelaySeconds = a} :: DashPackage)
+
+-- | Determines the type of UTCTiming included in the Media Presentation
+-- Description (MPD)
+dashPackage_utcTiming :: Lens.Lens' DashPackage (Prelude.Maybe UtcTiming)
+dashPackage_utcTiming = Lens.lens (\DashPackage' {utcTiming} -> utcTiming) (\s@DashPackage' {} a -> s {utcTiming = a} :: DashPackage)
+
+-- | Specifies the value attribute of the UTCTiming field when utcTiming is
+-- set to HTTP-ISO, HTTP-HEAD or HTTP-XSDATE
+dashPackage_utcTimingUri :: Lens.Lens' DashPackage (Prelude.Maybe Prelude.Text)
+dashPackage_utcTimingUri = Lens.lens (\DashPackage' {utcTimingUri} -> utcTimingUri) (\s@DashPackage' {} a -> s {utcTimingUri = a} :: DashPackage)
+
+instance Data.FromJSON DashPackage where
+  parseJSON =
+    Data.withObject
+      "DashPackage"
+      ( \x ->
+          DashPackage'
+            Prelude.<$> (x Data..:? "adTriggers" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "adsOnDeliveryRestrictions")
+            Prelude.<*> (x Data..:? "encryption")
+            Prelude.<*> (x Data..:? "includeIframeOnlyStream")
+            Prelude.<*> (x Data..:? "manifestLayout")
+            Prelude.<*> (x Data..:? "manifestWindowSeconds")
+            Prelude.<*> (x Data..:? "minBufferTimeSeconds")
+            Prelude.<*> (x Data..:? "minUpdatePeriodSeconds")
+            Prelude.<*> (x Data..:? "periodTriggers" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "profile")
+            Prelude.<*> (x Data..:? "segmentDurationSeconds")
+            Prelude.<*> (x Data..:? "segmentTemplateFormat")
+            Prelude.<*> (x Data..:? "streamSelection")
+            Prelude.<*> (x Data..:? "suggestedPresentationDelaySeconds")
+            Prelude.<*> (x Data..:? "utcTiming")
+            Prelude.<*> (x Data..:? "utcTimingUri")
+      )
+
+instance Prelude.Hashable DashPackage where
+  hashWithSalt _salt DashPackage' {..} =
+    _salt
+      `Prelude.hashWithSalt` adTriggers
+      `Prelude.hashWithSalt` adsOnDeliveryRestrictions
+      `Prelude.hashWithSalt` encryption
+      `Prelude.hashWithSalt` includeIframeOnlyStream
+      `Prelude.hashWithSalt` manifestLayout
+      `Prelude.hashWithSalt` manifestWindowSeconds
+      `Prelude.hashWithSalt` minBufferTimeSeconds
+      `Prelude.hashWithSalt` minUpdatePeriodSeconds
+      `Prelude.hashWithSalt` periodTriggers
+      `Prelude.hashWithSalt` profile
+      `Prelude.hashWithSalt` segmentDurationSeconds
+      `Prelude.hashWithSalt` segmentTemplateFormat
+      `Prelude.hashWithSalt` streamSelection
+      `Prelude.hashWithSalt` suggestedPresentationDelaySeconds
+      `Prelude.hashWithSalt` utcTiming
+      `Prelude.hashWithSalt` utcTimingUri
+
+instance Prelude.NFData DashPackage where
+  rnf DashPackage' {..} =
+    Prelude.rnf adTriggers
+      `Prelude.seq` Prelude.rnf adsOnDeliveryRestrictions
+      `Prelude.seq` Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf includeIframeOnlyStream
+      `Prelude.seq` Prelude.rnf manifestLayout
+      `Prelude.seq` Prelude.rnf manifestWindowSeconds
+      `Prelude.seq` Prelude.rnf minBufferTimeSeconds
+      `Prelude.seq` Prelude.rnf minUpdatePeriodSeconds
+      `Prelude.seq` Prelude.rnf periodTriggers
+      `Prelude.seq` Prelude.rnf profile
+      `Prelude.seq` Prelude.rnf segmentDurationSeconds
+      `Prelude.seq` Prelude.rnf segmentTemplateFormat
+      `Prelude.seq` Prelude.rnf streamSelection
+      `Prelude.seq` Prelude.rnf
+        suggestedPresentationDelaySeconds
+      `Prelude.seq` Prelude.rnf utcTiming
+      `Prelude.seq` Prelude.rnf utcTimingUri
+
+instance Data.ToJSON DashPackage where
+  toJSON DashPackage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adTriggers" Data..=) Prelude.<$> adTriggers,
+            ("adsOnDeliveryRestrictions" Data..=)
+              Prelude.<$> adsOnDeliveryRestrictions,
+            ("encryption" Data..=) Prelude.<$> encryption,
+            ("includeIframeOnlyStream" Data..=)
+              Prelude.<$> includeIframeOnlyStream,
+            ("manifestLayout" Data..=)
+              Prelude.<$> manifestLayout,
+            ("manifestWindowSeconds" Data..=)
+              Prelude.<$> manifestWindowSeconds,
+            ("minBufferTimeSeconds" Data..=)
+              Prelude.<$> minBufferTimeSeconds,
+            ("minUpdatePeriodSeconds" Data..=)
+              Prelude.<$> minUpdatePeriodSeconds,
+            ("periodTriggers" Data..=)
+              Prelude.<$> periodTriggers,
+            ("profile" Data..=) Prelude.<$> profile,
+            ("segmentDurationSeconds" Data..=)
+              Prelude.<$> segmentDurationSeconds,
+            ("segmentTemplateFormat" Data..=)
+              Prelude.<$> segmentTemplateFormat,
+            ("streamSelection" Data..=)
+              Prelude.<$> streamSelection,
+            ("suggestedPresentationDelaySeconds" Data..=)
+              Prelude.<$> suggestedPresentationDelaySeconds,
+            ("utcTiming" Data..=) Prelude.<$> utcTiming,
+            ("utcTimingUri" Data..=) Prelude.<$> utcTimingUri
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/EgressAccessLogs.hs b/gen/Amazonka/MediaPackage/Types/EgressAccessLogs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/EgressAccessLogs.hs
@@ -0,0 +1,75 @@
+{-# 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.MediaPackage.Types.EgressAccessLogs
+-- 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.MediaPackage.Types.EgressAccessLogs 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
+
+-- | Configure egress access logging.
+--
+-- /See:/ 'newEgressAccessLogs' smart constructor.
+data EgressAccessLogs = EgressAccessLogs'
+  { -- | Customize the log group name.
+    logGroupName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EgressAccessLogs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logGroupName', 'egressAccessLogs_logGroupName' - Customize the log group name.
+newEgressAccessLogs ::
+  EgressAccessLogs
+newEgressAccessLogs =
+  EgressAccessLogs' {logGroupName = Prelude.Nothing}
+
+-- | Customize the log group name.
+egressAccessLogs_logGroupName :: Lens.Lens' EgressAccessLogs (Prelude.Maybe Prelude.Text)
+egressAccessLogs_logGroupName = Lens.lens (\EgressAccessLogs' {logGroupName} -> logGroupName) (\s@EgressAccessLogs' {} a -> s {logGroupName = a} :: EgressAccessLogs)
+
+instance Data.FromJSON EgressAccessLogs where
+  parseJSON =
+    Data.withObject
+      "EgressAccessLogs"
+      ( \x ->
+          EgressAccessLogs'
+            Prelude.<$> (x Data..:? "logGroupName")
+      )
+
+instance Prelude.Hashable EgressAccessLogs where
+  hashWithSalt _salt EgressAccessLogs' {..} =
+    _salt `Prelude.hashWithSalt` logGroupName
+
+instance Prelude.NFData EgressAccessLogs where
+  rnf EgressAccessLogs' {..} = Prelude.rnf logGroupName
+
+instance Data.ToJSON EgressAccessLogs where
+  toJSON EgressAccessLogs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("logGroupName" Data..=) Prelude.<$> logGroupName]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/EncryptionContractConfiguration.hs b/gen/Amazonka/MediaPackage/Types/EncryptionContractConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/EncryptionContractConfiguration.hs
@@ -0,0 +1,124 @@
+{-# 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.MediaPackage.Types.EncryptionContractConfiguration
+-- 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.MediaPackage.Types.EncryptionContractConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.PresetSpeke20Audio
+import Amazonka.MediaPackage.Types.PresetSpeke20Video
+import qualified Amazonka.Prelude as Prelude
+
+-- | Use encryptionContractConfiguration to configure one or more content
+-- encryption keys for your endpoints that use SPEKE 2.0. The encryption
+-- contract defines which content keys are used to encrypt the audio and
+-- video tracks in your stream. To configure the encryption contract,
+-- specify which audio and video encryption presets to use. Note the
+-- following considerations when using encryptionContractConfiguration:
+-- encryptionContractConfiguration can be used for DASH or CMAF endpoints
+-- that use SPEKE 2.0. SPEKE 2.0 relies on the CPIX 2.3 specification. You
+-- must disable key rotation for this endpoint by setting
+-- keyRotationIntervalSeconds to 0.
+--
+-- /See:/ 'newEncryptionContractConfiguration' smart constructor.
+data EncryptionContractConfiguration = EncryptionContractConfiguration'
+  { -- | A collection of audio encryption presets.
+    presetSpeke20Audio :: PresetSpeke20Audio,
+    -- | A collection of video encryption presets.
+    presetSpeke20Video :: PresetSpeke20Video
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EncryptionContractConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'presetSpeke20Audio', 'encryptionContractConfiguration_presetSpeke20Audio' - A collection of audio encryption presets.
+--
+-- 'presetSpeke20Video', 'encryptionContractConfiguration_presetSpeke20Video' - A collection of video encryption presets.
+newEncryptionContractConfiguration ::
+  -- | 'presetSpeke20Audio'
+  PresetSpeke20Audio ->
+  -- | 'presetSpeke20Video'
+  PresetSpeke20Video ->
+  EncryptionContractConfiguration
+newEncryptionContractConfiguration
+  pPresetSpeke20Audio_
+  pPresetSpeke20Video_ =
+    EncryptionContractConfiguration'
+      { presetSpeke20Audio =
+          pPresetSpeke20Audio_,
+        presetSpeke20Video = pPresetSpeke20Video_
+      }
+
+-- | A collection of audio encryption presets.
+encryptionContractConfiguration_presetSpeke20Audio :: Lens.Lens' EncryptionContractConfiguration PresetSpeke20Audio
+encryptionContractConfiguration_presetSpeke20Audio = Lens.lens (\EncryptionContractConfiguration' {presetSpeke20Audio} -> presetSpeke20Audio) (\s@EncryptionContractConfiguration' {} a -> s {presetSpeke20Audio = a} :: EncryptionContractConfiguration)
+
+-- | A collection of video encryption presets.
+encryptionContractConfiguration_presetSpeke20Video :: Lens.Lens' EncryptionContractConfiguration PresetSpeke20Video
+encryptionContractConfiguration_presetSpeke20Video = Lens.lens (\EncryptionContractConfiguration' {presetSpeke20Video} -> presetSpeke20Video) (\s@EncryptionContractConfiguration' {} a -> s {presetSpeke20Video = a} :: EncryptionContractConfiguration)
+
+instance
+  Data.FromJSON
+    EncryptionContractConfiguration
+  where
+  parseJSON =
+    Data.withObject
+      "EncryptionContractConfiguration"
+      ( \x ->
+          EncryptionContractConfiguration'
+            Prelude.<$> (x Data..: "presetSpeke20Audio")
+            Prelude.<*> (x Data..: "presetSpeke20Video")
+      )
+
+instance
+  Prelude.Hashable
+    EncryptionContractConfiguration
+  where
+  hashWithSalt
+    _salt
+    EncryptionContractConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` presetSpeke20Audio
+        `Prelude.hashWithSalt` presetSpeke20Video
+
+instance
+  Prelude.NFData
+    EncryptionContractConfiguration
+  where
+  rnf EncryptionContractConfiguration' {..} =
+    Prelude.rnf presetSpeke20Audio
+      `Prelude.seq` Prelude.rnf presetSpeke20Video
+
+instance Data.ToJSON EncryptionContractConfiguration where
+  toJSON EncryptionContractConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("presetSpeke20Audio" Data..= presetSpeke20Audio),
+            Prelude.Just
+              ("presetSpeke20Video" Data..= presetSpeke20Video)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/EncryptionMethod.hs b/gen/Amazonka/MediaPackage/Types/EncryptionMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/EncryptionMethod.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.MediaPackage.Types.EncryptionMethod
+-- 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.MediaPackage.Types.EncryptionMethod
+  ( EncryptionMethod
+      ( ..,
+        EncryptionMethod_AES_128,
+        EncryptionMethod_SAMPLE_AES
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EncryptionMethod = EncryptionMethod'
+  { fromEncryptionMethod ::
+      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 EncryptionMethod_AES_128 :: EncryptionMethod
+pattern EncryptionMethod_AES_128 = EncryptionMethod' "AES_128"
+
+pattern EncryptionMethod_SAMPLE_AES :: EncryptionMethod
+pattern EncryptionMethod_SAMPLE_AES = EncryptionMethod' "SAMPLE_AES"
+
+{-# COMPLETE
+  EncryptionMethod_AES_128,
+  EncryptionMethod_SAMPLE_AES,
+  EncryptionMethod'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/HarvestJob.hs b/gen/Amazonka/MediaPackage/Types/HarvestJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/HarvestJob.hs
@@ -0,0 +1,184 @@
+{-# 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.MediaPackage.Types.HarvestJob
+-- 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.MediaPackage.Types.HarvestJob where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.S3Destination
+import Amazonka.MediaPackage.Types.Status
+import qualified Amazonka.Prelude as Prelude
+
+-- | A HarvestJob resource configuration
+--
+-- /See:/ 'newHarvestJob' smart constructor.
+data HarvestJob = HarvestJob'
+  { -- | The Amazon Resource Name (ARN) assigned to the HarvestJob.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Channel that the HarvestJob will harvest from.
+    channelId :: Prelude.Maybe Prelude.Text,
+    -- | The time the HarvestJob was submitted
+    createdAt :: Prelude.Maybe Prelude.Text,
+    -- | The end of the time-window which will be harvested.
+    endTime :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the HarvestJob. The ID must be unique within the region and it
+    -- cannot be changed after the HarvestJob is submitted.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+    -- cannot be changed after the HarvestJob is submitted.
+    originEndpointId :: Prelude.Maybe Prelude.Text,
+    s3Destination :: Prelude.Maybe S3Destination,
+    -- | The start of the time-window which will be harvested.
+    startTime :: Prelude.Maybe Prelude.Text,
+    -- | The current status of the HarvestJob. Consider setting up a CloudWatch
+    -- Event to listen for HarvestJobs as they succeed or fail. In the event of
+    -- failure, the CloudWatch Event will include an explanation of why the
+    -- HarvestJob failed.
+    status :: Prelude.Maybe Status
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HarvestJob' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'harvestJob_arn' - The Amazon Resource Name (ARN) assigned to the HarvestJob.
+--
+-- 'channelId', 'harvestJob_channelId' - The ID of the Channel that the HarvestJob will harvest from.
+--
+-- 'createdAt', 'harvestJob_createdAt' - The time the HarvestJob was submitted
+--
+-- 'endTime', 'harvestJob_endTime' - The end of the time-window which will be harvested.
+--
+-- 'id', 'harvestJob_id' - The ID of the HarvestJob. The ID must be unique within the region and it
+-- cannot be changed after the HarvestJob is submitted.
+--
+-- 'originEndpointId', 'harvestJob_originEndpointId' - The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+-- cannot be changed after the HarvestJob is submitted.
+--
+-- 's3Destination', 'harvestJob_s3Destination' - Undocumented member.
+--
+-- 'startTime', 'harvestJob_startTime' - The start of the time-window which will be harvested.
+--
+-- 'status', 'harvestJob_status' - The current status of the HarvestJob. Consider setting up a CloudWatch
+-- Event to listen for HarvestJobs as they succeed or fail. In the event of
+-- failure, the CloudWatch Event will include an explanation of why the
+-- HarvestJob failed.
+newHarvestJob ::
+  HarvestJob
+newHarvestJob =
+  HarvestJob'
+    { arn = Prelude.Nothing,
+      channelId = Prelude.Nothing,
+      createdAt = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      id = Prelude.Nothing,
+      originEndpointId = Prelude.Nothing,
+      s3Destination = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the HarvestJob.
+harvestJob_arn :: Lens.Lens' HarvestJob (Prelude.Maybe Prelude.Text)
+harvestJob_arn = Lens.lens (\HarvestJob' {arn} -> arn) (\s@HarvestJob' {} a -> s {arn = a} :: HarvestJob)
+
+-- | The ID of the Channel that the HarvestJob will harvest from.
+harvestJob_channelId :: Lens.Lens' HarvestJob (Prelude.Maybe Prelude.Text)
+harvestJob_channelId = Lens.lens (\HarvestJob' {channelId} -> channelId) (\s@HarvestJob' {} a -> s {channelId = a} :: HarvestJob)
+
+-- | The time the HarvestJob was submitted
+harvestJob_createdAt :: Lens.Lens' HarvestJob (Prelude.Maybe Prelude.Text)
+harvestJob_createdAt = Lens.lens (\HarvestJob' {createdAt} -> createdAt) (\s@HarvestJob' {} a -> s {createdAt = a} :: HarvestJob)
+
+-- | The end of the time-window which will be harvested.
+harvestJob_endTime :: Lens.Lens' HarvestJob (Prelude.Maybe Prelude.Text)
+harvestJob_endTime = Lens.lens (\HarvestJob' {endTime} -> endTime) (\s@HarvestJob' {} a -> s {endTime = a} :: HarvestJob)
+
+-- | The ID of the HarvestJob. The ID must be unique within the region and it
+-- cannot be changed after the HarvestJob is submitted.
+harvestJob_id :: Lens.Lens' HarvestJob (Prelude.Maybe Prelude.Text)
+harvestJob_id = Lens.lens (\HarvestJob' {id} -> id) (\s@HarvestJob' {} a -> s {id = a} :: HarvestJob)
+
+-- | The ID of the OriginEndpoint that the HarvestJob will harvest from. This
+-- cannot be changed after the HarvestJob is submitted.
+harvestJob_originEndpointId :: Lens.Lens' HarvestJob (Prelude.Maybe Prelude.Text)
+harvestJob_originEndpointId = Lens.lens (\HarvestJob' {originEndpointId} -> originEndpointId) (\s@HarvestJob' {} a -> s {originEndpointId = a} :: HarvestJob)
+
+-- | Undocumented member.
+harvestJob_s3Destination :: Lens.Lens' HarvestJob (Prelude.Maybe S3Destination)
+harvestJob_s3Destination = Lens.lens (\HarvestJob' {s3Destination} -> s3Destination) (\s@HarvestJob' {} a -> s {s3Destination = a} :: HarvestJob)
+
+-- | The start of the time-window which will be harvested.
+harvestJob_startTime :: Lens.Lens' HarvestJob (Prelude.Maybe Prelude.Text)
+harvestJob_startTime = Lens.lens (\HarvestJob' {startTime} -> startTime) (\s@HarvestJob' {} a -> s {startTime = a} :: HarvestJob)
+
+-- | The current status of the HarvestJob. Consider setting up a CloudWatch
+-- Event to listen for HarvestJobs as they succeed or fail. In the event of
+-- failure, the CloudWatch Event will include an explanation of why the
+-- HarvestJob failed.
+harvestJob_status :: Lens.Lens' HarvestJob (Prelude.Maybe Status)
+harvestJob_status = Lens.lens (\HarvestJob' {status} -> status) (\s@HarvestJob' {} a -> s {status = a} :: HarvestJob)
+
+instance Data.FromJSON HarvestJob where
+  parseJSON =
+    Data.withObject
+      "HarvestJob"
+      ( \x ->
+          HarvestJob'
+            Prelude.<$> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "channelId")
+            Prelude.<*> (x Data..:? "createdAt")
+            Prelude.<*> (x Data..:? "endTime")
+            Prelude.<*> (x Data..:? "id")
+            Prelude.<*> (x Data..:? "originEndpointId")
+            Prelude.<*> (x Data..:? "s3Destination")
+            Prelude.<*> (x Data..:? "startTime")
+            Prelude.<*> (x Data..:? "status")
+      )
+
+instance Prelude.Hashable HarvestJob where
+  hashWithSalt _salt HarvestJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` channelId
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` originEndpointId
+      `Prelude.hashWithSalt` s3Destination
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData HarvestJob where
+  rnf HarvestJob' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf originEndpointId
+      `Prelude.seq` Prelude.rnf s3Destination
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/MediaPackage/Types/HlsEncryption.hs b/gen/Amazonka/MediaPackage/Types/HlsEncryption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/HlsEncryption.hs
@@ -0,0 +1,143 @@
+{-# 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.MediaPackage.Types.HlsEncryption
+-- 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.MediaPackage.Types.HlsEncryption where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.EncryptionMethod
+import Amazonka.MediaPackage.Types.SpekeKeyProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | An HTTP Live Streaming (HLS) encryption configuration.
+--
+-- /See:/ 'newHlsEncryption' smart constructor.
+data HlsEncryption = HlsEncryption'
+  { -- | A constant initialization vector for encryption (optional). When not
+    -- specified the initialization vector will be periodically rotated.
+    constantInitializationVector :: Prelude.Maybe Prelude.Text,
+    -- | The encryption method to use.
+    encryptionMethod :: Prelude.Maybe EncryptionMethod,
+    -- | Interval (in seconds) between each encryption key rotation.
+    keyRotationIntervalSeconds :: Prelude.Maybe Prelude.Int,
+    -- | When enabled, the EXT-X-KEY tag will be repeated in output manifests.
+    repeatExtXKey :: Prelude.Maybe Prelude.Bool,
+    spekeKeyProvider :: SpekeKeyProvider
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsEncryption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'constantInitializationVector', 'hlsEncryption_constantInitializationVector' - A constant initialization vector for encryption (optional). When not
+-- specified the initialization vector will be periodically rotated.
+--
+-- 'encryptionMethod', 'hlsEncryption_encryptionMethod' - The encryption method to use.
+--
+-- 'keyRotationIntervalSeconds', 'hlsEncryption_keyRotationIntervalSeconds' - Interval (in seconds) between each encryption key rotation.
+--
+-- 'repeatExtXKey', 'hlsEncryption_repeatExtXKey' - When enabled, the EXT-X-KEY tag will be repeated in output manifests.
+--
+-- 'spekeKeyProvider', 'hlsEncryption_spekeKeyProvider' - Undocumented member.
+newHlsEncryption ::
+  -- | 'spekeKeyProvider'
+  SpekeKeyProvider ->
+  HlsEncryption
+newHlsEncryption pSpekeKeyProvider_ =
+  HlsEncryption'
+    { constantInitializationVector =
+        Prelude.Nothing,
+      encryptionMethod = Prelude.Nothing,
+      keyRotationIntervalSeconds = Prelude.Nothing,
+      repeatExtXKey = Prelude.Nothing,
+      spekeKeyProvider = pSpekeKeyProvider_
+    }
+
+-- | A constant initialization vector for encryption (optional). When not
+-- specified the initialization vector will be periodically rotated.
+hlsEncryption_constantInitializationVector :: Lens.Lens' HlsEncryption (Prelude.Maybe Prelude.Text)
+hlsEncryption_constantInitializationVector = Lens.lens (\HlsEncryption' {constantInitializationVector} -> constantInitializationVector) (\s@HlsEncryption' {} a -> s {constantInitializationVector = a} :: HlsEncryption)
+
+-- | The encryption method to use.
+hlsEncryption_encryptionMethod :: Lens.Lens' HlsEncryption (Prelude.Maybe EncryptionMethod)
+hlsEncryption_encryptionMethod = Lens.lens (\HlsEncryption' {encryptionMethod} -> encryptionMethod) (\s@HlsEncryption' {} a -> s {encryptionMethod = a} :: HlsEncryption)
+
+-- | Interval (in seconds) between each encryption key rotation.
+hlsEncryption_keyRotationIntervalSeconds :: Lens.Lens' HlsEncryption (Prelude.Maybe Prelude.Int)
+hlsEncryption_keyRotationIntervalSeconds = Lens.lens (\HlsEncryption' {keyRotationIntervalSeconds} -> keyRotationIntervalSeconds) (\s@HlsEncryption' {} a -> s {keyRotationIntervalSeconds = a} :: HlsEncryption)
+
+-- | When enabled, the EXT-X-KEY tag will be repeated in output manifests.
+hlsEncryption_repeatExtXKey :: Lens.Lens' HlsEncryption (Prelude.Maybe Prelude.Bool)
+hlsEncryption_repeatExtXKey = Lens.lens (\HlsEncryption' {repeatExtXKey} -> repeatExtXKey) (\s@HlsEncryption' {} a -> s {repeatExtXKey = a} :: HlsEncryption)
+
+-- | Undocumented member.
+hlsEncryption_spekeKeyProvider :: Lens.Lens' HlsEncryption SpekeKeyProvider
+hlsEncryption_spekeKeyProvider = Lens.lens (\HlsEncryption' {spekeKeyProvider} -> spekeKeyProvider) (\s@HlsEncryption' {} a -> s {spekeKeyProvider = a} :: HlsEncryption)
+
+instance Data.FromJSON HlsEncryption where
+  parseJSON =
+    Data.withObject
+      "HlsEncryption"
+      ( \x ->
+          HlsEncryption'
+            Prelude.<$> (x Data..:? "constantInitializationVector")
+            Prelude.<*> (x Data..:? "encryptionMethod")
+            Prelude.<*> (x Data..:? "keyRotationIntervalSeconds")
+            Prelude.<*> (x Data..:? "repeatExtXKey")
+            Prelude.<*> (x Data..: "spekeKeyProvider")
+      )
+
+instance Prelude.Hashable HlsEncryption where
+  hashWithSalt _salt HlsEncryption' {..} =
+    _salt
+      `Prelude.hashWithSalt` constantInitializationVector
+      `Prelude.hashWithSalt` encryptionMethod
+      `Prelude.hashWithSalt` keyRotationIntervalSeconds
+      `Prelude.hashWithSalt` repeatExtXKey
+      `Prelude.hashWithSalt` spekeKeyProvider
+
+instance Prelude.NFData HlsEncryption where
+  rnf HlsEncryption' {..} =
+    Prelude.rnf constantInitializationVector
+      `Prelude.seq` Prelude.rnf encryptionMethod
+      `Prelude.seq` Prelude.rnf keyRotationIntervalSeconds
+      `Prelude.seq` Prelude.rnf repeatExtXKey
+      `Prelude.seq` Prelude.rnf spekeKeyProvider
+
+instance Data.ToJSON HlsEncryption where
+  toJSON HlsEncryption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("constantInitializationVector" Data..=)
+              Prelude.<$> constantInitializationVector,
+            ("encryptionMethod" Data..=)
+              Prelude.<$> encryptionMethod,
+            ("keyRotationIntervalSeconds" Data..=)
+              Prelude.<$> keyRotationIntervalSeconds,
+            ("repeatExtXKey" Data..=) Prelude.<$> repeatExtXKey,
+            Prelude.Just
+              ("spekeKeyProvider" Data..= spekeKeyProvider)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/HlsIngest.hs b/gen/Amazonka/MediaPackage/Types/HlsIngest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/HlsIngest.hs
@@ -0,0 +1,72 @@
+{-# 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.MediaPackage.Types.HlsIngest
+-- 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.MediaPackage.Types.HlsIngest where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.IngestEndpoint
+import qualified Amazonka.Prelude as Prelude
+
+-- | An HTTP Live Streaming (HLS) ingest resource configuration.
+--
+-- /See:/ 'newHlsIngest' smart constructor.
+data HlsIngest = HlsIngest'
+  { -- | A list of endpoints to which the source stream should be sent.
+    ingestEndpoints :: Prelude.Maybe [IngestEndpoint]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsIngest' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ingestEndpoints', 'hlsIngest_ingestEndpoints' - A list of endpoints to which the source stream should be sent.
+newHlsIngest ::
+  HlsIngest
+newHlsIngest =
+  HlsIngest' {ingestEndpoints = Prelude.Nothing}
+
+-- | A list of endpoints to which the source stream should be sent.
+hlsIngest_ingestEndpoints :: Lens.Lens' HlsIngest (Prelude.Maybe [IngestEndpoint])
+hlsIngest_ingestEndpoints = Lens.lens (\HlsIngest' {ingestEndpoints} -> ingestEndpoints) (\s@HlsIngest' {} a -> s {ingestEndpoints = a} :: HlsIngest) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON HlsIngest where
+  parseJSON =
+    Data.withObject
+      "HlsIngest"
+      ( \x ->
+          HlsIngest'
+            Prelude.<$> ( x
+                            Data..:? "ingestEndpoints"
+                            Data..!= Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable HlsIngest where
+  hashWithSalt _salt HlsIngest' {..} =
+    _salt `Prelude.hashWithSalt` ingestEndpoints
+
+instance Prelude.NFData HlsIngest where
+  rnf HlsIngest' {..} = Prelude.rnf ingestEndpoints
diff --git a/gen/Amazonka/MediaPackage/Types/HlsManifest.hs b/gen/Amazonka/MediaPackage/Types/HlsManifest.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/HlsManifest.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaPackage.Types.HlsManifest
+-- 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.MediaPackage.Types.HlsManifest where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.AdMarkers
+import Amazonka.MediaPackage.Types.AdTriggersElement
+import Amazonka.MediaPackage.Types.AdsOnDeliveryRestrictions
+import Amazonka.MediaPackage.Types.PlaylistType
+import qualified Amazonka.Prelude as Prelude
+
+-- | A HTTP Live Streaming (HLS) manifest configuration.
+--
+-- /See:/ 'newHlsManifest' smart constructor.
+data HlsManifest = HlsManifest'
+  { -- | This setting controls how ad markers are included in the packaged
+    -- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+    -- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+    -- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+    -- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+    -- blackout tags based on SCTE-35 messages in the input source.
+    -- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+    -- transition events in HLS and CMAF manifests. For this option, you must
+    -- set a programDateTimeIntervalSeconds value that is greater than 0.
+    adMarkers :: Prelude.Maybe AdMarkers,
+    adTriggers :: Prelude.Maybe [AdTriggersElement],
+    adsOnDeliveryRestrictions :: Prelude.Maybe AdsOnDeliveryRestrictions,
+    -- | When enabled, an I-Frame only stream will be included in the output.
+    includeIframeOnlyStream :: Prelude.Maybe Prelude.Bool,
+    -- | An optional short string appended to the end of the OriginEndpoint URL.
+    -- If not specified, defaults to the manifestName for the OriginEndpoint.
+    manifestName :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+    -- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+    -- included in the media playlist.
+    playlistType :: Prelude.Maybe PlaylistType,
+    -- | Time window (in seconds) contained in each parent manifest.
+    playlistWindowSeconds :: Prelude.Maybe Prelude.Int,
+    -- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+    -- inserted into manifests. Additionally, when an interval is specified
+    -- ID3Timed Metadata messages will be generated every 5 seconds using the
+    -- ingest time of the content. If the interval is not specified, or set to
+    -- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+    -- and no ID3Timed Metadata messages will be generated. Note that
+    -- irrespective of this parameter, if any ID3 Timed Metadata is found in
+    -- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+    -- output.
+    programDateTimeIntervalSeconds :: Prelude.Maybe Prelude.Int,
+    -- | The URL of the packaged OriginEndpoint for consumption.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the manifest. The ID must be unique within the OriginEndpoint
+    -- and it cannot be changed after it is created.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsManifest' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'adMarkers', 'hlsManifest_adMarkers' - This setting controls how ad markers are included in the packaged
+-- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+-- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+-- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+-- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+-- blackout tags based on SCTE-35 messages in the input source.
+-- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+-- transition events in HLS and CMAF manifests. For this option, you must
+-- set a programDateTimeIntervalSeconds value that is greater than 0.
+--
+-- 'adTriggers', 'hlsManifest_adTriggers' - Undocumented member.
+--
+-- 'adsOnDeliveryRestrictions', 'hlsManifest_adsOnDeliveryRestrictions' - Undocumented member.
+--
+-- 'includeIframeOnlyStream', 'hlsManifest_includeIframeOnlyStream' - When enabled, an I-Frame only stream will be included in the output.
+--
+-- 'manifestName', 'hlsManifest_manifestName' - An optional short string appended to the end of the OriginEndpoint URL.
+-- If not specified, defaults to the manifestName for the OriginEndpoint.
+--
+-- 'playlistType', 'hlsManifest_playlistType' - The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+-- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+-- included in the media playlist.
+--
+-- 'playlistWindowSeconds', 'hlsManifest_playlistWindowSeconds' - Time window (in seconds) contained in each parent manifest.
+--
+-- 'programDateTimeIntervalSeconds', 'hlsManifest_programDateTimeIntervalSeconds' - The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+-- inserted into manifests. Additionally, when an interval is specified
+-- ID3Timed Metadata messages will be generated every 5 seconds using the
+-- ingest time of the content. If the interval is not specified, or set to
+-- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+-- and no ID3Timed Metadata messages will be generated. Note that
+-- irrespective of this parameter, if any ID3 Timed Metadata is found in
+-- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+-- output.
+--
+-- 'url', 'hlsManifest_url' - The URL of the packaged OriginEndpoint for consumption.
+--
+-- 'id', 'hlsManifest_id' - The ID of the manifest. The ID must be unique within the OriginEndpoint
+-- and it cannot be changed after it is created.
+newHlsManifest ::
+  -- | 'id'
+  Prelude.Text ->
+  HlsManifest
+newHlsManifest pId_ =
+  HlsManifest'
+    { adMarkers = Prelude.Nothing,
+      adTriggers = Prelude.Nothing,
+      adsOnDeliveryRestrictions = Prelude.Nothing,
+      includeIframeOnlyStream = Prelude.Nothing,
+      manifestName = Prelude.Nothing,
+      playlistType = Prelude.Nothing,
+      playlistWindowSeconds = Prelude.Nothing,
+      programDateTimeIntervalSeconds = Prelude.Nothing,
+      url = Prelude.Nothing,
+      id = pId_
+    }
+
+-- | This setting controls how ad markers are included in the packaged
+-- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+-- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+-- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+-- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+-- blackout tags based on SCTE-35 messages in the input source.
+-- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+-- transition events in HLS and CMAF manifests. For this option, you must
+-- set a programDateTimeIntervalSeconds value that is greater than 0.
+hlsManifest_adMarkers :: Lens.Lens' HlsManifest (Prelude.Maybe AdMarkers)
+hlsManifest_adMarkers = Lens.lens (\HlsManifest' {adMarkers} -> adMarkers) (\s@HlsManifest' {} a -> s {adMarkers = a} :: HlsManifest)
+
+-- | Undocumented member.
+hlsManifest_adTriggers :: Lens.Lens' HlsManifest (Prelude.Maybe [AdTriggersElement])
+hlsManifest_adTriggers = Lens.lens (\HlsManifest' {adTriggers} -> adTriggers) (\s@HlsManifest' {} a -> s {adTriggers = a} :: HlsManifest) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+hlsManifest_adsOnDeliveryRestrictions :: Lens.Lens' HlsManifest (Prelude.Maybe AdsOnDeliveryRestrictions)
+hlsManifest_adsOnDeliveryRestrictions = Lens.lens (\HlsManifest' {adsOnDeliveryRestrictions} -> adsOnDeliveryRestrictions) (\s@HlsManifest' {} a -> s {adsOnDeliveryRestrictions = a} :: HlsManifest)
+
+-- | When enabled, an I-Frame only stream will be included in the output.
+hlsManifest_includeIframeOnlyStream :: Lens.Lens' HlsManifest (Prelude.Maybe Prelude.Bool)
+hlsManifest_includeIframeOnlyStream = Lens.lens (\HlsManifest' {includeIframeOnlyStream} -> includeIframeOnlyStream) (\s@HlsManifest' {} a -> s {includeIframeOnlyStream = a} :: HlsManifest)
+
+-- | An optional short string appended to the end of the OriginEndpoint URL.
+-- If not specified, defaults to the manifestName for the OriginEndpoint.
+hlsManifest_manifestName :: Lens.Lens' HlsManifest (Prelude.Maybe Prelude.Text)
+hlsManifest_manifestName = Lens.lens (\HlsManifest' {manifestName} -> manifestName) (\s@HlsManifest' {} a -> s {manifestName = a} :: HlsManifest)
+
+-- | The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+-- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+-- included in the media playlist.
+hlsManifest_playlistType :: Lens.Lens' HlsManifest (Prelude.Maybe PlaylistType)
+hlsManifest_playlistType = Lens.lens (\HlsManifest' {playlistType} -> playlistType) (\s@HlsManifest' {} a -> s {playlistType = a} :: HlsManifest)
+
+-- | Time window (in seconds) contained in each parent manifest.
+hlsManifest_playlistWindowSeconds :: Lens.Lens' HlsManifest (Prelude.Maybe Prelude.Int)
+hlsManifest_playlistWindowSeconds = Lens.lens (\HlsManifest' {playlistWindowSeconds} -> playlistWindowSeconds) (\s@HlsManifest' {} a -> s {playlistWindowSeconds = a} :: HlsManifest)
+
+-- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+-- inserted into manifests. Additionally, when an interval is specified
+-- ID3Timed Metadata messages will be generated every 5 seconds using the
+-- ingest time of the content. If the interval is not specified, or set to
+-- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+-- and no ID3Timed Metadata messages will be generated. Note that
+-- irrespective of this parameter, if any ID3 Timed Metadata is found in
+-- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+-- output.
+hlsManifest_programDateTimeIntervalSeconds :: Lens.Lens' HlsManifest (Prelude.Maybe Prelude.Int)
+hlsManifest_programDateTimeIntervalSeconds = Lens.lens (\HlsManifest' {programDateTimeIntervalSeconds} -> programDateTimeIntervalSeconds) (\s@HlsManifest' {} a -> s {programDateTimeIntervalSeconds = a} :: HlsManifest)
+
+-- | The URL of the packaged OriginEndpoint for consumption.
+hlsManifest_url :: Lens.Lens' HlsManifest (Prelude.Maybe Prelude.Text)
+hlsManifest_url = Lens.lens (\HlsManifest' {url} -> url) (\s@HlsManifest' {} a -> s {url = a} :: HlsManifest)
+
+-- | The ID of the manifest. The ID must be unique within the OriginEndpoint
+-- and it cannot be changed after it is created.
+hlsManifest_id :: Lens.Lens' HlsManifest Prelude.Text
+hlsManifest_id = Lens.lens (\HlsManifest' {id} -> id) (\s@HlsManifest' {} a -> s {id = a} :: HlsManifest)
+
+instance Data.FromJSON HlsManifest where
+  parseJSON =
+    Data.withObject
+      "HlsManifest"
+      ( \x ->
+          HlsManifest'
+            Prelude.<$> (x Data..:? "adMarkers")
+            Prelude.<*> (x Data..:? "adTriggers" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "adsOnDeliveryRestrictions")
+            Prelude.<*> (x Data..:? "includeIframeOnlyStream")
+            Prelude.<*> (x Data..:? "manifestName")
+            Prelude.<*> (x Data..:? "playlistType")
+            Prelude.<*> (x Data..:? "playlistWindowSeconds")
+            Prelude.<*> (x Data..:? "programDateTimeIntervalSeconds")
+            Prelude.<*> (x Data..:? "url")
+            Prelude.<*> (x Data..: "id")
+      )
+
+instance Prelude.Hashable HlsManifest where
+  hashWithSalt _salt HlsManifest' {..} =
+    _salt
+      `Prelude.hashWithSalt` adMarkers
+      `Prelude.hashWithSalt` adTriggers
+      `Prelude.hashWithSalt` adsOnDeliveryRestrictions
+      `Prelude.hashWithSalt` includeIframeOnlyStream
+      `Prelude.hashWithSalt` manifestName
+      `Prelude.hashWithSalt` playlistType
+      `Prelude.hashWithSalt` playlistWindowSeconds
+      `Prelude.hashWithSalt` programDateTimeIntervalSeconds
+      `Prelude.hashWithSalt` url
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData HlsManifest where
+  rnf HlsManifest' {..} =
+    Prelude.rnf adMarkers
+      `Prelude.seq` Prelude.rnf adTriggers
+      `Prelude.seq` Prelude.rnf adsOnDeliveryRestrictions
+      `Prelude.seq` Prelude.rnf includeIframeOnlyStream
+      `Prelude.seq` Prelude.rnf manifestName
+      `Prelude.seq` Prelude.rnf playlistType
+      `Prelude.seq` Prelude.rnf playlistWindowSeconds
+      `Prelude.seq` Prelude.rnf programDateTimeIntervalSeconds
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf id
diff --git a/gen/Amazonka/MediaPackage/Types/HlsManifestCreateOrUpdateParameters.hs b/gen/Amazonka/MediaPackage/Types/HlsManifestCreateOrUpdateParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/HlsManifestCreateOrUpdateParameters.hs
@@ -0,0 +1,251 @@
+{-# 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.MediaPackage.Types.HlsManifestCreateOrUpdateParameters
+-- 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.MediaPackage.Types.HlsManifestCreateOrUpdateParameters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.AdMarkers
+import Amazonka.MediaPackage.Types.AdTriggersElement
+import Amazonka.MediaPackage.Types.AdsOnDeliveryRestrictions
+import Amazonka.MediaPackage.Types.PlaylistType
+import qualified Amazonka.Prelude as Prelude
+
+-- | A HTTP Live Streaming (HLS) manifest configuration.
+--
+-- /See:/ 'newHlsManifestCreateOrUpdateParameters' smart constructor.
+data HlsManifestCreateOrUpdateParameters = HlsManifestCreateOrUpdateParameters'
+  { -- | This setting controls how ad markers are included in the packaged
+    -- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+    -- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+    -- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+    -- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+    -- blackout tags based on SCTE-35 messages in the input source.
+    -- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+    -- transition events in HLS and CMAF manifests. For this option, you must
+    -- set a programDateTimeIntervalSeconds value that is greater than 0.
+    adMarkers :: Prelude.Maybe AdMarkers,
+    adTriggers :: Prelude.Maybe [AdTriggersElement],
+    adsOnDeliveryRestrictions :: Prelude.Maybe AdsOnDeliveryRestrictions,
+    -- | When enabled, an I-Frame only stream will be included in the output.
+    includeIframeOnlyStream :: Prelude.Maybe Prelude.Bool,
+    -- | An optional short string appended to the end of the OriginEndpoint URL.
+    -- If not specified, defaults to the manifestName for the OriginEndpoint.
+    manifestName :: Prelude.Maybe Prelude.Text,
+    -- | The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+    -- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+    -- included in the media playlist.
+    playlistType :: Prelude.Maybe PlaylistType,
+    -- | Time window (in seconds) contained in each parent manifest.
+    playlistWindowSeconds :: Prelude.Maybe Prelude.Int,
+    -- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+    -- inserted into manifests. Additionally, when an interval is specified
+    -- ID3Timed Metadata messages will be generated every 5 seconds using the
+    -- ingest time of the content. If the interval is not specified, or set to
+    -- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+    -- and no ID3Timed Metadata messages will be generated. Note that
+    -- irrespective of this parameter, if any ID3 Timed Metadata is found in
+    -- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+    -- output.
+    programDateTimeIntervalSeconds :: Prelude.Maybe Prelude.Int,
+    -- | The ID of the manifest. The ID must be unique within the OriginEndpoint
+    -- and it cannot be changed after it is created.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsManifestCreateOrUpdateParameters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'adMarkers', 'hlsManifestCreateOrUpdateParameters_adMarkers' - This setting controls how ad markers are included in the packaged
+-- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+-- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+-- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+-- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+-- blackout tags based on SCTE-35 messages in the input source.
+-- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+-- transition events in HLS and CMAF manifests. For this option, you must
+-- set a programDateTimeIntervalSeconds value that is greater than 0.
+--
+-- 'adTriggers', 'hlsManifestCreateOrUpdateParameters_adTriggers' - Undocumented member.
+--
+-- 'adsOnDeliveryRestrictions', 'hlsManifestCreateOrUpdateParameters_adsOnDeliveryRestrictions' - Undocumented member.
+--
+-- 'includeIframeOnlyStream', 'hlsManifestCreateOrUpdateParameters_includeIframeOnlyStream' - When enabled, an I-Frame only stream will be included in the output.
+--
+-- 'manifestName', 'hlsManifestCreateOrUpdateParameters_manifestName' - An optional short string appended to the end of the OriginEndpoint URL.
+-- If not specified, defaults to the manifestName for the OriginEndpoint.
+--
+-- 'playlistType', 'hlsManifestCreateOrUpdateParameters_playlistType' - The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+-- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+-- included in the media playlist.
+--
+-- 'playlistWindowSeconds', 'hlsManifestCreateOrUpdateParameters_playlistWindowSeconds' - Time window (in seconds) contained in each parent manifest.
+--
+-- 'programDateTimeIntervalSeconds', 'hlsManifestCreateOrUpdateParameters_programDateTimeIntervalSeconds' - The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+-- inserted into manifests. Additionally, when an interval is specified
+-- ID3Timed Metadata messages will be generated every 5 seconds using the
+-- ingest time of the content. If the interval is not specified, or set to
+-- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+-- and no ID3Timed Metadata messages will be generated. Note that
+-- irrespective of this parameter, if any ID3 Timed Metadata is found in
+-- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+-- output.
+--
+-- 'id', 'hlsManifestCreateOrUpdateParameters_id' - The ID of the manifest. The ID must be unique within the OriginEndpoint
+-- and it cannot be changed after it is created.
+newHlsManifestCreateOrUpdateParameters ::
+  -- | 'id'
+  Prelude.Text ->
+  HlsManifestCreateOrUpdateParameters
+newHlsManifestCreateOrUpdateParameters pId_ =
+  HlsManifestCreateOrUpdateParameters'
+    { adMarkers =
+        Prelude.Nothing,
+      adTriggers = Prelude.Nothing,
+      adsOnDeliveryRestrictions =
+        Prelude.Nothing,
+      includeIframeOnlyStream =
+        Prelude.Nothing,
+      manifestName = Prelude.Nothing,
+      playlistType = Prelude.Nothing,
+      playlistWindowSeconds =
+        Prelude.Nothing,
+      programDateTimeIntervalSeconds =
+        Prelude.Nothing,
+      id = pId_
+    }
+
+-- | This setting controls how ad markers are included in the packaged
+-- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+-- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+-- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+-- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+-- blackout tags based on SCTE-35 messages in the input source.
+-- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+-- transition events in HLS and CMAF manifests. For this option, you must
+-- set a programDateTimeIntervalSeconds value that is greater than 0.
+hlsManifestCreateOrUpdateParameters_adMarkers :: Lens.Lens' HlsManifestCreateOrUpdateParameters (Prelude.Maybe AdMarkers)
+hlsManifestCreateOrUpdateParameters_adMarkers = Lens.lens (\HlsManifestCreateOrUpdateParameters' {adMarkers} -> adMarkers) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {adMarkers = a} :: HlsManifestCreateOrUpdateParameters)
+
+-- | Undocumented member.
+hlsManifestCreateOrUpdateParameters_adTriggers :: Lens.Lens' HlsManifestCreateOrUpdateParameters (Prelude.Maybe [AdTriggersElement])
+hlsManifestCreateOrUpdateParameters_adTriggers = Lens.lens (\HlsManifestCreateOrUpdateParameters' {adTriggers} -> adTriggers) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {adTriggers = a} :: HlsManifestCreateOrUpdateParameters) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+hlsManifestCreateOrUpdateParameters_adsOnDeliveryRestrictions :: Lens.Lens' HlsManifestCreateOrUpdateParameters (Prelude.Maybe AdsOnDeliveryRestrictions)
+hlsManifestCreateOrUpdateParameters_adsOnDeliveryRestrictions = Lens.lens (\HlsManifestCreateOrUpdateParameters' {adsOnDeliveryRestrictions} -> adsOnDeliveryRestrictions) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {adsOnDeliveryRestrictions = a} :: HlsManifestCreateOrUpdateParameters)
+
+-- | When enabled, an I-Frame only stream will be included in the output.
+hlsManifestCreateOrUpdateParameters_includeIframeOnlyStream :: Lens.Lens' HlsManifestCreateOrUpdateParameters (Prelude.Maybe Prelude.Bool)
+hlsManifestCreateOrUpdateParameters_includeIframeOnlyStream = Lens.lens (\HlsManifestCreateOrUpdateParameters' {includeIframeOnlyStream} -> includeIframeOnlyStream) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {includeIframeOnlyStream = a} :: HlsManifestCreateOrUpdateParameters)
+
+-- | An optional short string appended to the end of the OriginEndpoint URL.
+-- If not specified, defaults to the manifestName for the OriginEndpoint.
+hlsManifestCreateOrUpdateParameters_manifestName :: Lens.Lens' HlsManifestCreateOrUpdateParameters (Prelude.Maybe Prelude.Text)
+hlsManifestCreateOrUpdateParameters_manifestName = Lens.lens (\HlsManifestCreateOrUpdateParameters' {manifestName} -> manifestName) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {manifestName = a} :: HlsManifestCreateOrUpdateParameters)
+
+-- | The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+-- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+-- included in the media playlist.
+hlsManifestCreateOrUpdateParameters_playlistType :: Lens.Lens' HlsManifestCreateOrUpdateParameters (Prelude.Maybe PlaylistType)
+hlsManifestCreateOrUpdateParameters_playlistType = Lens.lens (\HlsManifestCreateOrUpdateParameters' {playlistType} -> playlistType) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {playlistType = a} :: HlsManifestCreateOrUpdateParameters)
+
+-- | Time window (in seconds) contained in each parent manifest.
+hlsManifestCreateOrUpdateParameters_playlistWindowSeconds :: Lens.Lens' HlsManifestCreateOrUpdateParameters (Prelude.Maybe Prelude.Int)
+hlsManifestCreateOrUpdateParameters_playlistWindowSeconds = Lens.lens (\HlsManifestCreateOrUpdateParameters' {playlistWindowSeconds} -> playlistWindowSeconds) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {playlistWindowSeconds = a} :: HlsManifestCreateOrUpdateParameters)
+
+-- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+-- inserted into manifests. Additionally, when an interval is specified
+-- ID3Timed Metadata messages will be generated every 5 seconds using the
+-- ingest time of the content. If the interval is not specified, or set to
+-- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+-- and no ID3Timed Metadata messages will be generated. Note that
+-- irrespective of this parameter, if any ID3 Timed Metadata is found in
+-- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+-- output.
+hlsManifestCreateOrUpdateParameters_programDateTimeIntervalSeconds :: Lens.Lens' HlsManifestCreateOrUpdateParameters (Prelude.Maybe Prelude.Int)
+hlsManifestCreateOrUpdateParameters_programDateTimeIntervalSeconds = Lens.lens (\HlsManifestCreateOrUpdateParameters' {programDateTimeIntervalSeconds} -> programDateTimeIntervalSeconds) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {programDateTimeIntervalSeconds = a} :: HlsManifestCreateOrUpdateParameters)
+
+-- | The ID of the manifest. The ID must be unique within the OriginEndpoint
+-- and it cannot be changed after it is created.
+hlsManifestCreateOrUpdateParameters_id :: Lens.Lens' HlsManifestCreateOrUpdateParameters Prelude.Text
+hlsManifestCreateOrUpdateParameters_id = Lens.lens (\HlsManifestCreateOrUpdateParameters' {id} -> id) (\s@HlsManifestCreateOrUpdateParameters' {} a -> s {id = a} :: HlsManifestCreateOrUpdateParameters)
+
+instance
+  Prelude.Hashable
+    HlsManifestCreateOrUpdateParameters
+  where
+  hashWithSalt
+    _salt
+    HlsManifestCreateOrUpdateParameters' {..} =
+      _salt
+        `Prelude.hashWithSalt` adMarkers
+        `Prelude.hashWithSalt` adTriggers
+        `Prelude.hashWithSalt` adsOnDeliveryRestrictions
+        `Prelude.hashWithSalt` includeIframeOnlyStream
+        `Prelude.hashWithSalt` manifestName
+        `Prelude.hashWithSalt` playlistType
+        `Prelude.hashWithSalt` playlistWindowSeconds
+        `Prelude.hashWithSalt` programDateTimeIntervalSeconds
+        `Prelude.hashWithSalt` id
+
+instance
+  Prelude.NFData
+    HlsManifestCreateOrUpdateParameters
+  where
+  rnf HlsManifestCreateOrUpdateParameters' {..} =
+    Prelude.rnf adMarkers
+      `Prelude.seq` Prelude.rnf adTriggers
+      `Prelude.seq` Prelude.rnf adsOnDeliveryRestrictions
+      `Prelude.seq` Prelude.rnf includeIframeOnlyStream
+      `Prelude.seq` Prelude.rnf manifestName
+      `Prelude.seq` Prelude.rnf playlistType
+      `Prelude.seq` Prelude.rnf playlistWindowSeconds
+      `Prelude.seq` Prelude.rnf programDateTimeIntervalSeconds
+      `Prelude.seq` Prelude.rnf id
+
+instance
+  Data.ToJSON
+    HlsManifestCreateOrUpdateParameters
+  where
+  toJSON HlsManifestCreateOrUpdateParameters' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adMarkers" Data..=) Prelude.<$> adMarkers,
+            ("adTriggers" Data..=) Prelude.<$> adTriggers,
+            ("adsOnDeliveryRestrictions" Data..=)
+              Prelude.<$> adsOnDeliveryRestrictions,
+            ("includeIframeOnlyStream" Data..=)
+              Prelude.<$> includeIframeOnlyStream,
+            ("manifestName" Data..=) Prelude.<$> manifestName,
+            ("playlistType" Data..=) Prelude.<$> playlistType,
+            ("playlistWindowSeconds" Data..=)
+              Prelude.<$> playlistWindowSeconds,
+            ("programDateTimeIntervalSeconds" Data..=)
+              Prelude.<$> programDateTimeIntervalSeconds,
+            Prelude.Just ("id" Data..= id)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/HlsPackage.hs b/gen/Amazonka/MediaPackage/Types/HlsPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/HlsPackage.hs
@@ -0,0 +1,296 @@
+{-# 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.MediaPackage.Types.HlsPackage
+-- 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.MediaPackage.Types.HlsPackage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.AdMarkers
+import Amazonka.MediaPackage.Types.AdTriggersElement
+import Amazonka.MediaPackage.Types.AdsOnDeliveryRestrictions
+import Amazonka.MediaPackage.Types.HlsEncryption
+import Amazonka.MediaPackage.Types.PlaylistType
+import Amazonka.MediaPackage.Types.StreamSelection
+import qualified Amazonka.Prelude as Prelude
+
+-- | An HTTP Live Streaming (HLS) packaging configuration.
+--
+-- /See:/ 'newHlsPackage' smart constructor.
+data HlsPackage = HlsPackage'
+  { -- | This setting controls how ad markers are included in the packaged
+    -- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+    -- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+    -- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+    -- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+    -- blackout tags based on SCTE-35 messages in the input source.
+    -- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+    -- transition events in HLS and CMAF manifests. For this option, you must
+    -- set a programDateTimeIntervalSeconds value that is greater than 0.
+    adMarkers :: Prelude.Maybe AdMarkers,
+    adTriggers :: Prelude.Maybe [AdTriggersElement],
+    adsOnDeliveryRestrictions :: Prelude.Maybe AdsOnDeliveryRestrictions,
+    encryption :: Prelude.Maybe HlsEncryption,
+    -- | When enabled, MediaPackage passes through digital video broadcasting
+    -- (DVB) subtitles into the output.
+    includeDvbSubtitles :: Prelude.Maybe Prelude.Bool,
+    -- | When enabled, an I-Frame only stream will be included in the output.
+    includeIframeOnlyStream :: Prelude.Maybe Prelude.Bool,
+    -- | The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+    -- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+    -- included in the media playlist.
+    playlistType :: Prelude.Maybe PlaylistType,
+    -- | Time window (in seconds) contained in each parent manifest.
+    playlistWindowSeconds :: Prelude.Maybe Prelude.Int,
+    -- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+    -- inserted into manifests. Additionally, when an interval is specified
+    -- ID3Timed Metadata messages will be generated every 5 seconds using the
+    -- ingest time of the content. If the interval is not specified, or set to
+    -- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+    -- and no ID3Timed Metadata messages will be generated. Note that
+    -- irrespective of this parameter, if any ID3 Timed Metadata is found in
+    -- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+    -- output.
+    programDateTimeIntervalSeconds :: Prelude.Maybe Prelude.Int,
+    -- | Duration (in seconds) of each fragment. Actual fragments will be rounded
+    -- to the nearest multiple of the source fragment duration.
+    segmentDurationSeconds :: Prelude.Maybe Prelude.Int,
+    streamSelection :: Prelude.Maybe StreamSelection,
+    -- | When enabled, audio streams will be placed in rendition groups in the
+    -- output.
+    useAudioRenditionGroup :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'HlsPackage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'adMarkers', 'hlsPackage_adMarkers' - This setting controls how ad markers are included in the packaged
+-- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+-- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+-- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+-- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+-- blackout tags based on SCTE-35 messages in the input source.
+-- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+-- transition events in HLS and CMAF manifests. For this option, you must
+-- set a programDateTimeIntervalSeconds value that is greater than 0.
+--
+-- 'adTriggers', 'hlsPackage_adTriggers' - Undocumented member.
+--
+-- 'adsOnDeliveryRestrictions', 'hlsPackage_adsOnDeliveryRestrictions' - Undocumented member.
+--
+-- 'encryption', 'hlsPackage_encryption' - Undocumented member.
+--
+-- 'includeDvbSubtitles', 'hlsPackage_includeDvbSubtitles' - When enabled, MediaPackage passes through digital video broadcasting
+-- (DVB) subtitles into the output.
+--
+-- 'includeIframeOnlyStream', 'hlsPackage_includeIframeOnlyStream' - When enabled, an I-Frame only stream will be included in the output.
+--
+-- 'playlistType', 'hlsPackage_playlistType' - The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+-- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+-- included in the media playlist.
+--
+-- 'playlistWindowSeconds', 'hlsPackage_playlistWindowSeconds' - Time window (in seconds) contained in each parent manifest.
+--
+-- 'programDateTimeIntervalSeconds', 'hlsPackage_programDateTimeIntervalSeconds' - The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+-- inserted into manifests. Additionally, when an interval is specified
+-- ID3Timed Metadata messages will be generated every 5 seconds using the
+-- ingest time of the content. If the interval is not specified, or set to
+-- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+-- and no ID3Timed Metadata messages will be generated. Note that
+-- irrespective of this parameter, if any ID3 Timed Metadata is found in
+-- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+-- output.
+--
+-- 'segmentDurationSeconds', 'hlsPackage_segmentDurationSeconds' - Duration (in seconds) of each fragment. Actual fragments will be rounded
+-- to the nearest multiple of the source fragment duration.
+--
+-- 'streamSelection', 'hlsPackage_streamSelection' - Undocumented member.
+--
+-- 'useAudioRenditionGroup', 'hlsPackage_useAudioRenditionGroup' - When enabled, audio streams will be placed in rendition groups in the
+-- output.
+newHlsPackage ::
+  HlsPackage
+newHlsPackage =
+  HlsPackage'
+    { adMarkers = Prelude.Nothing,
+      adTriggers = Prelude.Nothing,
+      adsOnDeliveryRestrictions = Prelude.Nothing,
+      encryption = Prelude.Nothing,
+      includeDvbSubtitles = Prelude.Nothing,
+      includeIframeOnlyStream = Prelude.Nothing,
+      playlistType = Prelude.Nothing,
+      playlistWindowSeconds = Prelude.Nothing,
+      programDateTimeIntervalSeconds = Prelude.Nothing,
+      segmentDurationSeconds = Prelude.Nothing,
+      streamSelection = Prelude.Nothing,
+      useAudioRenditionGroup = Prelude.Nothing
+    }
+
+-- | This setting controls how ad markers are included in the packaged
+-- OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the
+-- output. \"PASSTHROUGH\" causes the manifest to contain a copy of the
+-- SCTE-35 ad markers (comments) taken directly from the input HTTP Live
+-- Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and
+-- blackout tags based on SCTE-35 messages in the input source.
+-- \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program
+-- transition events in HLS and CMAF manifests. For this option, you must
+-- set a programDateTimeIntervalSeconds value that is greater than 0.
+hlsPackage_adMarkers :: Lens.Lens' HlsPackage (Prelude.Maybe AdMarkers)
+hlsPackage_adMarkers = Lens.lens (\HlsPackage' {adMarkers} -> adMarkers) (\s@HlsPackage' {} a -> s {adMarkers = a} :: HlsPackage)
+
+-- | Undocumented member.
+hlsPackage_adTriggers :: Lens.Lens' HlsPackage (Prelude.Maybe [AdTriggersElement])
+hlsPackage_adTriggers = Lens.lens (\HlsPackage' {adTriggers} -> adTriggers) (\s@HlsPackage' {} a -> s {adTriggers = a} :: HlsPackage) Prelude.. Lens.mapping Lens.coerced
+
+-- | Undocumented member.
+hlsPackage_adsOnDeliveryRestrictions :: Lens.Lens' HlsPackage (Prelude.Maybe AdsOnDeliveryRestrictions)
+hlsPackage_adsOnDeliveryRestrictions = Lens.lens (\HlsPackage' {adsOnDeliveryRestrictions} -> adsOnDeliveryRestrictions) (\s@HlsPackage' {} a -> s {adsOnDeliveryRestrictions = a} :: HlsPackage)
+
+-- | Undocumented member.
+hlsPackage_encryption :: Lens.Lens' HlsPackage (Prelude.Maybe HlsEncryption)
+hlsPackage_encryption = Lens.lens (\HlsPackage' {encryption} -> encryption) (\s@HlsPackage' {} a -> s {encryption = a} :: HlsPackage)
+
+-- | When enabled, MediaPackage passes through digital video broadcasting
+-- (DVB) subtitles into the output.
+hlsPackage_includeDvbSubtitles :: Lens.Lens' HlsPackage (Prelude.Maybe Prelude.Bool)
+hlsPackage_includeDvbSubtitles = Lens.lens (\HlsPackage' {includeDvbSubtitles} -> includeDvbSubtitles) (\s@HlsPackage' {} a -> s {includeDvbSubtitles = a} :: HlsPackage)
+
+-- | When enabled, an I-Frame only stream will be included in the output.
+hlsPackage_includeIframeOnlyStream :: Lens.Lens' HlsPackage (Prelude.Maybe Prelude.Bool)
+hlsPackage_includeIframeOnlyStream = Lens.lens (\HlsPackage' {includeIframeOnlyStream} -> includeIframeOnlyStream) (\s@HlsPackage' {} a -> s {includeIframeOnlyStream = a} :: HlsPackage)
+
+-- | The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or
+-- \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be
+-- included in the media playlist.
+hlsPackage_playlistType :: Lens.Lens' HlsPackage (Prelude.Maybe PlaylistType)
+hlsPackage_playlistType = Lens.lens (\HlsPackage' {playlistType} -> playlistType) (\s@HlsPackage' {} a -> s {playlistType = a} :: HlsPackage)
+
+-- | Time window (in seconds) contained in each parent manifest.
+hlsPackage_playlistWindowSeconds :: Lens.Lens' HlsPackage (Prelude.Maybe Prelude.Int)
+hlsPackage_playlistWindowSeconds = Lens.lens (\HlsPackage' {playlistWindowSeconds} -> playlistWindowSeconds) (\s@HlsPackage' {} a -> s {playlistWindowSeconds = a} :: HlsPackage)
+
+-- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag
+-- inserted into manifests. Additionally, when an interval is specified
+-- ID3Timed Metadata messages will be generated every 5 seconds using the
+-- ingest time of the content. If the interval is not specified, or set to
+-- 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests
+-- and no ID3Timed Metadata messages will be generated. Note that
+-- irrespective of this parameter, if any ID3 Timed Metadata is found in
+-- HTTP Live Streaming (HLS) input, it will be passed through to HLS
+-- output.
+hlsPackage_programDateTimeIntervalSeconds :: Lens.Lens' HlsPackage (Prelude.Maybe Prelude.Int)
+hlsPackage_programDateTimeIntervalSeconds = Lens.lens (\HlsPackage' {programDateTimeIntervalSeconds} -> programDateTimeIntervalSeconds) (\s@HlsPackage' {} a -> s {programDateTimeIntervalSeconds = a} :: HlsPackage)
+
+-- | Duration (in seconds) of each fragment. Actual fragments will be rounded
+-- to the nearest multiple of the source fragment duration.
+hlsPackage_segmentDurationSeconds :: Lens.Lens' HlsPackage (Prelude.Maybe Prelude.Int)
+hlsPackage_segmentDurationSeconds = Lens.lens (\HlsPackage' {segmentDurationSeconds} -> segmentDurationSeconds) (\s@HlsPackage' {} a -> s {segmentDurationSeconds = a} :: HlsPackage)
+
+-- | Undocumented member.
+hlsPackage_streamSelection :: Lens.Lens' HlsPackage (Prelude.Maybe StreamSelection)
+hlsPackage_streamSelection = Lens.lens (\HlsPackage' {streamSelection} -> streamSelection) (\s@HlsPackage' {} a -> s {streamSelection = a} :: HlsPackage)
+
+-- | When enabled, audio streams will be placed in rendition groups in the
+-- output.
+hlsPackage_useAudioRenditionGroup :: Lens.Lens' HlsPackage (Prelude.Maybe Prelude.Bool)
+hlsPackage_useAudioRenditionGroup = Lens.lens (\HlsPackage' {useAudioRenditionGroup} -> useAudioRenditionGroup) (\s@HlsPackage' {} a -> s {useAudioRenditionGroup = a} :: HlsPackage)
+
+instance Data.FromJSON HlsPackage where
+  parseJSON =
+    Data.withObject
+      "HlsPackage"
+      ( \x ->
+          HlsPackage'
+            Prelude.<$> (x Data..:? "adMarkers")
+            Prelude.<*> (x Data..:? "adTriggers" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "adsOnDeliveryRestrictions")
+            Prelude.<*> (x Data..:? "encryption")
+            Prelude.<*> (x Data..:? "includeDvbSubtitles")
+            Prelude.<*> (x Data..:? "includeIframeOnlyStream")
+            Prelude.<*> (x Data..:? "playlistType")
+            Prelude.<*> (x Data..:? "playlistWindowSeconds")
+            Prelude.<*> (x Data..:? "programDateTimeIntervalSeconds")
+            Prelude.<*> (x Data..:? "segmentDurationSeconds")
+            Prelude.<*> (x Data..:? "streamSelection")
+            Prelude.<*> (x Data..:? "useAudioRenditionGroup")
+      )
+
+instance Prelude.Hashable HlsPackage where
+  hashWithSalt _salt HlsPackage' {..} =
+    _salt
+      `Prelude.hashWithSalt` adMarkers
+      `Prelude.hashWithSalt` adTriggers
+      `Prelude.hashWithSalt` adsOnDeliveryRestrictions
+      `Prelude.hashWithSalt` encryption
+      `Prelude.hashWithSalt` includeDvbSubtitles
+      `Prelude.hashWithSalt` includeIframeOnlyStream
+      `Prelude.hashWithSalt` playlistType
+      `Prelude.hashWithSalt` playlistWindowSeconds
+      `Prelude.hashWithSalt` programDateTimeIntervalSeconds
+      `Prelude.hashWithSalt` segmentDurationSeconds
+      `Prelude.hashWithSalt` streamSelection
+      `Prelude.hashWithSalt` useAudioRenditionGroup
+
+instance Prelude.NFData HlsPackage where
+  rnf HlsPackage' {..} =
+    Prelude.rnf adMarkers
+      `Prelude.seq` Prelude.rnf adTriggers
+      `Prelude.seq` Prelude.rnf adsOnDeliveryRestrictions
+      `Prelude.seq` Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf includeDvbSubtitles
+      `Prelude.seq` Prelude.rnf includeIframeOnlyStream
+      `Prelude.seq` Prelude.rnf playlistType
+      `Prelude.seq` Prelude.rnf playlistWindowSeconds
+      `Prelude.seq` Prelude.rnf programDateTimeIntervalSeconds
+      `Prelude.seq` Prelude.rnf segmentDurationSeconds
+      `Prelude.seq` Prelude.rnf streamSelection
+      `Prelude.seq` Prelude.rnf useAudioRenditionGroup
+
+instance Data.ToJSON HlsPackage where
+  toJSON HlsPackage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("adMarkers" Data..=) Prelude.<$> adMarkers,
+            ("adTriggers" Data..=) Prelude.<$> adTriggers,
+            ("adsOnDeliveryRestrictions" Data..=)
+              Prelude.<$> adsOnDeliveryRestrictions,
+            ("encryption" Data..=) Prelude.<$> encryption,
+            ("includeDvbSubtitles" Data..=)
+              Prelude.<$> includeDvbSubtitles,
+            ("includeIframeOnlyStream" Data..=)
+              Prelude.<$> includeIframeOnlyStream,
+            ("playlistType" Data..=) Prelude.<$> playlistType,
+            ("playlistWindowSeconds" Data..=)
+              Prelude.<$> playlistWindowSeconds,
+            ("programDateTimeIntervalSeconds" Data..=)
+              Prelude.<$> programDateTimeIntervalSeconds,
+            ("segmentDurationSeconds" Data..=)
+              Prelude.<$> segmentDurationSeconds,
+            ("streamSelection" Data..=)
+              Prelude.<$> streamSelection,
+            ("useAudioRenditionGroup" Data..=)
+              Prelude.<$> useAudioRenditionGroup
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/IngestEndpoint.hs b/gen/Amazonka/MediaPackage/Types/IngestEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/IngestEndpoint.hs
@@ -0,0 +1,108 @@
+{-# 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.MediaPackage.Types.IngestEndpoint
+-- 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.MediaPackage.Types.IngestEndpoint 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
+
+-- | An endpoint for ingesting source content for a Channel.
+--
+-- /See:/ 'newIngestEndpoint' smart constructor.
+data IngestEndpoint = IngestEndpoint'
+  { -- | The system generated unique identifier for the IngestEndpoint
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The system generated password for ingest authentication.
+    password :: Prelude.Maybe Prelude.Text,
+    -- | The ingest URL to which the source stream should be sent.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | The system generated username for ingest authentication.
+    username :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IngestEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'id', 'ingestEndpoint_id' - The system generated unique identifier for the IngestEndpoint
+--
+-- 'password', 'ingestEndpoint_password' - The system generated password for ingest authentication.
+--
+-- 'url', 'ingestEndpoint_url' - The ingest URL to which the source stream should be sent.
+--
+-- 'username', 'ingestEndpoint_username' - The system generated username for ingest authentication.
+newIngestEndpoint ::
+  IngestEndpoint
+newIngestEndpoint =
+  IngestEndpoint'
+    { id = Prelude.Nothing,
+      password = Prelude.Nothing,
+      url = Prelude.Nothing,
+      username = Prelude.Nothing
+    }
+
+-- | The system generated unique identifier for the IngestEndpoint
+ingestEndpoint_id :: Lens.Lens' IngestEndpoint (Prelude.Maybe Prelude.Text)
+ingestEndpoint_id = Lens.lens (\IngestEndpoint' {id} -> id) (\s@IngestEndpoint' {} a -> s {id = a} :: IngestEndpoint)
+
+-- | The system generated password for ingest authentication.
+ingestEndpoint_password :: Lens.Lens' IngestEndpoint (Prelude.Maybe Prelude.Text)
+ingestEndpoint_password = Lens.lens (\IngestEndpoint' {password} -> password) (\s@IngestEndpoint' {} a -> s {password = a} :: IngestEndpoint)
+
+-- | The ingest URL to which the source stream should be sent.
+ingestEndpoint_url :: Lens.Lens' IngestEndpoint (Prelude.Maybe Prelude.Text)
+ingestEndpoint_url = Lens.lens (\IngestEndpoint' {url} -> url) (\s@IngestEndpoint' {} a -> s {url = a} :: IngestEndpoint)
+
+-- | The system generated username for ingest authentication.
+ingestEndpoint_username :: Lens.Lens' IngestEndpoint (Prelude.Maybe Prelude.Text)
+ingestEndpoint_username = Lens.lens (\IngestEndpoint' {username} -> username) (\s@IngestEndpoint' {} a -> s {username = a} :: IngestEndpoint)
+
+instance Data.FromJSON IngestEndpoint where
+  parseJSON =
+    Data.withObject
+      "IngestEndpoint"
+      ( \x ->
+          IngestEndpoint'
+            Prelude.<$> (x Data..:? "id")
+            Prelude.<*> (x Data..:? "password")
+            Prelude.<*> (x Data..:? "url")
+            Prelude.<*> (x Data..:? "username")
+      )
+
+instance Prelude.Hashable IngestEndpoint where
+  hashWithSalt _salt IngestEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` password
+      `Prelude.hashWithSalt` url
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData IngestEndpoint where
+  rnf IngestEndpoint' {..} =
+    Prelude.rnf id
+      `Prelude.seq` Prelude.rnf password
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf username
diff --git a/gen/Amazonka/MediaPackage/Types/IngressAccessLogs.hs b/gen/Amazonka/MediaPackage/Types/IngressAccessLogs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/IngressAccessLogs.hs
@@ -0,0 +1,75 @@
+{-# 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.MediaPackage.Types.IngressAccessLogs
+-- 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.MediaPackage.Types.IngressAccessLogs 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
+
+-- | Configure ingress access logging.
+--
+-- /See:/ 'newIngressAccessLogs' smart constructor.
+data IngressAccessLogs = IngressAccessLogs'
+  { -- | Customize the log group name.
+    logGroupName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IngressAccessLogs' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'logGroupName', 'ingressAccessLogs_logGroupName' - Customize the log group name.
+newIngressAccessLogs ::
+  IngressAccessLogs
+newIngressAccessLogs =
+  IngressAccessLogs' {logGroupName = Prelude.Nothing}
+
+-- | Customize the log group name.
+ingressAccessLogs_logGroupName :: Lens.Lens' IngressAccessLogs (Prelude.Maybe Prelude.Text)
+ingressAccessLogs_logGroupName = Lens.lens (\IngressAccessLogs' {logGroupName} -> logGroupName) (\s@IngressAccessLogs' {} a -> s {logGroupName = a} :: IngressAccessLogs)
+
+instance Data.FromJSON IngressAccessLogs where
+  parseJSON =
+    Data.withObject
+      "IngressAccessLogs"
+      ( \x ->
+          IngressAccessLogs'
+            Prelude.<$> (x Data..:? "logGroupName")
+      )
+
+instance Prelude.Hashable IngressAccessLogs where
+  hashWithSalt _salt IngressAccessLogs' {..} =
+    _salt `Prelude.hashWithSalt` logGroupName
+
+instance Prelude.NFData IngressAccessLogs where
+  rnf IngressAccessLogs' {..} = Prelude.rnf logGroupName
+
+instance Data.ToJSON IngressAccessLogs where
+  toJSON IngressAccessLogs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("logGroupName" Data..=) Prelude.<$> logGroupName]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/ManifestLayout.hs b/gen/Amazonka/MediaPackage/Types/ManifestLayout.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/ManifestLayout.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.MediaPackage.Types.ManifestLayout
+-- 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.MediaPackage.Types.ManifestLayout
+  ( ManifestLayout
+      ( ..,
+        ManifestLayout_COMPACT,
+        ManifestLayout_FULL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ManifestLayout = ManifestLayout'
+  { fromManifestLayout ::
+      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 ManifestLayout_COMPACT :: ManifestLayout
+pattern ManifestLayout_COMPACT = ManifestLayout' "COMPACT"
+
+pattern ManifestLayout_FULL :: ManifestLayout
+pattern ManifestLayout_FULL = ManifestLayout' "FULL"
+
+{-# COMPLETE
+  ManifestLayout_COMPACT,
+  ManifestLayout_FULL,
+  ManifestLayout'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/MssEncryption.hs b/gen/Amazonka/MediaPackage/Types/MssEncryption.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/MssEncryption.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.MediaPackage.Types.MssEncryption
+-- 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.MediaPackage.Types.MssEncryption where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.SpekeKeyProvider
+import qualified Amazonka.Prelude as Prelude
+
+-- | A Microsoft Smooth Streaming (MSS) encryption configuration.
+--
+-- /See:/ 'newMssEncryption' smart constructor.
+data MssEncryption = MssEncryption'
+  { spekeKeyProvider :: SpekeKeyProvider
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MssEncryption' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'spekeKeyProvider', 'mssEncryption_spekeKeyProvider' - Undocumented member.
+newMssEncryption ::
+  -- | 'spekeKeyProvider'
+  SpekeKeyProvider ->
+  MssEncryption
+newMssEncryption pSpekeKeyProvider_ =
+  MssEncryption'
+    { spekeKeyProvider =
+        pSpekeKeyProvider_
+    }
+
+-- | Undocumented member.
+mssEncryption_spekeKeyProvider :: Lens.Lens' MssEncryption SpekeKeyProvider
+mssEncryption_spekeKeyProvider = Lens.lens (\MssEncryption' {spekeKeyProvider} -> spekeKeyProvider) (\s@MssEncryption' {} a -> s {spekeKeyProvider = a} :: MssEncryption)
+
+instance Data.FromJSON MssEncryption where
+  parseJSON =
+    Data.withObject
+      "MssEncryption"
+      ( \x ->
+          MssEncryption'
+            Prelude.<$> (x Data..: "spekeKeyProvider")
+      )
+
+instance Prelude.Hashable MssEncryption where
+  hashWithSalt _salt MssEncryption' {..} =
+    _salt `Prelude.hashWithSalt` spekeKeyProvider
+
+instance Prelude.NFData MssEncryption where
+  rnf MssEncryption' {..} = Prelude.rnf spekeKeyProvider
+
+instance Data.ToJSON MssEncryption where
+  toJSON MssEncryption' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("spekeKeyProvider" Data..= spekeKeyProvider)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/MssPackage.hs b/gen/Amazonka/MediaPackage/Types/MssPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/MssPackage.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.MediaPackage.Types.MssPackage
+-- 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.MediaPackage.Types.MssPackage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.MssEncryption
+import Amazonka.MediaPackage.Types.StreamSelection
+import qualified Amazonka.Prelude as Prelude
+
+-- | A Microsoft Smooth Streaming (MSS) packaging configuration.
+--
+-- /See:/ 'newMssPackage' smart constructor.
+data MssPackage = MssPackage'
+  { encryption :: Prelude.Maybe MssEncryption,
+    -- | The time window (in seconds) contained in each manifest.
+    manifestWindowSeconds :: Prelude.Maybe Prelude.Int,
+    -- | The duration (in seconds) of each segment.
+    segmentDurationSeconds :: Prelude.Maybe Prelude.Int,
+    streamSelection :: Prelude.Maybe StreamSelection
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MssPackage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'encryption', 'mssPackage_encryption' - Undocumented member.
+--
+-- 'manifestWindowSeconds', 'mssPackage_manifestWindowSeconds' - The time window (in seconds) contained in each manifest.
+--
+-- 'segmentDurationSeconds', 'mssPackage_segmentDurationSeconds' - The duration (in seconds) of each segment.
+--
+-- 'streamSelection', 'mssPackage_streamSelection' - Undocumented member.
+newMssPackage ::
+  MssPackage
+newMssPackage =
+  MssPackage'
+    { encryption = Prelude.Nothing,
+      manifestWindowSeconds = Prelude.Nothing,
+      segmentDurationSeconds = Prelude.Nothing,
+      streamSelection = Prelude.Nothing
+    }
+
+-- | Undocumented member.
+mssPackage_encryption :: Lens.Lens' MssPackage (Prelude.Maybe MssEncryption)
+mssPackage_encryption = Lens.lens (\MssPackage' {encryption} -> encryption) (\s@MssPackage' {} a -> s {encryption = a} :: MssPackage)
+
+-- | The time window (in seconds) contained in each manifest.
+mssPackage_manifestWindowSeconds :: Lens.Lens' MssPackage (Prelude.Maybe Prelude.Int)
+mssPackage_manifestWindowSeconds = Lens.lens (\MssPackage' {manifestWindowSeconds} -> manifestWindowSeconds) (\s@MssPackage' {} a -> s {manifestWindowSeconds = a} :: MssPackage)
+
+-- | The duration (in seconds) of each segment.
+mssPackage_segmentDurationSeconds :: Lens.Lens' MssPackage (Prelude.Maybe Prelude.Int)
+mssPackage_segmentDurationSeconds = Lens.lens (\MssPackage' {segmentDurationSeconds} -> segmentDurationSeconds) (\s@MssPackage' {} a -> s {segmentDurationSeconds = a} :: MssPackage)
+
+-- | Undocumented member.
+mssPackage_streamSelection :: Lens.Lens' MssPackage (Prelude.Maybe StreamSelection)
+mssPackage_streamSelection = Lens.lens (\MssPackage' {streamSelection} -> streamSelection) (\s@MssPackage' {} a -> s {streamSelection = a} :: MssPackage)
+
+instance Data.FromJSON MssPackage where
+  parseJSON =
+    Data.withObject
+      "MssPackage"
+      ( \x ->
+          MssPackage'
+            Prelude.<$> (x Data..:? "encryption")
+            Prelude.<*> (x Data..:? "manifestWindowSeconds")
+            Prelude.<*> (x Data..:? "segmentDurationSeconds")
+            Prelude.<*> (x Data..:? "streamSelection")
+      )
+
+instance Prelude.Hashable MssPackage where
+  hashWithSalt _salt MssPackage' {..} =
+    _salt
+      `Prelude.hashWithSalt` encryption
+      `Prelude.hashWithSalt` manifestWindowSeconds
+      `Prelude.hashWithSalt` segmentDurationSeconds
+      `Prelude.hashWithSalt` streamSelection
+
+instance Prelude.NFData MssPackage where
+  rnf MssPackage' {..} =
+    Prelude.rnf encryption
+      `Prelude.seq` Prelude.rnf manifestWindowSeconds
+      `Prelude.seq` Prelude.rnf segmentDurationSeconds
+      `Prelude.seq` Prelude.rnf streamSelection
+
+instance Data.ToJSON MssPackage where
+  toJSON MssPackage' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("encryption" Data..=) Prelude.<$> encryption,
+            ("manifestWindowSeconds" Data..=)
+              Prelude.<$> manifestWindowSeconds,
+            ("segmentDurationSeconds" Data..=)
+              Prelude.<$> segmentDurationSeconds,
+            ("streamSelection" Data..=)
+              Prelude.<$> streamSelection
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/OriginEndpoint.hs b/gen/Amazonka/MediaPackage/Types/OriginEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/OriginEndpoint.hs
@@ -0,0 +1,279 @@
+{-# 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.MediaPackage.Types.OriginEndpoint
+-- 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.MediaPackage.Types.OriginEndpoint where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.Authorization
+import Amazonka.MediaPackage.Types.CmafPackage
+import Amazonka.MediaPackage.Types.DashPackage
+import Amazonka.MediaPackage.Types.HlsPackage
+import Amazonka.MediaPackage.Types.MssPackage
+import Amazonka.MediaPackage.Types.Origination
+import qualified Amazonka.Prelude as Prelude
+
+-- | An OriginEndpoint resource configuration.
+--
+-- /See:/ 'newOriginEndpoint' smart constructor.
+data OriginEndpoint = OriginEndpoint'
+  { -- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+    arn :: Prelude.Maybe Prelude.Text,
+    authorization :: Prelude.Maybe Authorization,
+    -- | The ID of the Channel the OriginEndpoint is associated with.
+    channelId :: Prelude.Maybe Prelude.Text,
+    cmafPackage :: Prelude.Maybe CmafPackage,
+    dashPackage :: Prelude.Maybe DashPackage,
+    -- | A short text description of the OriginEndpoint.
+    description :: Prelude.Maybe Prelude.Text,
+    hlsPackage :: Prelude.Maybe HlsPackage,
+    -- | The ID of the OriginEndpoint.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | A short string appended to the end of the OriginEndpoint URL.
+    manifestName :: Prelude.Maybe Prelude.Text,
+    mssPackage :: Prelude.Maybe MssPackage,
+    -- | Control whether origination of video is allowed for this OriginEndpoint.
+    -- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+    -- other form of access control. If set to DENY, the OriginEndpoint may not
+    -- be requested. This can be helpful for Live to VOD harvesting, or for
+    -- temporarily disabling origination
+    origination :: Prelude.Maybe Origination,
+    -- | Maximum duration (seconds) of content to retain for startover playback.
+    -- If not specified, startover playback will be disabled for the
+    -- OriginEndpoint.
+    startoverWindowSeconds :: Prelude.Maybe Prelude.Int,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Amount of delay (seconds) to enforce on the playback of live content. If
+    -- not specified, there will be no time delay in effect for the
+    -- OriginEndpoint.
+    timeDelaySeconds :: Prelude.Maybe Prelude.Int,
+    -- | The URL of the packaged OriginEndpoint for consumption.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | A list of source IP CIDR blocks that will be allowed to access the
+    -- OriginEndpoint.
+    whitelist :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OriginEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'originEndpoint_arn' - The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+--
+-- 'authorization', 'originEndpoint_authorization' - Undocumented member.
+--
+-- 'channelId', 'originEndpoint_channelId' - The ID of the Channel the OriginEndpoint is associated with.
+--
+-- 'cmafPackage', 'originEndpoint_cmafPackage' - Undocumented member.
+--
+-- 'dashPackage', 'originEndpoint_dashPackage' - Undocumented member.
+--
+-- 'description', 'originEndpoint_description' - A short text description of the OriginEndpoint.
+--
+-- 'hlsPackage', 'originEndpoint_hlsPackage' - Undocumented member.
+--
+-- 'id', 'originEndpoint_id' - The ID of the OriginEndpoint.
+--
+-- 'manifestName', 'originEndpoint_manifestName' - A short string appended to the end of the OriginEndpoint URL.
+--
+-- 'mssPackage', 'originEndpoint_mssPackage' - Undocumented member.
+--
+-- 'origination', 'originEndpoint_origination' - Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+--
+-- 'startoverWindowSeconds', 'originEndpoint_startoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+--
+-- 'tags', 'originEndpoint_tags' - Undocumented member.
+--
+-- 'timeDelaySeconds', 'originEndpoint_timeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+--
+-- 'url', 'originEndpoint_url' - The URL of the packaged OriginEndpoint for consumption.
+--
+-- 'whitelist', 'originEndpoint_whitelist' - A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+newOriginEndpoint ::
+  OriginEndpoint
+newOriginEndpoint =
+  OriginEndpoint'
+    { arn = Prelude.Nothing,
+      authorization = Prelude.Nothing,
+      channelId = Prelude.Nothing,
+      cmafPackage = Prelude.Nothing,
+      dashPackage = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hlsPackage = Prelude.Nothing,
+      id = Prelude.Nothing,
+      manifestName = Prelude.Nothing,
+      mssPackage = Prelude.Nothing,
+      origination = Prelude.Nothing,
+      startoverWindowSeconds = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      timeDelaySeconds = Prelude.Nothing,
+      url = Prelude.Nothing,
+      whitelist = Prelude.Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+originEndpoint_arn :: Lens.Lens' OriginEndpoint (Prelude.Maybe Prelude.Text)
+originEndpoint_arn = Lens.lens (\OriginEndpoint' {arn} -> arn) (\s@OriginEndpoint' {} a -> s {arn = a} :: OriginEndpoint)
+
+-- | Undocumented member.
+originEndpoint_authorization :: Lens.Lens' OriginEndpoint (Prelude.Maybe Authorization)
+originEndpoint_authorization = Lens.lens (\OriginEndpoint' {authorization} -> authorization) (\s@OriginEndpoint' {} a -> s {authorization = a} :: OriginEndpoint)
+
+-- | The ID of the Channel the OriginEndpoint is associated with.
+originEndpoint_channelId :: Lens.Lens' OriginEndpoint (Prelude.Maybe Prelude.Text)
+originEndpoint_channelId = Lens.lens (\OriginEndpoint' {channelId} -> channelId) (\s@OriginEndpoint' {} a -> s {channelId = a} :: OriginEndpoint)
+
+-- | Undocumented member.
+originEndpoint_cmafPackage :: Lens.Lens' OriginEndpoint (Prelude.Maybe CmafPackage)
+originEndpoint_cmafPackage = Lens.lens (\OriginEndpoint' {cmafPackage} -> cmafPackage) (\s@OriginEndpoint' {} a -> s {cmafPackage = a} :: OriginEndpoint)
+
+-- | Undocumented member.
+originEndpoint_dashPackage :: Lens.Lens' OriginEndpoint (Prelude.Maybe DashPackage)
+originEndpoint_dashPackage = Lens.lens (\OriginEndpoint' {dashPackage} -> dashPackage) (\s@OriginEndpoint' {} a -> s {dashPackage = a} :: OriginEndpoint)
+
+-- | A short text description of the OriginEndpoint.
+originEndpoint_description :: Lens.Lens' OriginEndpoint (Prelude.Maybe Prelude.Text)
+originEndpoint_description = Lens.lens (\OriginEndpoint' {description} -> description) (\s@OriginEndpoint' {} a -> s {description = a} :: OriginEndpoint)
+
+-- | Undocumented member.
+originEndpoint_hlsPackage :: Lens.Lens' OriginEndpoint (Prelude.Maybe HlsPackage)
+originEndpoint_hlsPackage = Lens.lens (\OriginEndpoint' {hlsPackage} -> hlsPackage) (\s@OriginEndpoint' {} a -> s {hlsPackage = a} :: OriginEndpoint)
+
+-- | The ID of the OriginEndpoint.
+originEndpoint_id :: Lens.Lens' OriginEndpoint (Prelude.Maybe Prelude.Text)
+originEndpoint_id = Lens.lens (\OriginEndpoint' {id} -> id) (\s@OriginEndpoint' {} a -> s {id = a} :: OriginEndpoint)
+
+-- | A short string appended to the end of the OriginEndpoint URL.
+originEndpoint_manifestName :: Lens.Lens' OriginEndpoint (Prelude.Maybe Prelude.Text)
+originEndpoint_manifestName = Lens.lens (\OriginEndpoint' {manifestName} -> manifestName) (\s@OriginEndpoint' {} a -> s {manifestName = a} :: OriginEndpoint)
+
+-- | Undocumented member.
+originEndpoint_mssPackage :: Lens.Lens' OriginEndpoint (Prelude.Maybe MssPackage)
+originEndpoint_mssPackage = Lens.lens (\OriginEndpoint' {mssPackage} -> mssPackage) (\s@OriginEndpoint' {} a -> s {mssPackage = a} :: OriginEndpoint)
+
+-- | Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+originEndpoint_origination :: Lens.Lens' OriginEndpoint (Prelude.Maybe Origination)
+originEndpoint_origination = Lens.lens (\OriginEndpoint' {origination} -> origination) (\s@OriginEndpoint' {} a -> s {origination = a} :: OriginEndpoint)
+
+-- | Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+originEndpoint_startoverWindowSeconds :: Lens.Lens' OriginEndpoint (Prelude.Maybe Prelude.Int)
+originEndpoint_startoverWindowSeconds = Lens.lens (\OriginEndpoint' {startoverWindowSeconds} -> startoverWindowSeconds) (\s@OriginEndpoint' {} a -> s {startoverWindowSeconds = a} :: OriginEndpoint)
+
+-- | Undocumented member.
+originEndpoint_tags :: Lens.Lens' OriginEndpoint (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+originEndpoint_tags = Lens.lens (\OriginEndpoint' {tags} -> tags) (\s@OriginEndpoint' {} a -> s {tags = a} :: OriginEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+originEndpoint_timeDelaySeconds :: Lens.Lens' OriginEndpoint (Prelude.Maybe Prelude.Int)
+originEndpoint_timeDelaySeconds = Lens.lens (\OriginEndpoint' {timeDelaySeconds} -> timeDelaySeconds) (\s@OriginEndpoint' {} a -> s {timeDelaySeconds = a} :: OriginEndpoint)
+
+-- | The URL of the packaged OriginEndpoint for consumption.
+originEndpoint_url :: Lens.Lens' OriginEndpoint (Prelude.Maybe Prelude.Text)
+originEndpoint_url = Lens.lens (\OriginEndpoint' {url} -> url) (\s@OriginEndpoint' {} a -> s {url = a} :: OriginEndpoint)
+
+-- | A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+originEndpoint_whitelist :: Lens.Lens' OriginEndpoint (Prelude.Maybe [Prelude.Text])
+originEndpoint_whitelist = Lens.lens (\OriginEndpoint' {whitelist} -> whitelist) (\s@OriginEndpoint' {} a -> s {whitelist = a} :: OriginEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON OriginEndpoint where
+  parseJSON =
+    Data.withObject
+      "OriginEndpoint"
+      ( \x ->
+          OriginEndpoint'
+            Prelude.<$> (x Data..:? "arn")
+            Prelude.<*> (x Data..:? "authorization")
+            Prelude.<*> (x Data..:? "channelId")
+            Prelude.<*> (x Data..:? "cmafPackage")
+            Prelude.<*> (x Data..:? "dashPackage")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "hlsPackage")
+            Prelude.<*> (x Data..:? "id")
+            Prelude.<*> (x Data..:? "manifestName")
+            Prelude.<*> (x Data..:? "mssPackage")
+            Prelude.<*> (x Data..:? "origination")
+            Prelude.<*> (x Data..:? "startoverWindowSeconds")
+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "timeDelaySeconds")
+            Prelude.<*> (x Data..:? "url")
+            Prelude.<*> (x Data..:? "whitelist" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable OriginEndpoint where
+  hashWithSalt _salt OriginEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` arn
+      `Prelude.hashWithSalt` authorization
+      `Prelude.hashWithSalt` channelId
+      `Prelude.hashWithSalt` cmafPackage
+      `Prelude.hashWithSalt` dashPackage
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` hlsPackage
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` manifestName
+      `Prelude.hashWithSalt` mssPackage
+      `Prelude.hashWithSalt` origination
+      `Prelude.hashWithSalt` startoverWindowSeconds
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` timeDelaySeconds
+      `Prelude.hashWithSalt` url
+      `Prelude.hashWithSalt` whitelist
+
+instance Prelude.NFData OriginEndpoint where
+  rnf OriginEndpoint' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf authorization
+      `Prelude.seq` Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf cmafPackage
+      `Prelude.seq` Prelude.rnf dashPackage
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hlsPackage
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf manifestName
+      `Prelude.seq` Prelude.rnf mssPackage
+      `Prelude.seq` Prelude.rnf origination
+      `Prelude.seq` Prelude.rnf startoverWindowSeconds
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf timeDelaySeconds
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf whitelist
diff --git a/gen/Amazonka/MediaPackage/Types/Origination.hs b/gen/Amazonka/MediaPackage/Types/Origination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/Origination.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.MediaPackage.Types.Origination
+-- 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.MediaPackage.Types.Origination
+  ( Origination
+      ( ..,
+        Origination_ALLOW,
+        Origination_DENY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Origination = Origination'
+  { fromOrigination ::
+      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 Origination_ALLOW :: Origination
+pattern Origination_ALLOW = Origination' "ALLOW"
+
+pattern Origination_DENY :: Origination
+pattern Origination_DENY = Origination' "DENY"
+
+{-# COMPLETE
+  Origination_ALLOW,
+  Origination_DENY,
+  Origination'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/PeriodTriggersElement.hs b/gen/Amazonka/MediaPackage/Types/PeriodTriggersElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/PeriodTriggersElement.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.MediaPackage.Types.PeriodTriggersElement
+-- 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.MediaPackage.Types.PeriodTriggersElement
+  ( PeriodTriggersElement
+      ( ..,
+        PeriodTriggersElement_ADS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PeriodTriggersElement = PeriodTriggersElement'
+  { fromPeriodTriggersElement ::
+      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 PeriodTriggersElement_ADS :: PeriodTriggersElement
+pattern PeriodTriggersElement_ADS = PeriodTriggersElement' "ADS"
+
+{-# COMPLETE
+  PeriodTriggersElement_ADS,
+  PeriodTriggersElement'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/PlaylistType.hs b/gen/Amazonka/MediaPackage/Types/PlaylistType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/PlaylistType.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.MediaPackage.Types.PlaylistType
+-- 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.MediaPackage.Types.PlaylistType
+  ( PlaylistType
+      ( ..,
+        PlaylistType_EVENT,
+        PlaylistType_NONE,
+        PlaylistType_VOD
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PlaylistType = PlaylistType'
+  { fromPlaylistType ::
+      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 PlaylistType_EVENT :: PlaylistType
+pattern PlaylistType_EVENT = PlaylistType' "EVENT"
+
+pattern PlaylistType_NONE :: PlaylistType
+pattern PlaylistType_NONE = PlaylistType' "NONE"
+
+pattern PlaylistType_VOD :: PlaylistType
+pattern PlaylistType_VOD = PlaylistType' "VOD"
+
+{-# COMPLETE
+  PlaylistType_EVENT,
+  PlaylistType_NONE,
+  PlaylistType_VOD,
+  PlaylistType'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/PresetSpeke20Audio.hs b/gen/Amazonka/MediaPackage/Types/PresetSpeke20Audio.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/PresetSpeke20Audio.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.MediaPackage.Types.PresetSpeke20Audio
+-- 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.MediaPackage.Types.PresetSpeke20Audio
+  ( PresetSpeke20Audio
+      ( ..,
+        PresetSpeke20Audio_PRESET_AUDIO_1,
+        PresetSpeke20Audio_PRESET_AUDIO_2,
+        PresetSpeke20Audio_PRESET_AUDIO_3,
+        PresetSpeke20Audio_SHARED,
+        PresetSpeke20Audio_UNENCRYPTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PresetSpeke20Audio = PresetSpeke20Audio'
+  { fromPresetSpeke20Audio ::
+      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 PresetSpeke20Audio_PRESET_AUDIO_1 :: PresetSpeke20Audio
+pattern PresetSpeke20Audio_PRESET_AUDIO_1 = PresetSpeke20Audio' "PRESET-AUDIO-1"
+
+pattern PresetSpeke20Audio_PRESET_AUDIO_2 :: PresetSpeke20Audio
+pattern PresetSpeke20Audio_PRESET_AUDIO_2 = PresetSpeke20Audio' "PRESET-AUDIO-2"
+
+pattern PresetSpeke20Audio_PRESET_AUDIO_3 :: PresetSpeke20Audio
+pattern PresetSpeke20Audio_PRESET_AUDIO_3 = PresetSpeke20Audio' "PRESET-AUDIO-3"
+
+pattern PresetSpeke20Audio_SHARED :: PresetSpeke20Audio
+pattern PresetSpeke20Audio_SHARED = PresetSpeke20Audio' "SHARED"
+
+pattern PresetSpeke20Audio_UNENCRYPTED :: PresetSpeke20Audio
+pattern PresetSpeke20Audio_UNENCRYPTED = PresetSpeke20Audio' "UNENCRYPTED"
+
+{-# COMPLETE
+  PresetSpeke20Audio_PRESET_AUDIO_1,
+  PresetSpeke20Audio_PRESET_AUDIO_2,
+  PresetSpeke20Audio_PRESET_AUDIO_3,
+  PresetSpeke20Audio_SHARED,
+  PresetSpeke20Audio_UNENCRYPTED,
+  PresetSpeke20Audio'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/PresetSpeke20Video.hs b/gen/Amazonka/MediaPackage/Types/PresetSpeke20Video.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/PresetSpeke20Video.hs
@@ -0,0 +1,111 @@
+{-# 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.MediaPackage.Types.PresetSpeke20Video
+-- 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.MediaPackage.Types.PresetSpeke20Video
+  ( PresetSpeke20Video
+      ( ..,
+        PresetSpeke20Video_PRESET_VIDEO_1,
+        PresetSpeke20Video_PRESET_VIDEO_2,
+        PresetSpeke20Video_PRESET_VIDEO_3,
+        PresetSpeke20Video_PRESET_VIDEO_4,
+        PresetSpeke20Video_PRESET_VIDEO_5,
+        PresetSpeke20Video_PRESET_VIDEO_6,
+        PresetSpeke20Video_PRESET_VIDEO_7,
+        PresetSpeke20Video_PRESET_VIDEO_8,
+        PresetSpeke20Video_SHARED,
+        PresetSpeke20Video_UNENCRYPTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PresetSpeke20Video = PresetSpeke20Video'
+  { fromPresetSpeke20Video ::
+      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 PresetSpeke20Video_PRESET_VIDEO_1 :: PresetSpeke20Video
+pattern PresetSpeke20Video_PRESET_VIDEO_1 = PresetSpeke20Video' "PRESET-VIDEO-1"
+
+pattern PresetSpeke20Video_PRESET_VIDEO_2 :: PresetSpeke20Video
+pattern PresetSpeke20Video_PRESET_VIDEO_2 = PresetSpeke20Video' "PRESET-VIDEO-2"
+
+pattern PresetSpeke20Video_PRESET_VIDEO_3 :: PresetSpeke20Video
+pattern PresetSpeke20Video_PRESET_VIDEO_3 = PresetSpeke20Video' "PRESET-VIDEO-3"
+
+pattern PresetSpeke20Video_PRESET_VIDEO_4 :: PresetSpeke20Video
+pattern PresetSpeke20Video_PRESET_VIDEO_4 = PresetSpeke20Video' "PRESET-VIDEO-4"
+
+pattern PresetSpeke20Video_PRESET_VIDEO_5 :: PresetSpeke20Video
+pattern PresetSpeke20Video_PRESET_VIDEO_5 = PresetSpeke20Video' "PRESET-VIDEO-5"
+
+pattern PresetSpeke20Video_PRESET_VIDEO_6 :: PresetSpeke20Video
+pattern PresetSpeke20Video_PRESET_VIDEO_6 = PresetSpeke20Video' "PRESET-VIDEO-6"
+
+pattern PresetSpeke20Video_PRESET_VIDEO_7 :: PresetSpeke20Video
+pattern PresetSpeke20Video_PRESET_VIDEO_7 = PresetSpeke20Video' "PRESET-VIDEO-7"
+
+pattern PresetSpeke20Video_PRESET_VIDEO_8 :: PresetSpeke20Video
+pattern PresetSpeke20Video_PRESET_VIDEO_8 = PresetSpeke20Video' "PRESET-VIDEO-8"
+
+pattern PresetSpeke20Video_SHARED :: PresetSpeke20Video
+pattern PresetSpeke20Video_SHARED = PresetSpeke20Video' "SHARED"
+
+pattern PresetSpeke20Video_UNENCRYPTED :: PresetSpeke20Video
+pattern PresetSpeke20Video_UNENCRYPTED = PresetSpeke20Video' "UNENCRYPTED"
+
+{-# COMPLETE
+  PresetSpeke20Video_PRESET_VIDEO_1,
+  PresetSpeke20Video_PRESET_VIDEO_2,
+  PresetSpeke20Video_PRESET_VIDEO_3,
+  PresetSpeke20Video_PRESET_VIDEO_4,
+  PresetSpeke20Video_PRESET_VIDEO_5,
+  PresetSpeke20Video_PRESET_VIDEO_6,
+  PresetSpeke20Video_PRESET_VIDEO_7,
+  PresetSpeke20Video_PRESET_VIDEO_8,
+  PresetSpeke20Video_SHARED,
+  PresetSpeke20Video_UNENCRYPTED,
+  PresetSpeke20Video'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/Profile.hs b/gen/Amazonka/MediaPackage/Types/Profile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/Profile.hs
@@ -0,0 +1,78 @@
+{-# 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.MediaPackage.Types.Profile
+-- 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.MediaPackage.Types.Profile
+  ( Profile
+      ( ..,
+        Profile_DVB_DASH_2014,
+        Profile_HBBTV_1_5,
+        Profile_HYBRIDCAST,
+        Profile_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Profile = Profile' {fromProfile :: 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 Profile_DVB_DASH_2014 :: Profile
+pattern Profile_DVB_DASH_2014 = Profile' "DVB_DASH_2014"
+
+pattern Profile_HBBTV_1_5 :: Profile
+pattern Profile_HBBTV_1_5 = Profile' "HBBTV_1_5"
+
+pattern Profile_HYBRIDCAST :: Profile
+pattern Profile_HYBRIDCAST = Profile' "HYBRIDCAST"
+
+pattern Profile_NONE :: Profile
+pattern Profile_NONE = Profile' "NONE"
+
+{-# COMPLETE
+  Profile_DVB_DASH_2014,
+  Profile_HBBTV_1_5,
+  Profile_HYBRIDCAST,
+  Profile_NONE,
+  Profile'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/S3Destination.hs b/gen/Amazonka/MediaPackage/Types/S3Destination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/S3Destination.hs
@@ -0,0 +1,116 @@
+{-# 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.MediaPackage.Types.S3Destination
+-- 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.MediaPackage.Types.S3Destination 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
+
+-- | Configuration parameters for where in an S3 bucket to place the
+-- harvested content
+--
+-- /See:/ 'newS3Destination' smart constructor.
+data S3Destination = S3Destination'
+  { -- | The key in the specified S3 bucket where the harvested top-level
+    -- manifest will be placed.
+    manifestKey :: Prelude.Text,
+    -- | The name of an S3 bucket within which harvested content will be exported
+    bucketName :: Prelude.Text,
+    -- | The IAM role used to write to the specified S3 bucket
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Destination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'manifestKey', 's3Destination_manifestKey' - The key in the specified S3 bucket where the harvested top-level
+-- manifest will be placed.
+--
+-- 'bucketName', 's3Destination_bucketName' - The name of an S3 bucket within which harvested content will be exported
+--
+-- 'roleArn', 's3Destination_roleArn' - The IAM role used to write to the specified S3 bucket
+newS3Destination ::
+  -- | 'manifestKey'
+  Prelude.Text ->
+  -- | 'bucketName'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  S3Destination
+newS3Destination pManifestKey_ pBucketName_ pRoleArn_ =
+  S3Destination'
+    { manifestKey = pManifestKey_,
+      bucketName = pBucketName_,
+      roleArn = pRoleArn_
+    }
+
+-- | The key in the specified S3 bucket where the harvested top-level
+-- manifest will be placed.
+s3Destination_manifestKey :: Lens.Lens' S3Destination Prelude.Text
+s3Destination_manifestKey = Lens.lens (\S3Destination' {manifestKey} -> manifestKey) (\s@S3Destination' {} a -> s {manifestKey = a} :: S3Destination)
+
+-- | The name of an S3 bucket within which harvested content will be exported
+s3Destination_bucketName :: Lens.Lens' S3Destination Prelude.Text
+s3Destination_bucketName = Lens.lens (\S3Destination' {bucketName} -> bucketName) (\s@S3Destination' {} a -> s {bucketName = a} :: S3Destination)
+
+-- | The IAM role used to write to the specified S3 bucket
+s3Destination_roleArn :: Lens.Lens' S3Destination Prelude.Text
+s3Destination_roleArn = Lens.lens (\S3Destination' {roleArn} -> roleArn) (\s@S3Destination' {} a -> s {roleArn = a} :: S3Destination)
+
+instance Data.FromJSON S3Destination where
+  parseJSON =
+    Data.withObject
+      "S3Destination"
+      ( \x ->
+          S3Destination'
+            Prelude.<$> (x Data..: "manifestKey")
+            Prelude.<*> (x Data..: "bucketName")
+            Prelude.<*> (x Data..: "roleArn")
+      )
+
+instance Prelude.Hashable S3Destination where
+  hashWithSalt _salt S3Destination' {..} =
+    _salt
+      `Prelude.hashWithSalt` manifestKey
+      `Prelude.hashWithSalt` bucketName
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData S3Destination where
+  rnf S3Destination' {..} =
+    Prelude.rnf manifestKey
+      `Prelude.seq` Prelude.rnf bucketName
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToJSON S3Destination where
+  toJSON S3Destination' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("manifestKey" Data..= manifestKey),
+            Prelude.Just ("bucketName" Data..= bucketName),
+            Prelude.Just ("roleArn" Data..= roleArn)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/SegmentTemplateFormat.hs b/gen/Amazonka/MediaPackage/Types/SegmentTemplateFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/SegmentTemplateFormat.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.MediaPackage.Types.SegmentTemplateFormat
+-- 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.MediaPackage.Types.SegmentTemplateFormat
+  ( SegmentTemplateFormat
+      ( ..,
+        SegmentTemplateFormat_NUMBER_WITH_DURATION,
+        SegmentTemplateFormat_NUMBER_WITH_TIMELINE,
+        SegmentTemplateFormat_TIME_WITH_TIMELINE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SegmentTemplateFormat = SegmentTemplateFormat'
+  { fromSegmentTemplateFormat ::
+      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 SegmentTemplateFormat_NUMBER_WITH_DURATION :: SegmentTemplateFormat
+pattern SegmentTemplateFormat_NUMBER_WITH_DURATION = SegmentTemplateFormat' "NUMBER_WITH_DURATION"
+
+pattern SegmentTemplateFormat_NUMBER_WITH_TIMELINE :: SegmentTemplateFormat
+pattern SegmentTemplateFormat_NUMBER_WITH_TIMELINE = SegmentTemplateFormat' "NUMBER_WITH_TIMELINE"
+
+pattern SegmentTemplateFormat_TIME_WITH_TIMELINE :: SegmentTemplateFormat
+pattern SegmentTemplateFormat_TIME_WITH_TIMELINE = SegmentTemplateFormat' "TIME_WITH_TIMELINE"
+
+{-# COMPLETE
+  SegmentTemplateFormat_NUMBER_WITH_DURATION,
+  SegmentTemplateFormat_NUMBER_WITH_TIMELINE,
+  SegmentTemplateFormat_TIME_WITH_TIMELINE,
+  SegmentTemplateFormat'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/SpekeKeyProvider.hs b/gen/Amazonka/MediaPackage/Types/SpekeKeyProvider.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/SpekeKeyProvider.hs
@@ -0,0 +1,163 @@
+{-# 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.MediaPackage.Types.SpekeKeyProvider
+-- 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.MediaPackage.Types.SpekeKeyProvider where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.EncryptionContractConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | A configuration for accessing an external Secure Packager and Encoder
+-- Key Exchange (SPEKE) service that will provide encryption keys.
+--
+-- /See:/ 'newSpekeKeyProvider' smart constructor.
+data SpekeKeyProvider = SpekeKeyProvider'
+  { -- | An Amazon Resource Name (ARN) of a Certificate Manager certificate that
+    -- MediaPackage will use for enforcing secure end-to-end data transfer with
+    -- the key provider service.
+    certificateArn :: Prelude.Maybe Prelude.Text,
+    encryptionContractConfiguration :: Prelude.Maybe EncryptionContractConfiguration,
+    -- | The resource ID to include in key requests.
+    resourceId :: Prelude.Text,
+    -- | The system IDs to include in key requests.
+    systemIds :: [Prelude.Text],
+    -- | The URL of the external key provider service.
+    url :: Prelude.Text,
+    -- | An Amazon Resource Name (ARN) of an IAM role that AWS Elemental
+    -- MediaPackage will assume when accessing the key provider service.
+    roleArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SpekeKeyProvider' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'certificateArn', 'spekeKeyProvider_certificateArn' - An Amazon Resource Name (ARN) of a Certificate Manager certificate that
+-- MediaPackage will use for enforcing secure end-to-end data transfer with
+-- the key provider service.
+--
+-- 'encryptionContractConfiguration', 'spekeKeyProvider_encryptionContractConfiguration' - Undocumented member.
+--
+-- 'resourceId', 'spekeKeyProvider_resourceId' - The resource ID to include in key requests.
+--
+-- 'systemIds', 'spekeKeyProvider_systemIds' - The system IDs to include in key requests.
+--
+-- 'url', 'spekeKeyProvider_url' - The URL of the external key provider service.
+--
+-- 'roleArn', 'spekeKeyProvider_roleArn' - An Amazon Resource Name (ARN) of an IAM role that AWS Elemental
+-- MediaPackage will assume when accessing the key provider service.
+newSpekeKeyProvider ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  -- | 'url'
+  Prelude.Text ->
+  -- | 'roleArn'
+  Prelude.Text ->
+  SpekeKeyProvider
+newSpekeKeyProvider pResourceId_ pUrl_ pRoleArn_ =
+  SpekeKeyProvider'
+    { certificateArn = Prelude.Nothing,
+      encryptionContractConfiguration = Prelude.Nothing,
+      resourceId = pResourceId_,
+      systemIds = Prelude.mempty,
+      url = pUrl_,
+      roleArn = pRoleArn_
+    }
+
+-- | An Amazon Resource Name (ARN) of a Certificate Manager certificate that
+-- MediaPackage will use for enforcing secure end-to-end data transfer with
+-- the key provider service.
+spekeKeyProvider_certificateArn :: Lens.Lens' SpekeKeyProvider (Prelude.Maybe Prelude.Text)
+spekeKeyProvider_certificateArn = Lens.lens (\SpekeKeyProvider' {certificateArn} -> certificateArn) (\s@SpekeKeyProvider' {} a -> s {certificateArn = a} :: SpekeKeyProvider)
+
+-- | Undocumented member.
+spekeKeyProvider_encryptionContractConfiguration :: Lens.Lens' SpekeKeyProvider (Prelude.Maybe EncryptionContractConfiguration)
+spekeKeyProvider_encryptionContractConfiguration = Lens.lens (\SpekeKeyProvider' {encryptionContractConfiguration} -> encryptionContractConfiguration) (\s@SpekeKeyProvider' {} a -> s {encryptionContractConfiguration = a} :: SpekeKeyProvider)
+
+-- | The resource ID to include in key requests.
+spekeKeyProvider_resourceId :: Lens.Lens' SpekeKeyProvider Prelude.Text
+spekeKeyProvider_resourceId = Lens.lens (\SpekeKeyProvider' {resourceId} -> resourceId) (\s@SpekeKeyProvider' {} a -> s {resourceId = a} :: SpekeKeyProvider)
+
+-- | The system IDs to include in key requests.
+spekeKeyProvider_systemIds :: Lens.Lens' SpekeKeyProvider [Prelude.Text]
+spekeKeyProvider_systemIds = Lens.lens (\SpekeKeyProvider' {systemIds} -> systemIds) (\s@SpekeKeyProvider' {} a -> s {systemIds = a} :: SpekeKeyProvider) Prelude.. Lens.coerced
+
+-- | The URL of the external key provider service.
+spekeKeyProvider_url :: Lens.Lens' SpekeKeyProvider Prelude.Text
+spekeKeyProvider_url = Lens.lens (\SpekeKeyProvider' {url} -> url) (\s@SpekeKeyProvider' {} a -> s {url = a} :: SpekeKeyProvider)
+
+-- | An Amazon Resource Name (ARN) of an IAM role that AWS Elemental
+-- MediaPackage will assume when accessing the key provider service.
+spekeKeyProvider_roleArn :: Lens.Lens' SpekeKeyProvider Prelude.Text
+spekeKeyProvider_roleArn = Lens.lens (\SpekeKeyProvider' {roleArn} -> roleArn) (\s@SpekeKeyProvider' {} a -> s {roleArn = a} :: SpekeKeyProvider)
+
+instance Data.FromJSON SpekeKeyProvider where
+  parseJSON =
+    Data.withObject
+      "SpekeKeyProvider"
+      ( \x ->
+          SpekeKeyProvider'
+            Prelude.<$> (x Data..:? "certificateArn")
+            Prelude.<*> (x Data..:? "encryptionContractConfiguration")
+            Prelude.<*> (x Data..: "resourceId")
+            Prelude.<*> (x Data..:? "systemIds" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..: "url")
+            Prelude.<*> (x Data..: "roleArn")
+      )
+
+instance Prelude.Hashable SpekeKeyProvider where
+  hashWithSalt _salt SpekeKeyProvider' {..} =
+    _salt
+      `Prelude.hashWithSalt` certificateArn
+      `Prelude.hashWithSalt` encryptionContractConfiguration
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` systemIds
+      `Prelude.hashWithSalt` url
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData SpekeKeyProvider where
+  rnf SpekeKeyProvider' {..} =
+    Prelude.rnf certificateArn
+      `Prelude.seq` Prelude.rnf encryptionContractConfiguration
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf systemIds
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToJSON SpekeKeyProvider where
+  toJSON SpekeKeyProvider' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("certificateArn" Data..=)
+              Prelude.<$> certificateArn,
+            ("encryptionContractConfiguration" Data..=)
+              Prelude.<$> encryptionContractConfiguration,
+            Prelude.Just ("resourceId" Data..= resourceId),
+            Prelude.Just ("systemIds" Data..= systemIds),
+            Prelude.Just ("url" Data..= url),
+            Prelude.Just ("roleArn" Data..= roleArn)
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/Status.hs b/gen/Amazonka/MediaPackage/Types/Status.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/Status.hs
@@ -0,0 +1,73 @@
+{-# 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.MediaPackage.Types.Status
+-- 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.MediaPackage.Types.Status
+  ( Status
+      ( ..,
+        Status_FAILED,
+        Status_IN_PROGRESS,
+        Status_SUCCEEDED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Status = Status' {fromStatus :: 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 Status_FAILED :: Status
+pattern Status_FAILED = Status' "FAILED"
+
+pattern Status_IN_PROGRESS :: Status
+pattern Status_IN_PROGRESS = Status' "IN_PROGRESS"
+
+pattern Status_SUCCEEDED :: Status
+pattern Status_SUCCEEDED = Status' "SUCCEEDED"
+
+{-# COMPLETE
+  Status_FAILED,
+  Status_IN_PROGRESS,
+  Status_SUCCEEDED,
+  Status'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/StreamOrder.hs b/gen/Amazonka/MediaPackage/Types/StreamOrder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/StreamOrder.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.MediaPackage.Types.StreamOrder
+-- 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.MediaPackage.Types.StreamOrder
+  ( StreamOrder
+      ( ..,
+        StreamOrder_ORIGINAL,
+        StreamOrder_VIDEO_BITRATE_ASCENDING,
+        StreamOrder_VIDEO_BITRATE_DESCENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StreamOrder = StreamOrder'
+  { fromStreamOrder ::
+      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 StreamOrder_ORIGINAL :: StreamOrder
+pattern StreamOrder_ORIGINAL = StreamOrder' "ORIGINAL"
+
+pattern StreamOrder_VIDEO_BITRATE_ASCENDING :: StreamOrder
+pattern StreamOrder_VIDEO_BITRATE_ASCENDING = StreamOrder' "VIDEO_BITRATE_ASCENDING"
+
+pattern StreamOrder_VIDEO_BITRATE_DESCENDING :: StreamOrder
+pattern StreamOrder_VIDEO_BITRATE_DESCENDING = StreamOrder' "VIDEO_BITRATE_DESCENDING"
+
+{-# COMPLETE
+  StreamOrder_ORIGINAL,
+  StreamOrder_VIDEO_BITRATE_ASCENDING,
+  StreamOrder_VIDEO_BITRATE_DESCENDING,
+  StreamOrder'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/Types/StreamSelection.hs b/gen/Amazonka/MediaPackage/Types/StreamSelection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/StreamSelection.hs
@@ -0,0 +1,110 @@
+{-# 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.MediaPackage.Types.StreamSelection
+-- 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.MediaPackage.Types.StreamSelection where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types.StreamOrder
+import qualified Amazonka.Prelude as Prelude
+
+-- | A StreamSelection configuration.
+--
+-- /See:/ 'newStreamSelection' smart constructor.
+data StreamSelection = StreamSelection'
+  { -- | The maximum video bitrate (bps) to include in output.
+    maxVideoBitsPerSecond :: Prelude.Maybe Prelude.Int,
+    -- | The minimum video bitrate (bps) to include in output.
+    minVideoBitsPerSecond :: Prelude.Maybe Prelude.Int,
+    -- | A directive that determines the order of streams in the output.
+    streamOrder :: Prelude.Maybe StreamOrder
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StreamSelection' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxVideoBitsPerSecond', 'streamSelection_maxVideoBitsPerSecond' - The maximum video bitrate (bps) to include in output.
+--
+-- 'minVideoBitsPerSecond', 'streamSelection_minVideoBitsPerSecond' - The minimum video bitrate (bps) to include in output.
+--
+-- 'streamOrder', 'streamSelection_streamOrder' - A directive that determines the order of streams in the output.
+newStreamSelection ::
+  StreamSelection
+newStreamSelection =
+  StreamSelection'
+    { maxVideoBitsPerSecond =
+        Prelude.Nothing,
+      minVideoBitsPerSecond = Prelude.Nothing,
+      streamOrder = Prelude.Nothing
+    }
+
+-- | The maximum video bitrate (bps) to include in output.
+streamSelection_maxVideoBitsPerSecond :: Lens.Lens' StreamSelection (Prelude.Maybe Prelude.Int)
+streamSelection_maxVideoBitsPerSecond = Lens.lens (\StreamSelection' {maxVideoBitsPerSecond} -> maxVideoBitsPerSecond) (\s@StreamSelection' {} a -> s {maxVideoBitsPerSecond = a} :: StreamSelection)
+
+-- | The minimum video bitrate (bps) to include in output.
+streamSelection_minVideoBitsPerSecond :: Lens.Lens' StreamSelection (Prelude.Maybe Prelude.Int)
+streamSelection_minVideoBitsPerSecond = Lens.lens (\StreamSelection' {minVideoBitsPerSecond} -> minVideoBitsPerSecond) (\s@StreamSelection' {} a -> s {minVideoBitsPerSecond = a} :: StreamSelection)
+
+-- | A directive that determines the order of streams in the output.
+streamSelection_streamOrder :: Lens.Lens' StreamSelection (Prelude.Maybe StreamOrder)
+streamSelection_streamOrder = Lens.lens (\StreamSelection' {streamOrder} -> streamOrder) (\s@StreamSelection' {} a -> s {streamOrder = a} :: StreamSelection)
+
+instance Data.FromJSON StreamSelection where
+  parseJSON =
+    Data.withObject
+      "StreamSelection"
+      ( \x ->
+          StreamSelection'
+            Prelude.<$> (x Data..:? "maxVideoBitsPerSecond")
+            Prelude.<*> (x Data..:? "minVideoBitsPerSecond")
+            Prelude.<*> (x Data..:? "streamOrder")
+      )
+
+instance Prelude.Hashable StreamSelection where
+  hashWithSalt _salt StreamSelection' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxVideoBitsPerSecond
+      `Prelude.hashWithSalt` minVideoBitsPerSecond
+      `Prelude.hashWithSalt` streamOrder
+
+instance Prelude.NFData StreamSelection where
+  rnf StreamSelection' {..} =
+    Prelude.rnf maxVideoBitsPerSecond
+      `Prelude.seq` Prelude.rnf minVideoBitsPerSecond
+      `Prelude.seq` Prelude.rnf streamOrder
+
+instance Data.ToJSON StreamSelection where
+  toJSON StreamSelection' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxVideoBitsPerSecond" Data..=)
+              Prelude.<$> maxVideoBitsPerSecond,
+            ("minVideoBitsPerSecond" Data..=)
+              Prelude.<$> minVideoBitsPerSecond,
+            ("streamOrder" Data..=) Prelude.<$> streamOrder
+          ]
+      )
diff --git a/gen/Amazonka/MediaPackage/Types/UtcTiming.hs b/gen/Amazonka/MediaPackage/Types/UtcTiming.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/Types/UtcTiming.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.MediaPackage.Types.UtcTiming
+-- 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.MediaPackage.Types.UtcTiming
+  ( UtcTiming
+      ( ..,
+        UtcTiming_HTTP_HEAD,
+        UtcTiming_HTTP_ISO,
+        UtcTiming_HTTP_XSDATE,
+        UtcTiming_NONE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UtcTiming = UtcTiming'
+  { fromUtcTiming ::
+      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 UtcTiming_HTTP_HEAD :: UtcTiming
+pattern UtcTiming_HTTP_HEAD = UtcTiming' "HTTP-HEAD"
+
+pattern UtcTiming_HTTP_ISO :: UtcTiming
+pattern UtcTiming_HTTP_ISO = UtcTiming' "HTTP-ISO"
+
+pattern UtcTiming_HTTP_XSDATE :: UtcTiming
+pattern UtcTiming_HTTP_XSDATE = UtcTiming' "HTTP-XSDATE"
+
+pattern UtcTiming_NONE :: UtcTiming
+pattern UtcTiming_NONE = UtcTiming' "NONE"
+
+{-# COMPLETE
+  UtcTiming_HTTP_HEAD,
+  UtcTiming_HTTP_ISO,
+  UtcTiming_HTTP_XSDATE,
+  UtcTiming_NONE,
+  UtcTiming'
+  #-}
diff --git a/gen/Amazonka/MediaPackage/UntagResource.hs b/gen/Amazonka/MediaPackage/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/UntagResource.hs
@@ -0,0 +1,139 @@
+{-# 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.MediaPackage.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)
+--
+-- -- | Undocumented operation.
+module Amazonka.MediaPackage.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_tagKeys,
+    untagResource_resourceArn,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | The key(s) of tag to be deleted
+    tagKeys :: [Prelude.Text],
+    resourceArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The key(s) of tag to be deleted
+--
+-- 'resourceArn', 'untagResource_resourceArn' - Undocumented member.
+newUntagResource ::
+  -- | 'resourceArn'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceArn_ =
+  UntagResource'
+    { tagKeys = Prelude.mempty,
+      resourceArn = pResourceArn_
+    }
+
+-- | The key(s) of tag to be deleted
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+-- | Undocumented member.
+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull UntagResourceResponse'
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` tagKeys
+      `Prelude.hashWithSalt` resourceArn
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf tagKeys
+      `Prelude.seq` Prelude.rnf resourceArn
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath UntagResource' {..} =
+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]
+
+instance Data.ToQuery UntagResource where
+  toQuery UntagResource' {..} =
+    Prelude.mconcat
+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUntagResourceResponse ::
+  UntagResourceResponse
+newUntagResourceResponse = UntagResourceResponse'
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/MediaPackage/UpdateChannel.hs b/gen/Amazonka/MediaPackage/UpdateChannel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/UpdateChannel.hs
@@ -0,0 +1,250 @@
+{-# 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.MediaPackage.UpdateChannel
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing Channel.
+module Amazonka.MediaPackage.UpdateChannel
+  ( -- * Creating a Request
+    UpdateChannel (..),
+    newUpdateChannel,
+
+    -- * Request Lenses
+    updateChannel_description,
+    updateChannel_id,
+
+    -- * Destructuring the Response
+    UpdateChannelResponse (..),
+    newUpdateChannelResponse,
+
+    -- * Response Lenses
+    updateChannelResponse_arn,
+    updateChannelResponse_description,
+    updateChannelResponse_egressAccessLogs,
+    updateChannelResponse_hlsIngest,
+    updateChannelResponse_id,
+    updateChannelResponse_ingressAccessLogs,
+    updateChannelResponse_tags,
+    updateChannelResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Configuration parameters used to update the Channel.
+--
+-- /See:/ 'newUpdateChannel' smart constructor.
+data UpdateChannel = UpdateChannel'
+  { -- | A short text description of the Channel.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the Channel to update.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateChannel' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updateChannel_description' - A short text description of the Channel.
+--
+-- 'id', 'updateChannel_id' - The ID of the Channel to update.
+newUpdateChannel ::
+  -- | 'id'
+  Prelude.Text ->
+  UpdateChannel
+newUpdateChannel pId_ =
+  UpdateChannel'
+    { description = Prelude.Nothing,
+      id = pId_
+    }
+
+-- | A short text description of the Channel.
+updateChannel_description :: Lens.Lens' UpdateChannel (Prelude.Maybe Prelude.Text)
+updateChannel_description = Lens.lens (\UpdateChannel' {description} -> description) (\s@UpdateChannel' {} a -> s {description = a} :: UpdateChannel)
+
+-- | The ID of the Channel to update.
+updateChannel_id :: Lens.Lens' UpdateChannel Prelude.Text
+updateChannel_id = Lens.lens (\UpdateChannel' {id} -> id) (\s@UpdateChannel' {} a -> s {id = a} :: UpdateChannel)
+
+instance Core.AWSRequest UpdateChannel where
+  type
+    AWSResponse UpdateChannel =
+      UpdateChannelResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateChannelResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> (x Data..?> "egressAccessLogs")
+            Prelude.<*> (x Data..?> "hlsIngest")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "ingressAccessLogs")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateChannel where
+  hashWithSalt _salt UpdateChannel' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData UpdateChannel where
+  rnf UpdateChannel' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf id
+
+instance Data.ToHeaders UpdateChannel where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateChannel where
+  toJSON UpdateChannel' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("description" Data..=) Prelude.<$> description]
+      )
+
+instance Data.ToPath UpdateChannel where
+  toPath UpdateChannel' {..} =
+    Prelude.mconcat ["/channels/", Data.toBS id]
+
+instance Data.ToQuery UpdateChannel where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateChannelResponse' smart constructor.
+data UpdateChannelResponse = UpdateChannelResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the Channel.
+    arn :: Prelude.Maybe Prelude.Text,
+    -- | A short text description of the Channel.
+    description :: Prelude.Maybe Prelude.Text,
+    egressAccessLogs :: Prelude.Maybe EgressAccessLogs,
+    hlsIngest :: Prelude.Maybe HlsIngest,
+    -- | The ID of the Channel.
+    id :: Prelude.Maybe Prelude.Text,
+    ingressAccessLogs :: Prelude.Maybe IngressAccessLogs,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateChannelResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateChannelResponse_arn' - The Amazon Resource Name (ARN) assigned to the Channel.
+--
+-- 'description', 'updateChannelResponse_description' - A short text description of the Channel.
+--
+-- 'egressAccessLogs', 'updateChannelResponse_egressAccessLogs' - Undocumented member.
+--
+-- 'hlsIngest', 'updateChannelResponse_hlsIngest' - Undocumented member.
+--
+-- 'id', 'updateChannelResponse_id' - The ID of the Channel.
+--
+-- 'ingressAccessLogs', 'updateChannelResponse_ingressAccessLogs' - Undocumented member.
+--
+-- 'tags', 'updateChannelResponse_tags' - Undocumented member.
+--
+-- 'httpStatus', 'updateChannelResponse_httpStatus' - The response's http status code.
+newUpdateChannelResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateChannelResponse
+newUpdateChannelResponse pHttpStatus_ =
+  UpdateChannelResponse'
+    { arn = Prelude.Nothing,
+      description = Prelude.Nothing,
+      egressAccessLogs = Prelude.Nothing,
+      hlsIngest = Prelude.Nothing,
+      id = Prelude.Nothing,
+      ingressAccessLogs = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the Channel.
+updateChannelResponse_arn :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe Prelude.Text)
+updateChannelResponse_arn = Lens.lens (\UpdateChannelResponse' {arn} -> arn) (\s@UpdateChannelResponse' {} a -> s {arn = a} :: UpdateChannelResponse)
+
+-- | A short text description of the Channel.
+updateChannelResponse_description :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe Prelude.Text)
+updateChannelResponse_description = Lens.lens (\UpdateChannelResponse' {description} -> description) (\s@UpdateChannelResponse' {} a -> s {description = a} :: UpdateChannelResponse)
+
+-- | Undocumented member.
+updateChannelResponse_egressAccessLogs :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe EgressAccessLogs)
+updateChannelResponse_egressAccessLogs = Lens.lens (\UpdateChannelResponse' {egressAccessLogs} -> egressAccessLogs) (\s@UpdateChannelResponse' {} a -> s {egressAccessLogs = a} :: UpdateChannelResponse)
+
+-- | Undocumented member.
+updateChannelResponse_hlsIngest :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe HlsIngest)
+updateChannelResponse_hlsIngest = Lens.lens (\UpdateChannelResponse' {hlsIngest} -> hlsIngest) (\s@UpdateChannelResponse' {} a -> s {hlsIngest = a} :: UpdateChannelResponse)
+
+-- | The ID of the Channel.
+updateChannelResponse_id :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe Prelude.Text)
+updateChannelResponse_id = Lens.lens (\UpdateChannelResponse' {id} -> id) (\s@UpdateChannelResponse' {} a -> s {id = a} :: UpdateChannelResponse)
+
+-- | Undocumented member.
+updateChannelResponse_ingressAccessLogs :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe IngressAccessLogs)
+updateChannelResponse_ingressAccessLogs = Lens.lens (\UpdateChannelResponse' {ingressAccessLogs} -> ingressAccessLogs) (\s@UpdateChannelResponse' {} a -> s {ingressAccessLogs = a} :: UpdateChannelResponse)
+
+-- | Undocumented member.
+updateChannelResponse_tags :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateChannelResponse_tags = Lens.lens (\UpdateChannelResponse' {tags} -> tags) (\s@UpdateChannelResponse' {} a -> s {tags = a} :: UpdateChannelResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+updateChannelResponse_httpStatus :: Lens.Lens' UpdateChannelResponse Prelude.Int
+updateChannelResponse_httpStatus = Lens.lens (\UpdateChannelResponse' {httpStatus} -> httpStatus) (\s@UpdateChannelResponse' {} a -> s {httpStatus = a} :: UpdateChannelResponse)
+
+instance Prelude.NFData UpdateChannelResponse where
+  rnf UpdateChannelResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf egressAccessLogs
+      `Prelude.seq` Prelude.rnf hlsIngest
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf ingressAccessLogs
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/UpdateOriginEndpoint.hs b/gen/Amazonka/MediaPackage/UpdateOriginEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/UpdateOriginEndpoint.hs
@@ -0,0 +1,541 @@
+{-# 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.MediaPackage.UpdateOriginEndpoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing OriginEndpoint.
+module Amazonka.MediaPackage.UpdateOriginEndpoint
+  ( -- * Creating a Request
+    UpdateOriginEndpoint (..),
+    newUpdateOriginEndpoint,
+
+    -- * Request Lenses
+    updateOriginEndpoint_authorization,
+    updateOriginEndpoint_cmafPackage,
+    updateOriginEndpoint_dashPackage,
+    updateOriginEndpoint_description,
+    updateOriginEndpoint_hlsPackage,
+    updateOriginEndpoint_manifestName,
+    updateOriginEndpoint_mssPackage,
+    updateOriginEndpoint_origination,
+    updateOriginEndpoint_startoverWindowSeconds,
+    updateOriginEndpoint_timeDelaySeconds,
+    updateOriginEndpoint_whitelist,
+    updateOriginEndpoint_id,
+
+    -- * Destructuring the Response
+    UpdateOriginEndpointResponse (..),
+    newUpdateOriginEndpointResponse,
+
+    -- * Response Lenses
+    updateOriginEndpointResponse_arn,
+    updateOriginEndpointResponse_authorization,
+    updateOriginEndpointResponse_channelId,
+    updateOriginEndpointResponse_cmafPackage,
+    updateOriginEndpointResponse_dashPackage,
+    updateOriginEndpointResponse_description,
+    updateOriginEndpointResponse_hlsPackage,
+    updateOriginEndpointResponse_id,
+    updateOriginEndpointResponse_manifestName,
+    updateOriginEndpointResponse_mssPackage,
+    updateOriginEndpointResponse_origination,
+    updateOriginEndpointResponse_startoverWindowSeconds,
+    updateOriginEndpointResponse_tags,
+    updateOriginEndpointResponse_timeDelaySeconds,
+    updateOriginEndpointResponse_url,
+    updateOriginEndpointResponse_whitelist,
+    updateOriginEndpointResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Configuration parameters used to update an existing OriginEndpoint.
+--
+-- /See:/ 'newUpdateOriginEndpoint' smart constructor.
+data UpdateOriginEndpoint = UpdateOriginEndpoint'
+  { authorization :: Prelude.Maybe Authorization,
+    cmafPackage :: Prelude.Maybe CmafPackageCreateOrUpdateParameters,
+    dashPackage :: Prelude.Maybe DashPackage,
+    -- | A short text description of the OriginEndpoint.
+    description :: Prelude.Maybe Prelude.Text,
+    hlsPackage :: Prelude.Maybe HlsPackage,
+    -- | A short string that will be appended to the end of the Endpoint URL.
+    manifestName :: Prelude.Maybe Prelude.Text,
+    mssPackage :: Prelude.Maybe MssPackage,
+    -- | Control whether origination of video is allowed for this OriginEndpoint.
+    -- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+    -- other form of access control. If set to DENY, the OriginEndpoint may not
+    -- be requested. This can be helpful for Live to VOD harvesting, or for
+    -- temporarily disabling origination
+    origination :: Prelude.Maybe Origination,
+    -- | Maximum duration (in seconds) of content to retain for startover
+    -- playback. If not specified, startover playback will be disabled for the
+    -- OriginEndpoint.
+    startoverWindowSeconds :: Prelude.Maybe Prelude.Int,
+    -- | Amount of delay (in seconds) to enforce on the playback of live content.
+    -- If not specified, there will be no time delay in effect for the
+    -- OriginEndpoint.
+    timeDelaySeconds :: Prelude.Maybe Prelude.Int,
+    -- | A list of source IP CIDR blocks that will be allowed to access the
+    -- OriginEndpoint.
+    whitelist :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the OriginEndpoint to update.
+    id :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateOriginEndpoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'authorization', 'updateOriginEndpoint_authorization' - Undocumented member.
+--
+-- 'cmafPackage', 'updateOriginEndpoint_cmafPackage' - Undocumented member.
+--
+-- 'dashPackage', 'updateOriginEndpoint_dashPackage' - Undocumented member.
+--
+-- 'description', 'updateOriginEndpoint_description' - A short text description of the OriginEndpoint.
+--
+-- 'hlsPackage', 'updateOriginEndpoint_hlsPackage' - Undocumented member.
+--
+-- 'manifestName', 'updateOriginEndpoint_manifestName' - A short string that will be appended to the end of the Endpoint URL.
+--
+-- 'mssPackage', 'updateOriginEndpoint_mssPackage' - Undocumented member.
+--
+-- 'origination', 'updateOriginEndpoint_origination' - Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+--
+-- 'startoverWindowSeconds', 'updateOriginEndpoint_startoverWindowSeconds' - Maximum duration (in seconds) of content to retain for startover
+-- playback. If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+--
+-- 'timeDelaySeconds', 'updateOriginEndpoint_timeDelaySeconds' - Amount of delay (in seconds) to enforce on the playback of live content.
+-- If not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+--
+-- 'whitelist', 'updateOriginEndpoint_whitelist' - A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+--
+-- 'id', 'updateOriginEndpoint_id' - The ID of the OriginEndpoint to update.
+newUpdateOriginEndpoint ::
+  -- | 'id'
+  Prelude.Text ->
+  UpdateOriginEndpoint
+newUpdateOriginEndpoint pId_ =
+  UpdateOriginEndpoint'
+    { authorization =
+        Prelude.Nothing,
+      cmafPackage = Prelude.Nothing,
+      dashPackage = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hlsPackage = Prelude.Nothing,
+      manifestName = Prelude.Nothing,
+      mssPackage = Prelude.Nothing,
+      origination = Prelude.Nothing,
+      startoverWindowSeconds = Prelude.Nothing,
+      timeDelaySeconds = Prelude.Nothing,
+      whitelist = Prelude.Nothing,
+      id = pId_
+    }
+
+-- | Undocumented member.
+updateOriginEndpoint_authorization :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe Authorization)
+updateOriginEndpoint_authorization = Lens.lens (\UpdateOriginEndpoint' {authorization} -> authorization) (\s@UpdateOriginEndpoint' {} a -> s {authorization = a} :: UpdateOriginEndpoint)
+
+-- | Undocumented member.
+updateOriginEndpoint_cmafPackage :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe CmafPackageCreateOrUpdateParameters)
+updateOriginEndpoint_cmafPackage = Lens.lens (\UpdateOriginEndpoint' {cmafPackage} -> cmafPackage) (\s@UpdateOriginEndpoint' {} a -> s {cmafPackage = a} :: UpdateOriginEndpoint)
+
+-- | Undocumented member.
+updateOriginEndpoint_dashPackage :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe DashPackage)
+updateOriginEndpoint_dashPackage = Lens.lens (\UpdateOriginEndpoint' {dashPackage} -> dashPackage) (\s@UpdateOriginEndpoint' {} a -> s {dashPackage = a} :: UpdateOriginEndpoint)
+
+-- | A short text description of the OriginEndpoint.
+updateOriginEndpoint_description :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe Prelude.Text)
+updateOriginEndpoint_description = Lens.lens (\UpdateOriginEndpoint' {description} -> description) (\s@UpdateOriginEndpoint' {} a -> s {description = a} :: UpdateOriginEndpoint)
+
+-- | Undocumented member.
+updateOriginEndpoint_hlsPackage :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe HlsPackage)
+updateOriginEndpoint_hlsPackage = Lens.lens (\UpdateOriginEndpoint' {hlsPackage} -> hlsPackage) (\s@UpdateOriginEndpoint' {} a -> s {hlsPackage = a} :: UpdateOriginEndpoint)
+
+-- | A short string that will be appended to the end of the Endpoint URL.
+updateOriginEndpoint_manifestName :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe Prelude.Text)
+updateOriginEndpoint_manifestName = Lens.lens (\UpdateOriginEndpoint' {manifestName} -> manifestName) (\s@UpdateOriginEndpoint' {} a -> s {manifestName = a} :: UpdateOriginEndpoint)
+
+-- | Undocumented member.
+updateOriginEndpoint_mssPackage :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe MssPackage)
+updateOriginEndpoint_mssPackage = Lens.lens (\UpdateOriginEndpoint' {mssPackage} -> mssPackage) (\s@UpdateOriginEndpoint' {} a -> s {mssPackage = a} :: UpdateOriginEndpoint)
+
+-- | Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+updateOriginEndpoint_origination :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe Origination)
+updateOriginEndpoint_origination = Lens.lens (\UpdateOriginEndpoint' {origination} -> origination) (\s@UpdateOriginEndpoint' {} a -> s {origination = a} :: UpdateOriginEndpoint)
+
+-- | Maximum duration (in seconds) of content to retain for startover
+-- playback. If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+updateOriginEndpoint_startoverWindowSeconds :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe Prelude.Int)
+updateOriginEndpoint_startoverWindowSeconds = Lens.lens (\UpdateOriginEndpoint' {startoverWindowSeconds} -> startoverWindowSeconds) (\s@UpdateOriginEndpoint' {} a -> s {startoverWindowSeconds = a} :: UpdateOriginEndpoint)
+
+-- | Amount of delay (in seconds) to enforce on the playback of live content.
+-- If not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+updateOriginEndpoint_timeDelaySeconds :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe Prelude.Int)
+updateOriginEndpoint_timeDelaySeconds = Lens.lens (\UpdateOriginEndpoint' {timeDelaySeconds} -> timeDelaySeconds) (\s@UpdateOriginEndpoint' {} a -> s {timeDelaySeconds = a} :: UpdateOriginEndpoint)
+
+-- | A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+updateOriginEndpoint_whitelist :: Lens.Lens' UpdateOriginEndpoint (Prelude.Maybe [Prelude.Text])
+updateOriginEndpoint_whitelist = Lens.lens (\UpdateOriginEndpoint' {whitelist} -> whitelist) (\s@UpdateOriginEndpoint' {} a -> s {whitelist = a} :: UpdateOriginEndpoint) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the OriginEndpoint to update.
+updateOriginEndpoint_id :: Lens.Lens' UpdateOriginEndpoint Prelude.Text
+updateOriginEndpoint_id = Lens.lens (\UpdateOriginEndpoint' {id} -> id) (\s@UpdateOriginEndpoint' {} a -> s {id = a} :: UpdateOriginEndpoint)
+
+instance Core.AWSRequest UpdateOriginEndpoint where
+  type
+    AWSResponse UpdateOriginEndpoint =
+      UpdateOriginEndpointResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateOriginEndpointResponse'
+            Prelude.<$> (x Data..?> "arn")
+            Prelude.<*> (x Data..?> "authorization")
+            Prelude.<*> (x Data..?> "channelId")
+            Prelude.<*> (x Data..?> "cmafPackage")
+            Prelude.<*> (x Data..?> "dashPackage")
+            Prelude.<*> (x Data..?> "description")
+            Prelude.<*> (x Data..?> "hlsPackage")
+            Prelude.<*> (x Data..?> "id")
+            Prelude.<*> (x Data..?> "manifestName")
+            Prelude.<*> (x Data..?> "mssPackage")
+            Prelude.<*> (x Data..?> "origination")
+            Prelude.<*> (x Data..?> "startoverWindowSeconds")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "timeDelaySeconds")
+            Prelude.<*> (x Data..?> "url")
+            Prelude.<*> (x Data..?> "whitelist" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateOriginEndpoint where
+  hashWithSalt _salt UpdateOriginEndpoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` authorization
+      `Prelude.hashWithSalt` cmafPackage
+      `Prelude.hashWithSalt` dashPackage
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` hlsPackage
+      `Prelude.hashWithSalt` manifestName
+      `Prelude.hashWithSalt` mssPackage
+      `Prelude.hashWithSalt` origination
+      `Prelude.hashWithSalt` startoverWindowSeconds
+      `Prelude.hashWithSalt` timeDelaySeconds
+      `Prelude.hashWithSalt` whitelist
+      `Prelude.hashWithSalt` id
+
+instance Prelude.NFData UpdateOriginEndpoint where
+  rnf UpdateOriginEndpoint' {..} =
+    Prelude.rnf authorization
+      `Prelude.seq` Prelude.rnf cmafPackage
+      `Prelude.seq` Prelude.rnf dashPackage
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hlsPackage
+      `Prelude.seq` Prelude.rnf manifestName
+      `Prelude.seq` Prelude.rnf mssPackage
+      `Prelude.seq` Prelude.rnf origination
+      `Prelude.seq` Prelude.rnf startoverWindowSeconds
+      `Prelude.seq` Prelude.rnf timeDelaySeconds
+      `Prelude.seq` Prelude.rnf whitelist
+      `Prelude.seq` Prelude.rnf id
+
+instance Data.ToHeaders UpdateOriginEndpoint where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateOriginEndpoint where
+  toJSON UpdateOriginEndpoint' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("authorization" Data..=) Prelude.<$> authorization,
+            ("cmafPackage" Data..=) Prelude.<$> cmafPackage,
+            ("dashPackage" Data..=) Prelude.<$> dashPackage,
+            ("description" Data..=) Prelude.<$> description,
+            ("hlsPackage" Data..=) Prelude.<$> hlsPackage,
+            ("manifestName" Data..=) Prelude.<$> manifestName,
+            ("mssPackage" Data..=) Prelude.<$> mssPackage,
+            ("origination" Data..=) Prelude.<$> origination,
+            ("startoverWindowSeconds" Data..=)
+              Prelude.<$> startoverWindowSeconds,
+            ("timeDelaySeconds" Data..=)
+              Prelude.<$> timeDelaySeconds,
+            ("whitelist" Data..=) Prelude.<$> whitelist
+          ]
+      )
+
+instance Data.ToPath UpdateOriginEndpoint where
+  toPath UpdateOriginEndpoint' {..} =
+    Prelude.mconcat
+      ["/origin_endpoints/", Data.toBS id]
+
+instance Data.ToQuery UpdateOriginEndpoint where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateOriginEndpointResponse' smart constructor.
+data UpdateOriginEndpointResponse = UpdateOriginEndpointResponse'
+  { -- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+    arn :: Prelude.Maybe Prelude.Text,
+    authorization :: Prelude.Maybe Authorization,
+    -- | The ID of the Channel the OriginEndpoint is associated with.
+    channelId :: Prelude.Maybe Prelude.Text,
+    cmafPackage :: Prelude.Maybe CmafPackage,
+    dashPackage :: Prelude.Maybe DashPackage,
+    -- | A short text description of the OriginEndpoint.
+    description :: Prelude.Maybe Prelude.Text,
+    hlsPackage :: Prelude.Maybe HlsPackage,
+    -- | The ID of the OriginEndpoint.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | A short string appended to the end of the OriginEndpoint URL.
+    manifestName :: Prelude.Maybe Prelude.Text,
+    mssPackage :: Prelude.Maybe MssPackage,
+    -- | Control whether origination of video is allowed for this OriginEndpoint.
+    -- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+    -- other form of access control. If set to DENY, the OriginEndpoint may not
+    -- be requested. This can be helpful for Live to VOD harvesting, or for
+    -- temporarily disabling origination
+    origination :: Prelude.Maybe Origination,
+    -- | Maximum duration (seconds) of content to retain for startover playback.
+    -- If not specified, startover playback will be disabled for the
+    -- OriginEndpoint.
+    startoverWindowSeconds :: Prelude.Maybe Prelude.Int,
+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | Amount of delay (seconds) to enforce on the playback of live content. If
+    -- not specified, there will be no time delay in effect for the
+    -- OriginEndpoint.
+    timeDelaySeconds :: Prelude.Maybe Prelude.Int,
+    -- | The URL of the packaged OriginEndpoint for consumption.
+    url :: Prelude.Maybe Prelude.Text,
+    -- | A list of source IP CIDR blocks that will be allowed to access the
+    -- OriginEndpoint.
+    whitelist :: 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 'UpdateOriginEndpointResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arn', 'updateOriginEndpointResponse_arn' - The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+--
+-- 'authorization', 'updateOriginEndpointResponse_authorization' - Undocumented member.
+--
+-- 'channelId', 'updateOriginEndpointResponse_channelId' - The ID of the Channel the OriginEndpoint is associated with.
+--
+-- 'cmafPackage', 'updateOriginEndpointResponse_cmafPackage' - Undocumented member.
+--
+-- 'dashPackage', 'updateOriginEndpointResponse_dashPackage' - Undocumented member.
+--
+-- 'description', 'updateOriginEndpointResponse_description' - A short text description of the OriginEndpoint.
+--
+-- 'hlsPackage', 'updateOriginEndpointResponse_hlsPackage' - Undocumented member.
+--
+-- 'id', 'updateOriginEndpointResponse_id' - The ID of the OriginEndpoint.
+--
+-- 'manifestName', 'updateOriginEndpointResponse_manifestName' - A short string appended to the end of the OriginEndpoint URL.
+--
+-- 'mssPackage', 'updateOriginEndpointResponse_mssPackage' - Undocumented member.
+--
+-- 'origination', 'updateOriginEndpointResponse_origination' - Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+--
+-- 'startoverWindowSeconds', 'updateOriginEndpointResponse_startoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+--
+-- 'tags', 'updateOriginEndpointResponse_tags' - Undocumented member.
+--
+-- 'timeDelaySeconds', 'updateOriginEndpointResponse_timeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+--
+-- 'url', 'updateOriginEndpointResponse_url' - The URL of the packaged OriginEndpoint for consumption.
+--
+-- 'whitelist', 'updateOriginEndpointResponse_whitelist' - A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+--
+-- 'httpStatus', 'updateOriginEndpointResponse_httpStatus' - The response's http status code.
+newUpdateOriginEndpointResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateOriginEndpointResponse
+newUpdateOriginEndpointResponse pHttpStatus_ =
+  UpdateOriginEndpointResponse'
+    { arn =
+        Prelude.Nothing,
+      authorization = Prelude.Nothing,
+      channelId = Prelude.Nothing,
+      cmafPackage = Prelude.Nothing,
+      dashPackage = Prelude.Nothing,
+      description = Prelude.Nothing,
+      hlsPackage = Prelude.Nothing,
+      id = Prelude.Nothing,
+      manifestName = Prelude.Nothing,
+      mssPackage = Prelude.Nothing,
+      origination = Prelude.Nothing,
+      startoverWindowSeconds = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      timeDelaySeconds = Prelude.Nothing,
+      url = Prelude.Nothing,
+      whitelist = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
+updateOriginEndpointResponse_arn :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+updateOriginEndpointResponse_arn = Lens.lens (\UpdateOriginEndpointResponse' {arn} -> arn) (\s@UpdateOriginEndpointResponse' {} a -> s {arn = a} :: UpdateOriginEndpointResponse)
+
+-- | Undocumented member.
+updateOriginEndpointResponse_authorization :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Authorization)
+updateOriginEndpointResponse_authorization = Lens.lens (\UpdateOriginEndpointResponse' {authorization} -> authorization) (\s@UpdateOriginEndpointResponse' {} a -> s {authorization = a} :: UpdateOriginEndpointResponse)
+
+-- | The ID of the Channel the OriginEndpoint is associated with.
+updateOriginEndpointResponse_channelId :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+updateOriginEndpointResponse_channelId = Lens.lens (\UpdateOriginEndpointResponse' {channelId} -> channelId) (\s@UpdateOriginEndpointResponse' {} a -> s {channelId = a} :: UpdateOriginEndpointResponse)
+
+-- | Undocumented member.
+updateOriginEndpointResponse_cmafPackage :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe CmafPackage)
+updateOriginEndpointResponse_cmafPackage = Lens.lens (\UpdateOriginEndpointResponse' {cmafPackage} -> cmafPackage) (\s@UpdateOriginEndpointResponse' {} a -> s {cmafPackage = a} :: UpdateOriginEndpointResponse)
+
+-- | Undocumented member.
+updateOriginEndpointResponse_dashPackage :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe DashPackage)
+updateOriginEndpointResponse_dashPackage = Lens.lens (\UpdateOriginEndpointResponse' {dashPackage} -> dashPackage) (\s@UpdateOriginEndpointResponse' {} a -> s {dashPackage = a} :: UpdateOriginEndpointResponse)
+
+-- | A short text description of the OriginEndpoint.
+updateOriginEndpointResponse_description :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+updateOriginEndpointResponse_description = Lens.lens (\UpdateOriginEndpointResponse' {description} -> description) (\s@UpdateOriginEndpointResponse' {} a -> s {description = a} :: UpdateOriginEndpointResponse)
+
+-- | Undocumented member.
+updateOriginEndpointResponse_hlsPackage :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe HlsPackage)
+updateOriginEndpointResponse_hlsPackage = Lens.lens (\UpdateOriginEndpointResponse' {hlsPackage} -> hlsPackage) (\s@UpdateOriginEndpointResponse' {} a -> s {hlsPackage = a} :: UpdateOriginEndpointResponse)
+
+-- | The ID of the OriginEndpoint.
+updateOriginEndpointResponse_id :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+updateOriginEndpointResponse_id = Lens.lens (\UpdateOriginEndpointResponse' {id} -> id) (\s@UpdateOriginEndpointResponse' {} a -> s {id = a} :: UpdateOriginEndpointResponse)
+
+-- | A short string appended to the end of the OriginEndpoint URL.
+updateOriginEndpointResponse_manifestName :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+updateOriginEndpointResponse_manifestName = Lens.lens (\UpdateOriginEndpointResponse' {manifestName} -> manifestName) (\s@UpdateOriginEndpointResponse' {} a -> s {manifestName = a} :: UpdateOriginEndpointResponse)
+
+-- | Undocumented member.
+updateOriginEndpointResponse_mssPackage :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe MssPackage)
+updateOriginEndpointResponse_mssPackage = Lens.lens (\UpdateOriginEndpointResponse' {mssPackage} -> mssPackage) (\s@UpdateOriginEndpointResponse' {} a -> s {mssPackage = a} :: UpdateOriginEndpointResponse)
+
+-- | Control whether origination of video is allowed for this OriginEndpoint.
+-- If set to ALLOW, the OriginEndpoint may by requested, pursuant to any
+-- other form of access control. If set to DENY, the OriginEndpoint may not
+-- be requested. This can be helpful for Live to VOD harvesting, or for
+-- temporarily disabling origination
+updateOriginEndpointResponse_origination :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Origination)
+updateOriginEndpointResponse_origination = Lens.lens (\UpdateOriginEndpointResponse' {origination} -> origination) (\s@UpdateOriginEndpointResponse' {} a -> s {origination = a} :: UpdateOriginEndpointResponse)
+
+-- | Maximum duration (seconds) of content to retain for startover playback.
+-- If not specified, startover playback will be disabled for the
+-- OriginEndpoint.
+updateOriginEndpointResponse_startoverWindowSeconds :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Prelude.Int)
+updateOriginEndpointResponse_startoverWindowSeconds = Lens.lens (\UpdateOriginEndpointResponse' {startoverWindowSeconds} -> startoverWindowSeconds) (\s@UpdateOriginEndpointResponse' {} a -> s {startoverWindowSeconds = a} :: UpdateOriginEndpointResponse)
+
+-- | Undocumented member.
+updateOriginEndpointResponse_tags :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+updateOriginEndpointResponse_tags = Lens.lens (\UpdateOriginEndpointResponse' {tags} -> tags) (\s@UpdateOriginEndpointResponse' {} a -> s {tags = a} :: UpdateOriginEndpointResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Amount of delay (seconds) to enforce on the playback of live content. If
+-- not specified, there will be no time delay in effect for the
+-- OriginEndpoint.
+updateOriginEndpointResponse_timeDelaySeconds :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Prelude.Int)
+updateOriginEndpointResponse_timeDelaySeconds = Lens.lens (\UpdateOriginEndpointResponse' {timeDelaySeconds} -> timeDelaySeconds) (\s@UpdateOriginEndpointResponse' {} a -> s {timeDelaySeconds = a} :: UpdateOriginEndpointResponse)
+
+-- | The URL of the packaged OriginEndpoint for consumption.
+updateOriginEndpointResponse_url :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe Prelude.Text)
+updateOriginEndpointResponse_url = Lens.lens (\UpdateOriginEndpointResponse' {url} -> url) (\s@UpdateOriginEndpointResponse' {} a -> s {url = a} :: UpdateOriginEndpointResponse)
+
+-- | A list of source IP CIDR blocks that will be allowed to access the
+-- OriginEndpoint.
+updateOriginEndpointResponse_whitelist :: Lens.Lens' UpdateOriginEndpointResponse (Prelude.Maybe [Prelude.Text])
+updateOriginEndpointResponse_whitelist = Lens.lens (\UpdateOriginEndpointResponse' {whitelist} -> whitelist) (\s@UpdateOriginEndpointResponse' {} a -> s {whitelist = a} :: UpdateOriginEndpointResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+updateOriginEndpointResponse_httpStatus :: Lens.Lens' UpdateOriginEndpointResponse Prelude.Int
+updateOriginEndpointResponse_httpStatus = Lens.lens (\UpdateOriginEndpointResponse' {httpStatus} -> httpStatus) (\s@UpdateOriginEndpointResponse' {} a -> s {httpStatus = a} :: UpdateOriginEndpointResponse)
+
+instance Prelude.NFData UpdateOriginEndpointResponse where
+  rnf UpdateOriginEndpointResponse' {..} =
+    Prelude.rnf arn
+      `Prelude.seq` Prelude.rnf authorization
+      `Prelude.seq` Prelude.rnf channelId
+      `Prelude.seq` Prelude.rnf cmafPackage
+      `Prelude.seq` Prelude.rnf dashPackage
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf hlsPackage
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf manifestName
+      `Prelude.seq` Prelude.rnf mssPackage
+      `Prelude.seq` Prelude.rnf origination
+      `Prelude.seq` Prelude.rnf startoverWindowSeconds
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf timeDelaySeconds
+      `Prelude.seq` Prelude.rnf url
+      `Prelude.seq` Prelude.rnf whitelist
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/MediaPackage/Waiters.hs b/gen/Amazonka/MediaPackage/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/MediaPackage/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.MediaPackage.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.MediaPackage.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.MediaPackage.Lens
+import Amazonka.MediaPackage.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/gen/Network/AWS/MediaPackage.hs b/gen/Network/AWS/MediaPackage.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage.hs
+++ /dev/null
@@ -1,292 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- AWS Elemental MediaPackage
-module Network.AWS.MediaPackage
-    (
-    -- * Service Configuration
-      mediaPackage
-
-    -- * Errors
-    -- $errors
-
-    -- ** UnprocessableEntityException
-    , _UnprocessableEntityException
-
-    -- ** ForbiddenException
-    , _ForbiddenException
-
-    -- ** NotFoundException
-    , _NotFoundException
-
-    -- ** TooManyRequestsException
-    , _TooManyRequestsException
-
-    -- ** InternalServerErrorException
-    , _InternalServerErrorException
-
-    -- ** ServiceUnavailableException
-    , _ServiceUnavailableException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** RotateChannelCredentials
-    , module Network.AWS.MediaPackage.RotateChannelCredentials
-
-    -- ** DescribeOriginEndpoint
-    , module Network.AWS.MediaPackage.DescribeOriginEndpoint
-
-    -- ** ListChannels (Paginated)
-    , module Network.AWS.MediaPackage.ListChannels
-
-    -- ** DeleteChannel
-    , module Network.AWS.MediaPackage.DeleteChannel
-
-    -- ** UpdateChannel
-    , module Network.AWS.MediaPackage.UpdateChannel
-
-    -- ** CreateOriginEndpoint
-    , module Network.AWS.MediaPackage.CreateOriginEndpoint
-
-    -- ** ListOriginEndpoints (Paginated)
-    , module Network.AWS.MediaPackage.ListOriginEndpoints
-
-    -- ** CreateChannel
-    , module Network.AWS.MediaPackage.CreateChannel
-
-    -- ** DescribeChannel
-    , module Network.AWS.MediaPackage.DescribeChannel
-
-    -- ** DeleteOriginEndpoint
-    , module Network.AWS.MediaPackage.DeleteOriginEndpoint
-
-    -- ** UpdateOriginEndpoint
-    , module Network.AWS.MediaPackage.UpdateOriginEndpoint
-
-    -- * Types
-
-    -- ** AdMarkers
-    , AdMarkers (..)
-
-    -- ** EncryptionMethod
-    , EncryptionMethod (..)
-
-    -- ** PlaylistType
-    , PlaylistType (..)
-
-    -- ** Profile
-    , Profile (..)
-
-    -- ** StreamOrder
-    , StreamOrder (..)
-
-    -- ** Channel
-    , Channel
-    , channel
-    , cHlsIngest
-    , cARN
-    , cId
-    , cDescription
-
-    -- ** CmafEncryption
-    , CmafEncryption
-    , cmafEncryption
-    , ceKeyRotationIntervalSeconds
-    , ceSpekeKeyProvider
-
-    -- ** CmafPackage
-    , CmafPackage
-    , cmafPackage
-    , cpHlsManifests
-    , cpSegmentDurationSeconds
-    , cpStreamSelection
-    , cpEncryption
-    , cpSegmentPrefix
-
-    -- ** CmafPackageCreateOrUpdateParameters
-    , CmafPackageCreateOrUpdateParameters
-    , cmafPackageCreateOrUpdateParameters
-    , cpcoupHlsManifests
-    , cpcoupSegmentDurationSeconds
-    , cpcoupStreamSelection
-    , cpcoupEncryption
-    , cpcoupSegmentPrefix
-
-    -- ** DashEncryption
-    , DashEncryption
-    , dashEncryption
-    , deKeyRotationIntervalSeconds
-    , deSpekeKeyProvider
-
-    -- ** DashPackage
-    , DashPackage
-    , dashPackage
-    , dpMinBufferTimeSeconds
-    , dpProfile
-    , dpSegmentDurationSeconds
-    , dpStreamSelection
-    , dpEncryption
-    , dpMinUpdatePeriodSeconds
-    , dpSuggestedPresentationDelaySeconds
-    , dpManifestWindowSeconds
-
-    -- ** HlsEncryption
-    , HlsEncryption
-    , hlsEncryption
-    , heEncryptionMethod
-    , heKeyRotationIntervalSeconds
-    , heConstantInitializationVector
-    , heRepeatExtXKey
-    , heSpekeKeyProvider
-
-    -- ** HlsIngest
-    , HlsIngest
-    , hlsIngest
-    , hiIngestEndpoints
-
-    -- ** HlsManifest
-    , HlsManifest
-    , hlsManifest
-    , hmManifestName
-    , hmURL
-    , hmPlaylistType
-    , hmProgramDateTimeIntervalSeconds
-    , hmAdMarkers
-    , hmIncludeIframeOnlyStream
-    , hmPlaylistWindowSeconds
-    , hmId
-
-    -- ** HlsManifestCreateOrUpdateParameters
-    , HlsManifestCreateOrUpdateParameters
-    , hlsManifestCreateOrUpdateParameters
-    , hmcoupManifestName
-    , hmcoupPlaylistType
-    , hmcoupProgramDateTimeIntervalSeconds
-    , hmcoupAdMarkers
-    , hmcoupIncludeIframeOnlyStream
-    , hmcoupPlaylistWindowSeconds
-    , hmcoupId
-
-    -- ** HlsPackage
-    , HlsPackage
-    , hlsPackage
-    , hpUseAudioRenditionGroup
-    , hpPlaylistType
-    , hpSegmentDurationSeconds
-    , hpProgramDateTimeIntervalSeconds
-    , hpStreamSelection
-    , hpAdMarkers
-    , hpEncryption
-    , hpIncludeIframeOnlyStream
-    , hpPlaylistWindowSeconds
-
-    -- ** IngestEndpoint
-    , IngestEndpoint
-    , ingestEndpoint
-    , ieURL
-    , ieUsername
-    , iePassword
-
-    -- ** MssEncryption
-    , MssEncryption
-    , mssEncryption
-    , meSpekeKeyProvider
-
-    -- ** MssPackage
-    , MssPackage
-    , mssPackage
-    , mpSegmentDurationSeconds
-    , mpStreamSelection
-    , mpEncryption
-    , mpManifestWindowSeconds
-
-    -- ** OriginEndpoint
-    , OriginEndpoint
-    , originEndpoint
-    , oeWhitelist
-    , oeHlsPackage
-    , oeARN
-    , oeManifestName
-    , oeURL
-    , oeChannelId
-    , oeStartoverWindowSeconds
-    , oeDashPackage
-    , oeMssPackage
-    , oeId
-    , oeTimeDelaySeconds
-    , oeCmafPackage
-    , oeDescription
-
-    -- ** SpekeKeyProvider
-    , SpekeKeyProvider
-    , spekeKeyProvider
-    , skpURL
-    , skpResourceId
-    , skpRoleARN
-    , skpSystemIds
-
-    -- ** StreamSelection
-    , StreamSelection
-    , streamSelection
-    , ssStreamOrder
-    , ssMinVideoBitsPerSecond
-    , ssMaxVideoBitsPerSecond
-    ) where
-
-import Network.AWS.MediaPackage.CreateChannel
-import Network.AWS.MediaPackage.CreateOriginEndpoint
-import Network.AWS.MediaPackage.DeleteChannel
-import Network.AWS.MediaPackage.DeleteOriginEndpoint
-import Network.AWS.MediaPackage.DescribeChannel
-import Network.AWS.MediaPackage.DescribeOriginEndpoint
-import Network.AWS.MediaPackage.ListChannels
-import Network.AWS.MediaPackage.ListOriginEndpoints
-import Network.AWS.MediaPackage.RotateChannelCredentials
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.UpdateChannel
-import Network.AWS.MediaPackage.UpdateOriginEndpoint
-import Network.AWS.MediaPackage.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 'MediaPackage'.
--}
-
-{- $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/Network/AWS/MediaPackage/CreateChannel.hs b/gen/Network/AWS/MediaPackage/CreateChannel.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/CreateChannel.hs
+++ /dev/null
@@ -1,171 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.CreateChannel
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a new Channel.
-module Network.AWS.MediaPackage.CreateChannel
-    (
-    -- * Creating a Request
-      createChannel
-    , CreateChannel
-    -- * Request Lenses
-    , ccDescription
-    , ccId
-
-    -- * Destructuring the Response
-    , createChannelResponse
-    , CreateChannelResponse
-    -- * Response Lenses
-    , ccrsHlsIngest
-    , ccrsARN
-    , ccrsId
-    , ccrsDescription
-    , ccrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A new Channel configuration.
---
--- /See:/ 'createChannel' smart constructor.
-data CreateChannel = CreateChannel'
-  { _ccDescription :: !(Maybe Text)
-  , _ccId          :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateChannel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccDescription' - A short text description of the Channel.
---
--- * 'ccId' - The ID of the Channel. The ID must be unique within the region and it cannot be changed after a Channel is created.
-createChannel
-    :: Text -- ^ 'ccId'
-    -> CreateChannel
-createChannel pId_ = CreateChannel' {_ccDescription = Nothing, _ccId = pId_}
-
-
--- | A short text description of the Channel.
-ccDescription :: Lens' CreateChannel (Maybe Text)
-ccDescription = lens _ccDescription (\ s a -> s{_ccDescription = a})
-
--- | The ID of the Channel. The ID must be unique within the region and it cannot be changed after a Channel is created.
-ccId :: Lens' CreateChannel Text
-ccId = lens _ccId (\ s a -> s{_ccId = a})
-
-instance AWSRequest CreateChannel where
-        type Rs CreateChannel = CreateChannelResponse
-        request = postJSON mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateChannelResponse' <$>
-                   (x .?> "hlsIngest") <*> (x .?> "arn") <*>
-                     (x .?> "id")
-                     <*> (x .?> "description")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable CreateChannel where
-
-instance NFData CreateChannel where
-
-instance ToHeaders CreateChannel where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateChannel where
-        toJSON CreateChannel'{..}
-          = object
-              (catMaybes
-                 [("description" .=) <$> _ccDescription,
-                  Just ("id" .= _ccId)])
-
-instance ToPath CreateChannel where
-        toPath = const "/channels"
-
-instance ToQuery CreateChannel where
-        toQuery = const mempty
-
--- | /See:/ 'createChannelResponse' smart constructor.
-data CreateChannelResponse = CreateChannelResponse'
-  { _ccrsHlsIngest      :: !(Maybe HlsIngest)
-  , _ccrsARN            :: !(Maybe Text)
-  , _ccrsId             :: !(Maybe Text)
-  , _ccrsDescription    :: !(Maybe Text)
-  , _ccrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateChannelResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccrsHlsIngest' - Undocumented member.
---
--- * 'ccrsARN' - The Amazon Resource Name (ARN) assigned to the Channel.
---
--- * 'ccrsId' - The ID of the Channel.
---
--- * 'ccrsDescription' - A short text description of the Channel.
---
--- * 'ccrsResponseStatus' - -- | The response status code.
-createChannelResponse
-    :: Int -- ^ 'ccrsResponseStatus'
-    -> CreateChannelResponse
-createChannelResponse pResponseStatus_ =
-  CreateChannelResponse'
-    { _ccrsHlsIngest = Nothing
-    , _ccrsARN = Nothing
-    , _ccrsId = Nothing
-    , _ccrsDescription = Nothing
-    , _ccrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Undocumented member.
-ccrsHlsIngest :: Lens' CreateChannelResponse (Maybe HlsIngest)
-ccrsHlsIngest = lens _ccrsHlsIngest (\ s a -> s{_ccrsHlsIngest = a})
-
--- | The Amazon Resource Name (ARN) assigned to the Channel.
-ccrsARN :: Lens' CreateChannelResponse (Maybe Text)
-ccrsARN = lens _ccrsARN (\ s a -> s{_ccrsARN = a})
-
--- | The ID of the Channel.
-ccrsId :: Lens' CreateChannelResponse (Maybe Text)
-ccrsId = lens _ccrsId (\ s a -> s{_ccrsId = a})
-
--- | A short text description of the Channel.
-ccrsDescription :: Lens' CreateChannelResponse (Maybe Text)
-ccrsDescription = lens _ccrsDescription (\ s a -> s{_ccrsDescription = a})
-
--- | -- | The response status code.
-ccrsResponseStatus :: Lens' CreateChannelResponse Int
-ccrsResponseStatus = lens _ccrsResponseStatus (\ s a -> s{_ccrsResponseStatus = a})
-
-instance NFData CreateChannelResponse where
diff --git a/gen/Network/AWS/MediaPackage/CreateOriginEndpoint.hs b/gen/Network/AWS/MediaPackage/CreateOriginEndpoint.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/CreateOriginEndpoint.hs
+++ /dev/null
@@ -1,359 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.CreateOriginEndpoint
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a new OriginEndpoint record.
-module Network.AWS.MediaPackage.CreateOriginEndpoint
-    (
-    -- * Creating a Request
-      createOriginEndpoint
-    , CreateOriginEndpoint
-    -- * Request Lenses
-    , coeWhitelist
-    , coeHlsPackage
-    , coeManifestName
-    , coeStartoverWindowSeconds
-    , coeDashPackage
-    , coeMssPackage
-    , coeTimeDelaySeconds
-    , coeCmafPackage
-    , coeDescription
-    , coeChannelId
-    , coeId
-
-    -- * Destructuring the Response
-    , createOriginEndpointResponse
-    , CreateOriginEndpointResponse
-    -- * Response Lenses
-    , coersWhitelist
-    , coersHlsPackage
-    , coersARN
-    , coersManifestName
-    , coersURL
-    , coersChannelId
-    , coersStartoverWindowSeconds
-    , coersDashPackage
-    , coersMssPackage
-    , coersId
-    , coersTimeDelaySeconds
-    , coersCmafPackage
-    , coersDescription
-    , coersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | Configuration parameters used to create a new OriginEndpoint.
---
--- /See:/ 'createOriginEndpoint' smart constructor.
-data CreateOriginEndpoint = CreateOriginEndpoint'
-  { _coeWhitelist              :: !(Maybe [Text])
-  , _coeHlsPackage             :: !(Maybe HlsPackage)
-  , _coeManifestName           :: !(Maybe Text)
-  , _coeStartoverWindowSeconds :: !(Maybe Int)
-  , _coeDashPackage            :: !(Maybe DashPackage)
-  , _coeMssPackage             :: !(Maybe MssPackage)
-  , _coeTimeDelaySeconds       :: !(Maybe Int)
-  , _coeCmafPackage            :: !(Maybe CmafPackageCreateOrUpdateParameters)
-  , _coeDescription            :: !(Maybe Text)
-  , _coeChannelId              :: !Text
-  , _coeId                     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateOriginEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'coeWhitelist' - A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
---
--- * 'coeHlsPackage' - Undocumented member.
---
--- * 'coeManifestName' - A short string that will be used as the filename of the OriginEndpoint URL (defaults to "index").
---
--- * 'coeStartoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
---
--- * 'coeDashPackage' - Undocumented member.
---
--- * 'coeMssPackage' - Undocumented member.
---
--- * 'coeTimeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
---
--- * 'coeCmafPackage' - Undocumented member.
---
--- * 'coeDescription' - A short text description of the OriginEndpoint.
---
--- * 'coeChannelId' - The ID of the Channel that the OriginEndpoint will be associated with. This cannot be changed after the OriginEndpoint is created.
---
--- * 'coeId' - The ID of the OriginEndpoint.  The ID must be unique within the region and it cannot be changed after the OriginEndpoint is created.
-createOriginEndpoint
-    :: Text -- ^ 'coeChannelId'
-    -> Text -- ^ 'coeId'
-    -> CreateOriginEndpoint
-createOriginEndpoint pChannelId_ pId_ =
-  CreateOriginEndpoint'
-    { _coeWhitelist = Nothing
-    , _coeHlsPackage = Nothing
-    , _coeManifestName = Nothing
-    , _coeStartoverWindowSeconds = Nothing
-    , _coeDashPackage = Nothing
-    , _coeMssPackage = Nothing
-    , _coeTimeDelaySeconds = Nothing
-    , _coeCmafPackage = Nothing
-    , _coeDescription = Nothing
-    , _coeChannelId = pChannelId_
-    , _coeId = pId_
-    }
-
-
--- | A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
-coeWhitelist :: Lens' CreateOriginEndpoint [Text]
-coeWhitelist = lens _coeWhitelist (\ s a -> s{_coeWhitelist = a}) . _Default . _Coerce
-
--- | Undocumented member.
-coeHlsPackage :: Lens' CreateOriginEndpoint (Maybe HlsPackage)
-coeHlsPackage = lens _coeHlsPackage (\ s a -> s{_coeHlsPackage = a})
-
--- | A short string that will be used as the filename of the OriginEndpoint URL (defaults to "index").
-coeManifestName :: Lens' CreateOriginEndpoint (Maybe Text)
-coeManifestName = lens _coeManifestName (\ s a -> s{_coeManifestName = a})
-
--- | Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
-coeStartoverWindowSeconds :: Lens' CreateOriginEndpoint (Maybe Int)
-coeStartoverWindowSeconds = lens _coeStartoverWindowSeconds (\ s a -> s{_coeStartoverWindowSeconds = a})
-
--- | Undocumented member.
-coeDashPackage :: Lens' CreateOriginEndpoint (Maybe DashPackage)
-coeDashPackage = lens _coeDashPackage (\ s a -> s{_coeDashPackage = a})
-
--- | Undocumented member.
-coeMssPackage :: Lens' CreateOriginEndpoint (Maybe MssPackage)
-coeMssPackage = lens _coeMssPackage (\ s a -> s{_coeMssPackage = a})
-
--- | Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
-coeTimeDelaySeconds :: Lens' CreateOriginEndpoint (Maybe Int)
-coeTimeDelaySeconds = lens _coeTimeDelaySeconds (\ s a -> s{_coeTimeDelaySeconds = a})
-
--- | Undocumented member.
-coeCmafPackage :: Lens' CreateOriginEndpoint (Maybe CmafPackageCreateOrUpdateParameters)
-coeCmafPackage = lens _coeCmafPackage (\ s a -> s{_coeCmafPackage = a})
-
--- | A short text description of the OriginEndpoint.
-coeDescription :: Lens' CreateOriginEndpoint (Maybe Text)
-coeDescription = lens _coeDescription (\ s a -> s{_coeDescription = a})
-
--- | The ID of the Channel that the OriginEndpoint will be associated with. This cannot be changed after the OriginEndpoint is created.
-coeChannelId :: Lens' CreateOriginEndpoint Text
-coeChannelId = lens _coeChannelId (\ s a -> s{_coeChannelId = a})
-
--- | The ID of the OriginEndpoint.  The ID must be unique within the region and it cannot be changed after the OriginEndpoint is created.
-coeId :: Lens' CreateOriginEndpoint Text
-coeId = lens _coeId (\ s a -> s{_coeId = a})
-
-instance AWSRequest CreateOriginEndpoint where
-        type Rs CreateOriginEndpoint =
-             CreateOriginEndpointResponse
-        request = postJSON mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateOriginEndpointResponse' <$>
-                   (x .?> "whitelist" .!@ mempty) <*>
-                     (x .?> "hlsPackage")
-                     <*> (x .?> "arn")
-                     <*> (x .?> "manifestName")
-                     <*> (x .?> "url")
-                     <*> (x .?> "channelId")
-                     <*> (x .?> "startoverWindowSeconds")
-                     <*> (x .?> "dashPackage")
-                     <*> (x .?> "mssPackage")
-                     <*> (x .?> "id")
-                     <*> (x .?> "timeDelaySeconds")
-                     <*> (x .?> "cmafPackage")
-                     <*> (x .?> "description")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable CreateOriginEndpoint where
-
-instance NFData CreateOriginEndpoint where
-
-instance ToHeaders CreateOriginEndpoint where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateOriginEndpoint where
-        toJSON CreateOriginEndpoint'{..}
-          = object
-              (catMaybes
-                 [("whitelist" .=) <$> _coeWhitelist,
-                  ("hlsPackage" .=) <$> _coeHlsPackage,
-                  ("manifestName" .=) <$> _coeManifestName,
-                  ("startoverWindowSeconds" .=) <$>
-                    _coeStartoverWindowSeconds,
-                  ("dashPackage" .=) <$> _coeDashPackage,
-                  ("mssPackage" .=) <$> _coeMssPackage,
-                  ("timeDelaySeconds" .=) <$> _coeTimeDelaySeconds,
-                  ("cmafPackage" .=) <$> _coeCmafPackage,
-                  ("description" .=) <$> _coeDescription,
-                  Just ("channelId" .= _coeChannelId),
-                  Just ("id" .= _coeId)])
-
-instance ToPath CreateOriginEndpoint where
-        toPath = const "/origin_endpoints"
-
-instance ToQuery CreateOriginEndpoint where
-        toQuery = const mempty
-
--- | /See:/ 'createOriginEndpointResponse' smart constructor.
-data CreateOriginEndpointResponse = CreateOriginEndpointResponse'
-  { _coersWhitelist              :: !(Maybe [Text])
-  , _coersHlsPackage             :: !(Maybe HlsPackage)
-  , _coersARN                    :: !(Maybe Text)
-  , _coersManifestName           :: !(Maybe Text)
-  , _coersURL                    :: !(Maybe Text)
-  , _coersChannelId              :: !(Maybe Text)
-  , _coersStartoverWindowSeconds :: !(Maybe Int)
-  , _coersDashPackage            :: !(Maybe DashPackage)
-  , _coersMssPackage             :: !(Maybe MssPackage)
-  , _coersId                     :: !(Maybe Text)
-  , _coersTimeDelaySeconds       :: !(Maybe Int)
-  , _coersCmafPackage            :: !(Maybe CmafPackage)
-  , _coersDescription            :: !(Maybe Text)
-  , _coersResponseStatus         :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateOriginEndpointResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'coersWhitelist' - A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
---
--- * 'coersHlsPackage' - Undocumented member.
---
--- * 'coersARN' - The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
---
--- * 'coersManifestName' - A short string appended to the end of the OriginEndpoint URL.
---
--- * 'coersURL' - The URL of the packaged OriginEndpoint for consumption.
---
--- * 'coersChannelId' - The ID of the Channel the OriginEndpoint is associated with.
---
--- * 'coersStartoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
---
--- * 'coersDashPackage' - Undocumented member.
---
--- * 'coersMssPackage' - Undocumented member.
---
--- * 'coersId' - The ID of the OriginEndpoint.
---
--- * 'coersTimeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
---
--- * 'coersCmafPackage' - Undocumented member.
---
--- * 'coersDescription' - A short text description of the OriginEndpoint.
---
--- * 'coersResponseStatus' - -- | The response status code.
-createOriginEndpointResponse
-    :: Int -- ^ 'coersResponseStatus'
-    -> CreateOriginEndpointResponse
-createOriginEndpointResponse pResponseStatus_ =
-  CreateOriginEndpointResponse'
-    { _coersWhitelist = Nothing
-    , _coersHlsPackage = Nothing
-    , _coersARN = Nothing
-    , _coersManifestName = Nothing
-    , _coersURL = Nothing
-    , _coersChannelId = Nothing
-    , _coersStartoverWindowSeconds = Nothing
-    , _coersDashPackage = Nothing
-    , _coersMssPackage = Nothing
-    , _coersId = Nothing
-    , _coersTimeDelaySeconds = Nothing
-    , _coersCmafPackage = Nothing
-    , _coersDescription = Nothing
-    , _coersResponseStatus = pResponseStatus_
-    }
-
-
--- | A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
-coersWhitelist :: Lens' CreateOriginEndpointResponse [Text]
-coersWhitelist = lens _coersWhitelist (\ s a -> s{_coersWhitelist = a}) . _Default . _Coerce
-
--- | Undocumented member.
-coersHlsPackage :: Lens' CreateOriginEndpointResponse (Maybe HlsPackage)
-coersHlsPackage = lens _coersHlsPackage (\ s a -> s{_coersHlsPackage = a})
-
--- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
-coersARN :: Lens' CreateOriginEndpointResponse (Maybe Text)
-coersARN = lens _coersARN (\ s a -> s{_coersARN = a})
-
--- | A short string appended to the end of the OriginEndpoint URL.
-coersManifestName :: Lens' CreateOriginEndpointResponse (Maybe Text)
-coersManifestName = lens _coersManifestName (\ s a -> s{_coersManifestName = a})
-
--- | The URL of the packaged OriginEndpoint for consumption.
-coersURL :: Lens' CreateOriginEndpointResponse (Maybe Text)
-coersURL = lens _coersURL (\ s a -> s{_coersURL = a})
-
--- | The ID of the Channel the OriginEndpoint is associated with.
-coersChannelId :: Lens' CreateOriginEndpointResponse (Maybe Text)
-coersChannelId = lens _coersChannelId (\ s a -> s{_coersChannelId = a})
-
--- | Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
-coersStartoverWindowSeconds :: Lens' CreateOriginEndpointResponse (Maybe Int)
-coersStartoverWindowSeconds = lens _coersStartoverWindowSeconds (\ s a -> s{_coersStartoverWindowSeconds = a})
-
--- | Undocumented member.
-coersDashPackage :: Lens' CreateOriginEndpointResponse (Maybe DashPackage)
-coersDashPackage = lens _coersDashPackage (\ s a -> s{_coersDashPackage = a})
-
--- | Undocumented member.
-coersMssPackage :: Lens' CreateOriginEndpointResponse (Maybe MssPackage)
-coersMssPackage = lens _coersMssPackage (\ s a -> s{_coersMssPackage = a})
-
--- | The ID of the OriginEndpoint.
-coersId :: Lens' CreateOriginEndpointResponse (Maybe Text)
-coersId = lens _coersId (\ s a -> s{_coersId = a})
-
--- | Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
-coersTimeDelaySeconds :: Lens' CreateOriginEndpointResponse (Maybe Int)
-coersTimeDelaySeconds = lens _coersTimeDelaySeconds (\ s a -> s{_coersTimeDelaySeconds = a})
-
--- | Undocumented member.
-coersCmafPackage :: Lens' CreateOriginEndpointResponse (Maybe CmafPackage)
-coersCmafPackage = lens _coersCmafPackage (\ s a -> s{_coersCmafPackage = a})
-
--- | A short text description of the OriginEndpoint.
-coersDescription :: Lens' CreateOriginEndpointResponse (Maybe Text)
-coersDescription = lens _coersDescription (\ s a -> s{_coersDescription = a})
-
--- | -- | The response status code.
-coersResponseStatus :: Lens' CreateOriginEndpointResponse Int
-coersResponseStatus = lens _coersResponseStatus (\ s a -> s{_coersResponseStatus = a})
-
-instance NFData CreateOriginEndpointResponse where
diff --git a/gen/Network/AWS/MediaPackage/DeleteChannel.hs b/gen/Network/AWS/MediaPackage/DeleteChannel.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/DeleteChannel.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.DeleteChannel
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an existing Channel.
-module Network.AWS.MediaPackage.DeleteChannel
-    (
-    -- * Creating a Request
-      deleteChannel
-    , DeleteChannel
-    -- * Request Lenses
-    , dcId
-
-    -- * Destructuring the Response
-    , deleteChannelResponse
-    , DeleteChannelResponse
-    -- * Response Lenses
-    , drsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteChannel' smart constructor.
-newtype DeleteChannel = DeleteChannel'
-  { _dcId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteChannel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcId' - The ID of the Channel to delete.
-deleteChannel
-    :: Text -- ^ 'dcId'
-    -> DeleteChannel
-deleteChannel pId_ = DeleteChannel' {_dcId = pId_}
-
-
--- | The ID of the Channel to delete.
-dcId :: Lens' DeleteChannel Text
-dcId = lens _dcId (\ s a -> s{_dcId = a})
-
-instance AWSRequest DeleteChannel where
-        type Rs DeleteChannel = DeleteChannelResponse
-        request = delete mediaPackage
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteChannelResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteChannel where
-
-instance NFData DeleteChannel where
-
-instance ToHeaders DeleteChannel where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DeleteChannel where
-        toPath DeleteChannel'{..}
-          = mconcat ["/channels/", toBS _dcId]
-
-instance ToQuery DeleteChannel where
-        toQuery = const mempty
-
--- | /See:/ 'deleteChannelResponse' smart constructor.
-newtype DeleteChannelResponse = DeleteChannelResponse'
-  { _drsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteChannelResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drsResponseStatus' - -- | The response status code.
-deleteChannelResponse
-    :: Int -- ^ 'drsResponseStatus'
-    -> DeleteChannelResponse
-deleteChannelResponse pResponseStatus_ =
-  DeleteChannelResponse' {_drsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-drsResponseStatus :: Lens' DeleteChannelResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a})
-
-instance NFData DeleteChannelResponse where
diff --git a/gen/Network/AWS/MediaPackage/DeleteOriginEndpoint.hs b/gen/Network/AWS/MediaPackage/DeleteOriginEndpoint.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/DeleteOriginEndpoint.hs
+++ /dev/null
@@ -1,115 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.DeleteOriginEndpoint
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an existing OriginEndpoint.
-module Network.AWS.MediaPackage.DeleteOriginEndpoint
-    (
-    -- * Creating a Request
-      deleteOriginEndpoint
-    , DeleteOriginEndpoint
-    -- * Request Lenses
-    , delId
-
-    -- * Destructuring the Response
-    , deleteOriginEndpointResponse
-    , DeleteOriginEndpointResponse
-    -- * Response Lenses
-    , doersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteOriginEndpoint' smart constructor.
-newtype DeleteOriginEndpoint = DeleteOriginEndpoint'
-  { _delId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteOriginEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'delId' - The ID of the OriginEndpoint to delete.
-deleteOriginEndpoint
-    :: Text -- ^ 'delId'
-    -> DeleteOriginEndpoint
-deleteOriginEndpoint pId_ = DeleteOriginEndpoint' {_delId = pId_}
-
-
--- | The ID of the OriginEndpoint to delete.
-delId :: Lens' DeleteOriginEndpoint Text
-delId = lens _delId (\ s a -> s{_delId = a})
-
-instance AWSRequest DeleteOriginEndpoint where
-        type Rs DeleteOriginEndpoint =
-             DeleteOriginEndpointResponse
-        request = delete mediaPackage
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteOriginEndpointResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable DeleteOriginEndpoint where
-
-instance NFData DeleteOriginEndpoint where
-
-instance ToHeaders DeleteOriginEndpoint where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DeleteOriginEndpoint where
-        toPath DeleteOriginEndpoint'{..}
-          = mconcat ["/origin_endpoints/", toBS _delId]
-
-instance ToQuery DeleteOriginEndpoint where
-        toQuery = const mempty
-
--- | /See:/ 'deleteOriginEndpointResponse' smart constructor.
-newtype DeleteOriginEndpointResponse = DeleteOriginEndpointResponse'
-  { _doersResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteOriginEndpointResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'doersResponseStatus' - -- | The response status code.
-deleteOriginEndpointResponse
-    :: Int -- ^ 'doersResponseStatus'
-    -> DeleteOriginEndpointResponse
-deleteOriginEndpointResponse pResponseStatus_ =
-  DeleteOriginEndpointResponse' {_doersResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-doersResponseStatus :: Lens' DeleteOriginEndpointResponse Int
-doersResponseStatus = lens _doersResponseStatus (\ s a -> s{_doersResponseStatus = a})
-
-instance NFData DeleteOriginEndpointResponse where
diff --git a/gen/Network/AWS/MediaPackage/DescribeChannel.hs b/gen/Network/AWS/MediaPackage/DescribeChannel.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/DescribeChannel.hs
+++ /dev/null
@@ -1,155 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.DescribeChannel
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets details about a Channel.
-module Network.AWS.MediaPackage.DescribeChannel
-    (
-    -- * Creating a Request
-      describeChannel
-    , DescribeChannel
-    -- * Request Lenses
-    , dId
-
-    -- * Destructuring the Response
-    , describeChannelResponse
-    , DescribeChannelResponse
-    -- * Response Lenses
-    , dcrsHlsIngest
-    , dcrsARN
-    , dcrsId
-    , dcrsDescription
-    , dcrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'describeChannel' smart constructor.
-newtype DescribeChannel = DescribeChannel'
-  { _dId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeChannel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dId' - The ID of a Channel.
-describeChannel
-    :: Text -- ^ 'dId'
-    -> DescribeChannel
-describeChannel pId_ = DescribeChannel' {_dId = pId_}
-
-
--- | The ID of a Channel.
-dId :: Lens' DescribeChannel Text
-dId = lens _dId (\ s a -> s{_dId = a})
-
-instance AWSRequest DescribeChannel where
-        type Rs DescribeChannel = DescribeChannelResponse
-        request = get mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeChannelResponse' <$>
-                   (x .?> "hlsIngest") <*> (x .?> "arn") <*>
-                     (x .?> "id")
-                     <*> (x .?> "description")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeChannel where
-
-instance NFData DescribeChannel where
-
-instance ToHeaders DescribeChannel where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DescribeChannel where
-        toPath DescribeChannel'{..}
-          = mconcat ["/channels/", toBS _dId]
-
-instance ToQuery DescribeChannel where
-        toQuery = const mempty
-
--- | /See:/ 'describeChannelResponse' smart constructor.
-data DescribeChannelResponse = DescribeChannelResponse'
-  { _dcrsHlsIngest      :: !(Maybe HlsIngest)
-  , _dcrsARN            :: !(Maybe Text)
-  , _dcrsId             :: !(Maybe Text)
-  , _dcrsDescription    :: !(Maybe Text)
-  , _dcrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeChannelResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcrsHlsIngest' - Undocumented member.
---
--- * 'dcrsARN' - The Amazon Resource Name (ARN) assigned to the Channel.
---
--- * 'dcrsId' - The ID of the Channel.
---
--- * 'dcrsDescription' - A short text description of the Channel.
---
--- * 'dcrsResponseStatus' - -- | The response status code.
-describeChannelResponse
-    :: Int -- ^ 'dcrsResponseStatus'
-    -> DescribeChannelResponse
-describeChannelResponse pResponseStatus_ =
-  DescribeChannelResponse'
-    { _dcrsHlsIngest = Nothing
-    , _dcrsARN = Nothing
-    , _dcrsId = Nothing
-    , _dcrsDescription = Nothing
-    , _dcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Undocumented member.
-dcrsHlsIngest :: Lens' DescribeChannelResponse (Maybe HlsIngest)
-dcrsHlsIngest = lens _dcrsHlsIngest (\ s a -> s{_dcrsHlsIngest = a})
-
--- | The Amazon Resource Name (ARN) assigned to the Channel.
-dcrsARN :: Lens' DescribeChannelResponse (Maybe Text)
-dcrsARN = lens _dcrsARN (\ s a -> s{_dcrsARN = a})
-
--- | The ID of the Channel.
-dcrsId :: Lens' DescribeChannelResponse (Maybe Text)
-dcrsId = lens _dcrsId (\ s a -> s{_dcrsId = a})
-
--- | A short text description of the Channel.
-dcrsDescription :: Lens' DescribeChannelResponse (Maybe Text)
-dcrsDescription = lens _dcrsDescription (\ s a -> s{_dcrsDescription = a})
-
--- | -- | The response status code.
-dcrsResponseStatus :: Lens' DescribeChannelResponse Int
-dcrsResponseStatus = lens _dcrsResponseStatus (\ s a -> s{_dcrsResponseStatus = a})
-
-instance NFData DescribeChannelResponse where
diff --git a/gen/Network/AWS/MediaPackage/DescribeOriginEndpoint.hs b/gen/Network/AWS/MediaPackage/DescribeOriginEndpoint.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/DescribeOriginEndpoint.hs
+++ /dev/null
@@ -1,247 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.DescribeOriginEndpoint
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets details about an existing OriginEndpoint.
-module Network.AWS.MediaPackage.DescribeOriginEndpoint
-    (
-    -- * Creating a Request
-      describeOriginEndpoint
-    , DescribeOriginEndpoint
-    -- * Request Lenses
-    , doeId
-
-    -- * Destructuring the Response
-    , describeOriginEndpointResponse
-    , DescribeOriginEndpointResponse
-    -- * Response Lenses
-    , desrsWhitelist
-    , desrsHlsPackage
-    , desrsARN
-    , desrsManifestName
-    , desrsURL
-    , desrsChannelId
-    , desrsStartoverWindowSeconds
-    , desrsDashPackage
-    , desrsMssPackage
-    , desrsId
-    , desrsTimeDelaySeconds
-    , desrsCmafPackage
-    , desrsDescription
-    , desrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'describeOriginEndpoint' smart constructor.
-newtype DescribeOriginEndpoint = DescribeOriginEndpoint'
-  { _doeId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeOriginEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'doeId' - The ID of the OriginEndpoint.
-describeOriginEndpoint
-    :: Text -- ^ 'doeId'
-    -> DescribeOriginEndpoint
-describeOriginEndpoint pId_ = DescribeOriginEndpoint' {_doeId = pId_}
-
-
--- | The ID of the OriginEndpoint.
-doeId :: Lens' DescribeOriginEndpoint Text
-doeId = lens _doeId (\ s a -> s{_doeId = a})
-
-instance AWSRequest DescribeOriginEndpoint where
-        type Rs DescribeOriginEndpoint =
-             DescribeOriginEndpointResponse
-        request = get mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeOriginEndpointResponse' <$>
-                   (x .?> "whitelist" .!@ mempty) <*>
-                     (x .?> "hlsPackage")
-                     <*> (x .?> "arn")
-                     <*> (x .?> "manifestName")
-                     <*> (x .?> "url")
-                     <*> (x .?> "channelId")
-                     <*> (x .?> "startoverWindowSeconds")
-                     <*> (x .?> "dashPackage")
-                     <*> (x .?> "mssPackage")
-                     <*> (x .?> "id")
-                     <*> (x .?> "timeDelaySeconds")
-                     <*> (x .?> "cmafPackage")
-                     <*> (x .?> "description")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeOriginEndpoint where
-
-instance NFData DescribeOriginEndpoint where
-
-instance ToHeaders DescribeOriginEndpoint where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DescribeOriginEndpoint where
-        toPath DescribeOriginEndpoint'{..}
-          = mconcat ["/origin_endpoints/", toBS _doeId]
-
-instance ToQuery DescribeOriginEndpoint where
-        toQuery = const mempty
-
--- | /See:/ 'describeOriginEndpointResponse' smart constructor.
-data DescribeOriginEndpointResponse = DescribeOriginEndpointResponse'
-  { _desrsWhitelist              :: !(Maybe [Text])
-  , _desrsHlsPackage             :: !(Maybe HlsPackage)
-  , _desrsARN                    :: !(Maybe Text)
-  , _desrsManifestName           :: !(Maybe Text)
-  , _desrsURL                    :: !(Maybe Text)
-  , _desrsChannelId              :: !(Maybe Text)
-  , _desrsStartoverWindowSeconds :: !(Maybe Int)
-  , _desrsDashPackage            :: !(Maybe DashPackage)
-  , _desrsMssPackage             :: !(Maybe MssPackage)
-  , _desrsId                     :: !(Maybe Text)
-  , _desrsTimeDelaySeconds       :: !(Maybe Int)
-  , _desrsCmafPackage            :: !(Maybe CmafPackage)
-  , _desrsDescription            :: !(Maybe Text)
-  , _desrsResponseStatus         :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeOriginEndpointResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'desrsWhitelist' - A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
---
--- * 'desrsHlsPackage' - Undocumented member.
---
--- * 'desrsARN' - The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
---
--- * 'desrsManifestName' - A short string appended to the end of the OriginEndpoint URL.
---
--- * 'desrsURL' - The URL of the packaged OriginEndpoint for consumption.
---
--- * 'desrsChannelId' - The ID of the Channel the OriginEndpoint is associated with.
---
--- * 'desrsStartoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
---
--- * 'desrsDashPackage' - Undocumented member.
---
--- * 'desrsMssPackage' - Undocumented member.
---
--- * 'desrsId' - The ID of the OriginEndpoint.
---
--- * 'desrsTimeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
---
--- * 'desrsCmafPackage' - Undocumented member.
---
--- * 'desrsDescription' - A short text description of the OriginEndpoint.
---
--- * 'desrsResponseStatus' - -- | The response status code.
-describeOriginEndpointResponse
-    :: Int -- ^ 'desrsResponseStatus'
-    -> DescribeOriginEndpointResponse
-describeOriginEndpointResponse pResponseStatus_ =
-  DescribeOriginEndpointResponse'
-    { _desrsWhitelist = Nothing
-    , _desrsHlsPackage = Nothing
-    , _desrsARN = Nothing
-    , _desrsManifestName = Nothing
-    , _desrsURL = Nothing
-    , _desrsChannelId = Nothing
-    , _desrsStartoverWindowSeconds = Nothing
-    , _desrsDashPackage = Nothing
-    , _desrsMssPackage = Nothing
-    , _desrsId = Nothing
-    , _desrsTimeDelaySeconds = Nothing
-    , _desrsCmafPackage = Nothing
-    , _desrsDescription = Nothing
-    , _desrsResponseStatus = pResponseStatus_
-    }
-
-
--- | A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
-desrsWhitelist :: Lens' DescribeOriginEndpointResponse [Text]
-desrsWhitelist = lens _desrsWhitelist (\ s a -> s{_desrsWhitelist = a}) . _Default . _Coerce
-
--- | Undocumented member.
-desrsHlsPackage :: Lens' DescribeOriginEndpointResponse (Maybe HlsPackage)
-desrsHlsPackage = lens _desrsHlsPackage (\ s a -> s{_desrsHlsPackage = a})
-
--- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
-desrsARN :: Lens' DescribeOriginEndpointResponse (Maybe Text)
-desrsARN = lens _desrsARN (\ s a -> s{_desrsARN = a})
-
--- | A short string appended to the end of the OriginEndpoint URL.
-desrsManifestName :: Lens' DescribeOriginEndpointResponse (Maybe Text)
-desrsManifestName = lens _desrsManifestName (\ s a -> s{_desrsManifestName = a})
-
--- | The URL of the packaged OriginEndpoint for consumption.
-desrsURL :: Lens' DescribeOriginEndpointResponse (Maybe Text)
-desrsURL = lens _desrsURL (\ s a -> s{_desrsURL = a})
-
--- | The ID of the Channel the OriginEndpoint is associated with.
-desrsChannelId :: Lens' DescribeOriginEndpointResponse (Maybe Text)
-desrsChannelId = lens _desrsChannelId (\ s a -> s{_desrsChannelId = a})
-
--- | Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
-desrsStartoverWindowSeconds :: Lens' DescribeOriginEndpointResponse (Maybe Int)
-desrsStartoverWindowSeconds = lens _desrsStartoverWindowSeconds (\ s a -> s{_desrsStartoverWindowSeconds = a})
-
--- | Undocumented member.
-desrsDashPackage :: Lens' DescribeOriginEndpointResponse (Maybe DashPackage)
-desrsDashPackage = lens _desrsDashPackage (\ s a -> s{_desrsDashPackage = a})
-
--- | Undocumented member.
-desrsMssPackage :: Lens' DescribeOriginEndpointResponse (Maybe MssPackage)
-desrsMssPackage = lens _desrsMssPackage (\ s a -> s{_desrsMssPackage = a})
-
--- | The ID of the OriginEndpoint.
-desrsId :: Lens' DescribeOriginEndpointResponse (Maybe Text)
-desrsId = lens _desrsId (\ s a -> s{_desrsId = a})
-
--- | Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
-desrsTimeDelaySeconds :: Lens' DescribeOriginEndpointResponse (Maybe Int)
-desrsTimeDelaySeconds = lens _desrsTimeDelaySeconds (\ s a -> s{_desrsTimeDelaySeconds = a})
-
--- | Undocumented member.
-desrsCmafPackage :: Lens' DescribeOriginEndpointResponse (Maybe CmafPackage)
-desrsCmafPackage = lens _desrsCmafPackage (\ s a -> s{_desrsCmafPackage = a})
-
--- | A short text description of the OriginEndpoint.
-desrsDescription :: Lens' DescribeOriginEndpointResponse (Maybe Text)
-desrsDescription = lens _desrsDescription (\ s a -> s{_desrsDescription = a})
-
--- | -- | The response status code.
-desrsResponseStatus :: Lens' DescribeOriginEndpointResponse Int
-desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a})
-
-instance NFData DescribeOriginEndpointResponse where
diff --git a/gen/Network/AWS/MediaPackage/ListChannels.hs b/gen/Network/AWS/MediaPackage/ListChannels.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/ListChannels.hs
+++ /dev/null
@@ -1,154 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.ListChannels
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a collection of Channels.
---
--- This operation returns paginated results.
-module Network.AWS.MediaPackage.ListChannels
-    (
-    -- * Creating a Request
-      listChannels
-    , ListChannels
-    -- * Request Lenses
-    , lcNextToken
-    , lcMaxResults
-
-    -- * Destructuring the Response
-    , listChannelsResponse
-    , ListChannelsResponse
-    -- * Response Lenses
-    , lcrsChannels
-    , lcrsNextToken
-    , lcrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listChannels' smart constructor.
-data ListChannels = ListChannels'
-  { _lcNextToken  :: !(Maybe Text)
-  , _lcMaxResults :: !(Maybe Nat)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListChannels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcNextToken' - A token used to resume pagination from the end of a previous request.
---
--- * 'lcMaxResults' - Upper bound on number of records to return.
-listChannels
-    :: ListChannels
-listChannels = ListChannels' {_lcNextToken = Nothing, _lcMaxResults = Nothing}
-
-
--- | A token used to resume pagination from the end of a previous request.
-lcNextToken :: Lens' ListChannels (Maybe Text)
-lcNextToken = lens _lcNextToken (\ s a -> s{_lcNextToken = a})
-
--- | Upper bound on number of records to return.
-lcMaxResults :: Lens' ListChannels (Maybe Natural)
-lcMaxResults = lens _lcMaxResults (\ s a -> s{_lcMaxResults = a}) . mapping _Nat
-
-instance AWSPager ListChannels where
-        page rq rs
-          | stop (rs ^. lcrsNextToken) = Nothing
-          | stop (rs ^. lcrsChannels) = Nothing
-          | otherwise =
-            Just $ rq & lcNextToken .~ rs ^. lcrsNextToken
-
-instance AWSRequest ListChannels where
-        type Rs ListChannels = ListChannelsResponse
-        request = get mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListChannelsResponse' <$>
-                   (x .?> "channels" .!@ mempty) <*> (x .?> "nextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListChannels where
-
-instance NFData ListChannels where
-
-instance ToHeaders ListChannels where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListChannels where
-        toPath = const "/channels"
-
-instance ToQuery ListChannels where
-        toQuery ListChannels'{..}
-          = mconcat
-              ["nextToken" =: _lcNextToken,
-               "maxResults" =: _lcMaxResults]
-
--- | /See:/ 'listChannelsResponse' smart constructor.
-data ListChannelsResponse = ListChannelsResponse'
-  { _lcrsChannels       :: !(Maybe [Channel])
-  , _lcrsNextToken      :: !(Maybe Text)
-  , _lcrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListChannelsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcrsChannels' - A list of Channel records.
---
--- * 'lcrsNextToken' - A token that can be used to resume pagination from the end of the collection.
---
--- * 'lcrsResponseStatus' - -- | The response status code.
-listChannelsResponse
-    :: Int -- ^ 'lcrsResponseStatus'
-    -> ListChannelsResponse
-listChannelsResponse pResponseStatus_ =
-  ListChannelsResponse'
-    { _lcrsChannels = Nothing
-    , _lcrsNextToken = Nothing
-    , _lcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | A list of Channel records.
-lcrsChannels :: Lens' ListChannelsResponse [Channel]
-lcrsChannels = lens _lcrsChannels (\ s a -> s{_lcrsChannels = a}) . _Default . _Coerce
-
--- | A token that can be used to resume pagination from the end of the collection.
-lcrsNextToken :: Lens' ListChannelsResponse (Maybe Text)
-lcrsNextToken = lens _lcrsNextToken (\ s a -> s{_lcrsNextToken = a})
-
--- | -- | The response status code.
-lcrsResponseStatus :: Lens' ListChannelsResponse Int
-lcrsResponseStatus = lens _lcrsResponseStatus (\ s a -> s{_lcrsResponseStatus = a})
-
-instance NFData ListChannelsResponse where
diff --git a/gen/Network/AWS/MediaPackage/ListOriginEndpoints.hs b/gen/Network/AWS/MediaPackage/ListOriginEndpoints.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/ListOriginEndpoints.hs
+++ /dev/null
@@ -1,167 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.ListOriginEndpoints
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a collection of OriginEndpoint records.
---
--- This operation returns paginated results.
-module Network.AWS.MediaPackage.ListOriginEndpoints
-    (
-    -- * Creating a Request
-      listOriginEndpoints
-    , ListOriginEndpoints
-    -- * Request Lenses
-    , loeChannelId
-    , loeNextToken
-    , loeMaxResults
-
-    -- * Destructuring the Response
-    , listOriginEndpointsResponse
-    , ListOriginEndpointsResponse
-    -- * Response Lenses
-    , loersOriginEndpoints
-    , loersNextToken
-    , loersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listOriginEndpoints' smart constructor.
-data ListOriginEndpoints = ListOriginEndpoints'
-  { _loeChannelId  :: !(Maybe Text)
-  , _loeNextToken  :: !(Maybe Text)
-  , _loeMaxResults :: !(Maybe Nat)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListOriginEndpoints' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'loeChannelId' - When specified, the request will return only OriginEndpoints associated with the given Channel ID.
---
--- * 'loeNextToken' - A token used to resume pagination from the end of a previous request.
---
--- * 'loeMaxResults' - The upper bound on the number of records to return.
-listOriginEndpoints
-    :: ListOriginEndpoints
-listOriginEndpoints =
-  ListOriginEndpoints'
-    {_loeChannelId = Nothing, _loeNextToken = Nothing, _loeMaxResults = Nothing}
-
-
--- | When specified, the request will return only OriginEndpoints associated with the given Channel ID.
-loeChannelId :: Lens' ListOriginEndpoints (Maybe Text)
-loeChannelId = lens _loeChannelId (\ s a -> s{_loeChannelId = a})
-
--- | A token used to resume pagination from the end of a previous request.
-loeNextToken :: Lens' ListOriginEndpoints (Maybe Text)
-loeNextToken = lens _loeNextToken (\ s a -> s{_loeNextToken = a})
-
--- | The upper bound on the number of records to return.
-loeMaxResults :: Lens' ListOriginEndpoints (Maybe Natural)
-loeMaxResults = lens _loeMaxResults (\ s a -> s{_loeMaxResults = a}) . mapping _Nat
-
-instance AWSPager ListOriginEndpoints where
-        page rq rs
-          | stop (rs ^. loersNextToken) = Nothing
-          | stop (rs ^. loersOriginEndpoints) = Nothing
-          | otherwise =
-            Just $ rq & loeNextToken .~ rs ^. loersNextToken
-
-instance AWSRequest ListOriginEndpoints where
-        type Rs ListOriginEndpoints =
-             ListOriginEndpointsResponse
-        request = get mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListOriginEndpointsResponse' <$>
-                   (x .?> "originEndpoints" .!@ mempty) <*>
-                     (x .?> "nextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListOriginEndpoints where
-
-instance NFData ListOriginEndpoints where
-
-instance ToHeaders ListOriginEndpoints where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListOriginEndpoints where
-        toPath = const "/origin_endpoints"
-
-instance ToQuery ListOriginEndpoints where
-        toQuery ListOriginEndpoints'{..}
-          = mconcat
-              ["channelId" =: _loeChannelId,
-               "nextToken" =: _loeNextToken,
-               "maxResults" =: _loeMaxResults]
-
--- | /See:/ 'listOriginEndpointsResponse' smart constructor.
-data ListOriginEndpointsResponse = ListOriginEndpointsResponse'
-  { _loersOriginEndpoints :: !(Maybe [OriginEndpoint])
-  , _loersNextToken       :: !(Maybe Text)
-  , _loersResponseStatus  :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListOriginEndpointsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'loersOriginEndpoints' - A list of OriginEndpoint records.
---
--- * 'loersNextToken' - A token that can be used to resume pagination from the end of the collection.
---
--- * 'loersResponseStatus' - -- | The response status code.
-listOriginEndpointsResponse
-    :: Int -- ^ 'loersResponseStatus'
-    -> ListOriginEndpointsResponse
-listOriginEndpointsResponse pResponseStatus_ =
-  ListOriginEndpointsResponse'
-    { _loersOriginEndpoints = Nothing
-    , _loersNextToken = Nothing
-    , _loersResponseStatus = pResponseStatus_
-    }
-
-
--- | A list of OriginEndpoint records.
-loersOriginEndpoints :: Lens' ListOriginEndpointsResponse [OriginEndpoint]
-loersOriginEndpoints = lens _loersOriginEndpoints (\ s a -> s{_loersOriginEndpoints = a}) . _Default . _Coerce
-
--- | A token that can be used to resume pagination from the end of the collection.
-loersNextToken :: Lens' ListOriginEndpointsResponse (Maybe Text)
-loersNextToken = lens _loersNextToken (\ s a -> s{_loersNextToken = a})
-
--- | -- | The response status code.
-loersResponseStatus :: Lens' ListOriginEndpointsResponse Int
-loersResponseStatus = lens _loersResponseStatus (\ s a -> s{_loersResponseStatus = a})
-
-instance NFData ListOriginEndpointsResponse where
diff --git a/gen/Network/AWS/MediaPackage/RotateChannelCredentials.hs b/gen/Network/AWS/MediaPackage/RotateChannelCredentials.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/RotateChannelCredentials.hs
+++ /dev/null
@@ -1,160 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.RotateChannelCredentials
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Changes the Channel ingest username and password.
-module Network.AWS.MediaPackage.RotateChannelCredentials
-    (
-    -- * Creating a Request
-      rotateChannelCredentials
-    , RotateChannelCredentials
-    -- * Request Lenses
-    , rccId
-
-    -- * Destructuring the Response
-    , rotateChannelCredentialsResponse
-    , RotateChannelCredentialsResponse
-    -- * Response Lenses
-    , rccrsHlsIngest
-    , rccrsARN
-    , rccrsId
-    , rccrsDescription
-    , rccrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'rotateChannelCredentials' smart constructor.
-newtype RotateChannelCredentials = RotateChannelCredentials'
-  { _rccId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RotateChannelCredentials' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rccId' - The ID of the channel to update.
-rotateChannelCredentials
-    :: Text -- ^ 'rccId'
-    -> RotateChannelCredentials
-rotateChannelCredentials pId_ = RotateChannelCredentials' {_rccId = pId_}
-
-
--- | The ID of the channel to update.
-rccId :: Lens' RotateChannelCredentials Text
-rccId = lens _rccId (\ s a -> s{_rccId = a})
-
-instance AWSRequest RotateChannelCredentials where
-        type Rs RotateChannelCredentials =
-             RotateChannelCredentialsResponse
-        request = putJSON mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 RotateChannelCredentialsResponse' <$>
-                   (x .?> "hlsIngest") <*> (x .?> "arn") <*>
-                     (x .?> "id")
-                     <*> (x .?> "description")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable RotateChannelCredentials where
-
-instance NFData RotateChannelCredentials where
-
-instance ToHeaders RotateChannelCredentials where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON RotateChannelCredentials where
-        toJSON = const (Object mempty)
-
-instance ToPath RotateChannelCredentials where
-        toPath RotateChannelCredentials'{..}
-          = mconcat ["/channels/", toBS _rccId, "/credentials"]
-
-instance ToQuery RotateChannelCredentials where
-        toQuery = const mempty
-
--- | /See:/ 'rotateChannelCredentialsResponse' smart constructor.
-data RotateChannelCredentialsResponse = RotateChannelCredentialsResponse'
-  { _rccrsHlsIngest      :: !(Maybe HlsIngest)
-  , _rccrsARN            :: !(Maybe Text)
-  , _rccrsId             :: !(Maybe Text)
-  , _rccrsDescription    :: !(Maybe Text)
-  , _rccrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RotateChannelCredentialsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rccrsHlsIngest' - Undocumented member.
---
--- * 'rccrsARN' - The Amazon Resource Name (ARN) assigned to the Channel.
---
--- * 'rccrsId' - The ID of the Channel.
---
--- * 'rccrsDescription' - A short text description of the Channel.
---
--- * 'rccrsResponseStatus' - -- | The response status code.
-rotateChannelCredentialsResponse
-    :: Int -- ^ 'rccrsResponseStatus'
-    -> RotateChannelCredentialsResponse
-rotateChannelCredentialsResponse pResponseStatus_ =
-  RotateChannelCredentialsResponse'
-    { _rccrsHlsIngest = Nothing
-    , _rccrsARN = Nothing
-    , _rccrsId = Nothing
-    , _rccrsDescription = Nothing
-    , _rccrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Undocumented member.
-rccrsHlsIngest :: Lens' RotateChannelCredentialsResponse (Maybe HlsIngest)
-rccrsHlsIngest = lens _rccrsHlsIngest (\ s a -> s{_rccrsHlsIngest = a})
-
--- | The Amazon Resource Name (ARN) assigned to the Channel.
-rccrsARN :: Lens' RotateChannelCredentialsResponse (Maybe Text)
-rccrsARN = lens _rccrsARN (\ s a -> s{_rccrsARN = a})
-
--- | The ID of the Channel.
-rccrsId :: Lens' RotateChannelCredentialsResponse (Maybe Text)
-rccrsId = lens _rccrsId (\ s a -> s{_rccrsId = a})
-
--- | A short text description of the Channel.
-rccrsDescription :: Lens' RotateChannelCredentialsResponse (Maybe Text)
-rccrsDescription = lens _rccrsDescription (\ s a -> s{_rccrsDescription = a})
-
--- | -- | The response status code.
-rccrsResponseStatus :: Lens' RotateChannelCredentialsResponse Int
-rccrsResponseStatus = lens _rccrsResponseStatus (\ s a -> s{_rccrsResponseStatus = a})
-
-instance NFData RotateChannelCredentialsResponse
-         where
diff --git a/gen/Network/AWS/MediaPackage/Types.hs b/gen/Network/AWS/MediaPackage/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/Types.hs
+++ /dev/null
@@ -1,273 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.Types
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.MediaPackage.Types
-    (
-    -- * Service Configuration
-      mediaPackage
-
-    -- * Errors
-    , _UnprocessableEntityException
-    , _ForbiddenException
-    , _NotFoundException
-    , _TooManyRequestsException
-    , _InternalServerErrorException
-    , _ServiceUnavailableException
-
-    -- * AdMarkers
-    , AdMarkers (..)
-
-    -- * EncryptionMethod
-    , EncryptionMethod (..)
-
-    -- * PlaylistType
-    , PlaylistType (..)
-
-    -- * Profile
-    , Profile (..)
-
-    -- * StreamOrder
-    , StreamOrder (..)
-
-    -- * Channel
-    , Channel
-    , channel
-    , cHlsIngest
-    , cARN
-    , cId
-    , cDescription
-
-    -- * CmafEncryption
-    , CmafEncryption
-    , cmafEncryption
-    , ceKeyRotationIntervalSeconds
-    , ceSpekeKeyProvider
-
-    -- * CmafPackage
-    , CmafPackage
-    , cmafPackage
-    , cpHlsManifests
-    , cpSegmentDurationSeconds
-    , cpStreamSelection
-    , cpEncryption
-    , cpSegmentPrefix
-
-    -- * CmafPackageCreateOrUpdateParameters
-    , CmafPackageCreateOrUpdateParameters
-    , cmafPackageCreateOrUpdateParameters
-    , cpcoupHlsManifests
-    , cpcoupSegmentDurationSeconds
-    , cpcoupStreamSelection
-    , cpcoupEncryption
-    , cpcoupSegmentPrefix
-
-    -- * DashEncryption
-    , DashEncryption
-    , dashEncryption
-    , deKeyRotationIntervalSeconds
-    , deSpekeKeyProvider
-
-    -- * DashPackage
-    , DashPackage
-    , dashPackage
-    , dpMinBufferTimeSeconds
-    , dpProfile
-    , dpSegmentDurationSeconds
-    , dpStreamSelection
-    , dpEncryption
-    , dpMinUpdatePeriodSeconds
-    , dpSuggestedPresentationDelaySeconds
-    , dpManifestWindowSeconds
-
-    -- * HlsEncryption
-    , HlsEncryption
-    , hlsEncryption
-    , heEncryptionMethod
-    , heKeyRotationIntervalSeconds
-    , heConstantInitializationVector
-    , heRepeatExtXKey
-    , heSpekeKeyProvider
-
-    -- * HlsIngest
-    , HlsIngest
-    , hlsIngest
-    , hiIngestEndpoints
-
-    -- * HlsManifest
-    , HlsManifest
-    , hlsManifest
-    , hmManifestName
-    , hmURL
-    , hmPlaylistType
-    , hmProgramDateTimeIntervalSeconds
-    , hmAdMarkers
-    , hmIncludeIframeOnlyStream
-    , hmPlaylistWindowSeconds
-    , hmId
-
-    -- * HlsManifestCreateOrUpdateParameters
-    , HlsManifestCreateOrUpdateParameters
-    , hlsManifestCreateOrUpdateParameters
-    , hmcoupManifestName
-    , hmcoupPlaylistType
-    , hmcoupProgramDateTimeIntervalSeconds
-    , hmcoupAdMarkers
-    , hmcoupIncludeIframeOnlyStream
-    , hmcoupPlaylistWindowSeconds
-    , hmcoupId
-
-    -- * HlsPackage
-    , HlsPackage
-    , hlsPackage
-    , hpUseAudioRenditionGroup
-    , hpPlaylistType
-    , hpSegmentDurationSeconds
-    , hpProgramDateTimeIntervalSeconds
-    , hpStreamSelection
-    , hpAdMarkers
-    , hpEncryption
-    , hpIncludeIframeOnlyStream
-    , hpPlaylistWindowSeconds
-
-    -- * IngestEndpoint
-    , IngestEndpoint
-    , ingestEndpoint
-    , ieURL
-    , ieUsername
-    , iePassword
-
-    -- * MssEncryption
-    , MssEncryption
-    , mssEncryption
-    , meSpekeKeyProvider
-
-    -- * MssPackage
-    , MssPackage
-    , mssPackage
-    , mpSegmentDurationSeconds
-    , mpStreamSelection
-    , mpEncryption
-    , mpManifestWindowSeconds
-
-    -- * OriginEndpoint
-    , OriginEndpoint
-    , originEndpoint
-    , oeWhitelist
-    , oeHlsPackage
-    , oeARN
-    , oeManifestName
-    , oeURL
-    , oeChannelId
-    , oeStartoverWindowSeconds
-    , oeDashPackage
-    , oeMssPackage
-    , oeId
-    , oeTimeDelaySeconds
-    , oeCmafPackage
-    , oeDescription
-
-    -- * SpekeKeyProvider
-    , SpekeKeyProvider
-    , spekeKeyProvider
-    , skpURL
-    , skpResourceId
-    , skpRoleARN
-    , skpSystemIds
-
-    -- * StreamSelection
-    , StreamSelection
-    , streamSelection
-    , ssStreamOrder
-    , ssMinVideoBitsPerSecond
-    , ssMaxVideoBitsPerSecond
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.MediaPackage.Types.Sum
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-
--- | API version @2017-10-12@ of the Amazon Elemental MediaPackage SDK configuration.
-mediaPackage :: Service
-mediaPackage =
-  Service
-    { _svcAbbrev = "MediaPackage"
-    , _svcSigner = v4
-    , _svcPrefix = "mediapackage"
-    , _svcVersion = "2017-10-12"
-    , _svcEndpoint = defaultEndpoint mediaPackage
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "MediaPackage"
-    , _svcRetry = retry
-    }
-  where
-    retry =
-      Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
-    check e
-      | has (hasCode "ThrottledException" . hasStatus 400) e =
-        Just "throttled_exception"
-      | has (hasStatus 429) e = Just "too_many_requests"
-      | has (hasCode "ThrottlingException" . hasStatus 400) e =
-        Just "throttling_exception"
-      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-      | has (hasStatus 504) e = Just "gateway_timeout"
-      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
-        Just "request_throttled_exception"
-      | has (hasStatus 502) e = Just "bad_gateway"
-      | has (hasStatus 503) e = Just "service_unavailable"
-      | has (hasStatus 500) e = Just "general_server_error"
-      | has (hasStatus 509) e = Just "limit_exceeded"
-      | otherwise = Nothing
-
-
--- | The parameters sent in the request are not valid.
-_UnprocessableEntityException :: AsError a => Getting (First ServiceError) a ServiceError
-_UnprocessableEntityException =
-  _MatchServiceError mediaPackage "UnprocessableEntityException" . hasStatus 422
-
-
--- | The client is not authorized to access the requested resource.
-_ForbiddenException :: AsError a => Getting (First ServiceError) a ServiceError
-_ForbiddenException =
-  _MatchServiceError mediaPackage "ForbiddenException" . hasStatus 403
-
-
--- | The requested resource does not exist.
-_NotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_NotFoundException =
-  _MatchServiceError mediaPackage "NotFoundException" . hasStatus 404
-
-
--- | The client has exceeded their resource or throttling limits.
-_TooManyRequestsException :: AsError a => Getting (First ServiceError) a ServiceError
-_TooManyRequestsException =
-  _MatchServiceError mediaPackage "TooManyRequestsException" . hasStatus 429
-
-
--- | An unexpected error occurred.
-_InternalServerErrorException :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalServerErrorException =
-  _MatchServiceError mediaPackage "InternalServerErrorException" . hasStatus 500
-
-
--- | An unexpected error occurred.
-_ServiceUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError
-_ServiceUnavailableException =
-  _MatchServiceError mediaPackage "ServiceUnavailableException" . hasStatus 503
-
diff --git a/gen/Network/AWS/MediaPackage/Types/Product.hs b/gen/Network/AWS/MediaPackage/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/Types/Product.hs
+++ /dev/null
@@ -1,1339 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.Types.Product
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.MediaPackage.Types.Product where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types.Sum
-import Network.AWS.Prelude
-
--- | A Channel resource configuration.
---
--- /See:/ 'channel' smart constructor.
-data Channel = Channel'
-  { _cHlsIngest   :: !(Maybe HlsIngest)
-  , _cARN         :: !(Maybe Text)
-  , _cId          :: !(Maybe Text)
-  , _cDescription :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Channel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cHlsIngest' - Undocumented member.
---
--- * 'cARN' - The Amazon Resource Name (ARN) assigned to the Channel.
---
--- * 'cId' - The ID of the Channel.
---
--- * 'cDescription' - A short text description of the Channel.
-channel
-    :: Channel
-channel =
-  Channel'
-    { _cHlsIngest = Nothing
-    , _cARN = Nothing
-    , _cId = Nothing
-    , _cDescription = Nothing
-    }
-
-
--- | Undocumented member.
-cHlsIngest :: Lens' Channel (Maybe HlsIngest)
-cHlsIngest = lens _cHlsIngest (\ s a -> s{_cHlsIngest = a})
-
--- | The Amazon Resource Name (ARN) assigned to the Channel.
-cARN :: Lens' Channel (Maybe Text)
-cARN = lens _cARN (\ s a -> s{_cARN = a})
-
--- | The ID of the Channel.
-cId :: Lens' Channel (Maybe Text)
-cId = lens _cId (\ s a -> s{_cId = a})
-
--- | A short text description of the Channel.
-cDescription :: Lens' Channel (Maybe Text)
-cDescription = lens _cDescription (\ s a -> s{_cDescription = a})
-
-instance FromJSON Channel where
-        parseJSON
-          = withObject "Channel"
-              (\ x ->
-                 Channel' <$>
-                   (x .:? "hlsIngest") <*> (x .:? "arn") <*>
-                     (x .:? "id")
-                     <*> (x .:? "description"))
-
-instance Hashable Channel where
-
-instance NFData Channel where
-
--- | A Common Media Application Format (CMAF) encryption configuration.
---
--- /See:/ 'cmafEncryption' smart constructor.
-data CmafEncryption = CmafEncryption'
-  { _ceKeyRotationIntervalSeconds :: !(Maybe Int)
-  , _ceSpekeKeyProvider           :: !SpekeKeyProvider
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CmafEncryption' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ceKeyRotationIntervalSeconds' - Time (in seconds) between each encryption key rotation.
---
--- * 'ceSpekeKeyProvider' - Undocumented member.
-cmafEncryption
-    :: SpekeKeyProvider -- ^ 'ceSpekeKeyProvider'
-    -> CmafEncryption
-cmafEncryption pSpekeKeyProvider_ =
-  CmafEncryption'
-    { _ceKeyRotationIntervalSeconds = Nothing
-    , _ceSpekeKeyProvider = pSpekeKeyProvider_
-    }
-
-
--- | Time (in seconds) between each encryption key rotation.
-ceKeyRotationIntervalSeconds :: Lens' CmafEncryption (Maybe Int)
-ceKeyRotationIntervalSeconds = lens _ceKeyRotationIntervalSeconds (\ s a -> s{_ceKeyRotationIntervalSeconds = a})
-
--- | Undocumented member.
-ceSpekeKeyProvider :: Lens' CmafEncryption SpekeKeyProvider
-ceSpekeKeyProvider = lens _ceSpekeKeyProvider (\ s a -> s{_ceSpekeKeyProvider = a})
-
-instance FromJSON CmafEncryption where
-        parseJSON
-          = withObject "CmafEncryption"
-              (\ x ->
-                 CmafEncryption' <$>
-                   (x .:? "keyRotationIntervalSeconds") <*>
-                     (x .: "spekeKeyProvider"))
-
-instance Hashable CmafEncryption where
-
-instance NFData CmafEncryption where
-
-instance ToJSON CmafEncryption where
-        toJSON CmafEncryption'{..}
-          = object
-              (catMaybes
-                 [("keyRotationIntervalSeconds" .=) <$>
-                    _ceKeyRotationIntervalSeconds,
-                  Just ("spekeKeyProvider" .= _ceSpekeKeyProvider)])
-
--- | A Common Media Application Format (CMAF) packaging configuration.
---
--- /See:/ 'cmafPackage' smart constructor.
-data CmafPackage = CmafPackage'
-  { _cpHlsManifests           :: !(Maybe [HlsManifest])
-  , _cpSegmentDurationSeconds :: !(Maybe Int)
-  , _cpStreamSelection        :: !(Maybe StreamSelection)
-  , _cpEncryption             :: !(Maybe CmafEncryption)
-  , _cpSegmentPrefix          :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CmafPackage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpHlsManifests' - A list of HLS manifest configurations
---
--- * 'cpSegmentDurationSeconds' - Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.
---
--- * 'cpStreamSelection' - Undocumented member.
---
--- * 'cpEncryption' - Undocumented member.
---
--- * 'cpSegmentPrefix' - An optional custom string that is prepended to the name of each segment. If not specified, it defaults to the ChannelId.
-cmafPackage
-    :: CmafPackage
-cmafPackage =
-  CmafPackage'
-    { _cpHlsManifests = Nothing
-    , _cpSegmentDurationSeconds = Nothing
-    , _cpStreamSelection = Nothing
-    , _cpEncryption = Nothing
-    , _cpSegmentPrefix = Nothing
-    }
-
-
--- | A list of HLS manifest configurations
-cpHlsManifests :: Lens' CmafPackage [HlsManifest]
-cpHlsManifests = lens _cpHlsManifests (\ s a -> s{_cpHlsManifests = a}) . _Default . _Coerce
-
--- | Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.
-cpSegmentDurationSeconds :: Lens' CmafPackage (Maybe Int)
-cpSegmentDurationSeconds = lens _cpSegmentDurationSeconds (\ s a -> s{_cpSegmentDurationSeconds = a})
-
--- | Undocumented member.
-cpStreamSelection :: Lens' CmafPackage (Maybe StreamSelection)
-cpStreamSelection = lens _cpStreamSelection (\ s a -> s{_cpStreamSelection = a})
-
--- | Undocumented member.
-cpEncryption :: Lens' CmafPackage (Maybe CmafEncryption)
-cpEncryption = lens _cpEncryption (\ s a -> s{_cpEncryption = a})
-
--- | An optional custom string that is prepended to the name of each segment. If not specified, it defaults to the ChannelId.
-cpSegmentPrefix :: Lens' CmafPackage (Maybe Text)
-cpSegmentPrefix = lens _cpSegmentPrefix (\ s a -> s{_cpSegmentPrefix = a})
-
-instance FromJSON CmafPackage where
-        parseJSON
-          = withObject "CmafPackage"
-              (\ x ->
-                 CmafPackage' <$>
-                   (x .:? "hlsManifests" .!= mempty) <*>
-                     (x .:? "segmentDurationSeconds")
-                     <*> (x .:? "streamSelection")
-                     <*> (x .:? "encryption")
-                     <*> (x .:? "segmentPrefix"))
-
-instance Hashable CmafPackage where
-
-instance NFData CmafPackage where
-
--- | A Common Media Application Format (CMAF) packaging configuration.
---
--- /See:/ 'cmafPackageCreateOrUpdateParameters' smart constructor.
-data CmafPackageCreateOrUpdateParameters = CmafPackageCreateOrUpdateParameters'
-  { _cpcoupHlsManifests :: !(Maybe [HlsManifestCreateOrUpdateParameters])
-  , _cpcoupSegmentDurationSeconds :: !(Maybe Int)
-  , _cpcoupStreamSelection :: !(Maybe StreamSelection)
-  , _cpcoupEncryption :: !(Maybe CmafEncryption)
-  , _cpcoupSegmentPrefix :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CmafPackageCreateOrUpdateParameters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpcoupHlsManifests' - A list of HLS manifest configurations
---
--- * 'cpcoupSegmentDurationSeconds' - Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.
---
--- * 'cpcoupStreamSelection' - Undocumented member.
---
--- * 'cpcoupEncryption' - Undocumented member.
---
--- * 'cpcoupSegmentPrefix' - An optional custom string that is prepended to the name of each segment. If not specified, it defaults to the ChannelId.
-cmafPackageCreateOrUpdateParameters
-    :: CmafPackageCreateOrUpdateParameters
-cmafPackageCreateOrUpdateParameters =
-  CmafPackageCreateOrUpdateParameters'
-    { _cpcoupHlsManifests = Nothing
-    , _cpcoupSegmentDurationSeconds = Nothing
-    , _cpcoupStreamSelection = Nothing
-    , _cpcoupEncryption = Nothing
-    , _cpcoupSegmentPrefix = Nothing
-    }
-
-
--- | A list of HLS manifest configurations
-cpcoupHlsManifests :: Lens' CmafPackageCreateOrUpdateParameters [HlsManifestCreateOrUpdateParameters]
-cpcoupHlsManifests = lens _cpcoupHlsManifests (\ s a -> s{_cpcoupHlsManifests = a}) . _Default . _Coerce
-
--- | Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.
-cpcoupSegmentDurationSeconds :: Lens' CmafPackageCreateOrUpdateParameters (Maybe Int)
-cpcoupSegmentDurationSeconds = lens _cpcoupSegmentDurationSeconds (\ s a -> s{_cpcoupSegmentDurationSeconds = a})
-
--- | Undocumented member.
-cpcoupStreamSelection :: Lens' CmafPackageCreateOrUpdateParameters (Maybe StreamSelection)
-cpcoupStreamSelection = lens _cpcoupStreamSelection (\ s a -> s{_cpcoupStreamSelection = a})
-
--- | Undocumented member.
-cpcoupEncryption :: Lens' CmafPackageCreateOrUpdateParameters (Maybe CmafEncryption)
-cpcoupEncryption = lens _cpcoupEncryption (\ s a -> s{_cpcoupEncryption = a})
-
--- | An optional custom string that is prepended to the name of each segment. If not specified, it defaults to the ChannelId.
-cpcoupSegmentPrefix :: Lens' CmafPackageCreateOrUpdateParameters (Maybe Text)
-cpcoupSegmentPrefix = lens _cpcoupSegmentPrefix (\ s a -> s{_cpcoupSegmentPrefix = a})
-
-instance Hashable CmafPackageCreateOrUpdateParameters
-         where
-
-instance NFData CmafPackageCreateOrUpdateParameters
-         where
-
-instance ToJSON CmafPackageCreateOrUpdateParameters
-         where
-        toJSON CmafPackageCreateOrUpdateParameters'{..}
-          = object
-              (catMaybes
-                 [("hlsManifests" .=) <$> _cpcoupHlsManifests,
-                  ("segmentDurationSeconds" .=) <$>
-                    _cpcoupSegmentDurationSeconds,
-                  ("streamSelection" .=) <$> _cpcoupStreamSelection,
-                  ("encryption" .=) <$> _cpcoupEncryption,
-                  ("segmentPrefix" .=) <$> _cpcoupSegmentPrefix])
-
--- | A Dynamic Adaptive Streaming over HTTP (DASH) encryption configuration.
---
--- /See:/ 'dashEncryption' smart constructor.
-data DashEncryption = DashEncryption'
-  { _deKeyRotationIntervalSeconds :: !(Maybe Int)
-  , _deSpekeKeyProvider           :: !SpekeKeyProvider
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DashEncryption' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'deKeyRotationIntervalSeconds' - Time (in seconds) between each encryption key rotation.
---
--- * 'deSpekeKeyProvider' - Undocumented member.
-dashEncryption
-    :: SpekeKeyProvider -- ^ 'deSpekeKeyProvider'
-    -> DashEncryption
-dashEncryption pSpekeKeyProvider_ =
-  DashEncryption'
-    { _deKeyRotationIntervalSeconds = Nothing
-    , _deSpekeKeyProvider = pSpekeKeyProvider_
-    }
-
-
--- | Time (in seconds) between each encryption key rotation.
-deKeyRotationIntervalSeconds :: Lens' DashEncryption (Maybe Int)
-deKeyRotationIntervalSeconds = lens _deKeyRotationIntervalSeconds (\ s a -> s{_deKeyRotationIntervalSeconds = a})
-
--- | Undocumented member.
-deSpekeKeyProvider :: Lens' DashEncryption SpekeKeyProvider
-deSpekeKeyProvider = lens _deSpekeKeyProvider (\ s a -> s{_deSpekeKeyProvider = a})
-
-instance FromJSON DashEncryption where
-        parseJSON
-          = withObject "DashEncryption"
-              (\ x ->
-                 DashEncryption' <$>
-                   (x .:? "keyRotationIntervalSeconds") <*>
-                     (x .: "spekeKeyProvider"))
-
-instance Hashable DashEncryption where
-
-instance NFData DashEncryption where
-
-instance ToJSON DashEncryption where
-        toJSON DashEncryption'{..}
-          = object
-              (catMaybes
-                 [("keyRotationIntervalSeconds" .=) <$>
-                    _deKeyRotationIntervalSeconds,
-                  Just ("spekeKeyProvider" .= _deSpekeKeyProvider)])
-
--- | A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration.
---
--- /See:/ 'dashPackage' smart constructor.
-data DashPackage = DashPackage'
-  { _dpMinBufferTimeSeconds              :: !(Maybe Int)
-  , _dpProfile                           :: !(Maybe Profile)
-  , _dpSegmentDurationSeconds            :: !(Maybe Int)
-  , _dpStreamSelection                   :: !(Maybe StreamSelection)
-  , _dpEncryption                        :: !(Maybe DashEncryption)
-  , _dpMinUpdatePeriodSeconds            :: !(Maybe Int)
-  , _dpSuggestedPresentationDelaySeconds :: !(Maybe Int)
-  , _dpManifestWindowSeconds             :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DashPackage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dpMinBufferTimeSeconds' - Minimum duration (in seconds) that a player will buffer media before starting the presentation.
---
--- * 'dpProfile' - The Dynamic Adaptive Streaming over HTTP (DASH) profile type.  When set to "HBBTV_1_5", HbbTV 1.5 compliant output is enabled.
---
--- * 'dpSegmentDurationSeconds' - Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.
---
--- * 'dpStreamSelection' - Undocumented member.
---
--- * 'dpEncryption' - Undocumented member.
---
--- * 'dpMinUpdatePeriodSeconds' - Minimum duration (in seconds) between potential changes to the Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD).
---
--- * 'dpSuggestedPresentationDelaySeconds' - Duration (in seconds) to delay live content before presentation.
---
--- * 'dpManifestWindowSeconds' - Time window (in seconds) contained in each manifest.
-dashPackage
-    :: DashPackage
-dashPackage =
-  DashPackage'
-    { _dpMinBufferTimeSeconds = Nothing
-    , _dpProfile = Nothing
-    , _dpSegmentDurationSeconds = Nothing
-    , _dpStreamSelection = Nothing
-    , _dpEncryption = Nothing
-    , _dpMinUpdatePeriodSeconds = Nothing
-    , _dpSuggestedPresentationDelaySeconds = Nothing
-    , _dpManifestWindowSeconds = Nothing
-    }
-
-
--- | Minimum duration (in seconds) that a player will buffer media before starting the presentation.
-dpMinBufferTimeSeconds :: Lens' DashPackage (Maybe Int)
-dpMinBufferTimeSeconds = lens _dpMinBufferTimeSeconds (\ s a -> s{_dpMinBufferTimeSeconds = a})
-
--- | The Dynamic Adaptive Streaming over HTTP (DASH) profile type.  When set to "HBBTV_1_5", HbbTV 1.5 compliant output is enabled.
-dpProfile :: Lens' DashPackage (Maybe Profile)
-dpProfile = lens _dpProfile (\ s a -> s{_dpProfile = a})
-
--- | Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.
-dpSegmentDurationSeconds :: Lens' DashPackage (Maybe Int)
-dpSegmentDurationSeconds = lens _dpSegmentDurationSeconds (\ s a -> s{_dpSegmentDurationSeconds = a})
-
--- | Undocumented member.
-dpStreamSelection :: Lens' DashPackage (Maybe StreamSelection)
-dpStreamSelection = lens _dpStreamSelection (\ s a -> s{_dpStreamSelection = a})
-
--- | Undocumented member.
-dpEncryption :: Lens' DashPackage (Maybe DashEncryption)
-dpEncryption = lens _dpEncryption (\ s a -> s{_dpEncryption = a})
-
--- | Minimum duration (in seconds) between potential changes to the Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD).
-dpMinUpdatePeriodSeconds :: Lens' DashPackage (Maybe Int)
-dpMinUpdatePeriodSeconds = lens _dpMinUpdatePeriodSeconds (\ s a -> s{_dpMinUpdatePeriodSeconds = a})
-
--- | Duration (in seconds) to delay live content before presentation.
-dpSuggestedPresentationDelaySeconds :: Lens' DashPackage (Maybe Int)
-dpSuggestedPresentationDelaySeconds = lens _dpSuggestedPresentationDelaySeconds (\ s a -> s{_dpSuggestedPresentationDelaySeconds = a})
-
--- | Time window (in seconds) contained in each manifest.
-dpManifestWindowSeconds :: Lens' DashPackage (Maybe Int)
-dpManifestWindowSeconds = lens _dpManifestWindowSeconds (\ s a -> s{_dpManifestWindowSeconds = a})
-
-instance FromJSON DashPackage where
-        parseJSON
-          = withObject "DashPackage"
-              (\ x ->
-                 DashPackage' <$>
-                   (x .:? "minBufferTimeSeconds") <*> (x .:? "profile")
-                     <*> (x .:? "segmentDurationSeconds")
-                     <*> (x .:? "streamSelection")
-                     <*> (x .:? "encryption")
-                     <*> (x .:? "minUpdatePeriodSeconds")
-                     <*> (x .:? "suggestedPresentationDelaySeconds")
-                     <*> (x .:? "manifestWindowSeconds"))
-
-instance Hashable DashPackage where
-
-instance NFData DashPackage where
-
-instance ToJSON DashPackage where
-        toJSON DashPackage'{..}
-          = object
-              (catMaybes
-                 [("minBufferTimeSeconds" .=) <$>
-                    _dpMinBufferTimeSeconds,
-                  ("profile" .=) <$> _dpProfile,
-                  ("segmentDurationSeconds" .=) <$>
-                    _dpSegmentDurationSeconds,
-                  ("streamSelection" .=) <$> _dpStreamSelection,
-                  ("encryption" .=) <$> _dpEncryption,
-                  ("minUpdatePeriodSeconds" .=) <$>
-                    _dpMinUpdatePeriodSeconds,
-                  ("suggestedPresentationDelaySeconds" .=) <$>
-                    _dpSuggestedPresentationDelaySeconds,
-                  ("manifestWindowSeconds" .=) <$>
-                    _dpManifestWindowSeconds])
-
--- | An HTTP Live Streaming (HLS) encryption configuration.
---
--- /See:/ 'hlsEncryption' smart constructor.
-data HlsEncryption = HlsEncryption'
-  { _heEncryptionMethod             :: !(Maybe EncryptionMethod)
-  , _heKeyRotationIntervalSeconds   :: !(Maybe Int)
-  , _heConstantInitializationVector :: !(Maybe Text)
-  , _heRepeatExtXKey                :: !(Maybe Bool)
-  , _heSpekeKeyProvider             :: !SpekeKeyProvider
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsEncryption' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'heEncryptionMethod' - The encryption method to use.
---
--- * 'heKeyRotationIntervalSeconds' - Interval (in seconds) between each encryption key rotation.
---
--- * 'heConstantInitializationVector' - A constant initialization vector for encryption (optional). When not specified the initialization vector will be periodically rotated.
---
--- * 'heRepeatExtXKey' - When enabled, the EXT-X-KEY tag will be repeated in output manifests.
---
--- * 'heSpekeKeyProvider' - Undocumented member.
-hlsEncryption
-    :: SpekeKeyProvider -- ^ 'heSpekeKeyProvider'
-    -> HlsEncryption
-hlsEncryption pSpekeKeyProvider_ =
-  HlsEncryption'
-    { _heEncryptionMethod = Nothing
-    , _heKeyRotationIntervalSeconds = Nothing
-    , _heConstantInitializationVector = Nothing
-    , _heRepeatExtXKey = Nothing
-    , _heSpekeKeyProvider = pSpekeKeyProvider_
-    }
-
-
--- | The encryption method to use.
-heEncryptionMethod :: Lens' HlsEncryption (Maybe EncryptionMethod)
-heEncryptionMethod = lens _heEncryptionMethod (\ s a -> s{_heEncryptionMethod = a})
-
--- | Interval (in seconds) between each encryption key rotation.
-heKeyRotationIntervalSeconds :: Lens' HlsEncryption (Maybe Int)
-heKeyRotationIntervalSeconds = lens _heKeyRotationIntervalSeconds (\ s a -> s{_heKeyRotationIntervalSeconds = a})
-
--- | A constant initialization vector for encryption (optional). When not specified the initialization vector will be periodically rotated.
-heConstantInitializationVector :: Lens' HlsEncryption (Maybe Text)
-heConstantInitializationVector = lens _heConstantInitializationVector (\ s a -> s{_heConstantInitializationVector = a})
-
--- | When enabled, the EXT-X-KEY tag will be repeated in output manifests.
-heRepeatExtXKey :: Lens' HlsEncryption (Maybe Bool)
-heRepeatExtXKey = lens _heRepeatExtXKey (\ s a -> s{_heRepeatExtXKey = a})
-
--- | Undocumented member.
-heSpekeKeyProvider :: Lens' HlsEncryption SpekeKeyProvider
-heSpekeKeyProvider = lens _heSpekeKeyProvider (\ s a -> s{_heSpekeKeyProvider = a})
-
-instance FromJSON HlsEncryption where
-        parseJSON
-          = withObject "HlsEncryption"
-              (\ x ->
-                 HlsEncryption' <$>
-                   (x .:? "encryptionMethod") <*>
-                     (x .:? "keyRotationIntervalSeconds")
-                     <*> (x .:? "constantInitializationVector")
-                     <*> (x .:? "repeatExtXKey")
-                     <*> (x .: "spekeKeyProvider"))
-
-instance Hashable HlsEncryption where
-
-instance NFData HlsEncryption where
-
-instance ToJSON HlsEncryption where
-        toJSON HlsEncryption'{..}
-          = object
-              (catMaybes
-                 [("encryptionMethod" .=) <$> _heEncryptionMethod,
-                  ("keyRotationIntervalSeconds" .=) <$>
-                    _heKeyRotationIntervalSeconds,
-                  ("constantInitializationVector" .=) <$>
-                    _heConstantInitializationVector,
-                  ("repeatExtXKey" .=) <$> _heRepeatExtXKey,
-                  Just ("spekeKeyProvider" .= _heSpekeKeyProvider)])
-
--- | An HTTP Live Streaming (HLS) ingest resource configuration.
---
--- /See:/ 'hlsIngest' smart constructor.
-newtype HlsIngest = HlsIngest'
-  { _hiIngestEndpoints :: Maybe [IngestEndpoint]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsIngest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hiIngestEndpoints' - A list of endpoints to which the source stream should be sent.
-hlsIngest
-    :: HlsIngest
-hlsIngest = HlsIngest' {_hiIngestEndpoints = Nothing}
-
-
--- | A list of endpoints to which the source stream should be sent.
-hiIngestEndpoints :: Lens' HlsIngest [IngestEndpoint]
-hiIngestEndpoints = lens _hiIngestEndpoints (\ s a -> s{_hiIngestEndpoints = a}) . _Default . _Coerce
-
-instance FromJSON HlsIngest where
-        parseJSON
-          = withObject "HlsIngest"
-              (\ x ->
-                 HlsIngest' <$> (x .:? "ingestEndpoints" .!= mempty))
-
-instance Hashable HlsIngest where
-
-instance NFData HlsIngest where
-
--- | A HTTP Live Streaming (HLS) manifest configuration.
---
--- /See:/ 'hlsManifest' smart constructor.
-data HlsManifest = HlsManifest'
-  { _hmManifestName                   :: !(Maybe Text)
-  , _hmURL                            :: !(Maybe Text)
-  , _hmPlaylistType                   :: !(Maybe PlaylistType)
-  , _hmProgramDateTimeIntervalSeconds :: !(Maybe Int)
-  , _hmAdMarkers                      :: !(Maybe AdMarkers)
-  , _hmIncludeIframeOnlyStream        :: !(Maybe Bool)
-  , _hmPlaylistWindowSeconds          :: !(Maybe Int)
-  , _hmId                             :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsManifest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hmManifestName' - An optional short string appended to the end of the OriginEndpoint URL. If not specified, defaults to the manifestName for the OriginEndpoint.
---
--- * 'hmURL' - The URL of the packaged OriginEndpoint for consumption.
---
--- * 'hmPlaylistType' - The HTTP Live Streaming (HLS) playlist type. When either "EVENT" or "VOD" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.
---
--- * 'hmProgramDateTimeIntervalSeconds' - The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.
---
--- * 'hmAdMarkers' - This setting controls how ad markers are included in the packaged OriginEndpoint. "NONE" will omit all SCTE-35 ad markers from the output. "PASSTHROUGH" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. "SCTE35_ENHANCED" generates ad markers and blackout tags based on SCTE-35 messages in the input source.
---
--- * 'hmIncludeIframeOnlyStream' - When enabled, an I-Frame only stream will be included in the output.
---
--- * 'hmPlaylistWindowSeconds' - Time window (in seconds) contained in each parent manifest.
---
--- * 'hmId' - The ID of the manifest. The ID must be unique within the OriginEndpoint and it cannot be changed after it is created.
-hlsManifest
-    :: Text -- ^ 'hmId'
-    -> HlsManifest
-hlsManifest pId_ =
-  HlsManifest'
-    { _hmManifestName = Nothing
-    , _hmURL = Nothing
-    , _hmPlaylistType = Nothing
-    , _hmProgramDateTimeIntervalSeconds = Nothing
-    , _hmAdMarkers = Nothing
-    , _hmIncludeIframeOnlyStream = Nothing
-    , _hmPlaylistWindowSeconds = Nothing
-    , _hmId = pId_
-    }
-
-
--- | An optional short string appended to the end of the OriginEndpoint URL. If not specified, defaults to the manifestName for the OriginEndpoint.
-hmManifestName :: Lens' HlsManifest (Maybe Text)
-hmManifestName = lens _hmManifestName (\ s a -> s{_hmManifestName = a})
-
--- | The URL of the packaged OriginEndpoint for consumption.
-hmURL :: Lens' HlsManifest (Maybe Text)
-hmURL = lens _hmURL (\ s a -> s{_hmURL = a})
-
--- | The HTTP Live Streaming (HLS) playlist type. When either "EVENT" or "VOD" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.
-hmPlaylistType :: Lens' HlsManifest (Maybe PlaylistType)
-hmPlaylistType = lens _hmPlaylistType (\ s a -> s{_hmPlaylistType = a})
-
--- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.
-hmProgramDateTimeIntervalSeconds :: Lens' HlsManifest (Maybe Int)
-hmProgramDateTimeIntervalSeconds = lens _hmProgramDateTimeIntervalSeconds (\ s a -> s{_hmProgramDateTimeIntervalSeconds = a})
-
--- | This setting controls how ad markers are included in the packaged OriginEndpoint. "NONE" will omit all SCTE-35 ad markers from the output. "PASSTHROUGH" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. "SCTE35_ENHANCED" generates ad markers and blackout tags based on SCTE-35 messages in the input source.
-hmAdMarkers :: Lens' HlsManifest (Maybe AdMarkers)
-hmAdMarkers = lens _hmAdMarkers (\ s a -> s{_hmAdMarkers = a})
-
--- | When enabled, an I-Frame only stream will be included in the output.
-hmIncludeIframeOnlyStream :: Lens' HlsManifest (Maybe Bool)
-hmIncludeIframeOnlyStream = lens _hmIncludeIframeOnlyStream (\ s a -> s{_hmIncludeIframeOnlyStream = a})
-
--- | Time window (in seconds) contained in each parent manifest.
-hmPlaylistWindowSeconds :: Lens' HlsManifest (Maybe Int)
-hmPlaylistWindowSeconds = lens _hmPlaylistWindowSeconds (\ s a -> s{_hmPlaylistWindowSeconds = a})
-
--- | The ID of the manifest. The ID must be unique within the OriginEndpoint and it cannot be changed after it is created.
-hmId :: Lens' HlsManifest Text
-hmId = lens _hmId (\ s a -> s{_hmId = a})
-
-instance FromJSON HlsManifest where
-        parseJSON
-          = withObject "HlsManifest"
-              (\ x ->
-                 HlsManifest' <$>
-                   (x .:? "manifestName") <*> (x .:? "url") <*>
-                     (x .:? "playlistType")
-                     <*> (x .:? "programDateTimeIntervalSeconds")
-                     <*> (x .:? "adMarkers")
-                     <*> (x .:? "includeIframeOnlyStream")
-                     <*> (x .:? "playlistWindowSeconds")
-                     <*> (x .: "id"))
-
-instance Hashable HlsManifest where
-
-instance NFData HlsManifest where
-
--- | A HTTP Live Streaming (HLS) manifest configuration.
---
--- /See:/ 'hlsManifestCreateOrUpdateParameters' smart constructor.
-data HlsManifestCreateOrUpdateParameters = HlsManifestCreateOrUpdateParameters'
-  { _hmcoupManifestName                   :: !(Maybe Text)
-  , _hmcoupPlaylistType                   :: !(Maybe PlaylistType)
-  , _hmcoupProgramDateTimeIntervalSeconds :: !(Maybe Int)
-  , _hmcoupAdMarkers                      :: !(Maybe AdMarkers)
-  , _hmcoupIncludeIframeOnlyStream        :: !(Maybe Bool)
-  , _hmcoupPlaylistWindowSeconds          :: !(Maybe Int)
-  , _hmcoupId                             :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsManifestCreateOrUpdateParameters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hmcoupManifestName' - An optional short string appended to the end of the OriginEndpoint URL. If not specified, defaults to the manifestName for the OriginEndpoint.
---
--- * 'hmcoupPlaylistType' - The HTTP Live Streaming (HLS) playlist type. When either "EVENT" or "VOD" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.
---
--- * 'hmcoupProgramDateTimeIntervalSeconds' - The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.
---
--- * 'hmcoupAdMarkers' - This setting controls how ad markers are included in the packaged OriginEndpoint. "NONE" will omit all SCTE-35 ad markers from the output. "PASSTHROUGH" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. "SCTE35_ENHANCED" generates ad markers and blackout tags based on SCTE-35 messages in the input source.
---
--- * 'hmcoupIncludeIframeOnlyStream' - When enabled, an I-Frame only stream will be included in the output.
---
--- * 'hmcoupPlaylistWindowSeconds' - Time window (in seconds) contained in each parent manifest.
---
--- * 'hmcoupId' - The ID of the manifest. The ID must be unique within the OriginEndpoint and it cannot be changed after it is created.
-hlsManifestCreateOrUpdateParameters
-    :: Text -- ^ 'hmcoupId'
-    -> HlsManifestCreateOrUpdateParameters
-hlsManifestCreateOrUpdateParameters pId_ =
-  HlsManifestCreateOrUpdateParameters'
-    { _hmcoupManifestName = Nothing
-    , _hmcoupPlaylistType = Nothing
-    , _hmcoupProgramDateTimeIntervalSeconds = Nothing
-    , _hmcoupAdMarkers = Nothing
-    , _hmcoupIncludeIframeOnlyStream = Nothing
-    , _hmcoupPlaylistWindowSeconds = Nothing
-    , _hmcoupId = pId_
-    }
-
-
--- | An optional short string appended to the end of the OriginEndpoint URL. If not specified, defaults to the manifestName for the OriginEndpoint.
-hmcoupManifestName :: Lens' HlsManifestCreateOrUpdateParameters (Maybe Text)
-hmcoupManifestName = lens _hmcoupManifestName (\ s a -> s{_hmcoupManifestName = a})
-
--- | The HTTP Live Streaming (HLS) playlist type. When either "EVENT" or "VOD" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.
-hmcoupPlaylistType :: Lens' HlsManifestCreateOrUpdateParameters (Maybe PlaylistType)
-hmcoupPlaylistType = lens _hmcoupPlaylistType (\ s a -> s{_hmcoupPlaylistType = a})
-
--- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.
-hmcoupProgramDateTimeIntervalSeconds :: Lens' HlsManifestCreateOrUpdateParameters (Maybe Int)
-hmcoupProgramDateTimeIntervalSeconds = lens _hmcoupProgramDateTimeIntervalSeconds (\ s a -> s{_hmcoupProgramDateTimeIntervalSeconds = a})
-
--- | This setting controls how ad markers are included in the packaged OriginEndpoint. "NONE" will omit all SCTE-35 ad markers from the output. "PASSTHROUGH" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. "SCTE35_ENHANCED" generates ad markers and blackout tags based on SCTE-35 messages in the input source.
-hmcoupAdMarkers :: Lens' HlsManifestCreateOrUpdateParameters (Maybe AdMarkers)
-hmcoupAdMarkers = lens _hmcoupAdMarkers (\ s a -> s{_hmcoupAdMarkers = a})
-
--- | When enabled, an I-Frame only stream will be included in the output.
-hmcoupIncludeIframeOnlyStream :: Lens' HlsManifestCreateOrUpdateParameters (Maybe Bool)
-hmcoupIncludeIframeOnlyStream = lens _hmcoupIncludeIframeOnlyStream (\ s a -> s{_hmcoupIncludeIframeOnlyStream = a})
-
--- | Time window (in seconds) contained in each parent manifest.
-hmcoupPlaylistWindowSeconds :: Lens' HlsManifestCreateOrUpdateParameters (Maybe Int)
-hmcoupPlaylistWindowSeconds = lens _hmcoupPlaylistWindowSeconds (\ s a -> s{_hmcoupPlaylistWindowSeconds = a})
-
--- | The ID of the manifest. The ID must be unique within the OriginEndpoint and it cannot be changed after it is created.
-hmcoupId :: Lens' HlsManifestCreateOrUpdateParameters Text
-hmcoupId = lens _hmcoupId (\ s a -> s{_hmcoupId = a})
-
-instance Hashable HlsManifestCreateOrUpdateParameters
-         where
-
-instance NFData HlsManifestCreateOrUpdateParameters
-         where
-
-instance ToJSON HlsManifestCreateOrUpdateParameters
-         where
-        toJSON HlsManifestCreateOrUpdateParameters'{..}
-          = object
-              (catMaybes
-                 [("manifestName" .=) <$> _hmcoupManifestName,
-                  ("playlistType" .=) <$> _hmcoupPlaylistType,
-                  ("programDateTimeIntervalSeconds" .=) <$>
-                    _hmcoupProgramDateTimeIntervalSeconds,
-                  ("adMarkers" .=) <$> _hmcoupAdMarkers,
-                  ("includeIframeOnlyStream" .=) <$>
-                    _hmcoupIncludeIframeOnlyStream,
-                  ("playlistWindowSeconds" .=) <$>
-                    _hmcoupPlaylistWindowSeconds,
-                  Just ("id" .= _hmcoupId)])
-
--- | An HTTP Live Streaming (HLS) packaging configuration.
---
--- /See:/ 'hlsPackage' smart constructor.
-data HlsPackage = HlsPackage'
-  { _hpUseAudioRenditionGroup         :: !(Maybe Bool)
-  , _hpPlaylistType                   :: !(Maybe PlaylistType)
-  , _hpSegmentDurationSeconds         :: !(Maybe Int)
-  , _hpProgramDateTimeIntervalSeconds :: !(Maybe Int)
-  , _hpStreamSelection                :: !(Maybe StreamSelection)
-  , _hpAdMarkers                      :: !(Maybe AdMarkers)
-  , _hpEncryption                     :: !(Maybe HlsEncryption)
-  , _hpIncludeIframeOnlyStream        :: !(Maybe Bool)
-  , _hpPlaylistWindowSeconds          :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HlsPackage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hpUseAudioRenditionGroup' - When enabled, audio streams will be placed in rendition groups in the output.
---
--- * 'hpPlaylistType' - The HTTP Live Streaming (HLS) playlist type. When either "EVENT" or "VOD" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.
---
--- * 'hpSegmentDurationSeconds' - Duration (in seconds) of each fragment. Actual fragments will be rounded to the nearest multiple of the source fragment duration.
---
--- * 'hpProgramDateTimeIntervalSeconds' - The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.
---
--- * 'hpStreamSelection' - Undocumented member.
---
--- * 'hpAdMarkers' - This setting controls how ad markers are included in the packaged OriginEndpoint. "NONE" will omit all SCTE-35 ad markers from the output. "PASSTHROUGH" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. "SCTE35_ENHANCED" generates ad markers and blackout tags based on SCTE-35 messages in the input source.
---
--- * 'hpEncryption' - Undocumented member.
---
--- * 'hpIncludeIframeOnlyStream' - When enabled, an I-Frame only stream will be included in the output.
---
--- * 'hpPlaylistWindowSeconds' - Time window (in seconds) contained in each parent manifest.
-hlsPackage
-    :: HlsPackage
-hlsPackage =
-  HlsPackage'
-    { _hpUseAudioRenditionGroup = Nothing
-    , _hpPlaylistType = Nothing
-    , _hpSegmentDurationSeconds = Nothing
-    , _hpProgramDateTimeIntervalSeconds = Nothing
-    , _hpStreamSelection = Nothing
-    , _hpAdMarkers = Nothing
-    , _hpEncryption = Nothing
-    , _hpIncludeIframeOnlyStream = Nothing
-    , _hpPlaylistWindowSeconds = Nothing
-    }
-
-
--- | When enabled, audio streams will be placed in rendition groups in the output.
-hpUseAudioRenditionGroup :: Lens' HlsPackage (Maybe Bool)
-hpUseAudioRenditionGroup = lens _hpUseAudioRenditionGroup (\ s a -> s{_hpUseAudioRenditionGroup = a})
-
--- | The HTTP Live Streaming (HLS) playlist type. When either "EVENT" or "VOD" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.
-hpPlaylistType :: Lens' HlsPackage (Maybe PlaylistType)
-hpPlaylistType = lens _hpPlaylistType (\ s a -> s{_hpPlaylistType = a})
-
--- | Duration (in seconds) of each fragment. Actual fragments will be rounded to the nearest multiple of the source fragment duration.
-hpSegmentDurationSeconds :: Lens' HlsPackage (Maybe Int)
-hpSegmentDurationSeconds = lens _hpSegmentDurationSeconds (\ s a -> s{_hpSegmentDurationSeconds = a})
-
--- | The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.
-hpProgramDateTimeIntervalSeconds :: Lens' HlsPackage (Maybe Int)
-hpProgramDateTimeIntervalSeconds = lens _hpProgramDateTimeIntervalSeconds (\ s a -> s{_hpProgramDateTimeIntervalSeconds = a})
-
--- | Undocumented member.
-hpStreamSelection :: Lens' HlsPackage (Maybe StreamSelection)
-hpStreamSelection = lens _hpStreamSelection (\ s a -> s{_hpStreamSelection = a})
-
--- | This setting controls how ad markers are included in the packaged OriginEndpoint. "NONE" will omit all SCTE-35 ad markers from the output. "PASSTHROUGH" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. "SCTE35_ENHANCED" generates ad markers and blackout tags based on SCTE-35 messages in the input source.
-hpAdMarkers :: Lens' HlsPackage (Maybe AdMarkers)
-hpAdMarkers = lens _hpAdMarkers (\ s a -> s{_hpAdMarkers = a})
-
--- | Undocumented member.
-hpEncryption :: Lens' HlsPackage (Maybe HlsEncryption)
-hpEncryption = lens _hpEncryption (\ s a -> s{_hpEncryption = a})
-
--- | When enabled, an I-Frame only stream will be included in the output.
-hpIncludeIframeOnlyStream :: Lens' HlsPackage (Maybe Bool)
-hpIncludeIframeOnlyStream = lens _hpIncludeIframeOnlyStream (\ s a -> s{_hpIncludeIframeOnlyStream = a})
-
--- | Time window (in seconds) contained in each parent manifest.
-hpPlaylistWindowSeconds :: Lens' HlsPackage (Maybe Int)
-hpPlaylistWindowSeconds = lens _hpPlaylistWindowSeconds (\ s a -> s{_hpPlaylistWindowSeconds = a})
-
-instance FromJSON HlsPackage where
-        parseJSON
-          = withObject "HlsPackage"
-              (\ x ->
-                 HlsPackage' <$>
-                   (x .:? "useAudioRenditionGroup") <*>
-                     (x .:? "playlistType")
-                     <*> (x .:? "segmentDurationSeconds")
-                     <*> (x .:? "programDateTimeIntervalSeconds")
-                     <*> (x .:? "streamSelection")
-                     <*> (x .:? "adMarkers")
-                     <*> (x .:? "encryption")
-                     <*> (x .:? "includeIframeOnlyStream")
-                     <*> (x .:? "playlistWindowSeconds"))
-
-instance Hashable HlsPackage where
-
-instance NFData HlsPackage where
-
-instance ToJSON HlsPackage where
-        toJSON HlsPackage'{..}
-          = object
-              (catMaybes
-                 [("useAudioRenditionGroup" .=) <$>
-                    _hpUseAudioRenditionGroup,
-                  ("playlistType" .=) <$> _hpPlaylistType,
-                  ("segmentDurationSeconds" .=) <$>
-                    _hpSegmentDurationSeconds,
-                  ("programDateTimeIntervalSeconds" .=) <$>
-                    _hpProgramDateTimeIntervalSeconds,
-                  ("streamSelection" .=) <$> _hpStreamSelection,
-                  ("adMarkers" .=) <$> _hpAdMarkers,
-                  ("encryption" .=) <$> _hpEncryption,
-                  ("includeIframeOnlyStream" .=) <$>
-                    _hpIncludeIframeOnlyStream,
-                  ("playlistWindowSeconds" .=) <$>
-                    _hpPlaylistWindowSeconds])
-
--- | An endpoint for ingesting source content for a Channel.
---
--- /See:/ 'ingestEndpoint' smart constructor.
-data IngestEndpoint = IngestEndpoint'
-  { _ieURL      :: !(Maybe Text)
-  , _ieUsername :: !(Maybe Text)
-  , _iePassword :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'IngestEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ieURL' - The ingest URL to which the source stream should be sent.
---
--- * 'ieUsername' - The system generated username for ingest authentication.
---
--- * 'iePassword' - The system generated password for ingest authentication.
-ingestEndpoint
-    :: IngestEndpoint
-ingestEndpoint =
-  IngestEndpoint'
-    {_ieURL = Nothing, _ieUsername = Nothing, _iePassword = Nothing}
-
-
--- | The ingest URL to which the source stream should be sent.
-ieURL :: Lens' IngestEndpoint (Maybe Text)
-ieURL = lens _ieURL (\ s a -> s{_ieURL = a})
-
--- | The system generated username for ingest authentication.
-ieUsername :: Lens' IngestEndpoint (Maybe Text)
-ieUsername = lens _ieUsername (\ s a -> s{_ieUsername = a})
-
--- | The system generated password for ingest authentication.
-iePassword :: Lens' IngestEndpoint (Maybe Text)
-iePassword = lens _iePassword (\ s a -> s{_iePassword = a})
-
-instance FromJSON IngestEndpoint where
-        parseJSON
-          = withObject "IngestEndpoint"
-              (\ x ->
-                 IngestEndpoint' <$>
-                   (x .:? "url") <*> (x .:? "username") <*>
-                     (x .:? "password"))
-
-instance Hashable IngestEndpoint where
-
-instance NFData IngestEndpoint where
-
--- | A Microsoft Smooth Streaming (MSS) encryption configuration.
---
--- /See:/ 'mssEncryption' smart constructor.
-newtype MssEncryption = MssEncryption'
-  { _meSpekeKeyProvider :: SpekeKeyProvider
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MssEncryption' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'meSpekeKeyProvider' - Undocumented member.
-mssEncryption
-    :: SpekeKeyProvider -- ^ 'meSpekeKeyProvider'
-    -> MssEncryption
-mssEncryption pSpekeKeyProvider_ =
-  MssEncryption' {_meSpekeKeyProvider = pSpekeKeyProvider_}
-
-
--- | Undocumented member.
-meSpekeKeyProvider :: Lens' MssEncryption SpekeKeyProvider
-meSpekeKeyProvider = lens _meSpekeKeyProvider (\ s a -> s{_meSpekeKeyProvider = a})
-
-instance FromJSON MssEncryption where
-        parseJSON
-          = withObject "MssEncryption"
-              (\ x -> MssEncryption' <$> (x .: "spekeKeyProvider"))
-
-instance Hashable MssEncryption where
-
-instance NFData MssEncryption where
-
-instance ToJSON MssEncryption where
-        toJSON MssEncryption'{..}
-          = object
-              (catMaybes
-                 [Just ("spekeKeyProvider" .= _meSpekeKeyProvider)])
-
--- | A Microsoft Smooth Streaming (MSS) packaging configuration.
---
--- /See:/ 'mssPackage' smart constructor.
-data MssPackage = MssPackage'
-  { _mpSegmentDurationSeconds :: !(Maybe Int)
-  , _mpStreamSelection        :: !(Maybe StreamSelection)
-  , _mpEncryption             :: !(Maybe MssEncryption)
-  , _mpManifestWindowSeconds  :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MssPackage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mpSegmentDurationSeconds' - The duration (in seconds) of each segment.
---
--- * 'mpStreamSelection' - Undocumented member.
---
--- * 'mpEncryption' - Undocumented member.
---
--- * 'mpManifestWindowSeconds' - The time window (in seconds) contained in each manifest.
-mssPackage
-    :: MssPackage
-mssPackage =
-  MssPackage'
-    { _mpSegmentDurationSeconds = Nothing
-    , _mpStreamSelection = Nothing
-    , _mpEncryption = Nothing
-    , _mpManifestWindowSeconds = Nothing
-    }
-
-
--- | The duration (in seconds) of each segment.
-mpSegmentDurationSeconds :: Lens' MssPackage (Maybe Int)
-mpSegmentDurationSeconds = lens _mpSegmentDurationSeconds (\ s a -> s{_mpSegmentDurationSeconds = a})
-
--- | Undocumented member.
-mpStreamSelection :: Lens' MssPackage (Maybe StreamSelection)
-mpStreamSelection = lens _mpStreamSelection (\ s a -> s{_mpStreamSelection = a})
-
--- | Undocumented member.
-mpEncryption :: Lens' MssPackage (Maybe MssEncryption)
-mpEncryption = lens _mpEncryption (\ s a -> s{_mpEncryption = a})
-
--- | The time window (in seconds) contained in each manifest.
-mpManifestWindowSeconds :: Lens' MssPackage (Maybe Int)
-mpManifestWindowSeconds = lens _mpManifestWindowSeconds (\ s a -> s{_mpManifestWindowSeconds = a})
-
-instance FromJSON MssPackage where
-        parseJSON
-          = withObject "MssPackage"
-              (\ x ->
-                 MssPackage' <$>
-                   (x .:? "segmentDurationSeconds") <*>
-                     (x .:? "streamSelection")
-                     <*> (x .:? "encryption")
-                     <*> (x .:? "manifestWindowSeconds"))
-
-instance Hashable MssPackage where
-
-instance NFData MssPackage where
-
-instance ToJSON MssPackage where
-        toJSON MssPackage'{..}
-          = object
-              (catMaybes
-                 [("segmentDurationSeconds" .=) <$>
-                    _mpSegmentDurationSeconds,
-                  ("streamSelection" .=) <$> _mpStreamSelection,
-                  ("encryption" .=) <$> _mpEncryption,
-                  ("manifestWindowSeconds" .=) <$>
-                    _mpManifestWindowSeconds])
-
--- | An OriginEndpoint resource configuration.
---
--- /See:/ 'originEndpoint' smart constructor.
-data OriginEndpoint = OriginEndpoint'
-  { _oeWhitelist              :: !(Maybe [Text])
-  , _oeHlsPackage             :: !(Maybe HlsPackage)
-  , _oeARN                    :: !(Maybe Text)
-  , _oeManifestName           :: !(Maybe Text)
-  , _oeURL                    :: !(Maybe Text)
-  , _oeChannelId              :: !(Maybe Text)
-  , _oeStartoverWindowSeconds :: !(Maybe Int)
-  , _oeDashPackage            :: !(Maybe DashPackage)
-  , _oeMssPackage             :: !(Maybe MssPackage)
-  , _oeId                     :: !(Maybe Text)
-  , _oeTimeDelaySeconds       :: !(Maybe Int)
-  , _oeCmafPackage            :: !(Maybe CmafPackage)
-  , _oeDescription            :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OriginEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oeWhitelist' - A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
---
--- * 'oeHlsPackage' - Undocumented member.
---
--- * 'oeARN' - The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
---
--- * 'oeManifestName' - A short string appended to the end of the OriginEndpoint URL.
---
--- * 'oeURL' - The URL of the packaged OriginEndpoint for consumption.
---
--- * 'oeChannelId' - The ID of the Channel the OriginEndpoint is associated with.
---
--- * 'oeStartoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
---
--- * 'oeDashPackage' - Undocumented member.
---
--- * 'oeMssPackage' - Undocumented member.
---
--- * 'oeId' - The ID of the OriginEndpoint.
---
--- * 'oeTimeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
---
--- * 'oeCmafPackage' - Undocumented member.
---
--- * 'oeDescription' - A short text description of the OriginEndpoint.
-originEndpoint
-    :: OriginEndpoint
-originEndpoint =
-  OriginEndpoint'
-    { _oeWhitelist = Nothing
-    , _oeHlsPackage = Nothing
-    , _oeARN = Nothing
-    , _oeManifestName = Nothing
-    , _oeURL = Nothing
-    , _oeChannelId = Nothing
-    , _oeStartoverWindowSeconds = Nothing
-    , _oeDashPackage = Nothing
-    , _oeMssPackage = Nothing
-    , _oeId = Nothing
-    , _oeTimeDelaySeconds = Nothing
-    , _oeCmafPackage = Nothing
-    , _oeDescription = Nothing
-    }
-
-
--- | A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
-oeWhitelist :: Lens' OriginEndpoint [Text]
-oeWhitelist = lens _oeWhitelist (\ s a -> s{_oeWhitelist = a}) . _Default . _Coerce
-
--- | Undocumented member.
-oeHlsPackage :: Lens' OriginEndpoint (Maybe HlsPackage)
-oeHlsPackage = lens _oeHlsPackage (\ s a -> s{_oeHlsPackage = a})
-
--- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
-oeARN :: Lens' OriginEndpoint (Maybe Text)
-oeARN = lens _oeARN (\ s a -> s{_oeARN = a})
-
--- | A short string appended to the end of the OriginEndpoint URL.
-oeManifestName :: Lens' OriginEndpoint (Maybe Text)
-oeManifestName = lens _oeManifestName (\ s a -> s{_oeManifestName = a})
-
--- | The URL of the packaged OriginEndpoint for consumption.
-oeURL :: Lens' OriginEndpoint (Maybe Text)
-oeURL = lens _oeURL (\ s a -> s{_oeURL = a})
-
--- | The ID of the Channel the OriginEndpoint is associated with.
-oeChannelId :: Lens' OriginEndpoint (Maybe Text)
-oeChannelId = lens _oeChannelId (\ s a -> s{_oeChannelId = a})
-
--- | Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
-oeStartoverWindowSeconds :: Lens' OriginEndpoint (Maybe Int)
-oeStartoverWindowSeconds = lens _oeStartoverWindowSeconds (\ s a -> s{_oeStartoverWindowSeconds = a})
-
--- | Undocumented member.
-oeDashPackage :: Lens' OriginEndpoint (Maybe DashPackage)
-oeDashPackage = lens _oeDashPackage (\ s a -> s{_oeDashPackage = a})
-
--- | Undocumented member.
-oeMssPackage :: Lens' OriginEndpoint (Maybe MssPackage)
-oeMssPackage = lens _oeMssPackage (\ s a -> s{_oeMssPackage = a})
-
--- | The ID of the OriginEndpoint.
-oeId :: Lens' OriginEndpoint (Maybe Text)
-oeId = lens _oeId (\ s a -> s{_oeId = a})
-
--- | Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
-oeTimeDelaySeconds :: Lens' OriginEndpoint (Maybe Int)
-oeTimeDelaySeconds = lens _oeTimeDelaySeconds (\ s a -> s{_oeTimeDelaySeconds = a})
-
--- | Undocumented member.
-oeCmafPackage :: Lens' OriginEndpoint (Maybe CmafPackage)
-oeCmafPackage = lens _oeCmafPackage (\ s a -> s{_oeCmafPackage = a})
-
--- | A short text description of the OriginEndpoint.
-oeDescription :: Lens' OriginEndpoint (Maybe Text)
-oeDescription = lens _oeDescription (\ s a -> s{_oeDescription = a})
-
-instance FromJSON OriginEndpoint where
-        parseJSON
-          = withObject "OriginEndpoint"
-              (\ x ->
-                 OriginEndpoint' <$>
-                   (x .:? "whitelist" .!= mempty) <*>
-                     (x .:? "hlsPackage")
-                     <*> (x .:? "arn")
-                     <*> (x .:? "manifestName")
-                     <*> (x .:? "url")
-                     <*> (x .:? "channelId")
-                     <*> (x .:? "startoverWindowSeconds")
-                     <*> (x .:? "dashPackage")
-                     <*> (x .:? "mssPackage")
-                     <*> (x .:? "id")
-                     <*> (x .:? "timeDelaySeconds")
-                     <*> (x .:? "cmafPackage")
-                     <*> (x .:? "description"))
-
-instance Hashable OriginEndpoint where
-
-instance NFData OriginEndpoint where
-
--- | A configuration for accessing an external Secure Packager and Encoder Key Exchange (SPEKE) service that will provide encryption keys.
---
--- /See:/ 'spekeKeyProvider' smart constructor.
-data SpekeKeyProvider = SpekeKeyProvider'
-  { _skpURL        :: !Text
-  , _skpResourceId :: !Text
-  , _skpRoleARN    :: !Text
-  , _skpSystemIds  :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpekeKeyProvider' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'skpURL' - The URL of the external key provider service.
---
--- * 'skpResourceId' - The resource ID to include in key requests.
---
--- * 'skpRoleARN' - An Amazon Resource Name (ARN) of an IAM role that AWS Elemental MediaPackage will assume when accessing the key provider service.
---
--- * 'skpSystemIds' - The system IDs to include in key requests.
-spekeKeyProvider
-    :: Text -- ^ 'skpURL'
-    -> Text -- ^ 'skpResourceId'
-    -> Text -- ^ 'skpRoleARN'
-    -> SpekeKeyProvider
-spekeKeyProvider pURL_ pResourceId_ pRoleARN_ =
-  SpekeKeyProvider'
-    { _skpURL = pURL_
-    , _skpResourceId = pResourceId_
-    , _skpRoleARN = pRoleARN_
-    , _skpSystemIds = mempty
-    }
-
-
--- | The URL of the external key provider service.
-skpURL :: Lens' SpekeKeyProvider Text
-skpURL = lens _skpURL (\ s a -> s{_skpURL = a})
-
--- | The resource ID to include in key requests.
-skpResourceId :: Lens' SpekeKeyProvider Text
-skpResourceId = lens _skpResourceId (\ s a -> s{_skpResourceId = a})
-
--- | An Amazon Resource Name (ARN) of an IAM role that AWS Elemental MediaPackage will assume when accessing the key provider service.
-skpRoleARN :: Lens' SpekeKeyProvider Text
-skpRoleARN = lens _skpRoleARN (\ s a -> s{_skpRoleARN = a})
-
--- | The system IDs to include in key requests.
-skpSystemIds :: Lens' SpekeKeyProvider [Text]
-skpSystemIds = lens _skpSystemIds (\ s a -> s{_skpSystemIds = a}) . _Coerce
-
-instance FromJSON SpekeKeyProvider where
-        parseJSON
-          = withObject "SpekeKeyProvider"
-              (\ x ->
-                 SpekeKeyProvider' <$>
-                   (x .: "url") <*> (x .: "resourceId") <*>
-                     (x .: "roleArn")
-                     <*> (x .:? "systemIds" .!= mempty))
-
-instance Hashable SpekeKeyProvider where
-
-instance NFData SpekeKeyProvider where
-
-instance ToJSON SpekeKeyProvider where
-        toJSON SpekeKeyProvider'{..}
-          = object
-              (catMaybes
-                 [Just ("url" .= _skpURL),
-                  Just ("resourceId" .= _skpResourceId),
-                  Just ("roleArn" .= _skpRoleARN),
-                  Just ("systemIds" .= _skpSystemIds)])
-
--- | A StreamSelection configuration.
---
--- /See:/ 'streamSelection' smart constructor.
-data StreamSelection = StreamSelection'
-  { _ssStreamOrder           :: !(Maybe StreamOrder)
-  , _ssMinVideoBitsPerSecond :: !(Maybe Int)
-  , _ssMaxVideoBitsPerSecond :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StreamSelection' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssStreamOrder' - A directive that determines the order of streams in the output.
---
--- * 'ssMinVideoBitsPerSecond' - The minimum video bitrate (bps) to include in output.
---
--- * 'ssMaxVideoBitsPerSecond' - The maximum video bitrate (bps) to include in output.
-streamSelection
-    :: StreamSelection
-streamSelection =
-  StreamSelection'
-    { _ssStreamOrder = Nothing
-    , _ssMinVideoBitsPerSecond = Nothing
-    , _ssMaxVideoBitsPerSecond = Nothing
-    }
-
-
--- | A directive that determines the order of streams in the output.
-ssStreamOrder :: Lens' StreamSelection (Maybe StreamOrder)
-ssStreamOrder = lens _ssStreamOrder (\ s a -> s{_ssStreamOrder = a})
-
--- | The minimum video bitrate (bps) to include in output.
-ssMinVideoBitsPerSecond :: Lens' StreamSelection (Maybe Int)
-ssMinVideoBitsPerSecond = lens _ssMinVideoBitsPerSecond (\ s a -> s{_ssMinVideoBitsPerSecond = a})
-
--- | The maximum video bitrate (bps) to include in output.
-ssMaxVideoBitsPerSecond :: Lens' StreamSelection (Maybe Int)
-ssMaxVideoBitsPerSecond = lens _ssMaxVideoBitsPerSecond (\ s a -> s{_ssMaxVideoBitsPerSecond = a})
-
-instance FromJSON StreamSelection where
-        parseJSON
-          = withObject "StreamSelection"
-              (\ x ->
-                 StreamSelection' <$>
-                   (x .:? "streamOrder") <*>
-                     (x .:? "minVideoBitsPerSecond")
-                     <*> (x .:? "maxVideoBitsPerSecond"))
-
-instance Hashable StreamSelection where
-
-instance NFData StreamSelection where
-
-instance ToJSON StreamSelection where
-        toJSON StreamSelection'{..}
-          = object
-              (catMaybes
-                 [("streamOrder" .=) <$> _ssStreamOrder,
-                  ("minVideoBitsPerSecond" .=) <$>
-                    _ssMinVideoBitsPerSecond,
-                  ("maxVideoBitsPerSecond" .=) <$>
-                    _ssMaxVideoBitsPerSecond])
diff --git a/gen/Network/AWS/MediaPackage/Types/Sum.hs b/gen/Network/AWS/MediaPackage/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/Types/Sum.hs
+++ /dev/null
@@ -1,179 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.Types.Sum
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.MediaPackage.Types.Sum where
-
-import Network.AWS.Prelude
-
-data AdMarkers
-  = AMNone
-  | AMPassthrough
-  | AMSCTE35Enhanced
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AdMarkers where
-    parser = takeLowerText >>= \case
-        "none" -> pure AMNone
-        "passthrough" -> pure AMPassthrough
-        "scte35_enhanced" -> pure AMSCTE35Enhanced
-        e -> fromTextError $ "Failure parsing AdMarkers from value: '" <> e
-           <> "'. Accepted values: none, passthrough, scte35_enhanced"
-
-instance ToText AdMarkers where
-    toText = \case
-        AMNone -> "NONE"
-        AMPassthrough -> "PASSTHROUGH"
-        AMSCTE35Enhanced -> "SCTE35_ENHANCED"
-
-instance Hashable     AdMarkers
-instance NFData       AdMarkers
-instance ToByteString AdMarkers
-instance ToQuery      AdMarkers
-instance ToHeader     AdMarkers
-
-instance ToJSON AdMarkers where
-    toJSON = toJSONText
-
-instance FromJSON AdMarkers where
-    parseJSON = parseJSONText "AdMarkers"
-
-data EncryptionMethod
-  = AES128
-  | SampleAES
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText EncryptionMethod where
-    parser = takeLowerText >>= \case
-        "aes_128" -> pure AES128
-        "sample_aes" -> pure SampleAES
-        e -> fromTextError $ "Failure parsing EncryptionMethod from value: '" <> e
-           <> "'. Accepted values: aes_128, sample_aes"
-
-instance ToText EncryptionMethod where
-    toText = \case
-        AES128 -> "AES_128"
-        SampleAES -> "SAMPLE_AES"
-
-instance Hashable     EncryptionMethod
-instance NFData       EncryptionMethod
-instance ToByteString EncryptionMethod
-instance ToQuery      EncryptionMethod
-instance ToHeader     EncryptionMethod
-
-instance ToJSON EncryptionMethod where
-    toJSON = toJSONText
-
-instance FromJSON EncryptionMethod where
-    parseJSON = parseJSONText "EncryptionMethod"
-
-data PlaylistType
-  = Event
-  | None
-  | Vod
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText PlaylistType where
-    parser = takeLowerText >>= \case
-        "event" -> pure Event
-        "none" -> pure None
-        "vod" -> pure Vod
-        e -> fromTextError $ "Failure parsing PlaylistType from value: '" <> e
-           <> "'. Accepted values: event, none, vod"
-
-instance ToText PlaylistType where
-    toText = \case
-        Event -> "EVENT"
-        None -> "NONE"
-        Vod -> "VOD"
-
-instance Hashable     PlaylistType
-instance NFData       PlaylistType
-instance ToByteString PlaylistType
-instance ToQuery      PlaylistType
-instance ToHeader     PlaylistType
-
-instance ToJSON PlaylistType where
-    toJSON = toJSONText
-
-instance FromJSON PlaylistType where
-    parseJSON = parseJSONText "PlaylistType"
-
-data Profile
-  = PHbbtv15
-  | PNone
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Profile where
-    parser = takeLowerText >>= \case
-        "hbbtv_1_5" -> pure PHbbtv15
-        "none" -> pure PNone
-        e -> fromTextError $ "Failure parsing Profile from value: '" <> e
-           <> "'. Accepted values: hbbtv_1_5, none"
-
-instance ToText Profile where
-    toText = \case
-        PHbbtv15 -> "HBBTV_1_5"
-        PNone -> "NONE"
-
-instance Hashable     Profile
-instance NFData       Profile
-instance ToByteString Profile
-instance ToQuery      Profile
-instance ToHeader     Profile
-
-instance ToJSON Profile where
-    toJSON = toJSONText
-
-instance FromJSON Profile where
-    parseJSON = parseJSONText "Profile"
-
-data StreamOrder
-  = Original
-  | VideoBitrateAscending
-  | VideoBitrateDescending
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText StreamOrder where
-    parser = takeLowerText >>= \case
-        "original" -> pure Original
-        "video_bitrate_ascending" -> pure VideoBitrateAscending
-        "video_bitrate_descending" -> pure VideoBitrateDescending
-        e -> fromTextError $ "Failure parsing StreamOrder from value: '" <> e
-           <> "'. Accepted values: original, video_bitrate_ascending, video_bitrate_descending"
-
-instance ToText StreamOrder where
-    toText = \case
-        Original -> "ORIGINAL"
-        VideoBitrateAscending -> "VIDEO_BITRATE_ASCENDING"
-        VideoBitrateDescending -> "VIDEO_BITRATE_DESCENDING"
-
-instance Hashable     StreamOrder
-instance NFData       StreamOrder
-instance ToByteString StreamOrder
-instance ToQuery      StreamOrder
-instance ToHeader     StreamOrder
-
-instance ToJSON StreamOrder where
-    toJSON = toJSONText
-
-instance FromJSON StreamOrder where
-    parseJSON = parseJSONText "StreamOrder"
diff --git a/gen/Network/AWS/MediaPackage/UpdateChannel.hs b/gen/Network/AWS/MediaPackage/UpdateChannel.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/UpdateChannel.hs
+++ /dev/null
@@ -1,170 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.UpdateChannel
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates an existing Channel.
-module Network.AWS.MediaPackage.UpdateChannel
-    (
-    -- * Creating a Request
-      updateChannel
-    , UpdateChannel
-    -- * Request Lenses
-    , ucDescription
-    , ucId
-
-    -- * Destructuring the Response
-    , updateChannelResponse
-    , UpdateChannelResponse
-    -- * Response Lenses
-    , ucrsHlsIngest
-    , ucrsARN
-    , ucrsId
-    , ucrsDescription
-    , ucrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | Configuration parameters used to update the Channel.
---
--- /See:/ 'updateChannel' smart constructor.
-data UpdateChannel = UpdateChannel'
-  { _ucDescription :: !(Maybe Text)
-  , _ucId          :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateChannel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucDescription' - A short text description of the Channel.
---
--- * 'ucId' - The ID of the Channel to update.
-updateChannel
-    :: Text -- ^ 'ucId'
-    -> UpdateChannel
-updateChannel pId_ = UpdateChannel' {_ucDescription = Nothing, _ucId = pId_}
-
-
--- | A short text description of the Channel.
-ucDescription :: Lens' UpdateChannel (Maybe Text)
-ucDescription = lens _ucDescription (\ s a -> s{_ucDescription = a})
-
--- | The ID of the Channel to update.
-ucId :: Lens' UpdateChannel Text
-ucId = lens _ucId (\ s a -> s{_ucId = a})
-
-instance AWSRequest UpdateChannel where
-        type Rs UpdateChannel = UpdateChannelResponse
-        request = putJSON mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdateChannelResponse' <$>
-                   (x .?> "hlsIngest") <*> (x .?> "arn") <*>
-                     (x .?> "id")
-                     <*> (x .?> "description")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable UpdateChannel where
-
-instance NFData UpdateChannel where
-
-instance ToHeaders UpdateChannel where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateChannel where
-        toJSON UpdateChannel'{..}
-          = object
-              (catMaybes [("description" .=) <$> _ucDescription])
-
-instance ToPath UpdateChannel where
-        toPath UpdateChannel'{..}
-          = mconcat ["/channels/", toBS _ucId]
-
-instance ToQuery UpdateChannel where
-        toQuery = const mempty
-
--- | /See:/ 'updateChannelResponse' smart constructor.
-data UpdateChannelResponse = UpdateChannelResponse'
-  { _ucrsHlsIngest      :: !(Maybe HlsIngest)
-  , _ucrsARN            :: !(Maybe Text)
-  , _ucrsId             :: !(Maybe Text)
-  , _ucrsDescription    :: !(Maybe Text)
-  , _ucrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateChannelResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucrsHlsIngest' - Undocumented member.
---
--- * 'ucrsARN' - The Amazon Resource Name (ARN) assigned to the Channel.
---
--- * 'ucrsId' - The ID of the Channel.
---
--- * 'ucrsDescription' - A short text description of the Channel.
---
--- * 'ucrsResponseStatus' - -- | The response status code.
-updateChannelResponse
-    :: Int -- ^ 'ucrsResponseStatus'
-    -> UpdateChannelResponse
-updateChannelResponse pResponseStatus_ =
-  UpdateChannelResponse'
-    { _ucrsHlsIngest = Nothing
-    , _ucrsARN = Nothing
-    , _ucrsId = Nothing
-    , _ucrsDescription = Nothing
-    , _ucrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Undocumented member.
-ucrsHlsIngest :: Lens' UpdateChannelResponse (Maybe HlsIngest)
-ucrsHlsIngest = lens _ucrsHlsIngest (\ s a -> s{_ucrsHlsIngest = a})
-
--- | The Amazon Resource Name (ARN) assigned to the Channel.
-ucrsARN :: Lens' UpdateChannelResponse (Maybe Text)
-ucrsARN = lens _ucrsARN (\ s a -> s{_ucrsARN = a})
-
--- | The ID of the Channel.
-ucrsId :: Lens' UpdateChannelResponse (Maybe Text)
-ucrsId = lens _ucrsId (\ s a -> s{_ucrsId = a})
-
--- | A short text description of the Channel.
-ucrsDescription :: Lens' UpdateChannelResponse (Maybe Text)
-ucrsDescription = lens _ucrsDescription (\ s a -> s{_ucrsDescription = a})
-
--- | -- | The response status code.
-ucrsResponseStatus :: Lens' UpdateChannelResponse Int
-ucrsResponseStatus = lens _ucrsResponseStatus (\ s a -> s{_ucrsResponseStatus = a})
-
-instance NFData UpdateChannelResponse where
diff --git a/gen/Network/AWS/MediaPackage/UpdateOriginEndpoint.hs b/gen/Network/AWS/MediaPackage/UpdateOriginEndpoint.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/UpdateOriginEndpoint.hs
+++ /dev/null
@@ -1,348 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.UpdateOriginEndpoint
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates an existing OriginEndpoint.
-module Network.AWS.MediaPackage.UpdateOriginEndpoint
-    (
-    -- * Creating a Request
-      updateOriginEndpoint
-    , UpdateOriginEndpoint
-    -- * Request Lenses
-    , uoeWhitelist
-    , uoeHlsPackage
-    , uoeManifestName
-    , uoeStartoverWindowSeconds
-    , uoeDashPackage
-    , uoeMssPackage
-    , uoeTimeDelaySeconds
-    , uoeCmafPackage
-    , uoeDescription
-    , uoeId
-
-    -- * Destructuring the Response
-    , updateOriginEndpointResponse
-    , UpdateOriginEndpointResponse
-    -- * Response Lenses
-    , uoersWhitelist
-    , uoersHlsPackage
-    , uoersARN
-    , uoersManifestName
-    , uoersURL
-    , uoersChannelId
-    , uoersStartoverWindowSeconds
-    , uoersDashPackage
-    , uoersMssPackage
-    , uoersId
-    , uoersTimeDelaySeconds
-    , uoersCmafPackage
-    , uoersDescription
-    , uoersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.MediaPackage.Types.Product
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | Configuration parameters used to update an existing OriginEndpoint.
---
--- /See:/ 'updateOriginEndpoint' smart constructor.
-data UpdateOriginEndpoint = UpdateOriginEndpoint'
-  { _uoeWhitelist              :: !(Maybe [Text])
-  , _uoeHlsPackage             :: !(Maybe HlsPackage)
-  , _uoeManifestName           :: !(Maybe Text)
-  , _uoeStartoverWindowSeconds :: !(Maybe Int)
-  , _uoeDashPackage            :: !(Maybe DashPackage)
-  , _uoeMssPackage             :: !(Maybe MssPackage)
-  , _uoeTimeDelaySeconds       :: !(Maybe Int)
-  , _uoeCmafPackage            :: !(Maybe CmafPackageCreateOrUpdateParameters)
-  , _uoeDescription            :: !(Maybe Text)
-  , _uoeId                     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateOriginEndpoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uoeWhitelist' - A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
---
--- * 'uoeHlsPackage' - Undocumented member.
---
--- * 'uoeManifestName' - A short string that will be appended to the end of the Endpoint URL.
---
--- * 'uoeStartoverWindowSeconds' - Maximum duration (in seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
---
--- * 'uoeDashPackage' - Undocumented member.
---
--- * 'uoeMssPackage' - Undocumented member.
---
--- * 'uoeTimeDelaySeconds' - Amount of delay (in seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
---
--- * 'uoeCmafPackage' - Undocumented member.
---
--- * 'uoeDescription' - A short text description of the OriginEndpoint.
---
--- * 'uoeId' - The ID of the OriginEndpoint to update.
-updateOriginEndpoint
-    :: Text -- ^ 'uoeId'
-    -> UpdateOriginEndpoint
-updateOriginEndpoint pId_ =
-  UpdateOriginEndpoint'
-    { _uoeWhitelist = Nothing
-    , _uoeHlsPackage = Nothing
-    , _uoeManifestName = Nothing
-    , _uoeStartoverWindowSeconds = Nothing
-    , _uoeDashPackage = Nothing
-    , _uoeMssPackage = Nothing
-    , _uoeTimeDelaySeconds = Nothing
-    , _uoeCmafPackage = Nothing
-    , _uoeDescription = Nothing
-    , _uoeId = pId_
-    }
-
-
--- | A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
-uoeWhitelist :: Lens' UpdateOriginEndpoint [Text]
-uoeWhitelist = lens _uoeWhitelist (\ s a -> s{_uoeWhitelist = a}) . _Default . _Coerce
-
--- | Undocumented member.
-uoeHlsPackage :: Lens' UpdateOriginEndpoint (Maybe HlsPackage)
-uoeHlsPackage = lens _uoeHlsPackage (\ s a -> s{_uoeHlsPackage = a})
-
--- | A short string that will be appended to the end of the Endpoint URL.
-uoeManifestName :: Lens' UpdateOriginEndpoint (Maybe Text)
-uoeManifestName = lens _uoeManifestName (\ s a -> s{_uoeManifestName = a})
-
--- | Maximum duration (in seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
-uoeStartoverWindowSeconds :: Lens' UpdateOriginEndpoint (Maybe Int)
-uoeStartoverWindowSeconds = lens _uoeStartoverWindowSeconds (\ s a -> s{_uoeStartoverWindowSeconds = a})
-
--- | Undocumented member.
-uoeDashPackage :: Lens' UpdateOriginEndpoint (Maybe DashPackage)
-uoeDashPackage = lens _uoeDashPackage (\ s a -> s{_uoeDashPackage = a})
-
--- | Undocumented member.
-uoeMssPackage :: Lens' UpdateOriginEndpoint (Maybe MssPackage)
-uoeMssPackage = lens _uoeMssPackage (\ s a -> s{_uoeMssPackage = a})
-
--- | Amount of delay (in seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
-uoeTimeDelaySeconds :: Lens' UpdateOriginEndpoint (Maybe Int)
-uoeTimeDelaySeconds = lens _uoeTimeDelaySeconds (\ s a -> s{_uoeTimeDelaySeconds = a})
-
--- | Undocumented member.
-uoeCmafPackage :: Lens' UpdateOriginEndpoint (Maybe CmafPackageCreateOrUpdateParameters)
-uoeCmafPackage = lens _uoeCmafPackage (\ s a -> s{_uoeCmafPackage = a})
-
--- | A short text description of the OriginEndpoint.
-uoeDescription :: Lens' UpdateOriginEndpoint (Maybe Text)
-uoeDescription = lens _uoeDescription (\ s a -> s{_uoeDescription = a})
-
--- | The ID of the OriginEndpoint to update.
-uoeId :: Lens' UpdateOriginEndpoint Text
-uoeId = lens _uoeId (\ s a -> s{_uoeId = a})
-
-instance AWSRequest UpdateOriginEndpoint where
-        type Rs UpdateOriginEndpoint =
-             UpdateOriginEndpointResponse
-        request = putJSON mediaPackage
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdateOriginEndpointResponse' <$>
-                   (x .?> "whitelist" .!@ mempty) <*>
-                     (x .?> "hlsPackage")
-                     <*> (x .?> "arn")
-                     <*> (x .?> "manifestName")
-                     <*> (x .?> "url")
-                     <*> (x .?> "channelId")
-                     <*> (x .?> "startoverWindowSeconds")
-                     <*> (x .?> "dashPackage")
-                     <*> (x .?> "mssPackage")
-                     <*> (x .?> "id")
-                     <*> (x .?> "timeDelaySeconds")
-                     <*> (x .?> "cmafPackage")
-                     <*> (x .?> "description")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable UpdateOriginEndpoint where
-
-instance NFData UpdateOriginEndpoint where
-
-instance ToHeaders UpdateOriginEndpoint where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateOriginEndpoint where
-        toJSON UpdateOriginEndpoint'{..}
-          = object
-              (catMaybes
-                 [("whitelist" .=) <$> _uoeWhitelist,
-                  ("hlsPackage" .=) <$> _uoeHlsPackage,
-                  ("manifestName" .=) <$> _uoeManifestName,
-                  ("startoverWindowSeconds" .=) <$>
-                    _uoeStartoverWindowSeconds,
-                  ("dashPackage" .=) <$> _uoeDashPackage,
-                  ("mssPackage" .=) <$> _uoeMssPackage,
-                  ("timeDelaySeconds" .=) <$> _uoeTimeDelaySeconds,
-                  ("cmafPackage" .=) <$> _uoeCmafPackage,
-                  ("description" .=) <$> _uoeDescription])
-
-instance ToPath UpdateOriginEndpoint where
-        toPath UpdateOriginEndpoint'{..}
-          = mconcat ["/origin_endpoints/", toBS _uoeId]
-
-instance ToQuery UpdateOriginEndpoint where
-        toQuery = const mempty
-
--- | /See:/ 'updateOriginEndpointResponse' smart constructor.
-data UpdateOriginEndpointResponse = UpdateOriginEndpointResponse'
-  { _uoersWhitelist              :: !(Maybe [Text])
-  , _uoersHlsPackage             :: !(Maybe HlsPackage)
-  , _uoersARN                    :: !(Maybe Text)
-  , _uoersManifestName           :: !(Maybe Text)
-  , _uoersURL                    :: !(Maybe Text)
-  , _uoersChannelId              :: !(Maybe Text)
-  , _uoersStartoverWindowSeconds :: !(Maybe Int)
-  , _uoersDashPackage            :: !(Maybe DashPackage)
-  , _uoersMssPackage             :: !(Maybe MssPackage)
-  , _uoersId                     :: !(Maybe Text)
-  , _uoersTimeDelaySeconds       :: !(Maybe Int)
-  , _uoersCmafPackage            :: !(Maybe CmafPackage)
-  , _uoersDescription            :: !(Maybe Text)
-  , _uoersResponseStatus         :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateOriginEndpointResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uoersWhitelist' - A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
---
--- * 'uoersHlsPackage' - Undocumented member.
---
--- * 'uoersARN' - The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
---
--- * 'uoersManifestName' - A short string appended to the end of the OriginEndpoint URL.
---
--- * 'uoersURL' - The URL of the packaged OriginEndpoint for consumption.
---
--- * 'uoersChannelId' - The ID of the Channel the OriginEndpoint is associated with.
---
--- * 'uoersStartoverWindowSeconds' - Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
---
--- * 'uoersDashPackage' - Undocumented member.
---
--- * 'uoersMssPackage' - Undocumented member.
---
--- * 'uoersId' - The ID of the OriginEndpoint.
---
--- * 'uoersTimeDelaySeconds' - Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
---
--- * 'uoersCmafPackage' - Undocumented member.
---
--- * 'uoersDescription' - A short text description of the OriginEndpoint.
---
--- * 'uoersResponseStatus' - -- | The response status code.
-updateOriginEndpointResponse
-    :: Int -- ^ 'uoersResponseStatus'
-    -> UpdateOriginEndpointResponse
-updateOriginEndpointResponse pResponseStatus_ =
-  UpdateOriginEndpointResponse'
-    { _uoersWhitelist = Nothing
-    , _uoersHlsPackage = Nothing
-    , _uoersARN = Nothing
-    , _uoersManifestName = Nothing
-    , _uoersURL = Nothing
-    , _uoersChannelId = Nothing
-    , _uoersStartoverWindowSeconds = Nothing
-    , _uoersDashPackage = Nothing
-    , _uoersMssPackage = Nothing
-    , _uoersId = Nothing
-    , _uoersTimeDelaySeconds = Nothing
-    , _uoersCmafPackage = Nothing
-    , _uoersDescription = Nothing
-    , _uoersResponseStatus = pResponseStatus_
-    }
-
-
--- | A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.
-uoersWhitelist :: Lens' UpdateOriginEndpointResponse [Text]
-uoersWhitelist = lens _uoersWhitelist (\ s a -> s{_uoersWhitelist = a}) . _Default . _Coerce
-
--- | Undocumented member.
-uoersHlsPackage :: Lens' UpdateOriginEndpointResponse (Maybe HlsPackage)
-uoersHlsPackage = lens _uoersHlsPackage (\ s a -> s{_uoersHlsPackage = a})
-
--- | The Amazon Resource Name (ARN) assigned to the OriginEndpoint.
-uoersARN :: Lens' UpdateOriginEndpointResponse (Maybe Text)
-uoersARN = lens _uoersARN (\ s a -> s{_uoersARN = a})
-
--- | A short string appended to the end of the OriginEndpoint URL.
-uoersManifestName :: Lens' UpdateOriginEndpointResponse (Maybe Text)
-uoersManifestName = lens _uoersManifestName (\ s a -> s{_uoersManifestName = a})
-
--- | The URL of the packaged OriginEndpoint for consumption.
-uoersURL :: Lens' UpdateOriginEndpointResponse (Maybe Text)
-uoersURL = lens _uoersURL (\ s a -> s{_uoersURL = a})
-
--- | The ID of the Channel the OriginEndpoint is associated with.
-uoersChannelId :: Lens' UpdateOriginEndpointResponse (Maybe Text)
-uoersChannelId = lens _uoersChannelId (\ s a -> s{_uoersChannelId = a})
-
--- | Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.
-uoersStartoverWindowSeconds :: Lens' UpdateOriginEndpointResponse (Maybe Int)
-uoersStartoverWindowSeconds = lens _uoersStartoverWindowSeconds (\ s a -> s{_uoersStartoverWindowSeconds = a})
-
--- | Undocumented member.
-uoersDashPackage :: Lens' UpdateOriginEndpointResponse (Maybe DashPackage)
-uoersDashPackage = lens _uoersDashPackage (\ s a -> s{_uoersDashPackage = a})
-
--- | Undocumented member.
-uoersMssPackage :: Lens' UpdateOriginEndpointResponse (Maybe MssPackage)
-uoersMssPackage = lens _uoersMssPackage (\ s a -> s{_uoersMssPackage = a})
-
--- | The ID of the OriginEndpoint.
-uoersId :: Lens' UpdateOriginEndpointResponse (Maybe Text)
-uoersId = lens _uoersId (\ s a -> s{_uoersId = a})
-
--- | Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.
-uoersTimeDelaySeconds :: Lens' UpdateOriginEndpointResponse (Maybe Int)
-uoersTimeDelaySeconds = lens _uoersTimeDelaySeconds (\ s a -> s{_uoersTimeDelaySeconds = a})
-
--- | Undocumented member.
-uoersCmafPackage :: Lens' UpdateOriginEndpointResponse (Maybe CmafPackage)
-uoersCmafPackage = lens _uoersCmafPackage (\ s a -> s{_uoersCmafPackage = a})
-
--- | A short text description of the OriginEndpoint.
-uoersDescription :: Lens' UpdateOriginEndpointResponse (Maybe Text)
-uoersDescription = lens _uoersDescription (\ s a -> s{_uoersDescription = a})
-
--- | -- | The response status code.
-uoersResponseStatus :: Lens' UpdateOriginEndpointResponse Int
-uoersResponseStatus = lens _uoersResponseStatus (\ s a -> s{_uoersResponseStatus = a})
-
-instance NFData UpdateOriginEndpointResponse where
diff --git a/gen/Network/AWS/MediaPackage/Waiters.hs b/gen/Network/AWS/MediaPackage/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/MediaPackage/Waiters.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.MediaPackage.Waiters
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.MediaPackage.Waiters where
-
-import Network.AWS.Lens
-import Network.AWS.MediaPackage.Types
-import Network.AWS.Prelude
-import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,20 +2,22 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2018 Brendan Hay
+-- Copyright   : (c) 2013-2023 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Maintainer  : Brendan Hay
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
---
 module Main (main) where
 
+import Test.Amazonka.MediaPackage
+import Test.Amazonka.MediaPackage.Internal
 import Test.Tasty
-import Test.AWS.MediaPackage
-import Test.AWS.MediaPackage.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "MediaPackage"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "MediaPackage"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Gen/MediaPackage.hs b/test/Test/AWS/Gen/MediaPackage.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/MediaPackage.hs
+++ /dev/null
@@ -1,237 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans        #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Test.AWS.Gen.MediaPackage
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.Gen.MediaPackage where
-
-import Data.Proxy
-import Network.AWS.MediaPackage
-import Test.AWS.Fixture
-import Test.AWS.MediaPackage.Internal
-import Test.AWS.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"
---         [ requestRotateChannelCredentials $
---             rotateChannelCredentials
---
---         , requestDescribeOriginEndpoint $
---             describeOriginEndpoint
---
---         , requestListChannels $
---             listChannels
---
---         , requestDeleteChannel $
---             deleteChannel
---
---         , requestUpdateChannel $
---             updateChannel
---
---         , requestCreateOriginEndpoint $
---             createOriginEndpoint
---
---         , requestListOriginEndpoints $
---             listOriginEndpoints
---
---         , requestCreateChannel $
---             createChannel
---
---         , requestDescribeChannel $
---             describeChannel
---
---         , requestDeleteOriginEndpoint $
---             deleteOriginEndpoint
---
---         , requestUpdateOriginEndpoint $
---             updateOriginEndpoint
---
---           ]
-
---     , testGroup "response"
---         [ responseRotateChannelCredentials $
---             rotateChannelCredentialsResponse
---
---         , responseDescribeOriginEndpoint $
---             describeOriginEndpointResponse
---
---         , responseListChannels $
---             listChannelsResponse
---
---         , responseDeleteChannel $
---             deleteChannelResponse
---
---         , responseUpdateChannel $
---             updateChannelResponse
---
---         , responseCreateOriginEndpoint $
---             createOriginEndpointResponse
---
---         , responseListOriginEndpoints $
---             listOriginEndpointsResponse
---
---         , responseCreateChannel $
---             createChannelResponse
---
---         , responseDescribeChannel $
---             describeChannelResponse
---
---         , responseDeleteOriginEndpoint $
---             deleteOriginEndpointResponse
---
---         , responseUpdateOriginEndpoint $
---             updateOriginEndpointResponse
---
---           ]
---     ]
-
--- Requests
-
-requestRotateChannelCredentials :: RotateChannelCredentials -> TestTree
-requestRotateChannelCredentials = req
-    "RotateChannelCredentials"
-    "fixture/RotateChannelCredentials.yaml"
-
-requestDescribeOriginEndpoint :: DescribeOriginEndpoint -> TestTree
-requestDescribeOriginEndpoint = req
-    "DescribeOriginEndpoint"
-    "fixture/DescribeOriginEndpoint.yaml"
-
-requestListChannels :: ListChannels -> TestTree
-requestListChannels = req
-    "ListChannels"
-    "fixture/ListChannels.yaml"
-
-requestDeleteChannel :: DeleteChannel -> TestTree
-requestDeleteChannel = req
-    "DeleteChannel"
-    "fixture/DeleteChannel.yaml"
-
-requestUpdateChannel :: UpdateChannel -> TestTree
-requestUpdateChannel = req
-    "UpdateChannel"
-    "fixture/UpdateChannel.yaml"
-
-requestCreateOriginEndpoint :: CreateOriginEndpoint -> TestTree
-requestCreateOriginEndpoint = req
-    "CreateOriginEndpoint"
-    "fixture/CreateOriginEndpoint.yaml"
-
-requestListOriginEndpoints :: ListOriginEndpoints -> TestTree
-requestListOriginEndpoints = req
-    "ListOriginEndpoints"
-    "fixture/ListOriginEndpoints.yaml"
-
-requestCreateChannel :: CreateChannel -> TestTree
-requestCreateChannel = req
-    "CreateChannel"
-    "fixture/CreateChannel.yaml"
-
-requestDescribeChannel :: DescribeChannel -> TestTree
-requestDescribeChannel = req
-    "DescribeChannel"
-    "fixture/DescribeChannel.yaml"
-
-requestDeleteOriginEndpoint :: DeleteOriginEndpoint -> TestTree
-requestDeleteOriginEndpoint = req
-    "DeleteOriginEndpoint"
-    "fixture/DeleteOriginEndpoint.yaml"
-
-requestUpdateOriginEndpoint :: UpdateOriginEndpoint -> TestTree
-requestUpdateOriginEndpoint = req
-    "UpdateOriginEndpoint"
-    "fixture/UpdateOriginEndpoint.yaml"
-
--- Responses
-
-responseRotateChannelCredentials :: RotateChannelCredentialsResponse -> TestTree
-responseRotateChannelCredentials = res
-    "RotateChannelCredentialsResponse"
-    "fixture/RotateChannelCredentialsResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy RotateChannelCredentials)
-
-responseDescribeOriginEndpoint :: DescribeOriginEndpointResponse -> TestTree
-responseDescribeOriginEndpoint = res
-    "DescribeOriginEndpointResponse"
-    "fixture/DescribeOriginEndpointResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy DescribeOriginEndpoint)
-
-responseListChannels :: ListChannelsResponse -> TestTree
-responseListChannels = res
-    "ListChannelsResponse"
-    "fixture/ListChannelsResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy ListChannels)
-
-responseDeleteChannel :: DeleteChannelResponse -> TestTree
-responseDeleteChannel = res
-    "DeleteChannelResponse"
-    "fixture/DeleteChannelResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy DeleteChannel)
-
-responseUpdateChannel :: UpdateChannelResponse -> TestTree
-responseUpdateChannel = res
-    "UpdateChannelResponse"
-    "fixture/UpdateChannelResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy UpdateChannel)
-
-responseCreateOriginEndpoint :: CreateOriginEndpointResponse -> TestTree
-responseCreateOriginEndpoint = res
-    "CreateOriginEndpointResponse"
-    "fixture/CreateOriginEndpointResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy CreateOriginEndpoint)
-
-responseListOriginEndpoints :: ListOriginEndpointsResponse -> TestTree
-responseListOriginEndpoints = res
-    "ListOriginEndpointsResponse"
-    "fixture/ListOriginEndpointsResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy ListOriginEndpoints)
-
-responseCreateChannel :: CreateChannelResponse -> TestTree
-responseCreateChannel = res
-    "CreateChannelResponse"
-    "fixture/CreateChannelResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy CreateChannel)
-
-responseDescribeChannel :: DescribeChannelResponse -> TestTree
-responseDescribeChannel = res
-    "DescribeChannelResponse"
-    "fixture/DescribeChannelResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy DescribeChannel)
-
-responseDeleteOriginEndpoint :: DeleteOriginEndpointResponse -> TestTree
-responseDeleteOriginEndpoint = res
-    "DeleteOriginEndpointResponse"
-    "fixture/DeleteOriginEndpointResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy DeleteOriginEndpoint)
-
-responseUpdateOriginEndpoint :: UpdateOriginEndpointResponse -> TestTree
-responseUpdateOriginEndpoint = res
-    "UpdateOriginEndpointResponse"
-    "fixture/UpdateOriginEndpointResponse.proto"
-    mediaPackage
-    (Proxy :: Proxy UpdateOriginEndpoint)
diff --git a/test/Test/AWS/MediaPackage.hs b/test/Test/AWS/MediaPackage.hs
deleted file mode 100644
--- a/test/Test/AWS/MediaPackage.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- |
--- Module      : Test.AWS.MediaPackage
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.MediaPackage
-    ( tests
-    , fixtures
-    ) where
-
-import Test.Tasty (TestTree)
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/MediaPackage/Internal.hs b/test/Test/AWS/MediaPackage/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/MediaPackage/Internal.hs
+++ /dev/null
@@ -1,9 +0,0 @@
--- |
--- Module      : Test.AWS.MediaPackage.Internal
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.MediaPackage.Internal where
diff --git a/test/Test/Amazonka/Gen/MediaPackage.hs b/test/Test/Amazonka/Gen/MediaPackage.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/MediaPackage.hs
@@ -0,0 +1,398 @@
+{-# 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.MediaPackage
+-- 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.MediaPackage where
+
+import Amazonka.MediaPackage
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.MediaPackage.Internal
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestConfigureLogs $
+--             newConfigureLogs
+--
+--         , requestCreateChannel $
+--             newCreateChannel
+--
+--         , requestCreateHarvestJob $
+--             newCreateHarvestJob
+--
+--         , requestCreateOriginEndpoint $
+--             newCreateOriginEndpoint
+--
+--         , requestDeleteChannel $
+--             newDeleteChannel
+--
+--         , requestDeleteOriginEndpoint $
+--             newDeleteOriginEndpoint
+--
+--         , requestDescribeChannel $
+--             newDescribeChannel
+--
+--         , requestDescribeHarvestJob $
+--             newDescribeHarvestJob
+--
+--         , requestDescribeOriginEndpoint $
+--             newDescribeOriginEndpoint
+--
+--         , requestListChannels $
+--             newListChannels
+--
+--         , requestListHarvestJobs $
+--             newListHarvestJobs
+--
+--         , requestListOriginEndpoints $
+--             newListOriginEndpoints
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestRotateIngestEndpointCredentials $
+--             newRotateIngestEndpointCredentials
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--         , requestUpdateChannel $
+--             newUpdateChannel
+--
+--         , requestUpdateOriginEndpoint $
+--             newUpdateOriginEndpoint
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseConfigureLogs $
+--             newConfigureLogsResponse
+--
+--         , responseCreateChannel $
+--             newCreateChannelResponse
+--
+--         , responseCreateHarvestJob $
+--             newCreateHarvestJobResponse
+--
+--         , responseCreateOriginEndpoint $
+--             newCreateOriginEndpointResponse
+--
+--         , responseDeleteChannel $
+--             newDeleteChannelResponse
+--
+--         , responseDeleteOriginEndpoint $
+--             newDeleteOriginEndpointResponse
+--
+--         , responseDescribeChannel $
+--             newDescribeChannelResponse
+--
+--         , responseDescribeHarvestJob $
+--             newDescribeHarvestJobResponse
+--
+--         , responseDescribeOriginEndpoint $
+--             newDescribeOriginEndpointResponse
+--
+--         , responseListChannels $
+--             newListChannelsResponse
+--
+--         , responseListHarvestJobs $
+--             newListHarvestJobsResponse
+--
+--         , responseListOriginEndpoints $
+--             newListOriginEndpointsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseRotateIngestEndpointCredentials $
+--             newRotateIngestEndpointCredentialsResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--         , responseUpdateChannel $
+--             newUpdateChannelResponse
+--
+--         , responseUpdateOriginEndpoint $
+--             newUpdateOriginEndpointResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestConfigureLogs :: ConfigureLogs -> TestTree
+requestConfigureLogs =
+  req
+    "ConfigureLogs"
+    "fixture/ConfigureLogs.yaml"
+
+requestCreateChannel :: CreateChannel -> TestTree
+requestCreateChannel =
+  req
+    "CreateChannel"
+    "fixture/CreateChannel.yaml"
+
+requestCreateHarvestJob :: CreateHarvestJob -> TestTree
+requestCreateHarvestJob =
+  req
+    "CreateHarvestJob"
+    "fixture/CreateHarvestJob.yaml"
+
+requestCreateOriginEndpoint :: CreateOriginEndpoint -> TestTree
+requestCreateOriginEndpoint =
+  req
+    "CreateOriginEndpoint"
+    "fixture/CreateOriginEndpoint.yaml"
+
+requestDeleteChannel :: DeleteChannel -> TestTree
+requestDeleteChannel =
+  req
+    "DeleteChannel"
+    "fixture/DeleteChannel.yaml"
+
+requestDeleteOriginEndpoint :: DeleteOriginEndpoint -> TestTree
+requestDeleteOriginEndpoint =
+  req
+    "DeleteOriginEndpoint"
+    "fixture/DeleteOriginEndpoint.yaml"
+
+requestDescribeChannel :: DescribeChannel -> TestTree
+requestDescribeChannel =
+  req
+    "DescribeChannel"
+    "fixture/DescribeChannel.yaml"
+
+requestDescribeHarvestJob :: DescribeHarvestJob -> TestTree
+requestDescribeHarvestJob =
+  req
+    "DescribeHarvestJob"
+    "fixture/DescribeHarvestJob.yaml"
+
+requestDescribeOriginEndpoint :: DescribeOriginEndpoint -> TestTree
+requestDescribeOriginEndpoint =
+  req
+    "DescribeOriginEndpoint"
+    "fixture/DescribeOriginEndpoint.yaml"
+
+requestListChannels :: ListChannels -> TestTree
+requestListChannels =
+  req
+    "ListChannels"
+    "fixture/ListChannels.yaml"
+
+requestListHarvestJobs :: ListHarvestJobs -> TestTree
+requestListHarvestJobs =
+  req
+    "ListHarvestJobs"
+    "fixture/ListHarvestJobs.yaml"
+
+requestListOriginEndpoints :: ListOriginEndpoints -> TestTree
+requestListOriginEndpoints =
+  req
+    "ListOriginEndpoints"
+    "fixture/ListOriginEndpoints.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestRotateIngestEndpointCredentials :: RotateIngestEndpointCredentials -> TestTree
+requestRotateIngestEndpointCredentials =
+  req
+    "RotateIngestEndpointCredentials"
+    "fixture/RotateIngestEndpointCredentials.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+requestUpdateChannel :: UpdateChannel -> TestTree
+requestUpdateChannel =
+  req
+    "UpdateChannel"
+    "fixture/UpdateChannel.yaml"
+
+requestUpdateOriginEndpoint :: UpdateOriginEndpoint -> TestTree
+requestUpdateOriginEndpoint =
+  req
+    "UpdateOriginEndpoint"
+    "fixture/UpdateOriginEndpoint.yaml"
+
+-- Responses
+
+responseConfigureLogs :: ConfigureLogsResponse -> TestTree
+responseConfigureLogs =
+  res
+    "ConfigureLogsResponse"
+    "fixture/ConfigureLogsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ConfigureLogs)
+
+responseCreateChannel :: CreateChannelResponse -> TestTree
+responseCreateChannel =
+  res
+    "CreateChannelResponse"
+    "fixture/CreateChannelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateChannel)
+
+responseCreateHarvestJob :: CreateHarvestJobResponse -> TestTree
+responseCreateHarvestJob =
+  res
+    "CreateHarvestJobResponse"
+    "fixture/CreateHarvestJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateHarvestJob)
+
+responseCreateOriginEndpoint :: CreateOriginEndpointResponse -> TestTree
+responseCreateOriginEndpoint =
+  res
+    "CreateOriginEndpointResponse"
+    "fixture/CreateOriginEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateOriginEndpoint)
+
+responseDeleteChannel :: DeleteChannelResponse -> TestTree
+responseDeleteChannel =
+  res
+    "DeleteChannelResponse"
+    "fixture/DeleteChannelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteChannel)
+
+responseDeleteOriginEndpoint :: DeleteOriginEndpointResponse -> TestTree
+responseDeleteOriginEndpoint =
+  res
+    "DeleteOriginEndpointResponse"
+    "fixture/DeleteOriginEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteOriginEndpoint)
+
+responseDescribeChannel :: DescribeChannelResponse -> TestTree
+responseDescribeChannel =
+  res
+    "DescribeChannelResponse"
+    "fixture/DescribeChannelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeChannel)
+
+responseDescribeHarvestJob :: DescribeHarvestJobResponse -> TestTree
+responseDescribeHarvestJob =
+  res
+    "DescribeHarvestJobResponse"
+    "fixture/DescribeHarvestJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeHarvestJob)
+
+responseDescribeOriginEndpoint :: DescribeOriginEndpointResponse -> TestTree
+responseDescribeOriginEndpoint =
+  res
+    "DescribeOriginEndpointResponse"
+    "fixture/DescribeOriginEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeOriginEndpoint)
+
+responseListChannels :: ListChannelsResponse -> TestTree
+responseListChannels =
+  res
+    "ListChannelsResponse"
+    "fixture/ListChannelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListChannels)
+
+responseListHarvestJobs :: ListHarvestJobsResponse -> TestTree
+responseListHarvestJobs =
+  res
+    "ListHarvestJobsResponse"
+    "fixture/ListHarvestJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListHarvestJobs)
+
+responseListOriginEndpoints :: ListOriginEndpointsResponse -> TestTree
+responseListOriginEndpoints =
+  res
+    "ListOriginEndpointsResponse"
+    "fixture/ListOriginEndpointsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListOriginEndpoints)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseRotateIngestEndpointCredentials :: RotateIngestEndpointCredentialsResponse -> TestTree
+responseRotateIngestEndpointCredentials =
+  res
+    "RotateIngestEndpointCredentialsResponse"
+    "fixture/RotateIngestEndpointCredentialsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RotateIngestEndpointCredentials)
+
+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)
+
+responseUpdateChannel :: UpdateChannelResponse -> TestTree
+responseUpdateChannel =
+  res
+    "UpdateChannelResponse"
+    "fixture/UpdateChannelResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateChannel)
+
+responseUpdateOriginEndpoint :: UpdateOriginEndpointResponse -> TestTree
+responseUpdateOriginEndpoint =
+  res
+    "UpdateOriginEndpointResponse"
+    "fixture/UpdateOriginEndpointResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateOriginEndpoint)
diff --git a/test/Test/Amazonka/MediaPackage.hs b/test/Test/Amazonka/MediaPackage.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MediaPackage.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.MediaPackage
+-- 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.MediaPackage
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/MediaPackage/Internal.hs b/test/Test/Amazonka/MediaPackage/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/MediaPackage/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.MediaPackage.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.MediaPackage.Internal where
