{-# 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.MediaTailor.Types.PlaybackConfiguration
-- Copyright   : (c) 2013-2021 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 Amazonka.MediaTailor.Types.PlaybackConfiguration where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.MediaTailor.Types.AvailSuppression
import Amazonka.MediaTailor.Types.Bumper
import Amazonka.MediaTailor.Types.CdnConfiguration
import Amazonka.MediaTailor.Types.DashConfiguration
import Amazonka.MediaTailor.Types.HlsConfiguration
import Amazonka.MediaTailor.Types.LivePreRollConfiguration
import Amazonka.MediaTailor.Types.LogConfiguration
import Amazonka.MediaTailor.Types.ManifestProcessingRules
import qualified Amazonka.Prelude as Prelude

-- | Creates a playback configuration. For information about MediaTailor
-- configurations, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/configurations.html Working with configurations in AWS Elemental MediaTailor>.
--
-- /See:/ 'newPlaybackConfiguration' smart constructor.
data PlaybackConfiguration = PlaybackConfiguration'
  { -- | The URL that the player accesses to get a manifest from AWS Elemental
    -- MediaTailor.
    PlaybackConfiguration -> Maybe Text
playbackEndpointPrefix :: Prelude.Maybe Prelude.Text,
    -- | The configuration for HLS content.
    PlaybackConfiguration -> Maybe HlsConfiguration
hlsConfiguration :: Prelude.Maybe HlsConfiguration,
    -- | Defines the maximum duration of underfilled ad time (in seconds) allowed
    -- in an ad break. If the duration of underfilled ad time exceeds the
    -- personalization threshold, then the personalization of the ad break is
    -- abandoned and the underlying content is shown. This feature applies to
    -- /ad replacement/ in live and VOD streams, rather than ad insertion,
    -- because it relies on an underlying content stream. For more information
    -- about ad break behavior, including ad replacement and insertion, see
    -- <https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html Ad Behavior in AWS Elemental MediaTailor>.
    PlaybackConfiguration -> Maybe Natural
personalizationThresholdSeconds :: Prelude.Maybe Prelude.Natural,
    -- | The Amazon Resource Name (ARN) for the playback configuration.
    PlaybackConfiguration -> Maybe Text
playbackConfigurationArn :: Prelude.Maybe Prelude.Text,
    -- | The configuration for avail suppression, also known as ad suppression.
    -- For more information about ad suppression, see
    -- <https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html Ad Suppression>.
    PlaybackConfiguration -> Maybe AvailSuppression
availSuppression :: Prelude.Maybe AvailSuppression,
    -- | The configuration for bumpers. Bumpers are short audio or video clips
    -- that play at the start or before the end of an ad break. To learn more
    -- about bumpers, see
    -- <https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html Bumpers>.
    PlaybackConfiguration -> Maybe Bumper
bumper :: Prelude.Maybe Bumper,
    -- | The URL for the ad decision server (ADS). This includes the
    -- specification of static parameters and placeholders for dynamic
    -- parameters. AWS Elemental MediaTailor substitutes player-specific and
    -- session-specific parameters as needed when calling the ADS. Alternately,
    -- for testing you can provide a static VAST URL. The maximum length is
    -- 25,000 characters.
    PlaybackConfiguration -> Maybe Text
adDecisionServerUrl :: Prelude.Maybe Prelude.Text,
    -- | The URL prefix for the parent manifest for the stream, minus the asset
    -- ID. The maximum length is 512 characters.
    PlaybackConfiguration -> Maybe Text
videoContentSourceUrl :: Prelude.Maybe Prelude.Text,
    -- | The configuration for a DASH source.
    PlaybackConfiguration -> Maybe DashConfiguration
dashConfiguration :: Prelude.Maybe DashConfiguration,
    -- | The configuration for manifest processing rules. Manifest processing
    -- rules enable customization of the personalized manifests created by
    -- MediaTailor.
    PlaybackConfiguration -> Maybe ManifestProcessingRules
manifestProcessingRules :: Prelude.Maybe ManifestProcessingRules,
    -- | The Amazon CloudWatch log settings for a playback configuration.
    PlaybackConfiguration -> Maybe LogConfiguration
logConfiguration :: Prelude.Maybe LogConfiguration,
    -- | The configuration for pre-roll ad insertion.
    PlaybackConfiguration -> Maybe LivePreRollConfiguration
livePreRollConfiguration :: Prelude.Maybe LivePreRollConfiguration,
    -- | The identifier for the playback configuration.
    PlaybackConfiguration -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The URL that the player uses to initialize a session that uses
    -- client-side reporting.
    PlaybackConfiguration -> Maybe Text
sessionInitializationEndpointPrefix :: Prelude.Maybe Prelude.Text,
    -- | The player parameters and aliases used as dynamic variables during
    -- session initialization. For more information, see
    -- <https://docs.aws.amazon.com/mediatailor/latest/ug/variables-domain.html Domain Variables>.
    PlaybackConfiguration -> Maybe (HashMap Text (HashMap Text Text))
configurationAliases :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Prelude.HashMap Prelude.Text Prelude.Text)),
    -- | The name that is used to associate this playback configuration with a
    -- custom transcode profile. This overrides the dynamic transcoding
    -- defaults of MediaTailor. Use this only if you have already set up custom
    -- profiles with the help of AWS Support.
    PlaybackConfiguration -> Maybe Text
transcodeProfileName :: Prelude.Maybe Prelude.Text,
    -- | The tags to assign to the playback configuration.
    PlaybackConfiguration -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The URL for a video asset to transcode and use to fill in time that\'s
    -- not used by ads. AWS Elemental MediaTailor shows the slate to fill in
    -- gaps in media content. Configuring the slate is optional for non-VPAID
    -- playback configurations. For VPAID, the slate is required because
    -- MediaTailor provides it in the slots designated for dynamic ad content.
    -- The slate must be a high-quality asset that contains both audio and
    -- video.
    PlaybackConfiguration -> Maybe Text
slateAdUrl :: Prelude.Maybe Prelude.Text,
    -- | The configuration for using a content delivery network (CDN), like
    -- Amazon CloudFront, for content and ad segment management.
    PlaybackConfiguration -> Maybe CdnConfiguration
cdnConfiguration :: Prelude.Maybe CdnConfiguration
  }
  deriving (PlaybackConfiguration -> PlaybackConfiguration -> Bool
(PlaybackConfiguration -> PlaybackConfiguration -> Bool)
-> (PlaybackConfiguration -> PlaybackConfiguration -> Bool)
-> Eq PlaybackConfiguration
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PlaybackConfiguration -> PlaybackConfiguration -> Bool
$c/= :: PlaybackConfiguration -> PlaybackConfiguration -> Bool
== :: PlaybackConfiguration -> PlaybackConfiguration -> Bool
$c== :: PlaybackConfiguration -> PlaybackConfiguration -> Bool
Prelude.Eq, ReadPrec [PlaybackConfiguration]
ReadPrec PlaybackConfiguration
Int -> ReadS PlaybackConfiguration
ReadS [PlaybackConfiguration]
(Int -> ReadS PlaybackConfiguration)
-> ReadS [PlaybackConfiguration]
-> ReadPrec PlaybackConfiguration
-> ReadPrec [PlaybackConfiguration]
-> Read PlaybackConfiguration
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PlaybackConfiguration]
$creadListPrec :: ReadPrec [PlaybackConfiguration]
readPrec :: ReadPrec PlaybackConfiguration
$creadPrec :: ReadPrec PlaybackConfiguration
readList :: ReadS [PlaybackConfiguration]
$creadList :: ReadS [PlaybackConfiguration]
readsPrec :: Int -> ReadS PlaybackConfiguration
$creadsPrec :: Int -> ReadS PlaybackConfiguration
Prelude.Read, Int -> PlaybackConfiguration -> ShowS
[PlaybackConfiguration] -> ShowS
PlaybackConfiguration -> String
(Int -> PlaybackConfiguration -> ShowS)
-> (PlaybackConfiguration -> String)
-> ([PlaybackConfiguration] -> ShowS)
-> Show PlaybackConfiguration
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PlaybackConfiguration] -> ShowS
$cshowList :: [PlaybackConfiguration] -> ShowS
show :: PlaybackConfiguration -> String
$cshow :: PlaybackConfiguration -> String
showsPrec :: Int -> PlaybackConfiguration -> ShowS
$cshowsPrec :: Int -> PlaybackConfiguration -> ShowS
Prelude.Show, (forall x. PlaybackConfiguration -> Rep PlaybackConfiguration x)
-> (forall x. Rep PlaybackConfiguration x -> PlaybackConfiguration)
-> Generic PlaybackConfiguration
forall x. Rep PlaybackConfiguration x -> PlaybackConfiguration
forall x. PlaybackConfiguration -> Rep PlaybackConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PlaybackConfiguration x -> PlaybackConfiguration
$cfrom :: forall x. PlaybackConfiguration -> Rep PlaybackConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'PlaybackConfiguration' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'playbackEndpointPrefix', 'playbackConfiguration_playbackEndpointPrefix' - The URL that the player accesses to get a manifest from AWS Elemental
-- MediaTailor.
--
-- 'hlsConfiguration', 'playbackConfiguration_hlsConfiguration' - The configuration for HLS content.
--
-- 'personalizationThresholdSeconds', 'playbackConfiguration_personalizationThresholdSeconds' - Defines the maximum duration of underfilled ad time (in seconds) allowed
-- in an ad break. If the duration of underfilled ad time exceeds the
-- personalization threshold, then the personalization of the ad break is
-- abandoned and the underlying content is shown. This feature applies to
-- /ad replacement/ in live and VOD streams, rather than ad insertion,
-- because it relies on an underlying content stream. For more information
-- about ad break behavior, including ad replacement and insertion, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html Ad Behavior in AWS Elemental MediaTailor>.
--
-- 'playbackConfigurationArn', 'playbackConfiguration_playbackConfigurationArn' - The Amazon Resource Name (ARN) for the playback configuration.
--
-- 'availSuppression', 'playbackConfiguration_availSuppression' - The configuration for avail suppression, also known as ad suppression.
-- For more information about ad suppression, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html Ad Suppression>.
--
-- 'bumper', 'playbackConfiguration_bumper' - The configuration for bumpers. Bumpers are short audio or video clips
-- that play at the start or before the end of an ad break. To learn more
-- about bumpers, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html Bumpers>.
--
-- 'adDecisionServerUrl', 'playbackConfiguration_adDecisionServerUrl' - The URL for the ad decision server (ADS). This includes the
-- specification of static parameters and placeholders for dynamic
-- parameters. AWS Elemental MediaTailor substitutes player-specific and
-- session-specific parameters as needed when calling the ADS. Alternately,
-- for testing you can provide a static VAST URL. The maximum length is
-- 25,000 characters.
--
-- 'videoContentSourceUrl', 'playbackConfiguration_videoContentSourceUrl' - The URL prefix for the parent manifest for the stream, minus the asset
-- ID. The maximum length is 512 characters.
--
-- 'dashConfiguration', 'playbackConfiguration_dashConfiguration' - The configuration for a DASH source.
--
-- 'manifestProcessingRules', 'playbackConfiguration_manifestProcessingRules' - The configuration for manifest processing rules. Manifest processing
-- rules enable customization of the personalized manifests created by
-- MediaTailor.
--
-- 'logConfiguration', 'playbackConfiguration_logConfiguration' - The Amazon CloudWatch log settings for a playback configuration.
--
-- 'livePreRollConfiguration', 'playbackConfiguration_livePreRollConfiguration' - The configuration for pre-roll ad insertion.
--
-- 'name', 'playbackConfiguration_name' - The identifier for the playback configuration.
--
-- 'sessionInitializationEndpointPrefix', 'playbackConfiguration_sessionInitializationEndpointPrefix' - The URL that the player uses to initialize a session that uses
-- client-side reporting.
--
-- 'configurationAliases', 'playbackConfiguration_configurationAliases' - The player parameters and aliases used as dynamic variables during
-- session initialization. For more information, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/variables-domain.html Domain Variables>.
--
-- 'transcodeProfileName', 'playbackConfiguration_transcodeProfileName' - The name that is used to associate this playback configuration with a
-- custom transcode profile. This overrides the dynamic transcoding
-- defaults of MediaTailor. Use this only if you have already set up custom
-- profiles with the help of AWS Support.
--
-- 'tags', 'playbackConfiguration_tags' - The tags to assign to the playback configuration.
--
-- 'slateAdUrl', 'playbackConfiguration_slateAdUrl' - The URL for a video asset to transcode and use to fill in time that\'s
-- not used by ads. AWS Elemental MediaTailor shows the slate to fill in
-- gaps in media content. Configuring the slate is optional for non-VPAID
-- playback configurations. For VPAID, the slate is required because
-- MediaTailor provides it in the slots designated for dynamic ad content.
-- The slate must be a high-quality asset that contains both audio and
-- video.
--
-- 'cdnConfiguration', 'playbackConfiguration_cdnConfiguration' - The configuration for using a content delivery network (CDN), like
-- Amazon CloudFront, for content and ad segment management.
newPlaybackConfiguration ::
  PlaybackConfiguration
newPlaybackConfiguration :: PlaybackConfiguration
newPlaybackConfiguration =
  PlaybackConfiguration' :: Maybe Text
-> Maybe HlsConfiguration
-> Maybe Natural
-> Maybe Text
-> Maybe AvailSuppression
-> Maybe Bumper
-> Maybe Text
-> Maybe Text
-> Maybe DashConfiguration
-> Maybe ManifestProcessingRules
-> Maybe LogConfiguration
-> Maybe LivePreRollConfiguration
-> Maybe Text
-> Maybe Text
-> Maybe (HashMap Text (HashMap Text Text))
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe CdnConfiguration
-> PlaybackConfiguration
PlaybackConfiguration'
    { $sel:playbackEndpointPrefix:PlaybackConfiguration' :: Maybe Text
playbackEndpointPrefix =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:hlsConfiguration:PlaybackConfiguration' :: Maybe HlsConfiguration
hlsConfiguration = Maybe HlsConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:personalizationThresholdSeconds:PlaybackConfiguration' :: Maybe Natural
personalizationThresholdSeconds = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:playbackConfigurationArn:PlaybackConfiguration' :: Maybe Text
playbackConfigurationArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:availSuppression:PlaybackConfiguration' :: Maybe AvailSuppression
availSuppression = Maybe AvailSuppression
forall a. Maybe a
Prelude.Nothing,
      $sel:bumper:PlaybackConfiguration' :: Maybe Bumper
bumper = Maybe Bumper
forall a. Maybe a
Prelude.Nothing,
      $sel:adDecisionServerUrl:PlaybackConfiguration' :: Maybe Text
adDecisionServerUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:videoContentSourceUrl:PlaybackConfiguration' :: Maybe Text
videoContentSourceUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dashConfiguration:PlaybackConfiguration' :: Maybe DashConfiguration
dashConfiguration = Maybe DashConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:manifestProcessingRules:PlaybackConfiguration' :: Maybe ManifestProcessingRules
manifestProcessingRules = Maybe ManifestProcessingRules
forall a. Maybe a
Prelude.Nothing,
      $sel:logConfiguration:PlaybackConfiguration' :: Maybe LogConfiguration
logConfiguration = Maybe LogConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:livePreRollConfiguration:PlaybackConfiguration' :: Maybe LivePreRollConfiguration
livePreRollConfiguration = Maybe LivePreRollConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:name:PlaybackConfiguration' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sessionInitializationEndpointPrefix:PlaybackConfiguration' :: Maybe Text
sessionInitializationEndpointPrefix =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:configurationAliases:PlaybackConfiguration' :: Maybe (HashMap Text (HashMap Text Text))
configurationAliases = Maybe (HashMap Text (HashMap Text Text))
forall a. Maybe a
Prelude.Nothing,
      $sel:transcodeProfileName:PlaybackConfiguration' :: Maybe Text
transcodeProfileName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:PlaybackConfiguration' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:slateAdUrl:PlaybackConfiguration' :: Maybe Text
slateAdUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:cdnConfiguration:PlaybackConfiguration' :: Maybe CdnConfiguration
cdnConfiguration = Maybe CdnConfiguration
forall a. Maybe a
Prelude.Nothing
    }

-- | The URL that the player accesses to get a manifest from AWS Elemental
-- MediaTailor.
playbackConfiguration_playbackEndpointPrefix :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Text)
playbackConfiguration_playbackEndpointPrefix :: (Maybe Text -> f (Maybe Text))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_playbackEndpointPrefix = (PlaybackConfiguration -> Maybe Text)
-> (PlaybackConfiguration -> Maybe Text -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Text
playbackEndpointPrefix :: Maybe Text
$sel:playbackEndpointPrefix:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Text
playbackEndpointPrefix} -> Maybe Text
playbackEndpointPrefix) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Text
a -> PlaybackConfiguration
s {$sel:playbackEndpointPrefix:PlaybackConfiguration' :: Maybe Text
playbackEndpointPrefix = Maybe Text
a} :: PlaybackConfiguration)

-- | The configuration for HLS content.
playbackConfiguration_hlsConfiguration :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe HlsConfiguration)
playbackConfiguration_hlsConfiguration :: (Maybe HlsConfiguration -> f (Maybe HlsConfiguration))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_hlsConfiguration = (PlaybackConfiguration -> Maybe HlsConfiguration)
-> (PlaybackConfiguration
    -> Maybe HlsConfiguration -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe HlsConfiguration)
     (Maybe HlsConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe HlsConfiguration
hlsConfiguration :: Maybe HlsConfiguration
$sel:hlsConfiguration:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe HlsConfiguration
hlsConfiguration} -> Maybe HlsConfiguration
hlsConfiguration) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe HlsConfiguration
a -> PlaybackConfiguration
s {$sel:hlsConfiguration:PlaybackConfiguration' :: Maybe HlsConfiguration
hlsConfiguration = Maybe HlsConfiguration
a} :: PlaybackConfiguration)

-- | Defines the maximum duration of underfilled ad time (in seconds) allowed
-- in an ad break. If the duration of underfilled ad time exceeds the
-- personalization threshold, then the personalization of the ad break is
-- abandoned and the underlying content is shown. This feature applies to
-- /ad replacement/ in live and VOD streams, rather than ad insertion,
-- because it relies on an underlying content stream. For more information
-- about ad break behavior, including ad replacement and insertion, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html Ad Behavior in AWS Elemental MediaTailor>.
playbackConfiguration_personalizationThresholdSeconds :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Natural)
playbackConfiguration_personalizationThresholdSeconds :: (Maybe Natural -> f (Maybe Natural))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_personalizationThresholdSeconds = (PlaybackConfiguration -> Maybe Natural)
-> (PlaybackConfiguration
    -> Maybe Natural -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Natural)
     (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Natural
personalizationThresholdSeconds :: Maybe Natural
$sel:personalizationThresholdSeconds:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Natural
personalizationThresholdSeconds} -> Maybe Natural
personalizationThresholdSeconds) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Natural
a -> PlaybackConfiguration
s {$sel:personalizationThresholdSeconds:PlaybackConfiguration' :: Maybe Natural
personalizationThresholdSeconds = Maybe Natural
a} :: PlaybackConfiguration)

-- | The Amazon Resource Name (ARN) for the playback configuration.
playbackConfiguration_playbackConfigurationArn :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Text)
playbackConfiguration_playbackConfigurationArn :: (Maybe Text -> f (Maybe Text))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_playbackConfigurationArn = (PlaybackConfiguration -> Maybe Text)
-> (PlaybackConfiguration -> Maybe Text -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Text
playbackConfigurationArn :: Maybe Text
$sel:playbackConfigurationArn:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Text
playbackConfigurationArn} -> Maybe Text
playbackConfigurationArn) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Text
a -> PlaybackConfiguration
s {$sel:playbackConfigurationArn:PlaybackConfiguration' :: Maybe Text
playbackConfigurationArn = Maybe Text
a} :: PlaybackConfiguration)

-- | The configuration for avail suppression, also known as ad suppression.
-- For more information about ad suppression, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html Ad Suppression>.
playbackConfiguration_availSuppression :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe AvailSuppression)
playbackConfiguration_availSuppression :: (Maybe AvailSuppression -> f (Maybe AvailSuppression))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_availSuppression = (PlaybackConfiguration -> Maybe AvailSuppression)
-> (PlaybackConfiguration
    -> Maybe AvailSuppression -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe AvailSuppression)
     (Maybe AvailSuppression)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe AvailSuppression
availSuppression :: Maybe AvailSuppression
$sel:availSuppression:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe AvailSuppression
availSuppression} -> Maybe AvailSuppression
availSuppression) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe AvailSuppression
a -> PlaybackConfiguration
s {$sel:availSuppression:PlaybackConfiguration' :: Maybe AvailSuppression
availSuppression = Maybe AvailSuppression
a} :: PlaybackConfiguration)

-- | The configuration for bumpers. Bumpers are short audio or video clips
-- that play at the start or before the end of an ad break. To learn more
-- about bumpers, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html Bumpers>.
playbackConfiguration_bumper :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Bumper)
playbackConfiguration_bumper :: (Maybe Bumper -> f (Maybe Bumper))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_bumper = (PlaybackConfiguration -> Maybe Bumper)
-> (PlaybackConfiguration -> Maybe Bumper -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Bumper)
     (Maybe Bumper)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Bumper
bumper :: Maybe Bumper
$sel:bumper:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Bumper
bumper} -> Maybe Bumper
bumper) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Bumper
a -> PlaybackConfiguration
s {$sel:bumper:PlaybackConfiguration' :: Maybe Bumper
bumper = Maybe Bumper
a} :: PlaybackConfiguration)

-- | The URL for the ad decision server (ADS). This includes the
-- specification of static parameters and placeholders for dynamic
-- parameters. AWS Elemental MediaTailor substitutes player-specific and
-- session-specific parameters as needed when calling the ADS. Alternately,
-- for testing you can provide a static VAST URL. The maximum length is
-- 25,000 characters.
playbackConfiguration_adDecisionServerUrl :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Text)
playbackConfiguration_adDecisionServerUrl :: (Maybe Text -> f (Maybe Text))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_adDecisionServerUrl = (PlaybackConfiguration -> Maybe Text)
-> (PlaybackConfiguration -> Maybe Text -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Text
adDecisionServerUrl :: Maybe Text
$sel:adDecisionServerUrl:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Text
adDecisionServerUrl} -> Maybe Text
adDecisionServerUrl) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Text
a -> PlaybackConfiguration
s {$sel:adDecisionServerUrl:PlaybackConfiguration' :: Maybe Text
adDecisionServerUrl = Maybe Text
a} :: PlaybackConfiguration)

-- | The URL prefix for the parent manifest for the stream, minus the asset
-- ID. The maximum length is 512 characters.
playbackConfiguration_videoContentSourceUrl :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Text)
playbackConfiguration_videoContentSourceUrl :: (Maybe Text -> f (Maybe Text))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_videoContentSourceUrl = (PlaybackConfiguration -> Maybe Text)
-> (PlaybackConfiguration -> Maybe Text -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Text
videoContentSourceUrl :: Maybe Text
$sel:videoContentSourceUrl:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Text
videoContentSourceUrl} -> Maybe Text
videoContentSourceUrl) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Text
a -> PlaybackConfiguration
s {$sel:videoContentSourceUrl:PlaybackConfiguration' :: Maybe Text
videoContentSourceUrl = Maybe Text
a} :: PlaybackConfiguration)

-- | The configuration for a DASH source.
playbackConfiguration_dashConfiguration :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe DashConfiguration)
playbackConfiguration_dashConfiguration :: (Maybe DashConfiguration -> f (Maybe DashConfiguration))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_dashConfiguration = (PlaybackConfiguration -> Maybe DashConfiguration)
-> (PlaybackConfiguration
    -> Maybe DashConfiguration -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe DashConfiguration)
     (Maybe DashConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe DashConfiguration
dashConfiguration :: Maybe DashConfiguration
$sel:dashConfiguration:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe DashConfiguration
dashConfiguration} -> Maybe DashConfiguration
dashConfiguration) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe DashConfiguration
a -> PlaybackConfiguration
s {$sel:dashConfiguration:PlaybackConfiguration' :: Maybe DashConfiguration
dashConfiguration = Maybe DashConfiguration
a} :: PlaybackConfiguration)

-- | The configuration for manifest processing rules. Manifest processing
-- rules enable customization of the personalized manifests created by
-- MediaTailor.
playbackConfiguration_manifestProcessingRules :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe ManifestProcessingRules)
playbackConfiguration_manifestProcessingRules :: (Maybe ManifestProcessingRules
 -> f (Maybe ManifestProcessingRules))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_manifestProcessingRules = (PlaybackConfiguration -> Maybe ManifestProcessingRules)
-> (PlaybackConfiguration
    -> Maybe ManifestProcessingRules -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe ManifestProcessingRules)
     (Maybe ManifestProcessingRules)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe ManifestProcessingRules
manifestProcessingRules :: Maybe ManifestProcessingRules
$sel:manifestProcessingRules:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe ManifestProcessingRules
manifestProcessingRules} -> Maybe ManifestProcessingRules
manifestProcessingRules) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe ManifestProcessingRules
a -> PlaybackConfiguration
s {$sel:manifestProcessingRules:PlaybackConfiguration' :: Maybe ManifestProcessingRules
manifestProcessingRules = Maybe ManifestProcessingRules
a} :: PlaybackConfiguration)

-- | The Amazon CloudWatch log settings for a playback configuration.
playbackConfiguration_logConfiguration :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe LogConfiguration)
playbackConfiguration_logConfiguration :: (Maybe LogConfiguration -> f (Maybe LogConfiguration))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_logConfiguration = (PlaybackConfiguration -> Maybe LogConfiguration)
-> (PlaybackConfiguration
    -> Maybe LogConfiguration -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe LogConfiguration)
     (Maybe LogConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe LogConfiguration
logConfiguration :: Maybe LogConfiguration
$sel:logConfiguration:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe LogConfiguration
logConfiguration} -> Maybe LogConfiguration
logConfiguration) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe LogConfiguration
a -> PlaybackConfiguration
s {$sel:logConfiguration:PlaybackConfiguration' :: Maybe LogConfiguration
logConfiguration = Maybe LogConfiguration
a} :: PlaybackConfiguration)

-- | The configuration for pre-roll ad insertion.
playbackConfiguration_livePreRollConfiguration :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe LivePreRollConfiguration)
playbackConfiguration_livePreRollConfiguration :: (Maybe LivePreRollConfiguration
 -> f (Maybe LivePreRollConfiguration))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_livePreRollConfiguration = (PlaybackConfiguration -> Maybe LivePreRollConfiguration)
-> (PlaybackConfiguration
    -> Maybe LivePreRollConfiguration -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe LivePreRollConfiguration)
     (Maybe LivePreRollConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe LivePreRollConfiguration
livePreRollConfiguration :: Maybe LivePreRollConfiguration
$sel:livePreRollConfiguration:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe LivePreRollConfiguration
livePreRollConfiguration} -> Maybe LivePreRollConfiguration
livePreRollConfiguration) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe LivePreRollConfiguration
a -> PlaybackConfiguration
s {$sel:livePreRollConfiguration:PlaybackConfiguration' :: Maybe LivePreRollConfiguration
livePreRollConfiguration = Maybe LivePreRollConfiguration
a} :: PlaybackConfiguration)

-- | The identifier for the playback configuration.
playbackConfiguration_name :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Text)
playbackConfiguration_name :: (Maybe Text -> f (Maybe Text))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_name = (PlaybackConfiguration -> Maybe Text)
-> (PlaybackConfiguration -> Maybe Text -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Text
name :: Maybe Text
$sel:name:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Text
name} -> Maybe Text
name) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Text
a -> PlaybackConfiguration
s {$sel:name:PlaybackConfiguration' :: Maybe Text
name = Maybe Text
a} :: PlaybackConfiguration)

-- | The URL that the player uses to initialize a session that uses
-- client-side reporting.
playbackConfiguration_sessionInitializationEndpointPrefix :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Text)
playbackConfiguration_sessionInitializationEndpointPrefix :: (Maybe Text -> f (Maybe Text))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_sessionInitializationEndpointPrefix = (PlaybackConfiguration -> Maybe Text)
-> (PlaybackConfiguration -> Maybe Text -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Text
sessionInitializationEndpointPrefix :: Maybe Text
$sel:sessionInitializationEndpointPrefix:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Text
sessionInitializationEndpointPrefix} -> Maybe Text
sessionInitializationEndpointPrefix) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Text
a -> PlaybackConfiguration
s {$sel:sessionInitializationEndpointPrefix:PlaybackConfiguration' :: Maybe Text
sessionInitializationEndpointPrefix = Maybe Text
a} :: PlaybackConfiguration)

-- | The player parameters and aliases used as dynamic variables during
-- session initialization. For more information, see
-- <https://docs.aws.amazon.com/mediatailor/latest/ug/variables-domain.html Domain Variables>.
playbackConfiguration_configurationAliases :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text (Prelude.HashMap Prelude.Text Prelude.Text)))
playbackConfiguration_configurationAliases :: (Maybe (HashMap Text (HashMap Text Text))
 -> f (Maybe (HashMap Text (HashMap Text Text))))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_configurationAliases = (PlaybackConfiguration -> Maybe (HashMap Text (HashMap Text Text)))
-> (PlaybackConfiguration
    -> Maybe (HashMap Text (HashMap Text Text))
    -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe (HashMap Text (HashMap Text Text)))
     (Maybe (HashMap Text (HashMap Text Text)))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe (HashMap Text (HashMap Text Text))
configurationAliases :: Maybe (HashMap Text (HashMap Text Text))
$sel:configurationAliases:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe (HashMap Text (HashMap Text Text))
configurationAliases} -> Maybe (HashMap Text (HashMap Text Text))
configurationAliases) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe (HashMap Text (HashMap Text Text))
a -> PlaybackConfiguration
s {$sel:configurationAliases:PlaybackConfiguration' :: Maybe (HashMap Text (HashMap Text Text))
configurationAliases = Maybe (HashMap Text (HashMap Text Text))
a} :: PlaybackConfiguration) ((Maybe (HashMap Text (HashMap Text Text))
  -> f (Maybe (HashMap Text (HashMap Text Text))))
 -> PlaybackConfiguration -> f PlaybackConfiguration)
-> ((Maybe (HashMap Text (HashMap Text Text))
     -> f (Maybe (HashMap Text (HashMap Text Text))))
    -> Maybe (HashMap Text (HashMap Text Text))
    -> f (Maybe (HashMap Text (HashMap Text Text))))
-> (Maybe (HashMap Text (HashMap Text Text))
    -> f (Maybe (HashMap Text (HashMap Text Text))))
-> PlaybackConfiguration
-> f PlaybackConfiguration
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text (HashMap Text Text))
  (HashMap Text (HashMap Text Text))
  (HashMap Text (HashMap Text Text))
  (HashMap Text (HashMap Text Text))
-> Iso
     (Maybe (HashMap Text (HashMap Text Text)))
     (Maybe (HashMap Text (HashMap Text Text)))
     (Maybe (HashMap Text (HashMap Text Text)))
     (Maybe (HashMap Text (HashMap Text Text)))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text (HashMap Text Text))
  (HashMap Text (HashMap Text Text))
  (HashMap Text (HashMap Text Text))
  (HashMap Text (HashMap Text Text))
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name that is used to associate this playback configuration with a
-- custom transcode profile. This overrides the dynamic transcoding
-- defaults of MediaTailor. Use this only if you have already set up custom
-- profiles with the help of AWS Support.
playbackConfiguration_transcodeProfileName :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Text)
playbackConfiguration_transcodeProfileName :: (Maybe Text -> f (Maybe Text))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_transcodeProfileName = (PlaybackConfiguration -> Maybe Text)
-> (PlaybackConfiguration -> Maybe Text -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Text
transcodeProfileName :: Maybe Text
$sel:transcodeProfileName:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Text
transcodeProfileName} -> Maybe Text
transcodeProfileName) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Text
a -> PlaybackConfiguration
s {$sel:transcodeProfileName:PlaybackConfiguration' :: Maybe Text
transcodeProfileName = Maybe Text
a} :: PlaybackConfiguration)

-- | The tags to assign to the playback configuration.
playbackConfiguration_tags :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
playbackConfiguration_tags :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_tags = (PlaybackConfiguration -> Maybe (HashMap Text Text))
-> (PlaybackConfiguration
    -> Maybe (HashMap Text Text) -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe (HashMap Text Text)
a -> PlaybackConfiguration
s {$sel:tags:PlaybackConfiguration' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: PlaybackConfiguration) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> PlaybackConfiguration -> f PlaybackConfiguration)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> PlaybackConfiguration
-> f PlaybackConfiguration
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The URL for a video asset to transcode and use to fill in time that\'s
-- not used by ads. AWS Elemental MediaTailor shows the slate to fill in
-- gaps in media content. Configuring the slate is optional for non-VPAID
-- playback configurations. For VPAID, the slate is required because
-- MediaTailor provides it in the slots designated for dynamic ad content.
-- The slate must be a high-quality asset that contains both audio and
-- video.
playbackConfiguration_slateAdUrl :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe Prelude.Text)
playbackConfiguration_slateAdUrl :: (Maybe Text -> f (Maybe Text))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_slateAdUrl = (PlaybackConfiguration -> Maybe Text)
-> (PlaybackConfiguration -> Maybe Text -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe Text
slateAdUrl :: Maybe Text
$sel:slateAdUrl:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe Text
slateAdUrl} -> Maybe Text
slateAdUrl) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe Text
a -> PlaybackConfiguration
s {$sel:slateAdUrl:PlaybackConfiguration' :: Maybe Text
slateAdUrl = Maybe Text
a} :: PlaybackConfiguration)

-- | The configuration for using a content delivery network (CDN), like
-- Amazon CloudFront, for content and ad segment management.
playbackConfiguration_cdnConfiguration :: Lens.Lens' PlaybackConfiguration (Prelude.Maybe CdnConfiguration)
playbackConfiguration_cdnConfiguration :: (Maybe CdnConfiguration -> f (Maybe CdnConfiguration))
-> PlaybackConfiguration -> f PlaybackConfiguration
playbackConfiguration_cdnConfiguration = (PlaybackConfiguration -> Maybe CdnConfiguration)
-> (PlaybackConfiguration
    -> Maybe CdnConfiguration -> PlaybackConfiguration)
-> Lens
     PlaybackConfiguration
     PlaybackConfiguration
     (Maybe CdnConfiguration)
     (Maybe CdnConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlaybackConfiguration' {Maybe CdnConfiguration
cdnConfiguration :: Maybe CdnConfiguration
$sel:cdnConfiguration:PlaybackConfiguration' :: PlaybackConfiguration -> Maybe CdnConfiguration
cdnConfiguration} -> Maybe CdnConfiguration
cdnConfiguration) (\s :: PlaybackConfiguration
s@PlaybackConfiguration' {} Maybe CdnConfiguration
a -> PlaybackConfiguration
s {$sel:cdnConfiguration:PlaybackConfiguration' :: Maybe CdnConfiguration
cdnConfiguration = Maybe CdnConfiguration
a} :: PlaybackConfiguration)

instance Core.FromJSON PlaybackConfiguration where
  parseJSON :: Value -> Parser PlaybackConfiguration
parseJSON =
    String
-> (Object -> Parser PlaybackConfiguration)
-> Value
-> Parser PlaybackConfiguration
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"PlaybackConfiguration"
      ( \Object
x ->
          Maybe Text
-> Maybe HlsConfiguration
-> Maybe Natural
-> Maybe Text
-> Maybe AvailSuppression
-> Maybe Bumper
-> Maybe Text
-> Maybe Text
-> Maybe DashConfiguration
-> Maybe ManifestProcessingRules
-> Maybe LogConfiguration
-> Maybe LivePreRollConfiguration
-> Maybe Text
-> Maybe Text
-> Maybe (HashMap Text (HashMap Text Text))
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe CdnConfiguration
-> PlaybackConfiguration
PlaybackConfiguration'
            (Maybe Text
 -> Maybe HlsConfiguration
 -> Maybe Natural
 -> Maybe Text
 -> Maybe AvailSuppression
 -> Maybe Bumper
 -> Maybe Text
 -> Maybe Text
 -> Maybe DashConfiguration
 -> Maybe ManifestProcessingRules
 -> Maybe LogConfiguration
 -> Maybe LivePreRollConfiguration
 -> Maybe Text
 -> Maybe Text
 -> Maybe (HashMap Text (HashMap Text Text))
 -> Maybe Text
 -> Maybe (HashMap Text Text)
 -> Maybe Text
 -> Maybe CdnConfiguration
 -> PlaybackConfiguration)
-> Parser (Maybe Text)
-> Parser
     (Maybe HlsConfiguration
      -> Maybe Natural
      -> Maybe Text
      -> Maybe AvailSuppression
      -> Maybe Bumper
      -> Maybe Text
      -> Maybe Text
      -> Maybe DashConfiguration
      -> Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PlaybackEndpointPrefix")
            Parser
  (Maybe HlsConfiguration
   -> Maybe Natural
   -> Maybe Text
   -> Maybe AvailSuppression
   -> Maybe Bumper
   -> Maybe Text
   -> Maybe Text
   -> Maybe DashConfiguration
   -> Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe HlsConfiguration)
-> Parser
     (Maybe Natural
      -> Maybe Text
      -> Maybe AvailSuppression
      -> Maybe Bumper
      -> Maybe Text
      -> Maybe Text
      -> Maybe DashConfiguration
      -> Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe HlsConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"HlsConfiguration")
            Parser
  (Maybe Natural
   -> Maybe Text
   -> Maybe AvailSuppression
   -> Maybe Bumper
   -> Maybe Text
   -> Maybe Text
   -> Maybe DashConfiguration
   -> Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Text
      -> Maybe AvailSuppression
      -> Maybe Bumper
      -> Maybe Text
      -> Maybe Text
      -> Maybe DashConfiguration
      -> Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PersonalizationThresholdSeconds")
            Parser
  (Maybe Text
   -> Maybe AvailSuppression
   -> Maybe Bumper
   -> Maybe Text
   -> Maybe Text
   -> Maybe DashConfiguration
   -> Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe Text)
-> Parser
     (Maybe AvailSuppression
      -> Maybe Bumper
      -> Maybe Text
      -> Maybe Text
      -> Maybe DashConfiguration
      -> Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PlaybackConfigurationArn")
            Parser
  (Maybe AvailSuppression
   -> Maybe Bumper
   -> Maybe Text
   -> Maybe Text
   -> Maybe DashConfiguration
   -> Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe AvailSuppression)
-> Parser
     (Maybe Bumper
      -> Maybe Text
      -> Maybe Text
      -> Maybe DashConfiguration
      -> Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AvailSuppression)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AvailSuppression")
            Parser
  (Maybe Bumper
   -> Maybe Text
   -> Maybe Text
   -> Maybe DashConfiguration
   -> Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe Bumper)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe DashConfiguration
      -> Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bumper)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Bumper")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe DashConfiguration
   -> Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe DashConfiguration
      -> Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AdDecisionServerUrl")
            Parser
  (Maybe Text
   -> Maybe DashConfiguration
   -> Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe Text)
-> Parser
     (Maybe DashConfiguration
      -> Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VideoContentSourceUrl")
            Parser
  (Maybe DashConfiguration
   -> Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe DashConfiguration)
-> Parser
     (Maybe ManifestProcessingRules
      -> Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DashConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DashConfiguration")
            Parser
  (Maybe ManifestProcessingRules
   -> Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe ManifestProcessingRules)
-> Parser
     (Maybe LogConfiguration
      -> Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ManifestProcessingRules)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ManifestProcessingRules")
            Parser
  (Maybe LogConfiguration
   -> Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe LogConfiguration)
-> Parser
     (Maybe LivePreRollConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LogConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LogConfiguration")
            Parser
  (Maybe LivePreRollConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe LivePreRollConfiguration)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LivePreRollConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LivePreRollConfiguration")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Name")
            Parser
  (Maybe Text
   -> Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text (HashMap Text Text))
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SessionInitializationEndpointPrefix")
            Parser
  (Maybe (HashMap Text (HashMap Text Text))
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe (HashMap Text (HashMap Text Text)))
-> Parser
     (Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe CdnConfiguration
      -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text
-> Parser (Maybe (Maybe (HashMap Text (HashMap Text Text))))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ConfigurationAliases"
                            Parser (Maybe (Maybe (HashMap Text (HashMap Text Text))))
-> Maybe (HashMap Text (HashMap Text Text))
-> Parser (Maybe (HashMap Text (HashMap Text Text)))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text (HashMap Text Text))
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe CdnConfiguration
   -> PlaybackConfiguration)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe Text -> Maybe CdnConfiguration -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TranscodeProfileName")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe Text -> Maybe CdnConfiguration -> PlaybackConfiguration)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe Text -> Maybe CdnConfiguration -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tags" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text -> Maybe CdnConfiguration -> PlaybackConfiguration)
-> Parser (Maybe Text)
-> Parser (Maybe CdnConfiguration -> PlaybackConfiguration)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SlateAdUrl")
            Parser (Maybe CdnConfiguration -> PlaybackConfiguration)
-> Parser (Maybe CdnConfiguration) -> Parser PlaybackConfiguration
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CdnConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CdnConfiguration")
      )

instance Prelude.Hashable PlaybackConfiguration

instance Prelude.NFData PlaybackConfiguration