-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google YouTube Data SDK.
--   
--   Supports core YouTube features, such as uploading videos, creating and
--   managing playlists, searching for content, and much more.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v3</tt> of the API.
@package gogol-youtube
@version 0.3.0


module Network.Google.YouTube.Types

-- | Default request referring to version <tt>v3</tt> of the YouTube Data
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
youTubeService :: ServiceConfig

-- | Manage your YouTube videos
youTubeUploadScope :: Proxy '["https://www.googleapis.com/auth/youtube.upload"]

-- | Manage your YouTube account
youTubeScope :: Proxy '["https://www.googleapis.com/auth/youtube"]

-- | View and manage your assets and associated content on YouTube
youTubePartnerScope :: Proxy '["https://www.googleapis.com/auth/youtubepartner"]

-- | Manage your YouTube account
youTubeForceSslScope :: Proxy '["https://www.googleapis.com/auth/youtube.force-ssl"]

-- | View your YouTube account
youTubeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/youtube.readonly"]

-- | View private information of your YouTube channel relevant during the
--   audit process with a YouTube partner
youTubePartnerChannelAuditScope :: Proxy '["https://www.googleapis.com/auth/youtubepartner-channel-audit"]
data LiveChatMessageAuthorDetails

-- | Creates a value of <a>LiveChatMessageAuthorDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmadIsVerified</a></li>
--   <li><a>lcmadIsChatOwner</a></li>
--   <li><a>lcmadChannelId</a></li>
--   <li><a>lcmadProFileImageURL</a></li>
--   <li><a>lcmadIsChatModerator</a></li>
--   <li><a>lcmadDisplayName</a></li>
--   <li><a>lcmadIsChatSponsor</a></li>
--   <li><a>lcmadChannelURL</a></li>
--   </ul>
liveChatMessageAuthorDetails :: LiveChatMessageAuthorDetails

-- | Whether the author's identity has been verified by YouTube.
lcmadIsVerified :: Lens' LiveChatMessageAuthorDetails (Maybe Bool)

-- | Whether the author is the owner of the live chat.
lcmadIsChatOwner :: Lens' LiveChatMessageAuthorDetails (Maybe Bool)

-- | The YouTube channel ID.
lcmadChannelId :: Lens' LiveChatMessageAuthorDetails (Maybe Text)

-- | The channels's avatar URL.
lcmadProFileImageURL :: Lens' LiveChatMessageAuthorDetails (Maybe Text)

-- | Whether the author is a moderator of the live chat.
lcmadIsChatModerator :: Lens' LiveChatMessageAuthorDetails (Maybe Bool)

-- | The channel's display name.
lcmadDisplayName :: Lens' LiveChatMessageAuthorDetails (Maybe Text)

-- | Whether the author is a sponsor of the live chat.
lcmadIsChatSponsor :: Lens' LiveChatMessageAuthorDetails (Maybe Bool)

-- | The channel's URL.
lcmadChannelURL :: Lens' LiveChatMessageAuthorDetails (Maybe Text)

-- | The video's rating from Portugal's Comissão de Classificação de
--   Espect´culos.
data ContentRatingCceRating

-- | <pre>
--   cceM12
--   </pre>
CCEM12 :: ContentRatingCceRating

-- | <pre>
--   cceM14
--   </pre>
CCEM14 :: ContentRatingCceRating

-- | <pre>
--   cceM16
--   </pre>
CCEM16 :: ContentRatingCceRating

-- | <pre>
--   cceM18
--   </pre>
CCEM18 :: ContentRatingCceRating

-- | <pre>
--   cceM4
--   </pre>
CCEM4 :: ContentRatingCceRating

-- | <pre>
--   cceM6
--   </pre>
CCEM6 :: ContentRatingCceRating

-- | <pre>
--   cceUnrated
--   </pre>
CceUnrated :: ContentRatingCceRating

-- | The video's rating in Switzerland.
data ContentRatingChfilmRating

-- | <pre>
--   chfilm0
--   </pre>
CHFILM0 :: ContentRatingChfilmRating

-- | <pre>
--   chfilm12
--   </pre>
CHFILM12 :: ContentRatingChfilmRating

-- | <pre>
--   chfilm16
--   </pre>
CHFILM16 :: ContentRatingChfilmRating

-- | <pre>
--   chfilm18
--   </pre>
CHFILM18 :: ContentRatingChfilmRating

-- | <pre>
--   chfilm6
--   </pre>
CHFILM6 :: ContentRatingChfilmRating

-- | <pre>
--   chfilmUnrated
--   </pre>
ChfilmUnrated :: ContentRatingChfilmRating

-- | Basic details about a subscription's subscriber including title,
--   description, channel ID and thumbnails.
--   
--   <i>See:</i> <a>subscriptionSubscriberSnippet</a> smart constructor.
data SubscriptionSubscriberSnippet

-- | Creates a value of <a>SubscriptionSubscriberSnippet</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sssChannelId</a></li>
--   <li><a>sssThumbnails</a></li>
--   <li><a>sssTitle</a></li>
--   <li><a>sssDescription</a></li>
--   </ul>
subscriptionSubscriberSnippet :: SubscriptionSubscriberSnippet

-- | The channel ID of the subscriber.
sssChannelId :: Lens' SubscriptionSubscriberSnippet (Maybe Text)

-- | Thumbnails for this subscriber.
sssThumbnails :: Lens' SubscriptionSubscriberSnippet (Maybe ThumbnailDetails)

-- | The title of the subscriber.
sssTitle :: Lens' SubscriptionSubscriberSnippet (Maybe Text)

-- | The description of the subscriber.
sssDescription :: Lens' SubscriptionSubscriberSnippet (Maybe Text)

-- | The video's rating from Malta's Film Age-Classification Board.
data ContentRatingMccaaRating

-- | <pre>
--   mccaa12
--   </pre>
MCCAA12 :: ContentRatingMccaaRating

-- | <pre>
--   mccaa12a
--   </pre>
Mccaa12a :: ContentRatingMccaaRating

-- | <pre>
--   mccaa14
--   </pre>
MCCAA14 :: ContentRatingMccaaRating

-- | <pre>
--   mccaa15
--   </pre>
MCCAA15 :: ContentRatingMccaaRating

-- | <pre>
--   mccaa16
--   </pre>
MCCAA16 :: ContentRatingMccaaRating

-- | <pre>
--   mccaa18
--   </pre>
MCCAA18 :: ContentRatingMccaaRating

-- | <pre>
--   mccaaPg
--   </pre>
MccaaPg :: ContentRatingMccaaRating

-- | <pre>
--   mccaaU
--   </pre>
MccaaU :: ContentRatingMccaaRating

-- | <pre>
--   mccaaUnrated
--   </pre>
MccaaUnrated :: ContentRatingMccaaRating

-- | The chart parameter identifies the chart that you want to retrieve.
data VideosListChart

-- | <tt>mostPopular</tt> Return the most popular videos for the specified
--   content region and video category.
MostPopular :: VideosListChart

-- | Describes information necessary for ingesting an RTMP or an HTTP
--   stream.
--   
--   <i>See:</i> <a>ingestionInfo</a> smart constructor.
data IngestionInfo

-- | Creates a value of <a>IngestionInfo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iiBackupIngestionAddress</a></li>
--   <li><a>iiIngestionAddress</a></li>
--   <li><a>iiStreamName</a></li>
--   </ul>
ingestionInfo :: IngestionInfo

-- | The backup ingestion URL that you should use to stream video to
--   YouTube. You have the option of simultaneously streaming the content
--   that you are sending to the ingestionAddress to this URL.
iiBackupIngestionAddress :: Lens' IngestionInfo (Maybe Text)

-- | The primary ingestion URL that you should use to stream video to
--   YouTube. You must stream video to this URL. Depending on which
--   application or tool you use to encode your video stream, you may need
--   to enter the stream URL and stream name separately or you may need to
--   concatenate them in the following format: STREAM_URL/STREAM_NAME
iiIngestionAddress :: Lens' IngestionInfo (Maybe Text)

-- | The HTTP or RTMP stream name that YouTube assigns to the video stream.
iiStreamName :: Lens' IngestionInfo (Maybe Text)

-- | The auditDetails object encapsulates channel data that is relevant for
--   YouTube Partners during the audit process.
--   
--   <i>See:</i> <a>channelAuditDetails</a> smart constructor.
data ChannelAuditDetails

-- | Creates a value of <a>ChannelAuditDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cadContentIdClaimsGoodStanding</a></li>
--   <li><a>cadOverallGoodStanding</a></li>
--   <li><a>cadCopyrightStrikesGoodStanding</a></li>
--   <li><a>cadCommUnityGuidelinesGoodStanding</a></li>
--   </ul>
channelAuditDetails :: ChannelAuditDetails

-- | Whether or not the channel has any unresolved claims.
cadContentIdClaimsGoodStanding :: Lens' ChannelAuditDetails (Maybe Bool)

-- | Describes the general state of the channel. This field will always
--   show if there are any issues whatsoever with the channel. Currently
--   this field represents the result of the logical and operation over the
--   community guidelines good standing, the copyright strikes good
--   standing and the content ID claims good standing, but this may change
--   in the future.
cadOverallGoodStanding :: Lens' ChannelAuditDetails (Maybe Bool)

-- | Whether or not the channel has any copyright strikes.
cadCopyrightStrikesGoodStanding :: Lens' ChannelAuditDetails (Maybe Bool)

-- | Whether or not the channel respects the community guidelines.
cadCommUnityGuidelinesGoodStanding :: Lens' ChannelAuditDetails (Maybe Bool)

-- | A thumbnail is an image representing a YouTube resource.
--   
--   <i>See:</i> <a>thumbnail</a> smart constructor.
data Thumbnail

-- | Creates a value of <a>Thumbnail</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tHeight</a></li>
--   <li><a>tURL</a></li>
--   <li><a>tWidth</a></li>
--   </ul>
thumbnail :: Thumbnail

-- | (Optional) Height of the thumbnail image.
tHeight :: Lens' Thumbnail (Maybe Word32)

-- | The thumbnail image's URL.
tURL :: Lens' Thumbnail (Maybe Text)

-- | (Optional) Width of the thumbnail image.
tWidth :: Lens' Thumbnail (Maybe Word32)

-- | The video's Motion Picture Association of America (MPAA) rating.
data ContentRatingMpaaRating

-- | <pre>
--   mpaaG
--   </pre>
MpaaG :: ContentRatingMpaaRating

-- | <pre>
--   mpaaNc17
--   </pre>
MPAANC17 :: ContentRatingMpaaRating

-- | <pre>
--   mpaaPg
--   </pre>
MpaaPg :: ContentRatingMpaaRating

-- | <pre>
--   mpaaPg13
--   </pre>
MPAAPG13 :: ContentRatingMpaaRating

-- | <pre>
--   mpaaR
--   </pre>
MpaaR :: ContentRatingMpaaRating

-- | <pre>
--   mpaaUnrated
--   </pre>
MpaaUnrated :: ContentRatingMpaaRating

-- | The caption track's type.
data CaptionSnippetTrackKind

-- | <pre>
--   ASR
--   </pre>
Asr :: CaptionSnippetTrackKind

-- | <pre>
--   forced
--   </pre>
Forced :: CaptionSnippetTrackKind

-- | <pre>
--   standard
--   </pre>
Standard :: CaptionSnippetTrackKind

-- | Indicates if the video is an upcoming/active live broadcast. Or it's
--   "none" if the video is not an upcoming/active live broadcast.
data VideoSnippetLiveBroadcastContent

-- | <pre>
--   live
--   </pre>
Live :: VideoSnippetLiveBroadcastContent

-- | <pre>
--   none
--   </pre>
None :: VideoSnippetLiveBroadcastContent

-- | <pre>
--   upcoming
--   </pre>
Upcoming :: VideoSnippetLiveBroadcastContent

-- | Defines the context of the ping.
data ChannelConversionPingContext

-- | <pre>
--   cview
--   </pre>
Cview :: ChannelConversionPingContext

-- | <pre>
--   subscribe
--   </pre>
Subscribe :: ChannelConversionPingContext

-- | <pre>
--   unsubscribe
--   </pre>
Unsubscribe :: ChannelConversionPingContext
data LiveChatTextMessageDetails

-- | Creates a value of <a>LiveChatTextMessageDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lctmdMessageText</a></li>
--   </ul>
liveChatTextMessageDetails :: LiveChatTextMessageDetails

-- | The user's message.
lctmdMessageText :: Lens' LiveChatTextMessageDetails (Maybe Text)

-- | Information that identifies the recommended resource.
--   
--   <i>See:</i> <a>activityContentDetailsRecommendation</a> smart
--   constructor.
data ActivityContentDetailsRecommendation

-- | Creates a value of <a>ActivityContentDetailsRecommendation</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdrResourceId</a></li>
--   <li><a>acdrSeedResourceId</a></li>
--   <li><a>acdrReason</a></li>
--   </ul>
activityContentDetailsRecommendation :: ActivityContentDetailsRecommendation

-- | The resourceId object contains information that identifies the
--   recommended resource.
acdrResourceId :: Lens' ActivityContentDetailsRecommendation (Maybe ResourceId)

-- | The seedResourceId object contains information about the resource that
--   caused the recommendation.
acdrSeedResourceId :: Lens' ActivityContentDetailsRecommendation (Maybe ResourceId)

-- | The reason that the resource is recommended to the user.
acdrReason :: Lens' ActivityContentDetailsRecommendation (Maybe ActivityContentDetailsRecommendationReason)
data LiveChatMessageRetractedDetails

-- | Creates a value of <a>LiveChatMessageRetractedDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmrdRetractedMessageId</a></li>
--   </ul>
liveChatMessageRetractedDetails :: LiveChatMessageRetractedDetails
lcmrdRetractedMessageId :: Lens' LiveChatMessageRetractedDetails (Maybe Text)

-- | The video's rating from the Hungarian Nemzeti Filmiroda, the Rating
--   Committee of the National Office of Film.
data ContentRatingRcnofRating

-- | <pre>
--   rcnofI
--   </pre>
RcnofI :: ContentRatingRcnofRating

-- | <pre>
--   rcnofIi
--   </pre>
RcnofIi :: ContentRatingRcnofRating

-- | <pre>
--   rcnofIii
--   </pre>
RcnofIii :: ContentRatingRcnofRating

-- | <pre>
--   rcnofIv
--   </pre>
RcnofIv :: ContentRatingRcnofRating

-- | <pre>
--   rcnofUnrated
--   </pre>
RcnofUnrated :: ContentRatingRcnofRating

-- | <pre>
--   rcnofV
--   </pre>
RcnofV :: ContentRatingRcnofRating

-- | <pre>
--   rcnofVi
--   </pre>
RcnofVi :: ContentRatingRcnofRating
data PlayListListResponse

-- | Creates a value of <a>PlayListListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pllrEtag</a></li>
--   <li><a>pllrTokenPagination</a></li>
--   <li><a>pllrNextPageToken</a></li>
--   <li><a>pllrPageInfo</a></li>
--   <li><a>pllrKind</a></li>
--   <li><a>pllrItems</a></li>
--   <li><a>pllrVisitorId</a></li>
--   <li><a>pllrEventId</a></li>
--   <li><a>pllrPrevPageToken</a></li>
--   </ul>
playListListResponse :: PlayListListResponse

-- | Etag of this resource.
pllrEtag :: Lens' PlayListListResponse (Maybe Text)
pllrTokenPagination :: Lens' PlayListListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
pllrNextPageToken :: Lens' PlayListListResponse (Maybe Text)
pllrPageInfo :: Lens' PlayListListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#playlistListResponse".
pllrKind :: Lens' PlayListListResponse Text

-- | A list of playlists that match the request criteria.
pllrItems :: Lens' PlayListListResponse [PlayList]

-- | The visitorId identifies the visitor.
pllrVisitorId :: Lens' PlayListListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
pllrEventId :: Lens' PlayListListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
pllrPrevPageToken :: Lens' PlayListListResponse (Maybe Text)

-- | The video's privacy status.
data VideoStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
Private :: VideoStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
Public :: VideoStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
UnListed :: VideoStatusPrivacyStatus

-- | Basic details about a channel section, including title, style and
--   position.
--   
--   <i>See:</i> <a>channelSectionSnippet</a> smart constructor.
data ChannelSectionSnippet

-- | Creates a value of <a>ChannelSectionSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cssStyle</a></li>
--   <li><a>cssChannelId</a></li>
--   <li><a>cssLocalized</a></li>
--   <li><a>cssTitle</a></li>
--   <li><a>cssType</a></li>
--   <li><a>cssPosition</a></li>
--   <li><a>cssDefaultLanguage</a></li>
--   </ul>
channelSectionSnippet :: ChannelSectionSnippet

-- | The style of the channel section.
cssStyle :: Lens' ChannelSectionSnippet (Maybe ChannelSectionSnippetStyle)

-- | The ID that YouTube uses to uniquely identify the channel that
--   published the channel section.
cssChannelId :: Lens' ChannelSectionSnippet (Maybe Text)

-- | Localized title, read-only.
cssLocalized :: Lens' ChannelSectionSnippet (Maybe ChannelSectionLocalization)

-- | The channel section's title for multiple_playlists and
--   multiple_channels.
cssTitle :: Lens' ChannelSectionSnippet (Maybe Text)

-- | The type of the channel section.
cssType :: Lens' ChannelSectionSnippet (Maybe ChannelSectionSnippetType)

-- | The position of the channel section in the channel.
cssPosition :: Lens' ChannelSectionSnippet (Maybe Word32)

-- | The language of the channel section's default title and description.
cssDefaultLanguage :: Lens' ChannelSectionSnippet (Maybe Text)

-- | JSON template for the status part of a channel.
--   
--   <i>See:</i> <a>channelStatus</a> smart constructor.
data ChannelStatus

-- | Creates a value of <a>ChannelStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csIsLinked</a></li>
--   <li><a>csLongUploadsStatus</a></li>
--   <li><a>csPrivacyStatus</a></li>
--   </ul>
channelStatus :: ChannelStatus

-- | If true, then the user is linked to either a YouTube username or G+
--   account. Otherwise, the user doesn't have a public YouTube identity.
csIsLinked :: Lens' ChannelStatus (Maybe Bool)

-- | The long uploads status of this channel. See
csLongUploadsStatus :: Lens' ChannelStatus (Maybe ChannelStatusLongUploadsStatus)

-- | Privacy status of the channel.
csPrivacyStatus :: Lens' ChannelStatus (Maybe ChannelStatusPrivacyStatus)

-- | The broadcast's status. The status can be updated using the API's
--   liveBroadcasts.transition method.
data LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   abandoned
--   </pre>
LBSLCSAbandoned :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   complete
--   </pre>
LBSLCSComplete :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   completeStarting
--   </pre>
LBSLCSCompleteStarting :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   created
--   </pre>
LBSLCSCreated :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   live
--   </pre>
LBSLCSLive :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   liveStarting
--   </pre>
LBSLCSLiveStarting :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   ready
--   </pre>
LBSLCSReady :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   reclaimed
--   </pre>
LBSLCSReclaimed :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   revoked
--   </pre>
LBSLCSRevoked :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   testStarting
--   </pre>
LBSLCSTestStarting :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   testing
--   </pre>
LBSLCSTesting :: LiveBroadcastStatusLifeCycleStatus

-- | The reason that YouTube failed to process the caption track. This
--   property is only present if the state property's value is failed.
data CaptionSnippetFailureReason

-- | <pre>
--   processingFailed
--   </pre>
ProcessingFailed :: CaptionSnippetFailureReason

-- | <pre>
--   unknownFormat
--   </pre>
UnknownFormat :: CaptionSnippetFailureReason

-- | <pre>
--   unsupportedFormat
--   </pre>
UnsupportedFormat :: CaptionSnippetFailureReason
data LiveChatPollClosedDetails

-- | Creates a value of <a>LiveChatPollClosedDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpcdPollId</a></li>
--   </ul>
liveChatPollClosedDetails :: LiveChatPollClosedDetails

-- | The id of the poll that was closed.
lcpcdPollId :: Lens' LiveChatPollClosedDetails (Maybe Text)

-- | Describes a single promoted item.
--   
--   <i>See:</i> <a>promotedItem</a> smart constructor.
data PromotedItem

-- | Creates a value of <a>PromotedItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piCustomMessage</a></li>
--   <li><a>piPromotedByContentOwner</a></li>
--   <li><a>piId</a></li>
--   <li><a>piTiming</a></li>
--   </ul>
promotedItem :: PromotedItem

-- | A custom message to display for this promotion. This field is
--   currently ignored unless the promoted item is a website.
piCustomMessage :: Lens' PromotedItem (Maybe Text)

-- | If true, the content owner's name will be used when displaying the
--   promotion. This field can only be set when the update is made on
--   behalf of the content owner.
piPromotedByContentOwner :: Lens' PromotedItem (Maybe Bool)

-- | Identifies the promoted item.
piId :: Lens' PromotedItem (Maybe PromotedItemId)

-- | The temporal position within the video where the promoted item will be
--   displayed. If present, it overrides the default timing.
piTiming :: Lens' PromotedItem (Maybe InvideoTiming)

-- | The type of ban.
data LiveChatUserBannedMessageDetailsBanType

-- | <pre>
--   permanent
--   </pre>
Permanent :: LiveChatUserBannedMessageDetailsBanType

-- | <pre>
--   temporary
--   </pre>
Temporary :: LiveChatUserBannedMessageDetailsBanType

-- | The reason that YouTube failed to process the video. This property
--   will only have a value if the processingStatus property's value is
--   failed.
data VideoProcessingDetailsProcessingFailureReason

-- | <pre>
--   other
--   </pre>
Other :: VideoProcessingDetailsProcessingFailureReason

-- | <pre>
--   streamingFailed
--   </pre>
StreamingFailed :: VideoProcessingDetailsProcessingFailureReason

-- | <pre>
--   transcodeFailed
--   </pre>
TranscodeFailed :: VideoProcessingDetailsProcessingFailureReason

-- | <pre>
--   uploadFailed
--   </pre>
UploadFailed :: VideoProcessingDetailsProcessingFailureReason

-- | Defines the position type.
data InvideoPositionType

-- | <pre>
--   corner
--   </pre>
Corner :: InvideoPositionType
data LiveStreamSnippet

-- | Creates a value of <a>LiveStreamSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lssPublishedAt</a></li>
--   <li><a>lssChannelId</a></li>
--   <li><a>lssIsDefaultStream</a></li>
--   <li><a>lssTitle</a></li>
--   <li><a>lssDescription</a></li>
--   </ul>
liveStreamSnippet :: LiveStreamSnippet

-- | The date and time that the stream was created. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lssPublishedAt :: Lens' LiveStreamSnippet (Maybe UTCTime)

-- | The ID that YouTube uses to uniquely identify the channel that is
--   transmitting the stream.
lssChannelId :: Lens' LiveStreamSnippet (Maybe Text)
lssIsDefaultStream :: Lens' LiveStreamSnippet (Maybe Bool)

-- | The stream's title. The value must be between 1 and 128 characters
--   long.
lssTitle :: Lens' LiveStreamSnippet (Maybe Text)

-- | The stream's description. The value cannot be longer than 10000
--   characters.
lssDescription :: Lens' LiveStreamSnippet (Maybe Text)

-- | The video's Freiwillige Selbstkontrolle der Filmwirtschaft (FSK -
--   Germany) rating.
data ContentRatingFskRating

-- | <pre>
--   fsk0
--   </pre>
FSK0 :: ContentRatingFskRating

-- | <pre>
--   fsk12
--   </pre>
FSK12 :: ContentRatingFskRating

-- | <pre>
--   fsk16
--   </pre>
FSK16 :: ContentRatingFskRating

-- | <pre>
--   fsk18
--   </pre>
FSK18 :: ContentRatingFskRating

-- | <pre>
--   fsk6
--   </pre>
FSK6 :: ContentRatingFskRating

-- | <pre>
--   fskUnrated
--   </pre>
FskUnrated :: ContentRatingFskRating

-- | A search result contains information about a YouTube video, channel,
--   or playlist that matches the search parameters specified in an API
--   request. While a search result points to a uniquely identifiable
--   resource, like a video, it does not have its own persistent data.
--   
--   <i>See:</i> <a>searchResult</a> smart constructor.
data SearchResult

-- | Creates a value of <a>SearchResult</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srEtag</a></li>
--   <li><a>srSnippet</a></li>
--   <li><a>srKind</a></li>
--   <li><a>srId</a></li>
--   </ul>
searchResult :: SearchResult

-- | Etag of this resource.
srEtag :: Lens' SearchResult (Maybe Text)

-- | The snippet object contains basic details about a search result, such
--   as its title or description. For example, if the search result is a
--   video, then the title will be the video's title and the description
--   will be the video's description.
srSnippet :: Lens' SearchResult (Maybe SearchResultSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#searchResult".
srKind :: Lens' SearchResult Text

-- | The id object contains information that can be used to uniquely
--   identify the resource that matches the search request.
srId :: Lens' SearchResult (Maybe ResourceId)

-- | The video's rating from Finland's Kansallinen Audiovisuaalinen
--   Instituutti (National Audiovisual Institute).
data ContentRatingMekuRating

-- | <pre>
--   meku12
--   </pre>
MEKU12 :: ContentRatingMekuRating

-- | <pre>
--   meku16
--   </pre>
MEKU16 :: ContentRatingMekuRating

-- | <pre>
--   meku18
--   </pre>
MEKU18 :: ContentRatingMekuRating

-- | <pre>
--   meku7
--   </pre>
MEKU7 :: ContentRatingMekuRating

-- | <pre>
--   mekuS
--   </pre>
MekuS :: ContentRatingMekuRating

-- | <pre>
--   mekuUnrated
--   </pre>
MekuUnrated :: ContentRatingMekuRating

-- | Stub token pagination template to suppress results.
--   
--   <i>See:</i> <a>tokenPagination</a> smart constructor.
data TokenPagination

-- | Creates a value of <a>TokenPagination</a> with the minimum fields
--   required to make a request.
tokenPagination :: TokenPagination

-- | A resource id is a generic reference that points to another YouTube
--   resource.
--   
--   <i>See:</i> <a>resourceId</a> smart constructor.
data ResourceId

-- | Creates a value of <a>ResourceId</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riKind</a></li>
--   <li><a>riChannelId</a></li>
--   <li><a>riVideoId</a></li>
--   <li><a>riPlayListId</a></li>
--   </ul>
resourceId :: ResourceId

-- | The type of the API resource.
riKind :: Lens' ResourceId (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the referred resource,
--   if that resource is a channel. This property is only present if the
--   resourceId.kind value is youtube#channel.
riChannelId :: Lens' ResourceId (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the referred resource,
--   if that resource is a video. This property is only present if the
--   resourceId.kind value is youtube#video.
riVideoId :: Lens' ResourceId (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the referred resource,
--   if that resource is a playlist. This property is only present if the
--   resourceId.kind value is youtube#playlist.
riPlayListId :: Lens' ResourceId (Maybe Text)

-- | The value of definition indicates whether the video is available in
--   high definition or only in standard definition.
data VideoContentDetailsDefinition

-- | <pre>
--   hd
--   </pre>
HD :: VideoContentDetailsDefinition

-- | <pre>
--   sd
--   </pre>
SD :: VideoContentDetailsDefinition

-- | The video's rating in Estonia.
data ContentRatingEefilmRating

-- | <pre>
--   eefilmK12
--   </pre>
EEFILMK12 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmK14
--   </pre>
EEFILMK14 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmK16
--   </pre>
EEFILMK16 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmK6
--   </pre>
EEFILMK6 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmL
--   </pre>
EefilmL :: ContentRatingEefilmRating

-- | <pre>
--   eefilmMs12
--   </pre>
EEFILMMS12 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmMs6
--   </pre>
EEFILMMS6 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmPere
--   </pre>
EefilmPere :: ContentRatingEefilmRating

-- | <pre>
--   eefilmUnrated
--   </pre>
EefilmUnrated :: ContentRatingEefilmRating
data SearchListResponse

-- | Creates a value of <a>SearchListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slrEtag</a></li>
--   <li><a>slrTokenPagination</a></li>
--   <li><a>slrNextPageToken</a></li>
--   <li><a>slrRegionCode</a></li>
--   <li><a>slrPageInfo</a></li>
--   <li><a>slrKind</a></li>
--   <li><a>slrItems</a></li>
--   <li><a>slrVisitorId</a></li>
--   <li><a>slrEventId</a></li>
--   <li><a>slrPrevPageToken</a></li>
--   </ul>
searchListResponse :: SearchListResponse

-- | Etag of this resource.
slrEtag :: Lens' SearchListResponse (Maybe Text)
slrTokenPagination :: Lens' SearchListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
slrNextPageToken :: Lens' SearchListResponse (Maybe Text)
slrRegionCode :: Lens' SearchListResponse (Maybe Text)
slrPageInfo :: Lens' SearchListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#searchListResponse".
slrKind :: Lens' SearchListResponse Text

-- | A list of results that match the search criteria.
slrItems :: Lens' SearchListResponse [SearchResult]

-- | The visitorId identifies the visitor.
slrVisitorId :: Lens' SearchListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
slrEventId :: Lens' SearchListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
slrPrevPageToken :: Lens' SearchListResponse (Maybe Text)

-- | The broadcast's privacy status. Note that the broadcast represents
--   exactly one YouTube video, so the privacy settings are identical to
--   those supported for videos. In addition, you can set this field by
--   modifying the broadcast resource or by setting the privacyStatus field
--   of the corresponding video resource.
data LiveBroadcastStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
LBSPSPrivate :: LiveBroadcastStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
LBSPSPublic :: LiveBroadcastStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
LBSPSUnListed :: LiveBroadcastStatusPrivacyStatus
data LiveBroadcastTopicDetails

-- | Creates a value of <a>LiveBroadcastTopicDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbtdTopics</a></li>
--   </ul>
liveBroadcastTopicDetails :: LiveBroadcastTopicDetails
lbtdTopics :: Lens' LiveBroadcastTopicDetails [LiveBroadcastTopic]
data PlayListStatus

-- | Creates a value of <a>PlayListStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plsPrivacyStatus</a></li>
--   </ul>
playListStatus :: PlayListStatus

-- | The playlist's privacy status.
plsPrivacyStatus :: Lens' PlayListStatus (Maybe PlayListStatusPrivacyStatus)
data LiveChatMessageListResponse

-- | Creates a value of <a>LiveChatMessageListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmlrOfflineAt</a></li>
--   <li><a>lcmlrEtag</a></li>
--   <li><a>lcmlrTokenPagination</a></li>
--   <li><a>lcmlrNextPageToken</a></li>
--   <li><a>lcmlrPageInfo</a></li>
--   <li><a>lcmlrKind</a></li>
--   <li><a>lcmlrItems</a></li>
--   <li><a>lcmlrVisitorId</a></li>
--   <li><a>lcmlrPollingIntervalMillis</a></li>
--   <li><a>lcmlrEventId</a></li>
--   </ul>
liveChatMessageListResponse :: LiveChatMessageListResponse

-- | The date and time when the underlying stream went offline. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lcmlrOfflineAt :: Lens' LiveChatMessageListResponse (Maybe UTCTime)

-- | Etag of this resource.
lcmlrEtag :: Lens' LiveChatMessageListResponse (Maybe Text)
lcmlrTokenPagination :: Lens' LiveChatMessageListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
lcmlrNextPageToken :: Lens' LiveChatMessageListResponse (Maybe Text)
lcmlrPageInfo :: Lens' LiveChatMessageListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatMessageListResponse".
lcmlrKind :: Lens' LiveChatMessageListResponse Text

-- | A list of live chat messages.
lcmlrItems :: Lens' LiveChatMessageListResponse [LiveChatMessage]

-- | The visitorId identifies the visitor.
lcmlrVisitorId :: Lens' LiveChatMessageListResponse (Maybe Text)

-- | The amount of time the client should wait before polling again.
lcmlrPollingIntervalMillis :: Lens' LiveChatMessageListResponse (Maybe Word32)

-- | Serialized EventId of the request which produced this response.
lcmlrEventId :: Lens' LiveChatMessageListResponse (Maybe Text)
data ChannelListResponse

-- | Creates a value of <a>ChannelListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clrEtag</a></li>
--   <li><a>clrTokenPagination</a></li>
--   <li><a>clrNextPageToken</a></li>
--   <li><a>clrPageInfo</a></li>
--   <li><a>clrKind</a></li>
--   <li><a>clrItems</a></li>
--   <li><a>clrVisitorId</a></li>
--   <li><a>clrEventId</a></li>
--   <li><a>clrPrevPageToken</a></li>
--   </ul>
channelListResponse :: ChannelListResponse

-- | Etag of this resource.
clrEtag :: Lens' ChannelListResponse (Maybe Text)
clrTokenPagination :: Lens' ChannelListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
clrNextPageToken :: Lens' ChannelListResponse (Maybe Text)
clrPageInfo :: Lens' ChannelListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channelListResponse".
clrKind :: Lens' ChannelListResponse Text

-- | A list of channels that match the request criteria.
clrItems :: Lens' ChannelListResponse [Channel]

-- | The visitorId identifies the visitor.
clrVisitorId :: Lens' ChannelListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
clrEventId :: Lens' ChannelListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
clrPrevPageToken :: Lens' ChannelListResponse (Maybe Text)

-- | The tfmt parameter specifies that the caption track should be returned
--   in a specific format. If the parameter is not included in the request,
--   the track is returned in its original format.
data CaptionsDownloadTfmt

-- | <tt>sbv</tt> SubViewer subtitle.
Sbv :: CaptionsDownloadTfmt

-- | <tt>scc</tt> Scenarist Closed Caption format.
Scc :: CaptionsDownloadTfmt

-- | <tt>srt</tt> SubRip subtitle.
Srt :: CaptionsDownloadTfmt

-- | <tt>ttml</tt> Timed Text Markup Language caption.
Ttml :: CaptionsDownloadTfmt

-- | <tt>vtt</tt> Web Video Text Tracks caption.
Vtt :: CaptionsDownloadTfmt

-- | Describes the type of the promoted item.
data PromotedItemIdType

-- | <pre>
--   recentUpload
--   </pre>
PIITRecentUpload :: PromotedItemIdType

-- | <pre>
--   video
--   </pre>
PIITVideo :: PromotedItemIdType

-- | <pre>
--   website
--   </pre>
PIITWebsite :: PromotedItemIdType

-- | The video's rating in Peru.
data ContentRatingPefilmRating

-- | <pre>
--   pefilm14
--   </pre>
PEFILM14 :: ContentRatingPefilmRating

-- | <pre>
--   pefilm18
--   </pre>
PEFILM18 :: ContentRatingPefilmRating

-- | <pre>
--   pefilmPg
--   </pre>
PefilmPg :: ContentRatingPefilmRating

-- | <pre>
--   pefilmPt
--   </pre>
PefilmPt :: ContentRatingPefilmRating

-- | <pre>
--   pefilmUnrated
--   </pre>
PefilmUnrated :: ContentRatingPefilmRating
data ChannelProFileDetails

-- | Creates a value of <a>ChannelProFileDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpfdChannelId</a></li>
--   <li><a>cpfdProFileImageURL</a></li>
--   <li><a>cpfdDisplayName</a></li>
--   <li><a>cpfdChannelURL</a></li>
--   </ul>
channelProFileDetails :: ChannelProFileDetails

-- | The YouTube channel ID.
cpfdChannelId :: Lens' ChannelProFileDetails (Maybe Text)

-- | The channels's avatar URL.
cpfdProFileImageURL :: Lens' ChannelProFileDetails (Maybe Text)

-- | The channel's display name.
cpfdDisplayName :: Lens' ChannelProFileDetails (Maybe Text)

-- | The channel's URL.
cpfdChannelURL :: Lens' ChannelProFileDetails (Maybe Text)
data VideoAbuseReportReasonListResponse

-- | Creates a value of <a>VideoAbuseReportReasonListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varrlrEtag</a></li>
--   <li><a>varrlrKind</a></li>
--   <li><a>varrlrItems</a></li>
--   <li><a>varrlrVisitorId</a></li>
--   <li><a>varrlrEventId</a></li>
--   </ul>
videoAbuseReportReasonListResponse :: VideoAbuseReportReasonListResponse

-- | Etag of this resource.
varrlrEtag :: Lens' VideoAbuseReportReasonListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoAbuseReportReasonListResponse".
varrlrKind :: Lens' VideoAbuseReportReasonListResponse Text

-- | A list of valid abuse reasons that are used with video.ReportAbuse.
varrlrItems :: Lens' VideoAbuseReportReasonListResponse [VideoAbuseReportReason]

-- | The visitorId identifies the visitor.
varrlrVisitorId :: Lens' VideoAbuseReportReasonListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
varrlrEventId :: Lens' VideoAbuseReportReasonListResponse (Maybe Text)

-- | The resolution of the inbound video data.
data CdnSettingsResolution

-- | <pre>
--   1080p
--   </pre>
CSR1080p :: CdnSettingsResolution

-- | <pre>
--   1440p
--   </pre>
CSR1440p :: CdnSettingsResolution

-- | <pre>
--   2160p
--   </pre>
CSR2160p :: CdnSettingsResolution

-- | <pre>
--   240p
--   </pre>
CSR240p :: CdnSettingsResolution

-- | <pre>
--   360p
--   </pre>
CSR360p :: CdnSettingsResolution

-- | <pre>
--   480p
--   </pre>
CSR480p :: CdnSettingsResolution

-- | <pre>
--   720p
--   </pre>
CSR720p :: CdnSettingsResolution
data LiveChatUserBannedMessageDetails

-- | Creates a value of <a>LiveChatUserBannedMessageDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcubmdBanType</a></li>
--   <li><a>lcubmdBannedUserDetails</a></li>
--   <li><a>lcubmdBanDurationSeconds</a></li>
--   </ul>
liveChatUserBannedMessageDetails :: LiveChatUserBannedMessageDetails

-- | The type of ban.
lcubmdBanType :: Lens' LiveChatUserBannedMessageDetails (Maybe LiveChatUserBannedMessageDetailsBanType)

-- | The details of the user that was banned.
lcubmdBannedUserDetails :: Lens' LiveChatUserBannedMessageDetails (Maybe ChannelProFileDetails)

-- | The duration of the ban. This property is only present if the banType
--   is temporary.
lcubmdBanDurationSeconds :: Lens' LiveChatUserBannedMessageDetails (Maybe Word64)

-- | It indicates if the resource (video or channel) has upcoming/active
--   live broadcast content. Or it's "none" if there is not any
--   upcoming/active live broadcasts.
data SearchResultSnippetLiveBroadcastContent

-- | <pre>
--   live
--   </pre>
SRSLBCLive :: SearchResultSnippetLiveBroadcastContent

-- | <pre>
--   none
--   </pre>
SRSLBCNone :: SearchResultSnippetLiveBroadcastContent

-- | <pre>
--   upcoming
--   </pre>
SRSLBCUpcoming :: SearchResultSnippetLiveBroadcastContent

-- | Detailed settings of a broadcast.
--   
--   <i>See:</i> <a>liveBroadcastContentDetails</a> smart constructor.
data LiveBroadcastContentDetails

-- | Creates a value of <a>LiveBroadcastContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbcdEnableContentEncryption</a></li>
--   <li><a>lbcdEnableLowLatency</a></li>
--   <li><a>lbcdClosedCaptionsType</a></li>
--   <li><a>lbcdEnableEmbed</a></li>
--   <li><a>lbcdStartWithSlate</a></li>
--   <li><a>lbcdProjection</a></li>
--   <li><a>lbcdMonitorStream</a></li>
--   <li><a>lbcdBoundStreamId</a></li>
--   <li><a>lbcdRecordFromStart</a></li>
--   <li><a>lbcdEnableClosedCaptions</a></li>
--   <li><a>lbcdBoundStreamLastUpdateTimeMs</a></li>
--   <li><a>lbcdEnableDvr</a></li>
--   </ul>
liveBroadcastContentDetails :: LiveBroadcastContentDetails

-- | This setting indicates whether YouTube should enable content
--   encryption for the broadcast.
lbcdEnableContentEncryption :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | Indicates whether this broadcast has low latency enabled.
lbcdEnableLowLatency :: Lens' LiveBroadcastContentDetails (Maybe Bool)
lbcdClosedCaptionsType :: Lens' LiveBroadcastContentDetails (Maybe LiveBroadcastContentDetailsClosedCaptionsType)

-- | This setting indicates whether the broadcast video can be played in an
--   embedded player. If you choose to archive the video (using the
--   enableArchive property), this setting will also apply to the archived
--   video.
lbcdEnableEmbed :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | This setting indicates whether the broadcast should automatically
--   begin with an in-stream slate when you update the broadcast's status
--   to live. After updating the status, you then need to send a
--   liveCuepoints.insert request that sets the cuepoint's eventState to
--   end to remove the in-stream slate and make your broadcast stream
--   visible to viewers.
lbcdStartWithSlate :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | The projection format of this broadcast. This defaults to rectangular.
lbcdProjection :: Lens' LiveBroadcastContentDetails (Maybe LiveBroadcastContentDetailsProjection)

-- | The monitorStream object contains information about the monitor
--   stream, which the broadcaster can use to review the event content
--   before the broadcast stream is shown publicly.
lbcdMonitorStream :: Lens' LiveBroadcastContentDetails (Maybe MonitorStreamInfo)

-- | This value uniquely identifies the live stream bound to the broadcast.
lbcdBoundStreamId :: Lens' LiveBroadcastContentDetails (Maybe Text)

-- | Automatically start recording after the event goes live. The default
--   value for this property is true. Important: You must also set the
--   enableDvr property's value to true if you want the playback to be
--   available immediately after the broadcast ends. If you set this
--   property's value to true but do not also set the enableDvr property to
--   true, there may be a delay of around one day before the archived video
--   will be available for playback.
lbcdRecordFromStart :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | This setting indicates whether HTTP POST closed captioning is enabled
--   for this broadcast. The ingestion URL of the closed captions is
--   returned through the liveStreams API. This is mutually exclusive with
--   using the closed_captions_type property, and is equivalent to setting
--   closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
lbcdEnableClosedCaptions :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | The date and time that the live stream referenced by boundStreamId was
--   last updated.
lbcdBoundStreamLastUpdateTimeMs :: Lens' LiveBroadcastContentDetails (Maybe UTCTime)

-- | This setting determines whether viewers can access DVR controls while
--   watching the video. DVR controls enable the viewer to control the
--   video playback experience by pausing, rewinding, or fast forwarding
--   content. The default value for this property is true. Important: You
--   must set the value to true and also set the enableArchive property's
--   value to true if you want to make playback available immediately after
--   the broadcast ends.
lbcdEnableDvr :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | The video's Anatel (Asociación Nacional de Televisión) rating for
--   Chilean television.
data ContentRatingAnatelRating

-- | <pre>
--   anatelA
--   </pre>
AnatelA :: ContentRatingAnatelRating

-- | <pre>
--   anatelF
--   </pre>
AnatelF :: ContentRatingAnatelRating

-- | <pre>
--   anatelI
--   </pre>
AnatelI :: ContentRatingAnatelRating

-- | <pre>
--   anatelI10
--   </pre>
ANATELI10 :: ContentRatingAnatelRating

-- | <pre>
--   anatelI12
--   </pre>
ANATELI12 :: ContentRatingAnatelRating

-- | <pre>
--   anatelI7
--   </pre>
ANATELI7 :: ContentRatingAnatelRating

-- | <pre>
--   anatelR
--   </pre>
AnatelR :: ContentRatingAnatelRating

-- | <pre>
--   anatelUnrated
--   </pre>
AnatelUnrated :: ContentRatingAnatelRating

-- | The order parameter specifies the method that will be used to order
--   resources in the API response.
data SearchListOrder

-- | <tt>date</tt> Resources are sorted in reverse chronological order
--   based on the date they were created.
Date :: SearchListOrder

-- | <tt>rating</tt> Resources are sorted from highest to lowest rating.
Rating :: SearchListOrder

-- | <tt>relevance</tt> Resources are sorted based on their relevance to
--   the search query. This is the default value for this parameter.
Relevance :: SearchListOrder

-- | <tt>title</tt> Resources are sorted alphabetically by title.
Title :: SearchListOrder

-- | <tt>videoCount</tt> Channels are sorted in descending order of their
--   number of uploaded videos.
VideoCount :: SearchListOrder

-- | <tt>viewCount</tt> Resources are sorted from highest to lowest number
--   of views.
ViewCount :: SearchListOrder
data ChannelSection

-- | Creates a value of <a>ChannelSection</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csEtag</a></li>
--   <li><a>csSnippet</a></li>
--   <li><a>csKind</a></li>
--   <li><a>csContentDetails</a></li>
--   <li><a>csTargeting</a></li>
--   <li><a>csId</a></li>
--   <li><a>csLocalizations</a></li>
--   </ul>
channelSection :: ChannelSection

-- | Etag of this resource.
csEtag :: Lens' ChannelSection (Maybe Text)

-- | The snippet object contains basic details about the channel section,
--   such as its type, style and title.
csSnippet :: Lens' ChannelSection (Maybe ChannelSectionSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channelSection".
csKind :: Lens' ChannelSection Text

-- | The contentDetails object contains details about the channel section
--   content, such as a list of playlists or channels featured in the
--   section.
csContentDetails :: Lens' ChannelSection (Maybe ChannelSectionContentDetails)

-- | The targeting object contains basic targeting settings about the
--   channel section.
csTargeting :: Lens' ChannelSection (Maybe ChannelSectionTargeting)

-- | The ID that YouTube uses to uniquely identify the channel section.
csId :: Lens' ChannelSection (Maybe Text)

-- | Localizations for different languages
csLocalizations :: Lens' ChannelSection (Maybe ChannelSectionLocalizations)

-- | The video's Consejo de Calificación Cinematográfica (Chile) rating.
data ContentRatingCccRating

-- | <pre>
--   ccc14
--   </pre>
CCC14 :: ContentRatingCccRating

-- | <pre>
--   ccc18
--   </pre>
CCC18 :: ContentRatingCccRating

-- | <pre>
--   ccc18s
--   </pre>
Ccc18s :: ContentRatingCccRating

-- | <pre>
--   ccc18v
--   </pre>
Ccc18v :: ContentRatingCccRating

-- | <pre>
--   ccc6
--   </pre>
CCC6 :: ContentRatingCccRating

-- | <pre>
--   cccTe
--   </pre>
CccTe :: ContentRatingCccRating

-- | <pre>
--   cccUnrated
--   </pre>
CccUnrated :: ContentRatingCccRating
data ChannelContentDetailsRelatedPlayLists

-- | Creates a value of <a>ChannelContentDetailsRelatedPlayLists</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccdrplFavorites</a></li>
--   <li><a>ccdrplWatchHistory</a></li>
--   <li><a>ccdrplWatchLater</a></li>
--   <li><a>ccdrplUploads</a></li>
--   <li><a>ccdrplLikes</a></li>
--   </ul>
channelContentDetailsRelatedPlayLists :: ChannelContentDetailsRelatedPlayLists

-- | The ID of the playlist that contains the channel"s favorite videos.
--   Use the playlistItems.insert and playlistItems.delete to add or remove
--   items from that list.
ccdrplFavorites :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | The ID of the playlist that contains the channel"s watch history. Use
--   the playlistItems.insert and playlistItems.delete to add or remove
--   items from that list.
ccdrplWatchHistory :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | The ID of the playlist that contains the channel"s watch later
--   playlist. Use the playlistItems.insert and playlistItems.delete to add
--   or remove items from that list.
ccdrplWatchLater :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | The ID of the playlist that contains the channel"s uploaded videos.
--   Use the videos.insert method to upload new videos and the
--   videos.delete method to delete previously uploaded videos.
ccdrplUploads :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | The ID of the playlist that contains the channel"s liked videos. Use
--   the playlistItems.insert and playlistItems.delete to add or remove
--   items from that list.
ccdrplLikes :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | A live stream describes a live ingestion point.
--   
--   <i>See:</i> <a>liveStream</a> smart constructor.
data LiveStream

-- | Creates a value of <a>LiveStream</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsStatus</a></li>
--   <li><a>lsEtag</a></li>
--   <li><a>lsSnippet</a></li>
--   <li><a>lsKind</a></li>
--   <li><a>lsContentDetails</a></li>
--   <li><a>lsId</a></li>
--   <li><a>lsCdn</a></li>
--   </ul>
liveStream :: LiveStream

-- | The status object contains information about live stream's status.
lsStatus :: Lens' LiveStream (Maybe LiveStreamStatus)

-- | Etag of this resource.
lsEtag :: Lens' LiveStream (Maybe Text)

-- | The snippet object contains basic details about the stream, including
--   its channel, title, and description.
lsSnippet :: Lens' LiveStream (Maybe LiveStreamSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveStream".
lsKind :: Lens' LiveStream Text

-- | The content_details object contains information about the stream,
--   including the closed captions ingestion URL.
lsContentDetails :: Lens' LiveStream (Maybe LiveStreamContentDetails)

-- | The ID that YouTube assigns to uniquely identify the stream.
lsId :: Lens' LiveStream (Maybe Text)

-- | The cdn object defines the live stream's content delivery network
--   (CDN) settings. These settings provide details about the manner in
--   which you stream your content to YouTube.
lsCdn :: Lens' LiveStream (Maybe CdnSettings)

-- | Information about a video that was marked as a favorite video.
--   
--   <i>See:</i> <a>activityContentDetailsFavorite</a> smart constructor.
data ActivityContentDetailsFavorite

-- | Creates a value of <a>ActivityContentDetailsFavorite</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdfResourceId</a></li>
--   </ul>
activityContentDetailsFavorite :: ActivityContentDetailsFavorite

-- | The resourceId object contains information that identifies the
--   resource that was marked as a favorite.
acdfResourceId :: Lens' ActivityContentDetailsFavorite (Maybe ResourceId)

-- | Details about the content of a YouTube Video.
--   
--   <i>See:</i> <a>videoContentDetails</a> smart constructor.
data VideoContentDetails

-- | Creates a value of <a>VideoContentDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcdCountryRestriction</a></li>
--   <li><a>vcdHasCustomThumbnail</a></li>
--   <li><a>vcdDefinition</a></li>
--   <li><a>vcdDimension</a></li>
--   <li><a>vcdCaption</a></li>
--   <li><a>vcdRegionRestriction</a></li>
--   <li><a>vcdProjection</a></li>
--   <li><a>vcdDuration</a></li>
--   <li><a>vcdContentRating</a></li>
--   <li><a>vcdLicensedContent</a></li>
--   </ul>
videoContentDetails :: VideoContentDetails

-- | The countryRestriction object contains information about the countries
--   where a video is (or is not) viewable.
vcdCountryRestriction :: Lens' VideoContentDetails (Maybe AccessPolicy)

-- | Indicates whether the video uploader has provided a custom thumbnail
--   image for the video. This property is only visible to the video
--   uploader.
vcdHasCustomThumbnail :: Lens' VideoContentDetails (Maybe Bool)

-- | The value of definition indicates whether the video is available in
--   high definition or only in standard definition.
vcdDefinition :: Lens' VideoContentDetails (Maybe VideoContentDetailsDefinition)

-- | The value of dimension indicates whether the video is available in 3D
--   or in 2D.
vcdDimension :: Lens' VideoContentDetails (Maybe Text)

-- | The value of captions indicates whether the video has captions or not.
vcdCaption :: Lens' VideoContentDetails (Maybe VideoContentDetailsCaption)

-- | The regionRestriction object contains information about the countries
--   where a video is (or is not) viewable. The object will contain either
--   the contentDetails.regionRestriction.allowed property or the
--   contentDetails.regionRestriction.blocked property.
vcdRegionRestriction :: Lens' VideoContentDetails (Maybe VideoContentDetailsRegionRestriction)

-- | Specifies the projection format of the video.
vcdProjection :: Lens' VideoContentDetails (Maybe VideoContentDetailsProjection)

-- | The length of the video. The tag value is an ISO 8601 duration in the
--   format PTS, in which the letters PT indicate that the value specifies
--   a period of time, and the letters M and S refer to length in minutes
--   and seconds, respectively. The # characters preceding the M and S
--   letters are both integers that specify the number of minutes (or
--   seconds) of the video. For example, a value of PT15M51S indicates that
--   the video is 15 minutes and 51 seconds long.
vcdDuration :: Lens' VideoContentDetails (Maybe Text)

-- | Specifies the ratings that the video received under various rating
--   schemes.
vcdContentRating :: Lens' VideoContentDetails (Maybe ContentRating)

-- | The value of is_license_content indicates whether the video is
--   licensed content.
vcdLicensedContent :: Lens' VideoContentDetails (Maybe Bool)

-- | The type of audio track associated with the caption track.
data CaptionSnippetAudioTrackType

-- | <pre>
--   commentary
--   </pre>
Commentary :: CaptionSnippetAudioTrackType

-- | <pre>
--   descriptive
--   </pre>
Descriptive :: CaptionSnippetAudioTrackType

-- | <pre>
--   primary
--   </pre>
Primary :: CaptionSnippetAudioTrackType

-- | <pre>
--   unknown
--   </pre>
Unknown :: CaptionSnippetAudioTrackType

-- | Branding properties for images associated with the channel.
--   
--   <i>See:</i> <a>imageSettings</a> smart constructor.
data ImageSettings

-- | Creates a value of <a>ImageSettings</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isBannerMobileLowImageURL</a></li>
--   <li><a>isBannerTabletExtraHdImageURL</a></li>
--   <li><a>isSmallBrandedBannerImageImapScript</a></li>
--   <li><a>isBannerTvHighImageURL</a></li>
--   <li><a>isBannerMobileHdImageURL</a></li>
--   <li><a>isBannerTvMediumImageURL</a></li>
--   <li><a>isBannerTvImageURL</a></li>
--   <li><a>isBannerTabletImageURL</a></li>
--   <li><a>isBannerMobileImageURL</a></li>
--   <li><a>isTrackingImageURL</a></li>
--   <li><a>isBannerMobileMediumHdImageURL</a></li>
--   <li><a>isLargeBrandedBannerImageURL</a></li>
--   <li><a>isBannerExternalURL</a></li>
--   <li><a>isBackgRoundImageURL</a></li>
--   <li><a>isSmallBrandedBannerImageURL</a></li>
--   <li><a>isBannerImageURL</a></li>
--   <li><a>isWatchIconImageURL</a></li>
--   <li><a>isBannerTvLowImageURL</a></li>
--   <li><a>isBannerMobileExtraHdImageURL</a></li>
--   <li><a>isLargeBrandedBannerImageImapScript</a></li>
--   <li><a>isBannerTabletLowImageURL</a></li>
--   <li><a>isBannerTabletHdImageURL</a></li>
--   </ul>
imageSettings :: ImageSettings

-- | Banner image. Mobile size low resolution (320x88).
isBannerMobileLowImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Tablet size extra high resolution (2560x424).
isBannerTabletExtraHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | The image map script for the small banner image.
isSmallBrandedBannerImageImapScript :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | Banner image. TV size high resolution (1920x1080).
isBannerTvHighImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Mobile size high resolution (1280x360).
isBannerMobileHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. TV size medium resolution (1280x720).
isBannerTvMediumImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. TV size extra high resolution (2120x1192).
isBannerTvImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Tablet size (1707x283).
isBannerTabletImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Mobile size (640x175).
isBannerMobileImageURL :: Lens' ImageSettings (Maybe Text)

-- | The URL for a 1px by 1px tracking pixel that can be used to collect
--   statistics for views of the channel or video pages.
isTrackingImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Mobile size medium/high resolution (960x263).
isBannerMobileMediumHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | The URL for the 854px by 70px image that appears below the video
--   player in the expanded video view of the video watch page.
isLargeBrandedBannerImageURL :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | This is used only in update requests; if it's set, we use this URL to
--   generate all of the above banner URLs.
isBannerExternalURL :: Lens' ImageSettings (Maybe Text)

-- | The URL for the background image shown on the video watch page. The
--   image should be 1200px by 615px, with a maximum file size of 128k.
isBackgRoundImageURL :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | The URL for the 640px by 70px banner image that appears below the
--   video player in the default view of the video watch page.
isSmallBrandedBannerImageURL :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | Banner image. Desktop size (1060x175).
isBannerImageURL :: Lens' ImageSettings (Maybe Text)

-- | The URL for the image that appears above the top-left corner of the
--   video player. This is a 25-pixel-high image with a flexible width that
--   cannot exceed 170 pixels.
isWatchIconImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. TV size low resolution (854x480).
isBannerTvLowImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Mobile size high resolution (1440x395).
isBannerMobileExtraHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | The image map script for the large banner image.
isLargeBrandedBannerImageImapScript :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | Banner image. Tablet size low resolution (1138x188).
isBannerTabletLowImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Tablet size high resolution (2276x377).
isBannerTabletHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | Freebase topic information related to the video.
--   
--   <i>See:</i> <a>videoTopicDetails</a> smart constructor.
data VideoTopicDetails

-- | Creates a value of <a>VideoTopicDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtdTopicIds</a></li>
--   <li><a>vtdRelevantTopicIds</a></li>
--   </ul>
videoTopicDetails :: VideoTopicDetails

-- | A list of Freebase topic IDs that are centrally associated with the
--   video. These are topics that are centrally featured in the video, and
--   it can be said that the video is mainly about each of these. You can
--   retrieve information about each topic using the Freebase Topic API.
vtdTopicIds :: Lens' VideoTopicDetails [Text]

-- | Similar to topic_id, except that these topics are merely relevant to
--   the video. These are topics that may be mentioned in, or appear in the
--   video. You can retrieve information about each topic using Freebase
--   Topic API.
vtdRelevantTopicIds :: Lens' VideoTopicDetails [Text]

-- | Information about a resource that received a comment.
--   
--   <i>See:</i> <a>activityContentDetailsComment</a> smart constructor.
data ActivityContentDetailsComment

-- | Creates a value of <a>ActivityContentDetailsComment</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdcResourceId</a></li>
--   </ul>
activityContentDetailsComment :: ActivityContentDetailsComment

-- | The resourceId object contains information that identifies the
--   resource associated with the comment.
acdcResourceId :: Lens' ActivityContentDetailsComment (Maybe ResourceId)

-- | Privacy status of the channel.
data ChannelStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
CSPSPrivate :: ChannelStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
CSPSPublic :: ChannelStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
CSPSUnListed :: ChannelStatusPrivacyStatus
data LiveBroadcastStatus

-- | Creates a value of <a>LiveBroadcastStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbsLiveBroadcastPriority</a></li>
--   <li><a>lbsRecordingStatus</a></li>
--   <li><a>lbsLifeCycleStatus</a></li>
--   <li><a>lbsPrivacyStatus</a></li>
--   </ul>
liveBroadcastStatus :: LiveBroadcastStatus

-- | Priority of the live broadcast event (internal state).
lbsLiveBroadcastPriority :: Lens' LiveBroadcastStatus (Maybe LiveBroadcastStatusLiveBroadcastPriority)

-- | The broadcast's recording status.
lbsRecordingStatus :: Lens' LiveBroadcastStatus (Maybe LiveBroadcastStatusRecordingStatus)

-- | The broadcast's status. The status can be updated using the API's
--   liveBroadcasts.transition method.
lbsLifeCycleStatus :: Lens' LiveBroadcastStatus (Maybe LiveBroadcastStatusLifeCycleStatus)

-- | The broadcast's privacy status. Note that the broadcast represents
--   exactly one YouTube video, so the privacy settings are identical to
--   those supported for videos. In addition, you can set this field by
--   modifying the broadcast resource or by setting the privacyStatus field
--   of the corresponding video resource.
lbsPrivacyStatus :: Lens' LiveBroadcastStatus (Maybe LiveBroadcastStatusPrivacyStatus)

-- | Information about the uploaded video.
--   
--   <i>See:</i> <a>activityContentDetailsUpload</a> smart constructor.
data ActivityContentDetailsUpload

-- | Creates a value of <a>ActivityContentDetailsUpload</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acduVideoId</a></li>
--   </ul>
activityContentDetailsUpload :: ActivityContentDetailsUpload

-- | The ID that YouTube uses to uniquely identify the uploaded video.
acduVideoId :: Lens' ActivityContentDetailsUpload (Maybe Text)

-- | Information about a new playlist item.
--   
--   <i>See:</i> <a>activityContentDetailsPlayListItem</a> smart
--   constructor.
data ActivityContentDetailsPlayListItem

-- | Creates a value of <a>ActivityContentDetailsPlayListItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdpliResourceId</a></li>
--   <li><a>acdpliPlayListId</a></li>
--   <li><a>acdpliPlayListItemId</a></li>
--   </ul>
activityContentDetailsPlayListItem :: ActivityContentDetailsPlayListItem

-- | The resourceId object contains information about the resource that was
--   added to the playlist.
acdpliResourceId :: Lens' ActivityContentDetailsPlayListItem (Maybe ResourceId)

-- | The value that YouTube uses to uniquely identify the playlist.
acdpliPlayListId :: Lens' ActivityContentDetailsPlayListItem (Maybe Text)

-- | ID of the item within the playlist.
acdpliPlayListItemId :: Lens' ActivityContentDetailsPlayListItem (Maybe Text)

-- | Details about a social network post.
--   
--   <i>See:</i> <a>activityContentDetailsSocial</a> smart constructor.
data ActivityContentDetailsSocial

-- | Creates a value of <a>ActivityContentDetailsSocial</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdsResourceId</a></li>
--   <li><a>acdsImageURL</a></li>
--   <li><a>acdsAuthor</a></li>
--   <li><a>acdsReferenceURL</a></li>
--   <li><a>acdsType</a></li>
--   </ul>
activityContentDetailsSocial :: ActivityContentDetailsSocial

-- | The resourceId object encapsulates information that identifies the
--   resource associated with a social network post.
acdsResourceId :: Lens' ActivityContentDetailsSocial (Maybe ResourceId)

-- | An image of the post's author.
acdsImageURL :: Lens' ActivityContentDetailsSocial (Maybe Text)

-- | The author of the social network post.
acdsAuthor :: Lens' ActivityContentDetailsSocial (Maybe Text)

-- | The URL of the social network post.
acdsReferenceURL :: Lens' ActivityContentDetailsSocial (Maybe Text)

-- | The name of the social network.
acdsType :: Lens' ActivityContentDetailsSocial (Maybe ActivityContentDetailsSocialType)
data VideoSuggestionsEditorSuggestionsItem

-- | <pre>
--   audioQuietAudioSwap
--   </pre>
AudioQuietAudioSwap :: VideoSuggestionsEditorSuggestionsItem

-- | <pre>
--   videoAutoLevels
--   </pre>
VideoAutoLevels :: VideoSuggestionsEditorSuggestionsItem

-- | <pre>
--   videoCrop
--   </pre>
VideoCrop :: VideoSuggestionsEditorSuggestionsItem

-- | <pre>
--   videoStabilize
--   </pre>
VideoStabilize :: VideoSuggestionsEditorSuggestionsItem

-- | The video's rating from the Canadian Radio-Television and
--   Telecommunications Commission (CRTC) for Canadian French-language
--   broadcasts. For more information, see the Canadian Broadcast Standards
--   Council website.
data ContentRatingCatvfrRating

-- | <pre>
--   catvfr13plus
--   </pre>
Catvfr13plus :: ContentRatingCatvfrRating

-- | <pre>
--   catvfr16plus
--   </pre>
Catvfr16plus :: ContentRatingCatvfrRating

-- | <pre>
--   catvfr18plus
--   </pre>
Catvfr18plus :: ContentRatingCatvfrRating

-- | <pre>
--   catvfr8plus
--   </pre>
Catvfr8plus :: ContentRatingCatvfrRating

-- | <pre>
--   catvfrG
--   </pre>
CatvfrG :: ContentRatingCatvfrRating

-- | <pre>
--   catvfrUnrated
--   </pre>
CatvfrUnrated :: ContentRatingCatvfrRating

-- | The video's rating from Romania's CONSILIUL NATIONAL AL
--   AUDIOVIZUALULUI (CNA).
data ContentRatingCnaRating

-- | <pre>
--   cna12
--   </pre>
CNA12 :: ContentRatingCnaRating

-- | <pre>
--   cna15
--   </pre>
CNA15 :: ContentRatingCnaRating

-- | <pre>
--   cna18
--   </pre>
CNA18 :: ContentRatingCnaRating

-- | <pre>
--   cna18plus
--   </pre>
Cna18plus :: ContentRatingCnaRating

-- | <pre>
--   cnaAp
--   </pre>
CnaAp :: ContentRatingCnaRating

-- | <pre>
--   cnaUnrated
--   </pre>
CnaUnrated :: ContentRatingCnaRating

-- | A liveChatBan resource represents a ban for a YouTube live chat.
--   
--   <i>See:</i> <a>liveChatBan</a> smart constructor.
data LiveChatBan

-- | Creates a value of <a>LiveChatBan</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcbEtag</a></li>
--   <li><a>lcbSnippet</a></li>
--   <li><a>lcbKind</a></li>
--   <li><a>lcbId</a></li>
--   </ul>
liveChatBan :: LiveChatBan

-- | Etag of this resource.
lcbEtag :: Lens' LiveChatBan (Maybe Text)

-- | The snippet object contains basic details about the ban.
lcbSnippet :: Lens' LiveChatBan (Maybe LiveChatBanSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatBan".
lcbKind :: Lens' LiveChatBan Text

-- | The ID that YouTube assigns to uniquely identify the ban.
lcbId :: Lens' LiveChatBan (Maybe Text)

-- | The video's Canadian Home Video Rating System (CHVRS) rating.
data ContentRatingChvrsRating

-- | <pre>
--   chvrs14a
--   </pre>
Chvrs14a :: ContentRatingChvrsRating

-- | <pre>
--   chvrs18a
--   </pre>
Chvrs18a :: ContentRatingChvrsRating

-- | <pre>
--   chvrsE
--   </pre>
ChvrsE :: ContentRatingChvrsRating

-- | <pre>
--   chvrsG
--   </pre>
ChvrsG :: ContentRatingChvrsRating

-- | <pre>
--   chvrsPg
--   </pre>
ChvrsPg :: ContentRatingChvrsRating

-- | <pre>
--   chvrsR
--   </pre>
ChvrsR :: ContentRatingChvrsRating

-- | <pre>
--   chvrsUnrated
--   </pre>
ChvrsUnrated :: ContentRatingChvrsRating

-- | Information about a channel that a user subscribed to.
--   
--   <i>See:</i> <a>activityContentDetailsSubscription</a> smart
--   constructor.
data ActivityContentDetailsSubscription

-- | Creates a value of <a>ActivityContentDetailsSubscription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aResourceId</a></li>
--   </ul>
activityContentDetailsSubscription :: ActivityContentDetailsSubscription

-- | The resourceId object contains information that identifies the
--   resource that the user subscribed to.
aResourceId :: Lens' ActivityContentDetailsSubscription (Maybe ResourceId)

-- | Information about a resource that received a positive (like) rating.
--   
--   <i>See:</i> <a>activityContentDetailsLike</a> smart constructor.
data ActivityContentDetailsLike

-- | Creates a value of <a>ActivityContentDetailsLike</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdlResourceId</a></li>
--   </ul>
activityContentDetailsLike :: ActivityContentDetailsLike

-- | The resourceId object contains information that identifies the rated
--   resource.
acdlResourceId :: Lens' ActivityContentDetailsLike (Maybe ResourceId)
data PlayListContentDetails

-- | Creates a value of <a>PlayListContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plcdItemCount</a></li>
--   </ul>
playListContentDetails :: PlayListContentDetails

-- | The number of videos in the playlist.
plcdItemCount :: Lens' PlayListContentDetails (Maybe Word32)

-- | The video's INCAA (Instituto Nacional de Cine y Artes Audiovisuales -
--   Argentina) rating.
data ContentRatingIncaaRating

-- | <pre>
--   incaaAtp
--   </pre>
IncaaAtp :: ContentRatingIncaaRating

-- | <pre>
--   incaaC
--   </pre>
IncaaC :: ContentRatingIncaaRating

-- | <pre>
--   incaaSam13
--   </pre>
INCAASAM13 :: ContentRatingIncaaRating

-- | <pre>
--   incaaSam16
--   </pre>
INCAASAM16 :: ContentRatingIncaaRating

-- | <pre>
--   incaaSam18
--   </pre>
INCAASAM18 :: ContentRatingIncaaRating

-- | <pre>
--   incaaUnrated
--   </pre>
IncaaUnrated :: ContentRatingIncaaRating

-- | The video's rating from Statens medieråd (Sweden's National Media
--   Council).
data ContentRatingSmsaRating

-- | <pre>
--   smsa11
--   </pre>
SMSA11 :: ContentRatingSmsaRating

-- | <pre>
--   smsa15
--   </pre>
SMSA15 :: ContentRatingSmsaRating

-- | <pre>
--   smsa7
--   </pre>
SMSA7 :: ContentRatingSmsaRating

-- | <pre>
--   smsaA
--   </pre>
SmsaA :: ContentRatingSmsaRating

-- | <pre>
--   smsaUnrated
--   </pre>
SmsaUnrated :: ContentRatingSmsaRating

-- | Paging details for lists of resources, including total number of items
--   available and number of resources returned in a single page.
--   
--   <i>See:</i> <a>pageInfo</a> smart constructor.
data PageInfo

-- | Creates a value of <a>PageInfo</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piResultsPerPage</a></li>
--   <li><a>piTotalResults</a></li>
--   </ul>
pageInfo :: PageInfo

-- | The number of results included in the API response.
piResultsPerPage :: Lens' PageInfo (Maybe Int32)

-- | The total number of results in the result set.
piTotalResults :: Lens' PageInfo (Maybe Int32)

-- | The video's Central Board of Film Certification (CBFC - India) rating.
data ContentRatingCbfcRating

-- | <pre>
--   cbfcA
--   </pre>
CbfcA :: ContentRatingCbfcRating

-- | <pre>
--   cbfcS
--   </pre>
CbfcS :: ContentRatingCbfcRating

-- | <pre>
--   cbfcU
--   </pre>
CbfcU :: ContentRatingCbfcRating

-- | <pre>
--   cbfcUA
--   </pre>
CbfcUA :: ContentRatingCbfcRating

-- | <pre>
--   cbfcUnrated
--   </pre>
CbfcUnrated :: ContentRatingCbfcRating

-- | Basic details about a video category, such as its localized title.
--   
--   <i>See:</i> <a>videoStatus</a> smart constructor.
data VideoStatus

-- | Creates a value of <a>VideoStatus</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vsFailureReason</a></li>
--   <li><a>vsPublicStatsViewable</a></li>
--   <li><a>vsRejectionReason</a></li>
--   <li><a>vsPublishAt</a></li>
--   <li><a>vsUploadStatus</a></li>
--   <li><a>vsPrivacyStatus</a></li>
--   <li><a>vsEmbeddable</a></li>
--   <li><a>vsLicense</a></li>
--   </ul>
videoStatus :: VideoStatus

-- | This value explains why a video failed to upload. This property is
--   only present if the uploadStatus property indicates that the upload
--   failed.
vsFailureReason :: Lens' VideoStatus (Maybe VideoStatusFailureReason)

-- | This value indicates if the extended video statistics on the watch
--   page can be viewed by everyone. Note that the view count, likes, etc
--   will still be visible if this is disabled.
vsPublicStatsViewable :: Lens' VideoStatus (Maybe Bool)

-- | This value explains why YouTube rejected an uploaded video. This
--   property is only present if the uploadStatus property indicates that
--   the upload was rejected.
vsRejectionReason :: Lens' VideoStatus (Maybe VideoStatusRejectionReason)

-- | The date and time when the video is scheduled to publish. It can be
--   set only if the privacy status of the video is private. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
vsPublishAt :: Lens' VideoStatus (Maybe UTCTime)

-- | The status of the uploaded video.
vsUploadStatus :: Lens' VideoStatus (Maybe VideoStatusUploadStatus)

-- | The video's privacy status.
vsPrivacyStatus :: Lens' VideoStatus (Maybe VideoStatusPrivacyStatus)

-- | This value indicates if the video can be embedded on another website.
vsEmbeddable :: Lens' VideoStatus (Maybe Bool)

-- | The video's license.
vsLicense :: Lens' VideoStatus (Maybe VideoStatusLicense)

-- | The video's rating from the Kenya Film Classification Board.
data ContentRatingKfcbRating

-- | <pre>
--   kfcb16plus
--   </pre>
Kfcb16plus :: ContentRatingKfcbRating

-- | <pre>
--   kfcbG
--   </pre>
KfcbG :: ContentRatingKfcbRating

-- | <pre>
--   kfcbPg
--   </pre>
KfcbPg :: ContentRatingKfcbRating

-- | <pre>
--   kfcbR
--   </pre>
KfcbR :: ContentRatingKfcbRating

-- | <pre>
--   kfcbUnrated
--   </pre>
KfcbUnrated :: ContentRatingKfcbRating

-- | Describes original video file properties, including technical details
--   about audio and video streams, but also metadata information like
--   content length, digitization time, or geotagging information.
--   
--   <i>See:</i> <a>videoFileDetails</a> smart constructor.
data VideoFileDetails

-- | Creates a value of <a>VideoFileDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vfdBitrateBps</a></li>
--   <li><a>vfdCreationTime</a></li>
--   <li><a>vfdDurationMs</a></li>
--   <li><a>vfdFileSize</a></li>
--   <li><a>vfdFileType</a></li>
--   <li><a>vfdContainer</a></li>
--   <li><a>vfdVideoStreams</a></li>
--   <li><a>vfdAudioStreams</a></li>
--   <li><a>vfdFileName</a></li>
--   </ul>
videoFileDetails :: VideoFileDetails

-- | The uploaded video file's combined (video and audio) bitrate in bits
--   per second.
vfdBitrateBps :: Lens' VideoFileDetails (Maybe Word64)

-- | The date and time when the uploaded video file was created. The value
--   is specified in ISO 8601 format. Currently, the following ISO 8601
--   formats are supported: - Date only: YYYY-MM-DD - Naive time:
--   YYYY-MM-DDTHH:MM:SS - Time with timezone: YYYY-MM-DDTHH:MM:SS+HH:MM
vfdCreationTime :: Lens' VideoFileDetails (Maybe Text)

-- | The length of the uploaded video in milliseconds.
vfdDurationMs :: Lens' VideoFileDetails (Maybe Word64)

-- | The uploaded file's size in bytes. This field is present whether a
--   video file or another type of file was uploaded.
vfdFileSize :: Lens' VideoFileDetails (Maybe Word64)

-- | The uploaded file's type as detected by YouTube's video processing
--   engine. Currently, YouTube only processes video files, but this field
--   is present whether a video file or another type of file was uploaded.
vfdFileType :: Lens' VideoFileDetails (Maybe VideoFileDetailsFileType)

-- | The uploaded video file's container format.
vfdContainer :: Lens' VideoFileDetails (Maybe Text)

-- | A list of video streams contained in the uploaded video file. Each
--   item in the list contains detailed metadata about a video stream.
vfdVideoStreams :: Lens' VideoFileDetails [VideoFileDetailsVideoStream]

-- | A list of audio streams contained in the uploaded video file. Each
--   item in the list contains detailed metadata about an audio stream.
vfdAudioStreams :: Lens' VideoFileDetails [VideoFileDetailsAudioStream]

-- | The uploaded file's name. This field is present whether a video file
--   or another type of file was uploaded.
vfdFileName :: Lens' VideoFileDetails (Maybe Text)
data ThumbnailSetResponse

-- | Creates a value of <a>ThumbnailSetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsrEtag</a></li>
--   <li><a>tsrKind</a></li>
--   <li><a>tsrItems</a></li>
--   <li><a>tsrVisitorId</a></li>
--   <li><a>tsrEventId</a></li>
--   </ul>
thumbnailSetResponse :: ThumbnailSetResponse

-- | Etag of this resource.
tsrEtag :: Lens' ThumbnailSetResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#thumbnailSetResponse".
tsrKind :: Lens' ThumbnailSetResponse Text

-- | A list of thumbnails.
tsrItems :: Lens' ThumbnailSetResponse [ThumbnailDetails]

-- | The visitorId identifies the visitor.
tsrVisitorId :: Lens' ThumbnailSetResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
tsrEventId :: Lens' ThumbnailSetResponse (Maybe Text)

-- | How severe this issue is to the stream.
data LiveStreamConfigurationIssueSeverity

-- | <pre>
--   error
--   </pre>
Error' :: LiveStreamConfigurationIssueSeverity

-- | <pre>
--   info
--   </pre>
Info :: LiveStreamConfigurationIssueSeverity

-- | <pre>
--   warning
--   </pre>
Warning :: LiveStreamConfigurationIssueSeverity
data LiveBroadcastListResponse

-- | Creates a value of <a>LiveBroadcastListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lblrEtag</a></li>
--   <li><a>lblrTokenPagination</a></li>
--   <li><a>lblrNextPageToken</a></li>
--   <li><a>lblrPageInfo</a></li>
--   <li><a>lblrKind</a></li>
--   <li><a>lblrItems</a></li>
--   <li><a>lblrVisitorId</a></li>
--   <li><a>lblrEventId</a></li>
--   <li><a>lblrPrevPageToken</a></li>
--   </ul>
liveBroadcastListResponse :: LiveBroadcastListResponse

-- | Etag of this resource.
lblrEtag :: Lens' LiveBroadcastListResponse (Maybe Text)
lblrTokenPagination :: Lens' LiveBroadcastListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
lblrNextPageToken :: Lens' LiveBroadcastListResponse (Maybe Text)
lblrPageInfo :: Lens' LiveBroadcastListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveBroadcastListResponse".
lblrKind :: Lens' LiveBroadcastListResponse Text

-- | A list of broadcasts that match the request criteria.
lblrItems :: Lens' LiveBroadcastListResponse [LiveBroadcast]

-- | The visitorId identifies the visitor.
lblrVisitorId :: Lens' LiveBroadcastListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
lblrEventId :: Lens' LiveBroadcastListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
lblrPrevPageToken :: Lens' LiveBroadcastListResponse (Maybe Text)

-- | Details about the content of a channel.
--   
--   <i>See:</i> <a>channelContentDetails</a> smart constructor.
data ChannelContentDetails

-- | Creates a value of <a>ChannelContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccdRelatedPlayLists</a></li>
--   </ul>
channelContentDetails :: ChannelContentDetails
ccdRelatedPlayLists :: Lens' ChannelContentDetails (Maybe ChannelContentDetailsRelatedPlayLists)

-- | The videoDefinition parameter lets you restrict a search to only
--   include either high definition (HD) or standard definition (SD)
--   videos. HD videos are available for playback in at least 720p, though
--   higher resolutions, like 1080p, might also be available. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
data SearchListVideoDefinition

-- | <tt>any</tt> Return all videos, regardless of their resolution.
SLVDAny :: SearchListVideoDefinition

-- | <tt>high</tt> Only retrieve HD videos.
SLVDHigh :: SearchListVideoDefinition

-- | <tt>standard</tt> Only retrieve videos in standard definition.
SLVDStandard :: SearchListVideoDefinition

-- | Details about a resource which was added to a channel.
--   
--   <i>See:</i> <a>activityContentDetailsChannelItem</a> smart
--   constructor.
data ActivityContentDetailsChannelItem

-- | Creates a value of <a>ActivityContentDetailsChannelItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdciResourceId</a></li>
--   </ul>
activityContentDetailsChannelItem :: ActivityContentDetailsChannelItem

-- | The resourceId object contains information that identifies the
--   resource that was added to the channel.
acdciResourceId :: Lens' ActivityContentDetailsChannelItem (Maybe ResourceId)
data VideoListResponse

-- | Creates a value of <a>VideoListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlrEtag</a></li>
--   <li><a>vlrTokenPagination</a></li>
--   <li><a>vlrNextPageToken</a></li>
--   <li><a>vlrPageInfo</a></li>
--   <li><a>vlrKind</a></li>
--   <li><a>vlrItems</a></li>
--   <li><a>vlrVisitorId</a></li>
--   <li><a>vlrEventId</a></li>
--   <li><a>vlrPrevPageToken</a></li>
--   </ul>
videoListResponse :: VideoListResponse

-- | Etag of this resource.
vlrEtag :: Lens' VideoListResponse (Maybe Text)
vlrTokenPagination :: Lens' VideoListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
vlrNextPageToken :: Lens' VideoListResponse (Maybe Text)
vlrPageInfo :: Lens' VideoListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoListResponse".
vlrKind :: Lens' VideoListResponse Text

-- | A list of videos that match the request criteria.
vlrItems :: Lens' VideoListResponse [Video]

-- | The visitorId identifies the visitor.
vlrVisitorId :: Lens' VideoListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
vlrEventId :: Lens' VideoListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
vlrPrevPageToken :: Lens' VideoListResponse (Maybe Text)

-- | Details about monetization of a YouTube Video.
--   
--   <i>See:</i> <a>videoMonetizationDetails</a> smart constructor.
data VideoMonetizationDetails

-- | Creates a value of <a>VideoMonetizationDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vmdAccess</a></li>
--   </ul>
videoMonetizationDetails :: VideoMonetizationDetails

-- | The value of access indicates whether the video can be monetized or
--   not.
vmdAccess :: Lens' VideoMonetizationDetails (Maybe AccessPolicy)

-- | Video game rating, if any.
data VideoAgeGatingVideoGameRating

-- | <pre>
--   anyone
--   </pre>
Anyone :: VideoAgeGatingVideoGameRating

-- | <pre>
--   m15Plus
--   </pre>
M15Plus :: VideoAgeGatingVideoGameRating

-- | <pre>
--   m16Plus
--   </pre>
M16Plus :: VideoAgeGatingVideoGameRating

-- | <pre>
--   m17Plus
--   </pre>
M17Plus :: VideoAgeGatingVideoGameRating

-- | The video's rating from Indonesia's Lembaga Sensor Film.
data ContentRatingLsfRating

-- | <pre>
--   lsf13
--   </pre>
LSF13 :: ContentRatingLsfRating

-- | <pre>
--   lsf17
--   </pre>
LSF17 :: ContentRatingLsfRating

-- | <pre>
--   lsf21
--   </pre>
LSF21 :: ContentRatingLsfRating

-- | <pre>
--   lsfA
--   </pre>
LsfA :: ContentRatingLsfRating

-- | <pre>
--   lsfBo
--   </pre>
LsfBo :: ContentRatingLsfRating

-- | <pre>
--   lsfD
--   </pre>
LsfD :: ContentRatingLsfRating

-- | <pre>
--   lsfR
--   </pre>
LsfR :: ContentRatingLsfRating

-- | <pre>
--   lsfSu
--   </pre>
LsfSu :: ContentRatingLsfRating

-- | <pre>
--   lsfUnrated
--   </pre>
LsfUnrated :: ContentRatingLsfRating

-- | A single tag suggestion with it's relevance information.
--   
--   <i>See:</i> <a>videoSuggestionsTagSuggestion</a> smart constructor.
data VideoSuggestionsTagSuggestion

-- | Creates a value of <a>VideoSuggestionsTagSuggestion</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vstsTag</a></li>
--   <li><a>vstsCategoryRestricts</a></li>
--   </ul>
videoSuggestionsTagSuggestion :: VideoSuggestionsTagSuggestion

-- | The keyword tag suggested for the video.
vstsTag :: Lens' VideoSuggestionsTagSuggestion (Maybe Text)

-- | A set of video categories for which the tag is relevant. You can use
--   this information to display appropriate tag suggestions based on the
--   video category that the video uploader associates with the video. By
--   default, tag suggestions are relevant for all categories if there are
--   no restricts defined for the keyword.
vstsCategoryRestricts :: Lens' VideoSuggestionsTagSuggestion [Text]
data LiveChatModeratorListResponse

-- | Creates a value of <a>LiveChatModeratorListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lEtag</a></li>
--   <li><a>lTokenPagination</a></li>
--   <li><a>lNextPageToken</a></li>
--   <li><a>lPageInfo</a></li>
--   <li><a>lKind</a></li>
--   <li><a>lItems</a></li>
--   <li><a>lVisitorId</a></li>
--   <li><a>lEventId</a></li>
--   <li><a>lPrevPageToken</a></li>
--   </ul>
liveChatModeratorListResponse :: LiveChatModeratorListResponse

-- | Etag of this resource.
lEtag :: Lens' LiveChatModeratorListResponse (Maybe Text)
lTokenPagination :: Lens' LiveChatModeratorListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
lNextPageToken :: Lens' LiveChatModeratorListResponse (Maybe Text)
lPageInfo :: Lens' LiveChatModeratorListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatModeratorListResponse".
lKind :: Lens' LiveChatModeratorListResponse Text

-- | A list of moderators that match the request criteria.
lItems :: Lens' LiveChatModeratorListResponse [LiveChatModerator]

-- | The visitorId identifies the visitor.
lVisitorId :: Lens' LiveChatModeratorListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
lEventId :: Lens' LiveChatModeratorListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
lPrevPageToken :: Lens' LiveChatModeratorListResponse (Maybe Text)

-- | Basic details about an activity, including title, description,
--   thumbnails, activity type and group.
--   
--   <i>See:</i> <a>activitySnippet</a> smart constructor.
data ActivitySnippet

-- | Creates a value of <a>ActivitySnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asPublishedAt</a></li>
--   <li><a>asChannelTitle</a></li>
--   <li><a>asChannelId</a></li>
--   <li><a>asThumbnails</a></li>
--   <li><a>asGroupId</a></li>
--   <li><a>asTitle</a></li>
--   <li><a>asType</a></li>
--   <li><a>asDescription</a></li>
--   </ul>
activitySnippet :: ActivitySnippet

-- | The date and time that the video was uploaded. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
asPublishedAt :: Lens' ActivitySnippet (Maybe UTCTime)

-- | Channel title for the channel responsible for this activity
asChannelTitle :: Lens' ActivitySnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the channel associated
--   with the activity.
asChannelId :: Lens' ActivitySnippet (Maybe Text)

-- | A map of thumbnail images associated with the resource that is
--   primarily associated with the activity. For each object in the map,
--   the key is the name of the thumbnail image, and the value is an object
--   that contains other information about the thumbnail.
asThumbnails :: Lens' ActivitySnippet (Maybe ThumbnailDetails)

-- | The group ID associated with the activity. A group ID identifies user
--   events that are associated with the same user and resource. For
--   example, if a user rates a video and marks the same video as a
--   favorite, the entries for those events would have the same group ID in
--   the user's activity feed. In your user interface, you can avoid
--   repetition by grouping events with the same groupId value.
asGroupId :: Lens' ActivitySnippet (Maybe Text)

-- | The title of the resource primarily associated with the activity.
asTitle :: Lens' ActivitySnippet (Maybe Text)

-- | The type of activity that the resource describes.
asType :: Lens' ActivitySnippet (Maybe ActivitySnippetType)

-- | The description of the resource primarily associated with the
--   activity.
asDescription :: Lens' ActivitySnippet (Maybe Text)

-- | Freebase topic information related to the channel.
--   
--   <i>See:</i> <a>channelTopicDetails</a> smart constructor.
data ChannelTopicDetails

-- | Creates a value of <a>ChannelTopicDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctdTopicIds</a></li>
--   </ul>
channelTopicDetails :: ChannelTopicDetails

-- | A list of Freebase topic IDs associated with the channel. You can
--   retrieve information about each topic using the Freebase Topic API.
ctdTopicIds :: Lens' ChannelTopicDetails [Text]

-- | The type of ban.
data LiveChatBanSnippetType

-- | <pre>
--   permanent
--   </pre>
LCBSTPermanent :: LiveChatBanSnippetType

-- | <pre>
--   temporary
--   </pre>
LCBSTTemporary :: LiveChatBanSnippetType

-- | The video's rating from Thailand's Board of Film and Video Censors.
data ContentRatingBfvcRating

-- | <pre>
--   bfvc13
--   </pre>
BFVC13 :: ContentRatingBfvcRating

-- | <pre>
--   bfvc15
--   </pre>
BFVC15 :: ContentRatingBfvcRating

-- | <pre>
--   bfvc18
--   </pre>
BFVC18 :: ContentRatingBfvcRating

-- | <pre>
--   bfvc20
--   </pre>
BFVC20 :: ContentRatingBfvcRating

-- | <pre>
--   bfvcB
--   </pre>
BfvcB :: ContentRatingBfvcRating

-- | <pre>
--   bfvcE
--   </pre>
BfvcE :: ContentRatingBfvcRating

-- | <pre>
--   bfvcG
--   </pre>
BfvcG :: ContentRatingBfvcRating

-- | <pre>
--   bfvcUnrated
--   </pre>
BfvcUnrated :: ContentRatingBfvcRating
data LiveChatPollEditedDetails

-- | Creates a value of <a>LiveChatPollEditedDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpedPrompt</a></li>
--   <li><a>lcpedItems</a></li>
--   <li><a>lcpedId</a></li>
--   </ul>
liveChatPollEditedDetails :: LiveChatPollEditedDetails
lcpedPrompt :: Lens' LiveChatPollEditedDetails (Maybe Text)
lcpedItems :: Lens' LiveChatPollEditedDetails [LiveChatPollItem]
lcpedId :: Lens' LiveChatPollEditedDetails (Maybe Text)

-- | The type of the topic.
data LiveBroadcastTopicType

-- | <pre>
--   videoGame
--   </pre>
VideoGame :: LiveBroadcastTopicType
data VideoCategoryListResponse

-- | Creates a value of <a>VideoCategoryListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vclrEtag</a></li>
--   <li><a>vclrTokenPagination</a></li>
--   <li><a>vclrNextPageToken</a></li>
--   <li><a>vclrPageInfo</a></li>
--   <li><a>vclrKind</a></li>
--   <li><a>vclrItems</a></li>
--   <li><a>vclrVisitorId</a></li>
--   <li><a>vclrEventId</a></li>
--   <li><a>vclrPrevPageToken</a></li>
--   </ul>
videoCategoryListResponse :: VideoCategoryListResponse

-- | Etag of this resource.
vclrEtag :: Lens' VideoCategoryListResponse (Maybe Text)
vclrTokenPagination :: Lens' VideoCategoryListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
vclrNextPageToken :: Lens' VideoCategoryListResponse (Maybe Text)
vclrPageInfo :: Lens' VideoCategoryListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoCategoryListResponse".
vclrKind :: Lens' VideoCategoryListResponse Text

-- | A list of video categories that can be associated with YouTube videos.
--   In this map, the video category ID is the map key, and its value is
--   the corresponding videoCategory resource.
vclrItems :: Lens' VideoCategoryListResponse [VideoCategory]

-- | The visitorId identifies the visitor.
vclrVisitorId :: Lens' VideoCategoryListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
vclrEventId :: Lens' VideoCategoryListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
vclrPrevPageToken :: Lens' VideoCategoryListResponse (Maybe Text)

-- | Describes processing status and progress and availability of some
--   other Video resource parts.
--   
--   <i>See:</i> <a>videoProcessingDetails</a> smart constructor.
data VideoProcessingDetails

-- | Creates a value of <a>VideoProcessingDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpdProcessingFailureReason</a></li>
--   <li><a>vpdProcessingIssuesAvailability</a></li>
--   <li><a>vpdProcessingProgress</a></li>
--   <li><a>vpdThumbnailsAvailability</a></li>
--   <li><a>vpdTagSuggestionsAvailability</a></li>
--   <li><a>vpdProcessingStatus</a></li>
--   <li><a>vpdEditorSuggestionsAvailability</a></li>
--   <li><a>vpdFileDetailsAvailability</a></li>
--   </ul>
videoProcessingDetails :: VideoProcessingDetails

-- | The reason that YouTube failed to process the video. This property
--   will only have a value if the processingStatus property's value is
--   failed.
vpdProcessingFailureReason :: Lens' VideoProcessingDetails (Maybe VideoProcessingDetailsProcessingFailureReason)

-- | This value indicates whether the video processing engine has generated
--   suggestions that might improve YouTube's ability to process the the
--   video, warnings that explain video processing problems, or errors that
--   cause video processing problems. You can retrieve these suggestions by
--   requesting the suggestions part in your videos.list() request.
vpdProcessingIssuesAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | The processingProgress object contains information about the progress
--   YouTube has made in processing the video. The values are really only
--   relevant if the video's processing status is processing.
vpdProcessingProgress :: Lens' VideoProcessingDetails (Maybe VideoProcessingDetailsProcessingProgress)

-- | This value indicates whether thumbnail images have been generated for
--   the video.
vpdThumbnailsAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | This value indicates whether keyword (tag) suggestions are available
--   for the video. Tags can be added to a video's metadata to make it
--   easier for other users to find the video. You can retrieve these
--   suggestions by requesting the suggestions part in your videos.list()
--   request.
vpdTagSuggestionsAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | The video's processing status. This value indicates whether YouTube
--   was able to process the video or if the video is still being
--   processed.
vpdProcessingStatus :: Lens' VideoProcessingDetails (Maybe VideoProcessingDetailsProcessingStatus)

-- | This value indicates whether video editing suggestions, which might
--   improve video quality or the playback experience, are available for
--   the video. You can retrieve these suggestions by requesting the
--   suggestions part in your videos.list() request.
vpdEditorSuggestionsAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | This value indicates whether file details are available for the
--   uploaded video. You can retrieve a video's file details by requesting
--   the fileDetails part in your videos.list() request.
vpdFileDetailsAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | Basic details about a comment thread.
--   
--   <i>See:</i> <a>commentThreadSnippet</a> smart constructor.
data CommentThreadSnippet

-- | Creates a value of <a>CommentThreadSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctsIsPublic</a></li>
--   <li><a>ctsChannelId</a></li>
--   <li><a>ctsCanReply</a></li>
--   <li><a>ctsVideoId</a></li>
--   <li><a>ctsTotalReplyCount</a></li>
--   <li><a>ctsTopLevelComment</a></li>
--   </ul>
commentThreadSnippet :: CommentThreadSnippet

-- | Whether the thread (and therefore all its comments) is visible to all
--   YouTube users.
ctsIsPublic :: Lens' CommentThreadSnippet (Maybe Bool)

-- | The YouTube channel the comments in the thread refer to or the channel
--   with the video the comments refer to. If video_id isn't set the
--   comments refer to the channel itself.
ctsChannelId :: Lens' CommentThreadSnippet (Maybe Text)

-- | Whether the current viewer of the thread can reply to it. This is
--   viewer specific - other viewers may see a different value for this
--   field.
ctsCanReply :: Lens' CommentThreadSnippet (Maybe Bool)

-- | The ID of the video the comments refer to, if any. No video_id implies
--   a channel discussion comment.
ctsVideoId :: Lens' CommentThreadSnippet (Maybe Text)

-- | The total number of replies (not including the top level comment).
ctsTotalReplyCount :: Lens' CommentThreadSnippet (Maybe Word32)

-- | The top level comment of this thread.
ctsTopLevelComment :: Lens' CommentThreadSnippet (Maybe Comment)

-- | The videoDuration parameter filters video search results based on
--   their duration. If you specify a value for this parameter, you must
--   also set the type parameter's value to video.
data SearchListVideoDuration

-- | <tt>any</tt> Do not filter video search results based on their
--   duration. This is the default value.
Any :: SearchListVideoDuration

-- | <tt>long</tt> Only include videos longer than 20 minutes.
Long :: SearchListVideoDuration

-- | <tt>medium</tt> Only include videos that are between four and 20
--   minutes long (inclusive).
Medium :: SearchListVideoDuration

-- | <tt>short</tt> Only include videos that are less than four minutes
--   long.
Short :: SearchListVideoDuration

-- | The videoCaption parameter indicates whether the API should filter
--   video search results based on whether they have captions. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
data SearchListVideoCaption

-- | <tt>any</tt> Do not filter results based on caption availability.
SLVCAny :: SearchListVideoCaption

-- | <tt>closedCaption</tt> Only include videos that have captions.
SLVCClosedCaption :: SearchListVideoCaption

-- | <tt>none</tt> Only include videos that do not have captions.
SLVCNone :: SearchListVideoCaption

-- | Set this parameter's value to like or dislike to instruct the API to
--   only return videos liked or disliked by the authenticated user.
data VideosListMyRating

-- | <tt>dislike</tt> Returns only videos disliked by the authenticated
--   user.
Dislike :: VideosListMyRating

-- | <tt>like</tt> Returns only video liked by the authenticated user.
Like :: VideosListMyRating
data ChannelSectionListResponse

-- | Creates a value of <a>ChannelSectionListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cslrEtag</a></li>
--   <li><a>cslrKind</a></li>
--   <li><a>cslrItems</a></li>
--   <li><a>cslrVisitorId</a></li>
--   <li><a>cslrEventId</a></li>
--   </ul>
channelSectionListResponse :: ChannelSectionListResponse

-- | Etag of this resource.
cslrEtag :: Lens' ChannelSectionListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channelSectionListResponse".
cslrKind :: Lens' ChannelSectionListResponse Text

-- | A list of ChannelSections that match the request criteria.
cslrItems :: Lens' ChannelSectionListResponse [ChannelSection]

-- | The visitorId identifies the visitor.
cslrVisitorId :: Lens' ChannelSectionListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
cslrEventId :: Lens' ChannelSectionListResponse (Maybe Text)

-- | The rating the viewer has given to this comment. For the time being
--   this will never return RATE_TYPE_DISLIKE and instead return
--   RATE_TYPE_NONE. This may change in the future.
data CommentSnippetViewerRating

-- | <pre>
--   dislike
--   </pre>
CSVRDislike :: CommentSnippetViewerRating

-- | <pre>
--   like
--   </pre>
CSVRLike :: CommentSnippetViewerRating

-- | <pre>
--   none
--   </pre>
CSVRNone :: CommentSnippetViewerRating

-- | <pre>
--   unspecified
--   </pre>
CSVRUnspecified :: CommentSnippetViewerRating

-- | A videoAbuseReportReason resource identifies a reason that a video
--   could be reported as abusive. Video abuse report reasons are used with
--   video.ReportAbuse.
--   
--   <i>See:</i> <a>videoAbuseReportReason</a> smart constructor.
data VideoAbuseReportReason

-- | Creates a value of <a>VideoAbuseReportReason</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varrEtag</a></li>
--   <li><a>varrSnippet</a></li>
--   <li><a>varrKind</a></li>
--   <li><a>varrId</a></li>
--   </ul>
videoAbuseReportReason :: VideoAbuseReportReason

-- | Etag of this resource.
varrEtag :: Lens' VideoAbuseReportReason (Maybe Text)

-- | The snippet object contains basic details about the abuse report
--   reason.
varrSnippet :: Lens' VideoAbuseReportReason (Maybe VideoAbuseReportReasonSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoAbuseReportReason".
varrKind :: Lens' VideoAbuseReportReason Text

-- | The high-level, or primary, reason that the content is abusive. The
--   value is an abuse report reason ID.
varrId :: Lens' VideoAbuseReportReason (Maybe Text)
data LiveStreamConfigurationIssue

-- | Creates a value of <a>LiveStreamConfigurationIssue</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsciSeverity</a></li>
--   <li><a>lsciReason</a></li>
--   <li><a>lsciType</a></li>
--   <li><a>lsciDescription</a></li>
--   </ul>
liveStreamConfigurationIssue :: LiveStreamConfigurationIssue

-- | How severe this issue is to the stream.
lsciSeverity :: Lens' LiveStreamConfigurationIssue (Maybe LiveStreamConfigurationIssueSeverity)

-- | The short-form reason for this issue.
lsciReason :: Lens' LiveStreamConfigurationIssue (Maybe Text)

-- | The kind of error happening.
lsciType :: Lens' LiveStreamConfigurationIssue (Maybe LiveStreamConfigurationIssueType)

-- | The long-form description of the issue and how to resolve it.
lsciDescription :: Lens' LiveStreamConfigurationIssue (Maybe Text)

-- | A liveChatMessage resource represents a chat message in a YouTube Live
--   Chat.
--   
--   <i>See:</i> <a>liveChatMessage</a> smart constructor.
data LiveChatMessage

-- | Creates a value of <a>LiveChatMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmEtag</a></li>
--   <li><a>lcmSnippet</a></li>
--   <li><a>lcmKind</a></li>
--   <li><a>lcmAuthorDetails</a></li>
--   <li><a>lcmId</a></li>
--   </ul>
liveChatMessage :: LiveChatMessage

-- | Etag of this resource.
lcmEtag :: Lens' LiveChatMessage (Maybe Text)

-- | The snippet object contains basic details about the message.
lcmSnippet :: Lens' LiveChatMessage (Maybe LiveChatMessageSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatMessage".
lcmKind :: Lens' LiveChatMessage Text

-- | The authorDetails object contains basic details about the user that
--   posted this message.
lcmAuthorDetails :: Lens' LiveChatMessage (Maybe LiveChatMessageAuthorDetails)

-- | The ID that YouTube assigns to uniquely identify the message.
lcmId :: Lens' LiveChatMessage (Maybe Text)

-- | A channel resource contains information about a YouTube channel.
--   
--   <i>See:</i> <a>channel</a> smart constructor.
data Channel

-- | Creates a value of <a>Channel</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>chaStatus</a></li>
--   <li><a>chaEtag</a></li>
--   <li><a>chaAuditDetails</a></li>
--   <li><a>chaContentOwnerDetails</a></li>
--   <li><a>chaSnippet</a></li>
--   <li><a>chaKind</a></li>
--   <li><a>chaTopicDetails</a></li>
--   <li><a>chaContentDetails</a></li>
--   <li><a>chaConversionPings</a></li>
--   <li><a>chaBrandingSettings</a></li>
--   <li><a>chaId</a></li>
--   <li><a>chaInvideoPromotion</a></li>
--   <li><a>chaStatistics</a></li>
--   <li><a>chaLocalizations</a></li>
--   </ul>
channel :: Channel

-- | The status object encapsulates information about the privacy status of
--   the channel.
chaStatus :: Lens' Channel (Maybe ChannelStatus)

-- | Etag of this resource.
chaEtag :: Lens' Channel (Maybe Text)

-- | The auditionDetails object encapsulates channel data that is relevant
--   for YouTube Partners during the audition process.
chaAuditDetails :: Lens' Channel (Maybe ChannelAuditDetails)

-- | The contentOwnerDetails object encapsulates channel data that is
--   relevant for YouTube Partners linked with the channel.
chaContentOwnerDetails :: Lens' Channel (Maybe ChannelContentOwnerDetails)

-- | The snippet object contains basic details about the channel, such as
--   its title, description, and thumbnail images.
chaSnippet :: Lens' Channel (Maybe ChannelSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channel".
chaKind :: Lens' Channel Text

-- | The topicDetails object encapsulates information about Freebase topics
--   associated with the channel.
chaTopicDetails :: Lens' Channel (Maybe ChannelTopicDetails)

-- | The contentDetails object encapsulates information about the channel's
--   content.
chaContentDetails :: Lens' Channel (Maybe ChannelContentDetails)

-- | The conversionPings object encapsulates information about conversion
--   pings that need to be respected by the channel.
chaConversionPings :: Lens' Channel (Maybe ChannelConversionPings)

-- | The brandingSettings object encapsulates information about the
--   branding of the channel.
chaBrandingSettings :: Lens' Channel (Maybe ChannelBrandingSettings)

-- | The ID that YouTube uses to uniquely identify the channel.
chaId :: Lens' Channel (Maybe Text)

-- | The invideoPromotion object encapsulates information about promotion
--   campaign associated with the channel.
chaInvideoPromotion :: Lens' Channel (Maybe InvideoPromotion)

-- | The statistics object encapsulates statistics for the channel.
chaStatistics :: Lens' Channel (Maybe ChannelStatistics)

-- | Localizations for different languages
chaLocalizations :: Lens' Channel (Maybe ChannelLocalizations)

-- | ChannelSection targeting setting.
--   
--   <i>See:</i> <a>channelSectionTargeting</a> smart constructor.
data ChannelSectionTargeting

-- | Creates a value of <a>ChannelSectionTargeting</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cstRegions</a></li>
--   <li><a>cstCountries</a></li>
--   <li><a>cstLanguages</a></li>
--   </ul>
channelSectionTargeting :: ChannelSectionTargeting

-- | The region the channel section is targeting.
cstRegions :: Lens' ChannelSectionTargeting [Text]

-- | The country the channel section is targeting.
cstCountries :: Lens' ChannelSectionTargeting [Text]

-- | The language the channel section is targeting.
cstLanguages :: Lens' ChannelSectionTargeting [Text]

-- | The video's rating from Malaysia's Film Censorship Board.
data ContentRatingFcbmRating

-- | <pre>
--   fcbm18
--   </pre>
FCBM18 :: ContentRatingFcbmRating

-- | <pre>
--   fcbm18pa
--   </pre>
Fcbm18pa :: ContentRatingFcbmRating

-- | <pre>
--   fcbm18pl
--   </pre>
Fcbm18pl :: ContentRatingFcbmRating

-- | <pre>
--   fcbm18sg
--   </pre>
Fcbm18sg :: ContentRatingFcbmRating

-- | <pre>
--   fcbm18sx
--   </pre>
Fcbm18sx :: ContentRatingFcbmRating

-- | <pre>
--   fcbmP13
--   </pre>
FCBMP13 :: ContentRatingFcbmRating

-- | <pre>
--   fcbmPg13
--   </pre>
FCBMPG13 :: ContentRatingFcbmRating

-- | <pre>
--   fcbmU
--   </pre>
FcbmU :: ContentRatingFcbmRating

-- | <pre>
--   fcbmUnrated
--   </pre>
FcbmUnrated :: ContentRatingFcbmRating
data LiveStreamListResponse

-- | Creates a value of <a>LiveStreamListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lslrEtag</a></li>
--   <li><a>lslrTokenPagination</a></li>
--   <li><a>lslrNextPageToken</a></li>
--   <li><a>lslrPageInfo</a></li>
--   <li><a>lslrKind</a></li>
--   <li><a>lslrItems</a></li>
--   <li><a>lslrVisitorId</a></li>
--   <li><a>lslrEventId</a></li>
--   <li><a>lslrPrevPageToken</a></li>
--   </ul>
liveStreamListResponse :: LiveStreamListResponse

-- | Etag of this resource.
lslrEtag :: Lens' LiveStreamListResponse (Maybe Text)
lslrTokenPagination :: Lens' LiveStreamListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
lslrNextPageToken :: Lens' LiveStreamListResponse (Maybe Text)
lslrPageInfo :: Lens' LiveStreamListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveStreamListResponse".
lslrKind :: Lens' LiveStreamListResponse Text

-- | A list of live streams that match the request criteria.
lslrItems :: Lens' LiveStreamListResponse [LiveStream]

-- | The visitorId identifies the visitor.
lslrVisitorId :: Lens' LiveStreamListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
lslrEventId :: Lens' LiveStreamListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
lslrPrevPageToken :: Lens' LiveStreamListResponse (Maybe Text)

-- | The broadcastStatus parameter filters the API response to only include
--   broadcasts with the specified status.
data LiveBroadcastsListBroadcastStatus

-- | <tt>active</tt> Return current live broadcasts.
LBLBSActive :: LiveBroadcastsListBroadcastStatus

-- | <tt>all</tt> Return all broadcasts.
LBLBSAll :: LiveBroadcastsListBroadcastStatus

-- | <tt>completed</tt> Return broadcasts that have already ended.
LBLBSCompleted :: LiveBroadcastsListBroadcastStatus

-- | <tt>upcoming</tt> Return broadcasts that have not yet started.
LBLBSUpcoming :: LiveBroadcastsListBroadcastStatus

-- | The video's rating from Taiwan's Ministry of Culture (文化部).
data ContentRatingMoctwRating

-- | <pre>
--   moctwG
--   </pre>
MoctwG :: ContentRatingMoctwRating

-- | <pre>
--   moctwP
--   </pre>
MoctwP :: ContentRatingMoctwRating

-- | <pre>
--   moctwPg
--   </pre>
MoctwPg :: ContentRatingMoctwRating

-- | <pre>
--   moctwR
--   </pre>
MoctwR :: ContentRatingMoctwRating

-- | <pre>
--   moctwR12
--   </pre>
MOCTWR12 :: ContentRatingMoctwRating

-- | <pre>
--   moctwR15
--   </pre>
MOCTWR15 :: ContentRatingMoctwRating

-- | <pre>
--   moctwUnrated
--   </pre>
MoctwUnrated :: ContentRatingMoctwRating

-- | The video's rating from the Austrian Board of Media Classification
--   (Bundesministerium für Unterricht, Kunst und Kultur).
data ContentRatingBmukkRating

-- | <pre>
--   bmukk10
--   </pre>
BMUKK10 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk12
--   </pre>
BMUKK12 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk14
--   </pre>
BMUKK14 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk16
--   </pre>
BMUKK16 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk6
--   </pre>
BMUKK6 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk8
--   </pre>
BMUKK8 :: ContentRatingBmukkRating

-- | <pre>
--   bmukkAa
--   </pre>
BmukkAa :: ContentRatingBmukkRating

-- | <pre>
--   bmukkUnrated
--   </pre>
BmukkUnrated :: ContentRatingBmukkRating

-- | Localizations for different languages
--   
--   <i>See:</i> <a>channelLocalizations</a> smart constructor.
data ChannelLocalizations

-- | Creates a value of <a>ChannelLocalizations</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clAddtional</a></li>
--   </ul>
channelLocalizations :: HashMap Text ChannelLocalization -> ChannelLocalizations

-- | The language tag, using string since map_key require simple types.
clAddtional :: Lens' ChannelLocalizations (HashMap Text ChannelLocalization)

-- | Basic details about a playlist, including title, description and
--   thumbnails.
--   
--   <i>See:</i> <a>playListSnippet</a> smart constructor.
data PlayListSnippet

-- | Creates a value of <a>PlayListSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plsPublishedAt</a></li>
--   <li><a>plsChannelTitle</a></li>
--   <li><a>plsChannelId</a></li>
--   <li><a>plsThumbnails</a></li>
--   <li><a>plsLocalized</a></li>
--   <li><a>plsTitle</a></li>
--   <li><a>plsDescription</a></li>
--   <li><a>plsTags</a></li>
--   <li><a>plsDefaultLanguage</a></li>
--   </ul>
playListSnippet :: PlayListSnippet

-- | The date and time that the playlist was created. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
plsPublishedAt :: Lens' PlayListSnippet (Maybe UTCTime)

-- | The channel title of the channel that the video belongs to.
plsChannelTitle :: Lens' PlayListSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the channel that
--   published the playlist.
plsChannelId :: Lens' PlayListSnippet (Maybe Text)

-- | A map of thumbnail images associated with the playlist. For each
--   object in the map, the key is the name of the thumbnail image, and the
--   value is an object that contains other information about the
--   thumbnail.
plsThumbnails :: Lens' PlayListSnippet (Maybe ThumbnailDetails)

-- | Localized title and description, read-only.
plsLocalized :: Lens' PlayListSnippet (Maybe PlayListLocalization)

-- | The playlist's title.
plsTitle :: Lens' PlayListSnippet (Maybe Text)

-- | The playlist's description.
plsDescription :: Lens' PlayListSnippet (Maybe Text)

-- | Keyword tags associated with the playlist.
plsTags :: Lens' PlayListSnippet [Text]

-- | The language of the playlist's default title and description.
plsDefaultLanguage :: Lens' PlayListSnippet (Maybe Text)

-- | The video's Instituto de la Cinematografía y de las Artes
--   Audiovisuales (ICAA - Spain) rating.
data ContentRatingIcaaRating

-- | <pre>
--   icaa12
--   </pre>
ICAA12 :: ContentRatingIcaaRating

-- | <pre>
--   icaa13
--   </pre>
ICAA13 :: ContentRatingIcaaRating

-- | <pre>
--   icaa16
--   </pre>
ICAA16 :: ContentRatingIcaaRating

-- | <pre>
--   icaa18
--   </pre>
ICAA18 :: ContentRatingIcaaRating

-- | <pre>
--   icaa7
--   </pre>
ICAA7 :: ContentRatingIcaaRating

-- | <pre>
--   icaaApta
--   </pre>
IcaaApta :: ContentRatingIcaaRating

-- | <pre>
--   icaaUnrated
--   </pre>
IcaaUnrated :: ContentRatingIcaaRating

-- | <pre>
--   icaaX
--   </pre>
IcaaX :: ContentRatingIcaaRating
data VideoGetRatingResponse

-- | Creates a value of <a>VideoGetRatingResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vgrrEtag</a></li>
--   <li><a>vgrrKind</a></li>
--   <li><a>vgrrItems</a></li>
--   <li><a>vgrrVisitorId</a></li>
--   <li><a>vgrrEventId</a></li>
--   </ul>
videoGetRatingResponse :: VideoGetRatingResponse

-- | Etag of this resource.
vgrrEtag :: Lens' VideoGetRatingResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoGetRatingResponse".
vgrrKind :: Lens' VideoGetRatingResponse Text

-- | A list of ratings that match the request criteria.
vgrrItems :: Lens' VideoGetRatingResponse [VideoRating]

-- | The visitorId identifies the visitor.
vgrrVisitorId :: Lens' VideoGetRatingResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
vgrrEventId :: Lens' VideoGetRatingResponse (Maybe Text)

-- | Basic details about a video category, such as its localized title.
--   
--   <i>See:</i> <a>videoAbuseReportReasonSnippet</a> smart constructor.
data VideoAbuseReportReasonSnippet

-- | Creates a value of <a>VideoAbuseReportReasonSnippet</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varrsSecondaryReasons</a></li>
--   <li><a>varrsLabel</a></li>
--   </ul>
videoAbuseReportReasonSnippet :: VideoAbuseReportReasonSnippet

-- | The secondary reasons associated with this reason, if any are
--   available. (There might be 0 or more.)
varrsSecondaryReasons :: Lens' VideoAbuseReportReasonSnippet [VideoAbuseReportSecondaryReason]

-- | The localized label belonging to this abuse report reason.
varrsLabel :: Lens' VideoAbuseReportReasonSnippet (Maybe Text)

-- | This value explains why YouTube rejected an uploaded video. This
--   property is only present if the uploadStatus property indicates that
--   the upload was rejected.
data VideoStatusRejectionReason

-- | <pre>
--   claim
--   </pre>
Claim :: VideoStatusRejectionReason

-- | <pre>
--   copyright
--   </pre>
Copyright :: VideoStatusRejectionReason

-- | <pre>
--   duplicate
--   </pre>
Duplicate :: VideoStatusRejectionReason

-- | <pre>
--   inappropriate
--   </pre>
InAppropriate :: VideoStatusRejectionReason

-- | <pre>
--   legal
--   </pre>
Legal :: VideoStatusRejectionReason

-- | <pre>
--   length
--   </pre>
Length :: VideoStatusRejectionReason

-- | <pre>
--   termsOfUse
--   </pre>
TermsOfUse :: VideoStatusRejectionReason

-- | <pre>
--   trademark
--   </pre>
Trademark :: VideoStatusRejectionReason

-- | <pre>
--   uploaderAccountClosed
--   </pre>
UploaderAccountClosed :: VideoStatusRejectionReason

-- | <pre>
--   uploaderAccountSuspended
--   </pre>
UploaderAccountSuspended :: VideoStatusRejectionReason

-- | A caption resource represents a YouTube caption track. A caption track
--   is associated with exactly one YouTube video.
--   
--   <i>See:</i> <a>caption</a> smart constructor.
data Caption

-- | Creates a value of <a>Caption</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>capEtag</a></li>
--   <li><a>capSnippet</a></li>
--   <li><a>capKind</a></li>
--   <li><a>capId</a></li>
--   </ul>
caption :: Caption

-- | Etag of this resource.
capEtag :: Lens' Caption (Maybe Text)

-- | The snippet object contains basic details about the caption.
capSnippet :: Lens' Caption (Maybe CaptionSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#caption".
capKind :: Lens' Caption Text

-- | The ID that YouTube uses to uniquely identify the caption track.
capId :: Lens' Caption (Maybe Text)

-- | DEPRECATED Region restriction of the video.
--   
--   <i>See:</i> <a>videoContentDetailsRegionRestriction</a> smart
--   constructor.
data VideoContentDetailsRegionRestriction

-- | Creates a value of <a>VideoContentDetailsRegionRestriction</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcdrrAllowed</a></li>
--   <li><a>vcdrrBlocked</a></li>
--   </ul>
videoContentDetailsRegionRestriction :: VideoContentDetailsRegionRestriction

-- | A list of region codes that identify countries where the video is
--   viewable. If this property is present and a country is not listed in
--   its value, then the video is blocked from appearing in that country.
--   If this property is present and contains an empty list, the video is
--   blocked in all countries.
vcdrrAllowed :: Lens' VideoContentDetailsRegionRestriction [Text]

-- | A list of region codes that identify countries where the video is
--   blocked. If this property is present and a country is not listed in
--   its value, then the video is viewable in that country. If this
--   property is present and contains an empty list, the video is viewable
--   in all countries.
vcdrrBlocked :: Lens' VideoContentDetailsRegionRestriction [Text]

-- | Describes a temporal position of a visual widget inside a video.
--   
--   <i>See:</i> <a>invideoTiming</a> smart constructor.
data InvideoTiming

-- | Creates a value of <a>InvideoTiming</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itDurationMs</a></li>
--   <li><a>itOffSetMs</a></li>
--   <li><a>itType</a></li>
--   </ul>
invideoTiming :: InvideoTiming

-- | Defines the duration in milliseconds for which the promotion should be
--   displayed. If missing, the client should use the default.
itDurationMs :: Lens' InvideoTiming (Maybe Word64)

-- | Defines the time at which the promotion will appear. Depending on the
--   value of type the value of the offsetMs field will represent a time
--   offset from the start or from the end of the video, expressed in
--   milliseconds.
itOffSetMs :: Lens' InvideoTiming (Maybe Word64)

-- | Describes a timing type. If the value is offsetFromStart, then the
--   offsetMs field represents an offset from the start of the video. If
--   the value is offsetFromEnd, then the offsetMs field represents an
--   offset from the end of the video.
itType :: Lens' InvideoTiming (Maybe InvideoTimingType)

-- | Localizations for different languages
--   
--   <i>See:</i> <a>playListLocalizations</a> smart constructor.
data PlayListLocalizations

-- | Creates a value of <a>PlayListLocalizations</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pllAddtional</a></li>
--   </ul>
playListLocalizations :: HashMap Text PlayListLocalization -> PlayListLocalizations

-- | The language tag, using string since map_key require simple types.
pllAddtional :: Lens' PlayListLocalizations (HashMap Text PlayListLocalization)

-- | The video's rating in the Czech Republic.
data ContentRatingCzfilmRating

-- | <pre>
--   czfilm12
--   </pre>
CZFILM12 :: ContentRatingCzfilmRating

-- | <pre>
--   czfilm14
--   </pre>
CZFILM14 :: ContentRatingCzfilmRating

-- | <pre>
--   czfilm18
--   </pre>
CZFILM18 :: ContentRatingCzfilmRating

-- | <pre>
--   czfilmU
--   </pre>
CzfilmU :: ContentRatingCzfilmRating

-- | <pre>
--   czfilmUnrated
--   </pre>
CzfilmUnrated :: ContentRatingCzfilmRating

-- | Video processing progress and completion time estimate.
--   
--   <i>See:</i> <a>videoProcessingDetailsProcessingProgress</a> smart
--   constructor.
data VideoProcessingDetailsProcessingProgress

-- | Creates a value of <a>VideoProcessingDetailsProcessingProgress</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpdppTimeLeftMs</a></li>
--   <li><a>vpdppPartsTotal</a></li>
--   <li><a>vpdppPartsProcessed</a></li>
--   </ul>
videoProcessingDetailsProcessingProgress :: VideoProcessingDetailsProcessingProgress

-- | An estimate of the amount of time, in millseconds, that YouTube needs
--   to finish processing the video.
vpdppTimeLeftMs :: Lens' VideoProcessingDetailsProcessingProgress (Maybe Word64)

-- | An estimate of the total number of parts that need to be processed for
--   the video. The number may be updated with more precise estimates while
--   YouTube processes the video.
vpdppPartsTotal :: Lens' VideoProcessingDetailsProcessingProgress (Maybe Word64)

-- | The number of parts of the video that YouTube has already processed.
--   You can estimate the percentage of the video that YouTube has already
--   processed by calculating: 100 * parts_processed / parts_total Note
--   that since the estimated number of parts could increase without a
--   corresponding increase in the number of parts that have already been
--   processed, it is possible that the calculated progress could
--   periodically decrease while YouTube processes a video.
vpdppPartsProcessed :: Lens' VideoProcessingDetailsProcessingProgress (Maybe Word64)

-- | Basic details about a channel, including title, description and
--   thumbnails. Next available id: 15.
--   
--   <i>See:</i> <a>channelSnippet</a> smart constructor.
data ChannelSnippet

-- | Creates a value of <a>ChannelSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csPublishedAt</a></li>
--   <li><a>csCountry</a></li>
--   <li><a>csThumbnails</a></li>
--   <li><a>csLocalized</a></li>
--   <li><a>csCustomURL</a></li>
--   <li><a>csTitle</a></li>
--   <li><a>csDescription</a></li>
--   <li><a>csDefaultLanguage</a></li>
--   </ul>
channelSnippet :: ChannelSnippet

-- | The date and time that the channel was created. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
csPublishedAt :: Lens' ChannelSnippet (Maybe UTCTime)

-- | The country of the channel.
csCountry :: Lens' ChannelSnippet (Maybe Text)

-- | A map of thumbnail images associated with the channel. For each object
--   in the map, the key is the name of the thumbnail image, and the value
--   is an object that contains other information about the thumbnail.
csThumbnails :: Lens' ChannelSnippet (Maybe ThumbnailDetails)

-- | Localized title and description, read-only.
csLocalized :: Lens' ChannelSnippet (Maybe ChannelLocalization)

-- | The custom url of the channel.
csCustomURL :: Lens' ChannelSnippet (Maybe Text)

-- | The channel's title.
csTitle :: Lens' ChannelSnippet (Maybe Text)

-- | The description of the channel.
csDescription :: Lens' ChannelSnippet (Maybe Text)

-- | The language of the channel's default title and description.
csDefaultLanguage :: Lens' ChannelSnippet (Maybe Text)

-- | Internal representation of thumbnails for a YouTube resource.
--   
--   <i>See:</i> <a>thumbnailDetails</a> smart constructor.
data ThumbnailDetails

-- | Creates a value of <a>ThumbnailDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdMedium</a></li>
--   <li><a>tdMaxres</a></li>
--   <li><a>tdDefault</a></li>
--   <li><a>tdStandard</a></li>
--   <li><a>tdHigh</a></li>
--   </ul>
thumbnailDetails :: ThumbnailDetails

-- | The medium quality image for this resource.
tdMedium :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | The maximum resolution quality image for this resource.
tdMaxres :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | The default image for this resource.
tdDefault :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | The standard quality image for this resource.
tdStandard :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | The high quality image for this resource.
tdHigh :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | Settings and Info of the monitor stream
--   
--   <i>See:</i> <a>monitorStreamInfo</a> smart constructor.
data MonitorStreamInfo

-- | Creates a value of <a>MonitorStreamInfo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>msiBroadcastStreamDelayMs</a></li>
--   <li><a>msiEmbedHTML</a></li>
--   <li><a>msiEnableMonitorStream</a></li>
--   </ul>
monitorStreamInfo :: MonitorStreamInfo

-- | If you have set the enableMonitorStream property to true, then this
--   property determines the length of the live broadcast delay.
msiBroadcastStreamDelayMs :: Lens' MonitorStreamInfo (Maybe Word32)

-- | HTML code that embeds a player that plays the monitor stream.
msiEmbedHTML :: Lens' MonitorStreamInfo (Maybe Text)

-- | This value determines whether the monitor stream is enabled for the
--   broadcast. If the monitor stream is enabled, then YouTube will
--   broadcast the event content on a special stream intended only for the
--   broadcaster's consumption. The broadcaster can use the stream to
--   review the event content and also to identify the optimal times to
--   insert cuepoints. You need to set this value to true if you intend to
--   have a broadcast delay for your event. Note: This property cannot be
--   updated once the broadcast is in the testing or live state.
msiEnableMonitorStream :: Lens' MonitorStreamInfo (Maybe Bool)
data LiveChatMessageSnippet

-- | Creates a value of <a>LiveChatMessageSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmsMessageDeletedDetails</a></li>
--   <li><a>lcmsLiveChatId</a></li>
--   <li><a>lcmsPublishedAt</a></li>
--   <li><a>lcmsPollOpenedDetails</a></li>
--   <li><a>lcmsPollVotedDetails</a></li>
--   <li><a>lcmsUserBannedDetails</a></li>
--   <li><a>lcmsTextMessageDetails</a></li>
--   <li><a>lcmsPollClosedDetails</a></li>
--   <li><a>lcmsMessageRetractedDetails</a></li>
--   <li><a>lcmsPollEditedDetails</a></li>
--   <li><a>lcmsType</a></li>
--   <li><a>lcmsAuthorChannelId</a></li>
--   <li><a>lcmsFanFundingEventDetails</a></li>
--   <li><a>lcmsHasDisplayContent</a></li>
--   <li><a>lcmsDisplayMessage</a></li>
--   </ul>
liveChatMessageSnippet :: LiveChatMessageSnippet
lcmsMessageDeletedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatMessageDeletedDetails)
lcmsLiveChatId :: Lens' LiveChatMessageSnippet (Maybe Text)

-- | The date and time when the message was orignally published. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lcmsPublishedAt :: Lens' LiveChatMessageSnippet (Maybe UTCTime)
lcmsPollOpenedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatPollOpenedDetails)
lcmsPollVotedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatPollVotedDetails)
lcmsUserBannedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatUserBannedMessageDetails)

-- | Details about the text message, this is only set if the type is
--   'textMessageEvent'.
lcmsTextMessageDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatTextMessageDetails)
lcmsPollClosedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatPollClosedDetails)
lcmsMessageRetractedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatMessageRetractedDetails)
lcmsPollEditedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatPollEditedDetails)

-- | The type of message, this will always be present, it determines the
--   contents of the message as well as which fields will be present.
lcmsType :: Lens' LiveChatMessageSnippet (Maybe LiveChatMessageSnippetType)

-- | The ID of the user that authored this message, this field is not
--   always filled. textMessageEvent - the user that wrote the message
--   fanFundingEvent - the user that funded the broadcast newSponsorEvent -
--   the user that just became a sponsor messageDeletedEvent - the
--   moderator that took the action messageRetractedEvent - the author that
--   retracted their message userBannedEvent - the moderator that took the
--   action
lcmsAuthorChannelId :: Lens' LiveChatMessageSnippet (Maybe Text)

-- | Details about the funding event, this is only set if the type is
--   'fanFundingEvent'.
lcmsFanFundingEventDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatFanFundingEventDetails)

-- | Whether the message has display content that should be displayed to
--   users.
lcmsHasDisplayContent :: Lens' LiveChatMessageSnippet (Maybe Bool)

-- | Contains a string that can be displayed to the user. If this field is
--   not present the message is silent, at the moment only messages of type
--   TOMBSTONE and CHAT_ENDED_EVENT are silent.
lcmsDisplayMessage :: Lens' LiveChatMessageSnippet (Maybe Text)

-- | The video's National Film Registry of the Russian Federation (MKRF -
--   Russia) rating.
data ContentRatingRussiaRating

-- | <pre>
--   russia0
--   </pre>
RUSSIA0 :: ContentRatingRussiaRating

-- | <pre>
--   russia12
--   </pre>
RUSSIA12 :: ContentRatingRussiaRating

-- | <pre>
--   russia16
--   </pre>
RUSSIA16 :: ContentRatingRussiaRating

-- | <pre>
--   russia18
--   </pre>
RUSSIA18 :: ContentRatingRussiaRating

-- | <pre>
--   russia6
--   </pre>
RUSSIA6 :: ContentRatingRussiaRating

-- | <pre>
--   russiaUnrated
--   </pre>
RussiaUnrated :: ContentRatingRussiaRating

-- | The video's rating from the Commission de Contrôle des Films
--   (Belgium).
data ContentRatingCicfRating

-- | <pre>
--   cicfE
--   </pre>
CicfE :: ContentRatingCicfRating

-- | <pre>
--   cicfKntEna
--   </pre>
CicfKntEna :: ContentRatingCicfRating

-- | <pre>
--   cicfKtEa
--   </pre>
CicfKtEa :: ContentRatingCicfRating

-- | <pre>
--   cicfUnrated
--   </pre>
CicfUnrated :: ContentRatingCicfRating

-- | This property has been deprecated. Use the
--   contentDetails.contentRating.cncRating instead.
data ContentRatingFmocRating

-- | <pre>
--   fmoc10
--   </pre>
FMOC10 :: ContentRatingFmocRating

-- | <pre>
--   fmoc12
--   </pre>
FMOC12 :: ContentRatingFmocRating

-- | <pre>
--   fmoc16
--   </pre>
FMOC16 :: ContentRatingFmocRating

-- | <pre>
--   fmoc18
--   </pre>
FMOC18 :: ContentRatingFmocRating

-- | <pre>
--   fmocE
--   </pre>
FmocE :: ContentRatingFmocRating

-- | <pre>
--   fmocU
--   </pre>
FmocU :: ContentRatingFmocRating

-- | <pre>
--   fmocUnrated
--   </pre>
FmocUnrated :: ContentRatingFmocRating

-- | The broadcastStatus parameter identifies the state to which the
--   broadcast is changing. Note that to transition a broadcast to either
--   the testing or live state, the status.streamStatus must be active for
--   the stream that the broadcast is bound to.
data LiveBroadcastsTransitionBroadcastStatus

-- | <tt>complete</tt> The broadcast is over. YouTube stops transmitting
--   video.
LBTBSComplete :: LiveBroadcastsTransitionBroadcastStatus

-- | <tt>live</tt> The broadcast is visible to its audience. YouTube
--   transmits video to the broadcast's monitor stream and its broadcast
--   stream.
LBTBSLive :: LiveBroadcastsTransitionBroadcastStatus

-- | <tt>testing</tt> Start testing the broadcast. YouTube transmits video
--   to the broadcast's monitor stream. Note that you can only transition a
--   broadcast to the testing state if its
--   contentDetails.monitorStream.enableMonitorStream property is set to
--   true.
LBTBSTesting :: LiveBroadcastsTransitionBroadcastStatus

-- | A i18nRegion resource identifies a region where YouTube is available.
--   
--   <i>See:</i> <a>i18nRegion</a> smart constructor.
data I18nRegion

-- | Creates a value of <a>I18nRegion</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irEtag</a></li>
--   <li><a>irSnippet</a></li>
--   <li><a>irKind</a></li>
--   <li><a>irId</a></li>
--   </ul>
i18nRegion :: I18nRegion

-- | Etag of this resource.
irEtag :: Lens' I18nRegion (Maybe Text)

-- | The snippet object contains basic details about the i18n region, such
--   as region code and human-readable name.
irSnippet :: Lens' I18nRegion (Maybe I18nRegionSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#i18nRegion".
irKind :: Lens' I18nRegion Text

-- | The ID that YouTube uses to uniquely identify the i18n region.
irId :: Lens' I18nRegion (Maybe Text)

-- | Statistics about a channel: number of subscribers, number of videos in
--   the channel, etc.
--   
--   <i>See:</i> <a>channelStatistics</a> smart constructor.
data ChannelStatistics

-- | Creates a value of <a>ChannelStatistics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csCommentCount</a></li>
--   <li><a>csSubscriberCount</a></li>
--   <li><a>csVideoCount</a></li>
--   <li><a>csHiddenSubscriberCount</a></li>
--   <li><a>csViewCount</a></li>
--   </ul>
channelStatistics :: ChannelStatistics

-- | The number of comments for the channel.
csCommentCount :: Lens' ChannelStatistics (Maybe Word64)

-- | The number of subscribers that the channel has.
csSubscriberCount :: Lens' ChannelStatistics (Maybe Word64)

-- | The number of videos uploaded to the channel.
csVideoCount :: Lens' ChannelStatistics (Maybe Word64)

-- | Whether or not the number of subscribers is shown for this user.
csHiddenSubscriberCount :: Lens' ChannelStatistics (Maybe Bool)

-- | The number of times the channel has been viewed.
csViewCount :: Lens' ChannelStatistics (Maybe Word64)
data LiveChatFanFundingEventDetails

-- | Creates a value of <a>LiveChatFanFundingEventDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcffedUserComment</a></li>
--   <li><a>lcffedAmountMicros</a></li>
--   <li><a>lcffedAmountDisplayString</a></li>
--   <li><a>lcffedCurrency</a></li>
--   </ul>
liveChatFanFundingEventDetails :: LiveChatFanFundingEventDetails

-- | The comment added by the user to this fan funding event.
lcffedUserComment :: Lens' LiveChatFanFundingEventDetails (Maybe Text)

-- | The amount of the fund.
lcffedAmountMicros :: Lens' LiveChatFanFundingEventDetails (Maybe Word64)

-- | A rendered string that displays the fund amount and currency to the
--   user.
lcffedAmountDisplayString :: Lens' LiveChatFanFundingEventDetails (Maybe Text)

-- | The currency in which the fund was made.
lcffedCurrency :: Lens' LiveChatFanFundingEventDetails (Maybe Text)

-- | The video's rating from the Maldives National Bureau of
--   Classification.
data ContentRatingNbcRating

-- | <pre>
--   nbc12plus
--   </pre>
Nbc12plus :: ContentRatingNbcRating

-- | <pre>
--   nbc15plus
--   </pre>
Nbc15plus :: ContentRatingNbcRating

-- | <pre>
--   nbc18plus
--   </pre>
Nbc18plus :: ContentRatingNbcRating

-- | <pre>
--   nbc18plusr
--   </pre>
Nbc18plusr :: ContentRatingNbcRating

-- | <pre>
--   nbcG
--   </pre>
NbcG :: ContentRatingNbcRating

-- | <pre>
--   nbcPg
--   </pre>
NbcPg :: ContentRatingNbcRating

-- | <pre>
--   nbcPu
--   </pre>
NbcPu :: ContentRatingNbcRating

-- | <pre>
--   nbcUnrated
--   </pre>
NbcUnrated :: ContentRatingNbcRating

-- | Priority of the live broadcast event (internal state).
data LiveBroadcastStatusLiveBroadcastPriority

-- | <pre>
--   high
--   </pre>
High :: LiveBroadcastStatusLiveBroadcastPriority

-- | <pre>
--   low
--   </pre>
Low :: LiveBroadcastStatusLiveBroadcastPriority

-- | <pre>
--   normal
--   </pre>
Normal :: LiveBroadcastStatusLiveBroadcastPriority

-- | The status code of this stream
data LiveStreamHealthStatusStatus

-- | <pre>
--   bad
--   </pre>
Bad :: LiveStreamHealthStatusStatus

-- | <pre>
--   good
--   </pre>
Good :: LiveStreamHealthStatusStatus

-- | <pre>
--   noData
--   </pre>
NoData :: LiveStreamHealthStatusStatus

-- | <pre>
--   ok
--   </pre>
OK :: LiveStreamHealthStatusStatus

-- | <pre>
--   revoked
--   </pre>
Revoked :: LiveStreamHealthStatusStatus

-- | Details about the content of an activity: the video that was shared,
--   the channel that was subscribed to, etc.
--   
--   <i>See:</i> <a>activityContentDetails</a> smart constructor.
data ActivityContentDetails

-- | Creates a value of <a>ActivityContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdPromotedItem</a></li>
--   <li><a>acdChannelItem</a></li>
--   <li><a>acdBulletin</a></li>
--   <li><a>acdFavorite</a></li>
--   <li><a>acdUpload</a></li>
--   <li><a>acdComment</a></li>
--   <li><a>acdSocial</a></li>
--   <li><a>acdSubscription</a></li>
--   <li><a>acdPlayListItem</a></li>
--   <li><a>acdLike</a></li>
--   <li><a>acdRecommendation</a></li>
--   </ul>
activityContentDetails :: ActivityContentDetails

-- | The promotedItem object contains details about a resource which is
--   being promoted. This property is only present if the snippet.type is
--   promotedItem.
acdPromotedItem :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsPromotedItem)

-- | The channelItem object contains details about a resource which was
--   added to a channel. This property is only present if the snippet.type
--   is channelItem.
acdChannelItem :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsChannelItem)

-- | The bulletin object contains details about a channel bulletin post.
--   This object is only present if the snippet.type is bulletin.
acdBulletin :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsBulletin)

-- | The favorite object contains information about a video that was marked
--   as a favorite video. This property is only present if the snippet.type
--   is favorite.
acdFavorite :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsFavorite)

-- | The upload object contains information about the uploaded video. This
--   property is only present if the snippet.type is upload.
acdUpload :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsUpload)

-- | The comment object contains information about a resource that received
--   a comment. This property is only present if the snippet.type is
--   comment.
acdComment :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsComment)

-- | The social object contains details about a social network post. This
--   property is only present if the snippet.type is social.
acdSocial :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsSocial)

-- | The subscription object contains information about a channel that a
--   user subscribed to. This property is only present if the snippet.type
--   is subscription.
acdSubscription :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsSubscription)

-- | The playlistItem object contains information about a new playlist
--   item. This property is only present if the snippet.type is
--   playlistItem.
acdPlayListItem :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsPlayListItem)

-- | The like object contains information about a resource that received a
--   positive (like) rating. This property is only present if the
--   snippet.type is like.
acdLike :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsLike)

-- | The recommendation object contains information about a recommended
--   resource. This property is only present if the snippet.type is
--   recommendation.
acdRecommendation :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsRecommendation)

-- | A videoCategory resource identifies a category that has been or could
--   be associated with uploaded videos.
--   
--   <i>See:</i> <a>videoCategory</a> smart constructor.
data VideoCategory

-- | Creates a value of <a>VideoCategory</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcEtag</a></li>
--   <li><a>vcSnippet</a></li>
--   <li><a>vcKind</a></li>
--   <li><a>vcId</a></li>
--   </ul>
videoCategory :: VideoCategory

-- | Etag of this resource.
vcEtag :: Lens' VideoCategory (Maybe Text)

-- | The snippet object contains basic details about the video category,
--   including its title.
vcSnippet :: Lens' VideoCategory (Maybe VideoCategorySnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoCategory".
vcKind :: Lens' VideoCategory Text

-- | The ID that YouTube uses to uniquely identify the video category.
vcId :: Lens' VideoCategory (Maybe Text)
data VideoRatingRating

-- | <pre>
--   dislike
--   </pre>
VRRDislike :: VideoRatingRating

-- | <pre>
--   like
--   </pre>
VRRLike :: VideoRatingRating

-- | <pre>
--   none
--   </pre>
VRRNone :: VideoRatingRating

-- | <pre>
--   unspecified
--   </pre>
VRRUnspecified :: VideoRatingRating
data VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   hasEditlist
--   </pre>
HasEditList :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   inconsistentResolution
--   </pre>
InconsistentResolution :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   problematicAudioCodec
--   </pre>
ProblematicAudioCodec :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   problematicVideoCodec
--   </pre>
ProblematicVideoCodec :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   unknownAudioCodec
--   </pre>
UnknownAudioCodec :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   unknownContainer
--   </pre>
UnknownContainer :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   unknownVideoCodec
--   </pre>
UnknownVideoCodec :: VideoSuggestionsProcessingWarningsItem

-- | List with all localizations.
--   
--   <i>See:</i> <a>videoLocalizations</a> smart constructor.
data VideoLocalizations

-- | Creates a value of <a>VideoLocalizations</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlAddtional</a></li>
--   </ul>
videoLocalizations :: HashMap Text VideoLocalization -> VideoLocalizations

-- | The language tag, using string since map_key require simple types.
vlAddtional :: Lens' VideoLocalizations (HashMap Text VideoLocalization)

-- | Details about a channelsection, including playlists and channels.
--   
--   <i>See:</i> <a>channelSectionContentDetails</a> smart constructor.
data ChannelSectionContentDetails

-- | Creates a value of <a>ChannelSectionContentDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cscdChannels</a></li>
--   <li><a>cscdPlayLists</a></li>
--   </ul>
channelSectionContentDetails :: ChannelSectionContentDetails

-- | The channel ids for type multiple_channels.
cscdChannels :: Lens' ChannelSectionContentDetails [Text]

-- | The playlist ids for type single_playlist and multiple_playlists. For
--   singlePlaylist, only one playlistId is allowed.
cscdPlayLists :: Lens' ChannelSectionContentDetails [Text]

-- | Describes in which corner of the video the visual widget will appear.
data InvideoPositionCornerPosition

-- | <pre>
--   bottomLeft
--   </pre>
BottomLeft :: InvideoPositionCornerPosition

-- | <pre>
--   bottomRight
--   </pre>
BottomRight :: InvideoPositionCornerPosition

-- | <pre>
--   topLeft
--   </pre>
TopLeft :: InvideoPositionCornerPosition

-- | <pre>
--   topRight
--   </pre>
TopRight :: InvideoPositionCornerPosition

-- | A video resource represents a YouTube video.
--   
--   <i>See:</i> <a>video</a> smart constructor.
data Video

-- | Creates a value of <a>Video</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vStatus</a></li>
--   <li><a>vEtag</a></li>
--   <li><a>vProjectDetails</a></li>
--   <li><a>vRecordingDetails</a></li>
--   <li><a>vSnippet</a></li>
--   <li><a>vKind</a></li>
--   <li><a>vTopicDetails</a></li>
--   <li><a>vContentDetails</a></li>
--   <li><a>vAgeGating</a></li>
--   <li><a>vFileDetails</a></li>
--   <li><a>vSuggestions</a></li>
--   <li><a>vId</a></li>
--   <li><a>vStatistics</a></li>
--   <li><a>vLocalizations</a></li>
--   <li><a>vLiveStreamingDetails</a></li>
--   <li><a>vPlayer</a></li>
--   <li><a>vProcessingDetails</a></li>
--   <li><a>vMonetizationDetails</a></li>
--   </ul>
video :: Video

-- | The status object contains information about the video's uploading,
--   processing, and privacy statuses.
vStatus :: Lens' Video (Maybe VideoStatus)

-- | Etag of this resource.
vEtag :: Lens' Video (Maybe Text)

-- | The projectDetails object contains information about the project
--   specific video metadata.
vProjectDetails :: Lens' Video (Maybe VideoProjectDetails)

-- | The recordingDetails object encapsulates information about the
--   location, date and address where the video was recorded.
vRecordingDetails :: Lens' Video (Maybe VideoRecordingDetails)

-- | The snippet object contains basic details about the video, such as its
--   title, description, and category.
vSnippet :: Lens' Video (Maybe VideoSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#video".
vKind :: Lens' Video Text

-- | The topicDetails object encapsulates information about Freebase topics
--   associated with the video.
vTopicDetails :: Lens' Video (Maybe VideoTopicDetails)

-- | The contentDetails object contains information about the video
--   content, including the length of the video and its aspect ratio.
vContentDetails :: Lens' Video (Maybe VideoContentDetails)

-- | Age restriction details related to a video. This data can only be
--   retrieved by the video owner.
vAgeGating :: Lens' Video (Maybe VideoAgeGating)

-- | The fileDetails object encapsulates information about the video file
--   that was uploaded to YouTube, including the file's resolution,
--   duration, audio and video codecs, stream bitrates, and more. This data
--   can only be retrieved by the video owner.
vFileDetails :: Lens' Video (Maybe VideoFileDetails)

-- | The suggestions object encapsulates suggestions that identify
--   opportunities to improve the video quality or the metadata for the
--   uploaded video. This data can only be retrieved by the video owner.
vSuggestions :: Lens' Video (Maybe VideoSuggestions)

-- | The ID that YouTube uses to uniquely identify the video.
vId :: Lens' Video (Maybe Text)

-- | The statistics object contains statistics about the video.
vStatistics :: Lens' Video (Maybe VideoStatistics)

-- | List with all localizations.
vLocalizations :: Lens' Video (Maybe VideoLocalizations)

-- | The liveStreamingDetails object contains metadata about a live video
--   broadcast. The object will only be present in a video resource if the
--   video is an upcoming, live, or completed live broadcast.
vLiveStreamingDetails :: Lens' Video (Maybe VideoLiveStreamingDetails)

-- | The player object contains information that you would use to play the
--   video in an embedded player.
vPlayer :: Lens' Video (Maybe VideoPlayer)

-- | The processingProgress object encapsulates information about YouTube's
--   progress in processing the uploaded video file. The properties in the
--   object identify the current processing status and an estimate of the
--   time remaining until YouTube finishes processing the video. This part
--   also indicates whether different types of data or content, such as
--   file details or thumbnail images, are available for the video. The
--   processingProgress object is designed to be polled so that the video
--   uploaded can track the progress that YouTube has made in processing
--   the uploaded video file. This data can only be retrieved by the video
--   owner.
vProcessingDetails :: Lens' Video (Maybe VideoProcessingDetails)

-- | The monetizationDetails object encapsulates information about the
--   monetization status of the video.
vMonetizationDetails :: Lens' Video (Maybe VideoMonetizationDetails)

-- | A liveBroadcast resource represents an event that will be streamed,
--   via live video, on YouTube.
--   
--   <i>See:</i> <a>liveBroadcast</a> smart constructor.
data LiveBroadcast

-- | Creates a value of <a>LiveBroadcast</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbStatus</a></li>
--   <li><a>lbEtag</a></li>
--   <li><a>lbSnippet</a></li>
--   <li><a>lbKind</a></li>
--   <li><a>lbTopicDetails</a></li>
--   <li><a>lbContentDetails</a></li>
--   <li><a>lbId</a></li>
--   <li><a>lbStatistics</a></li>
--   </ul>
liveBroadcast :: LiveBroadcast

-- | The status object contains information about the event's status.
lbStatus :: Lens' LiveBroadcast (Maybe LiveBroadcastStatus)

-- | Etag of this resource.
lbEtag :: Lens' LiveBroadcast (Maybe Text)

-- | The snippet object contains basic details about the event, including
--   its title, description, start time, and end time.
lbSnippet :: Lens' LiveBroadcast (Maybe LiveBroadcastSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveBroadcast".
lbKind :: Lens' LiveBroadcast Text
lbTopicDetails :: Lens' LiveBroadcast (Maybe LiveBroadcastTopicDetails)

-- | The contentDetails object contains information about the event's video
--   content, such as whether the content can be shown in an embedded video
--   player or if it will be archived and therefore available for viewing
--   after the event has concluded.
lbContentDetails :: Lens' LiveBroadcast (Maybe LiveBroadcastContentDetails)

-- | The ID that YouTube assigns to uniquely identify the broadcast.
lbId :: Lens' LiveBroadcast (Maybe Text)

-- | The statistics object contains info about the event's current stats.
--   These include concurrent viewers and total chat count. Statistics can
--   change (in either direction) during the lifetime of an event.
--   Statistics are only returned while the event is live.
lbStatistics :: Lens' LiveBroadcast (Maybe LiveBroadcastStatistics)

-- | The long uploads status of this channel. See
data ChannelStatusLongUploadsStatus

-- | <pre>
--   allowed
--   </pre>
Allowed :: ChannelStatusLongUploadsStatus

-- | <pre>
--   disallowed
--   </pre>
Disallowed :: ChannelStatusLongUploadsStatus

-- | <pre>
--   eligible
--   </pre>
Eligible :: ChannelStatusLongUploadsStatus

-- | <pre>
--   longUploadsUnspecified
--   </pre>
LongUploadsUnspecified :: ChannelStatusLongUploadsStatus

-- | A liveChatModerator resource represents a moderator for a YouTube live
--   chat. A chat moderator has the ability to ban/unban users from a chat,
--   remove message, etc.
--   
--   <i>See:</i> <a>liveChatModerator</a> smart constructor.
data LiveChatModerator

-- | Creates a value of <a>LiveChatModerator</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>livEtag</a></li>
--   <li><a>livSnippet</a></li>
--   <li><a>livKind</a></li>
--   <li><a>livId</a></li>
--   </ul>
liveChatModerator :: LiveChatModerator

-- | Etag of this resource.
livEtag :: Lens' LiveChatModerator (Maybe Text)

-- | The snippet object contains basic details about the moderator.
livSnippet :: Lens' LiveChatModerator (Maybe LiveChatModeratorSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatModerator".
livKind :: Lens' LiveChatModerator Text

-- | The ID that YouTube assigns to uniquely identify the moderator.
livId :: Lens' LiveChatModerator (Maybe Text)

-- | Detailed settings of a stream.
--   
--   <i>See:</i> <a>liveStreamContentDetails</a> smart constructor.
data LiveStreamContentDetails

-- | Creates a value of <a>LiveStreamContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lscdClosedCaptionsIngestionURL</a></li>
--   <li><a>lscdIsReusable</a></li>
--   </ul>
liveStreamContentDetails :: LiveStreamContentDetails

-- | The ingestion URL where the closed captions of this stream are sent.
lscdClosedCaptionsIngestionURL :: Lens' LiveStreamContentDetails (Maybe Text)

-- | Indicates whether the stream is reusable, which means that it can be
--   bound to multiple broadcasts. It is common for broadcasters to reuse
--   the same stream for many different broadcasts if those broadcasts
--   occur at different times. If you set this value to false, then the
--   stream will not be reusable, which means that it can only be bound to
--   one broadcast. Non-reusable streams differ from reusable streams in
--   the following ways: - A non-reusable stream can only be bound to one
--   broadcast. - A non-reusable stream might be deleted by an automated
--   process after the broadcast ends. - The liveStreams.list method does
--   not list non-reusable streams if you call the method and set the mine
--   parameter to true. The only way to use that method to retrieve the
--   resource for a non-reusable stream is to use the id parameter to
--   identify the stream.
lscdIsReusable :: Lens' LiveStreamContentDetails (Maybe Bool)
data LiveChatModeratorSnippet

-- | Creates a value of <a>LiveChatModeratorSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lLiveChatId</a></li>
--   <li><a>lModeratorDetails</a></li>
--   </ul>
liveChatModeratorSnippet :: LiveChatModeratorSnippet

-- | The ID of the live chat this moderator can act on.
lLiveChatId :: Lens' LiveChatModeratorSnippet (Maybe Text)

-- | Details about the moderator.
lModeratorDetails :: Lens' LiveChatModeratorSnippet (Maybe ChannelProFileDetails)

-- | The video's rating from Luxembourg's Commission de surveillance de la
--   classification des films (CSCF).
data ContentRatingCscfRating

-- | <pre>
--   cscf12
--   </pre>
CSCF12 :: ContentRatingCscfRating

-- | <pre>
--   cscf16
--   </pre>
CSCF16 :: ContentRatingCscfRating

-- | <pre>
--   cscf18
--   </pre>
CSCF18 :: ContentRatingCscfRating

-- | <pre>
--   cscf6
--   </pre>
CSCF6 :: ContentRatingCscfRating

-- | <pre>
--   cscf9
--   </pre>
CSCF9 :: ContentRatingCscfRating

-- | <pre>
--   cscfA
--   </pre>
CscfA :: ContentRatingCscfRating

-- | <pre>
--   cscfAl
--   </pre>
CscfAl :: ContentRatingCscfRating

-- | <pre>
--   cscfUnrated
--   </pre>
CscfUnrated :: ContentRatingCscfRating

-- | The broadcast's recording status.
data LiveBroadcastStatusRecordingStatus

-- | <pre>
--   notRecording
--   </pre>
NotRecording :: LiveBroadcastStatusRecordingStatus

-- | <pre>
--   recorded
--   </pre>
Recorded :: LiveBroadcastStatusRecordingStatus

-- | <pre>
--   recording
--   </pre>
Recording :: LiveBroadcastStatusRecordingStatus

-- | The amount that YouTube needs to rotate the original source content to
--   properly display the video.
data VideoFileDetailsVideoStreamRotation

-- | <pre>
--   clockwise
--   </pre>
VFDVSRClockwise :: VideoFileDetailsVideoStreamRotation

-- | <pre>
--   counterClockwise
--   </pre>
VFDVSRCounterClockwise :: VideoFileDetailsVideoStreamRotation

-- | <pre>
--   none
--   </pre>
VFDVSRNone :: VideoFileDetailsVideoStreamRotation

-- | <pre>
--   other
--   </pre>
VFDVSROther :: VideoFileDetailsVideoStreamRotation

-- | <pre>
--   upsideDown
--   </pre>
VFDVSRUpsideDown :: VideoFileDetailsVideoStreamRotation

-- | A pair Property / Value.
--   
--   <i>See:</i> <a>propertyValue</a> smart constructor.
data PropertyValue

-- | Creates a value of <a>PropertyValue</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvProperty</a></li>
--   <li><a>pvValue</a></li>
--   </ul>
propertyValue :: PropertyValue

-- | A property.
pvProperty :: Lens' PropertyValue (Maybe Text)

-- | The property's value.
pvValue :: Lens' PropertyValue (Maybe Text)

-- | The video's General Directorate of Radio, Television and
--   Cinematography (Mexico) rating.
data ContentRatingRtcRating

-- | <pre>
--   rtcA
--   </pre>
RtcA :: ContentRatingRtcRating

-- | <pre>
--   rtcAa
--   </pre>
RtcAa :: ContentRatingRtcRating

-- | <pre>
--   rtcB
--   </pre>
RtcB :: ContentRatingRtcRating

-- | <pre>
--   rtcB15
--   </pre>
RTCB15 :: ContentRatingRtcRating

-- | <pre>
--   rtcC
--   </pre>
RtcC :: ContentRatingRtcRating

-- | <pre>
--   rtcD
--   </pre>
RtcD :: ContentRatingRtcRating

-- | <pre>
--   rtcUnrated
--   </pre>
RtcUnrated :: ContentRatingRtcRating

-- | Basic details about a video, including title, description, uploader,
--   thumbnails and category.
--   
--   <i>See:</i> <a>videoSnippet</a> smart constructor.
data VideoSnippet

-- | Creates a value of <a>VideoSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vsDefaultAudioLanguage</a></li>
--   <li><a>vsPublishedAt</a></li>
--   <li><a>vsChannelTitle</a></li>
--   <li><a>vsChannelId</a></li>
--   <li><a>vsThumbnails</a></li>
--   <li><a>vsLocalized</a></li>
--   <li><a>vsCategoryId</a></li>
--   <li><a>vsTitle</a></li>
--   <li><a>vsLiveBroadcastContent</a></li>
--   <li><a>vsDescription</a></li>
--   <li><a>vsTags</a></li>
--   <li><a>vsDefaultLanguage</a></li>
--   </ul>
videoSnippet :: VideoSnippet

-- | The default_audio_language property specifies the language spoken in
--   the video's default audio track.
vsDefaultAudioLanguage :: Lens' VideoSnippet (Maybe Text)

-- | The date and time that the video was uploaded. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
vsPublishedAt :: Lens' VideoSnippet (Maybe UTCTime)

-- | Channel title for the channel that the video belongs to.
vsChannelTitle :: Lens' VideoSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the channel that the
--   video was uploaded to.
vsChannelId :: Lens' VideoSnippet (Maybe Text)

-- | A map of thumbnail images associated with the video. For each object
--   in the map, the key is the name of the thumbnail image, and the value
--   is an object that contains other information about the thumbnail.
vsThumbnails :: Lens' VideoSnippet (Maybe ThumbnailDetails)

-- | Localized snippet selected with the hl parameter. If no such
--   localization exists, this field is populated with the default snippet.
--   (Read-only)
vsLocalized :: Lens' VideoSnippet (Maybe VideoLocalization)

-- | The YouTube video category associated with the video.
vsCategoryId :: Lens' VideoSnippet (Maybe Text)

-- | The video's title.
vsTitle :: Lens' VideoSnippet (Maybe Text)

-- | Indicates if the video is an upcoming/active live broadcast. Or it's
--   "none" if the video is not an upcoming/active live broadcast.
vsLiveBroadcastContent :: Lens' VideoSnippet (Maybe VideoSnippetLiveBroadcastContent)

-- | The video's description.
vsDescription :: Lens' VideoSnippet (Maybe Text)

-- | A list of keyword tags associated with the video. Tags may contain
--   spaces.
vsTags :: Lens' VideoSnippet [Text]

-- | The language of the videos's default snippet.
vsDefaultLanguage :: Lens' VideoSnippet (Maybe Text)

-- | A fanFundingEvent resource represents a fan funding event on a YouTube
--   channel. Fan funding events occur when a user gives one-time monetary
--   support to the channel owner.
--   
--   <i>See:</i> <a>fanFundingEvent</a> smart constructor.
data FanFundingEvent

-- | Creates a value of <a>FanFundingEvent</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ffeEtag</a></li>
--   <li><a>ffeSnippet</a></li>
--   <li><a>ffeKind</a></li>
--   <li><a>ffeId</a></li>
--   </ul>
fanFundingEvent :: FanFundingEvent

-- | Etag of this resource.
ffeEtag :: Lens' FanFundingEvent (Maybe Text)

-- | The snippet object contains basic details about the fan funding event.
ffeSnippet :: Lens' FanFundingEvent (Maybe FanFundingEventSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#fanFundingEvent".
ffeKind :: Lens' FanFundingEvent Text

-- | The ID that YouTube assigns to uniquely identify the fan funding
--   event.
ffeId :: Lens' FanFundingEvent (Maybe Text)

-- | Set this parameter to limit the returned comment threads to a
--   particular moderation state. Note: This parameter is not supported for
--   use in conjunction with the id parameter.
data CommentThreadsListModerationStatus

-- | <tt>heldForReview</tt> Retrieve comment threads that are awaiting
--   review by a moderator. A comment thread can be included in the
--   response if the top-level comment or at least one of the replies to
--   that comment are awaiting review.
HeldForReview :: CommentThreadsListModerationStatus

-- | <tt>likelySpam</tt> Retrieve comment threads classified as likely to
--   be spam. A comment thread can be included in the response if the
--   top-level comment or at least one of the replies to that comment is
--   considered likely to be spam.
LikelySpam :: CommentThreadsListModerationStatus

-- | <tt>published</tt> Retrieve threads of published comments. This is the
--   default value. A comment thread can be included in the response if its
--   top-level comment has been published.
Published :: CommentThreadsListModerationStatus
data LiveBroadcastSnippet

-- | Creates a value of <a>LiveBroadcastSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbsActualEndTime</a></li>
--   <li><a>lbsLiveChatId</a></li>
--   <li><a>lbsPublishedAt</a></li>
--   <li><a>lbsScheduledEndTime</a></li>
--   <li><a>lbsChannelId</a></li>
--   <li><a>lbsScheduledStartTime</a></li>
--   <li><a>lbsThumbnails</a></li>
--   <li><a>lbsTitle</a></li>
--   <li><a>lbsActualStartTime</a></li>
--   <li><a>lbsIsDefaultBroadcast</a></li>
--   <li><a>lbsDescription</a></li>
--   </ul>
liveBroadcastSnippet :: LiveBroadcastSnippet

-- | The date and time that the broadcast actually ended. This information
--   is only available once the broadcast's state is complete. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsActualEndTime :: Lens' LiveBroadcastSnippet (Maybe UTCTime)

-- | The id of the live chat for this broadcast.
lbsLiveChatId :: Lens' LiveBroadcastSnippet (Maybe Text)

-- | The date and time that the broadcast was added to YouTube's live
--   broadcast schedule. The value is specified in ISO 8601
--   (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsPublishedAt :: Lens' LiveBroadcastSnippet (Maybe UTCTime)

-- | The date and time that the broadcast is scheduled to end. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsScheduledEndTime :: Lens' LiveBroadcastSnippet (Maybe UTCTime)

-- | The ID that YouTube uses to uniquely identify the channel that is
--   publishing the broadcast.
lbsChannelId :: Lens' LiveBroadcastSnippet (Maybe Text)

-- | The date and time that the broadcast is scheduled to start. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsScheduledStartTime :: Lens' LiveBroadcastSnippet (Maybe UTCTime)

-- | A map of thumbnail images associated with the broadcast. For each
--   nested object in this object, the key is the name of the thumbnail
--   image, and the value is an object that contains other information
--   about the thumbnail.
lbsThumbnails :: Lens' LiveBroadcastSnippet (Maybe ThumbnailDetails)

-- | The broadcast's title. Note that the broadcast represents exactly one
--   YouTube video. You can set this field by modifying the broadcast
--   resource or by setting the title field of the corresponding video
--   resource.
lbsTitle :: Lens' LiveBroadcastSnippet (Maybe Text)

-- | The date and time that the broadcast actually started. This
--   information is only available once the broadcast's state is live. The
--   value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsActualStartTime :: Lens' LiveBroadcastSnippet (Maybe UTCTime)
lbsIsDefaultBroadcast :: Lens' LiveBroadcastSnippet (Maybe Bool)

-- | The broadcast's description. As with the title, you can set this field
--   by modifying the broadcast resource or by setting the description
--   field of the corresponding video resource.
lbsDescription :: Lens' LiveBroadcastSnippet (Maybe Text)

-- | The video's rating in Iceland.
data ContentRatingSmaisRating

-- | <pre>
--   smais12
--   </pre>
SMAIS12 :: ContentRatingSmaisRating

-- | <pre>
--   smais14
--   </pre>
SMAIS14 :: ContentRatingSmaisRating

-- | <pre>
--   smais16
--   </pre>
SMAIS16 :: ContentRatingSmaisRating

-- | <pre>
--   smais18
--   </pre>
SMAIS18 :: ContentRatingSmaisRating

-- | <pre>
--   smais7
--   </pre>
SMAIS7 :: ContentRatingSmaisRating

-- | <pre>
--   smaisL
--   </pre>
SmaisL :: ContentRatingSmaisRating

-- | <pre>
--   smaisUnrated
--   </pre>
SmaisUnrated :: ContentRatingSmaisRating

-- | Rights management policy for YouTube resources.
--   
--   <i>See:</i> <a>accessPolicy</a> smart constructor.
data AccessPolicy

-- | Creates a value of <a>AccessPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apException</a></li>
--   <li><a>apAllowed</a></li>
--   </ul>
accessPolicy :: AccessPolicy

-- | A list of region codes that identify countries where the default
--   policy do not apply.
apException :: Lens' AccessPolicy [Text]

-- | The value of allowed indicates whether the access to the policy is
--   allowed or denied by default.
apAllowed :: Lens' AccessPolicy (Maybe Bool)

-- | A sponsor resource represents a sponsor for a YouTube channel. A
--   sponsor provides recurring monetary support to a creator and receives
--   special benefits.
--   
--   <i>See:</i> <a>sponsor</a> smart constructor.
data Sponsor

-- | Creates a value of <a>Sponsor</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEtag</a></li>
--   <li><a>sSnippet</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sId</a></li>
--   </ul>
sponsor :: Sponsor

-- | Etag of this resource.
sEtag :: Lens' Sponsor (Maybe Text)

-- | The snippet object contains basic details about the sponsor.
sSnippet :: Lens' Sponsor (Maybe SponsorSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#sponsor".
sKind :: Lens' Sponsor Text

-- | The ID that YouTube assigns to uniquely identify the sponsor.
sId :: Lens' Sponsor (Maybe Text)
data LiveChatMessageDeletedDetails

-- | Creates a value of <a>LiveChatMessageDeletedDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmddDeletedMessageId</a></li>
--   </ul>
liveChatMessageDeletedDetails :: LiveChatMessageDeletedDetails
lcmddDeletedMessageId :: Lens' LiveChatMessageDeletedDetails (Maybe Text)

-- | A rating that YouTube uses to identify age-restricted content.
data ContentRatingYtRating

-- | <pre>
--   ytAgeRestricted
--   </pre>
YtAgeRestricted :: ContentRatingYtRating
data CommentThreadListResponse

-- | Creates a value of <a>CommentThreadListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctlrEtag</a></li>
--   <li><a>ctlrTokenPagination</a></li>
--   <li><a>ctlrNextPageToken</a></li>
--   <li><a>ctlrPageInfo</a></li>
--   <li><a>ctlrKind</a></li>
--   <li><a>ctlrItems</a></li>
--   <li><a>ctlrVisitorId</a></li>
--   <li><a>ctlrEventId</a></li>
--   </ul>
commentThreadListResponse :: CommentThreadListResponse

-- | Etag of this resource.
ctlrEtag :: Lens' CommentThreadListResponse (Maybe Text)
ctlrTokenPagination :: Lens' CommentThreadListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
ctlrNextPageToken :: Lens' CommentThreadListResponse (Maybe Text)
ctlrPageInfo :: Lens' CommentThreadListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#commentThreadListResponse".
ctlrKind :: Lens' CommentThreadListResponse Text

-- | A list of comment threads that match the request criteria.
ctlrItems :: Lens' CommentThreadListResponse [CommentThread]

-- | The visitorId identifies the visitor.
ctlrVisitorId :: Lens' CommentThreadListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
ctlrEventId :: Lens' CommentThreadListResponse (Maybe Text)

-- | Branding properties for the watch. All deprecated.
--   
--   <i>See:</i> <a>watchSettings</a> smart constructor.
data WatchSettings

-- | Creates a value of <a>WatchSettings</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wsFeaturedPlayListId</a></li>
--   <li><a>wsBackgRoundColor</a></li>
--   <li><a>wsTextColor</a></li>
--   </ul>
watchSettings :: WatchSettings

-- | An ID that uniquely identifies a playlist that displays next to the
--   video player.
wsFeaturedPlayListId :: Lens' WatchSettings (Maybe Text)

-- | The text color for the video watch page's branded area.
wsBackgRoundColor :: Lens' WatchSettings (Maybe Text)

-- | The background color for the video watch page's branded area.
wsTextColor :: Lens' WatchSettings (Maybe Text)

-- | Brief description of the live stream cdn settings.
--   
--   <i>See:</i> <a>cdnSettings</a> smart constructor.
data CdnSettings

-- | Creates a value of <a>CdnSettings</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csIngestionInfo</a></li>
--   <li><a>csFrameRate</a></li>
--   <li><a>csFormat</a></li>
--   <li><a>csResolution</a></li>
--   <li><a>csIngestionType</a></li>
--   </ul>
cdnSettings :: CdnSettings

-- | The ingestionInfo object contains information that YouTube provides
--   that you need to transmit your RTMP or HTTP stream to YouTube.
csIngestionInfo :: Lens' CdnSettings (Maybe IngestionInfo)

-- | The frame rate of the inbound video data.
csFrameRate :: Lens' CdnSettings (Maybe CdnSettingsFrameRate)

-- | The format of the video stream that you are sending to Youtube.
csFormat :: Lens' CdnSettings (Maybe Text)

-- | The resolution of the inbound video data.
csResolution :: Lens' CdnSettings (Maybe CdnSettingsResolution)

-- | The method or protocol used to transmit the video stream.
csIngestionType :: Lens' CdnSettings (Maybe CdnSettingsIngestionType)

-- | The value of captions indicates whether the video has captions or not.
data VideoContentDetailsCaption

-- | <pre>
--   false
--   </pre>
False' :: VideoContentDetailsCaption

-- | <pre>
--   true
--   </pre>
True' :: VideoContentDetailsCaption

-- | Statistics about the live broadcast. These represent a snapshot of the
--   values at the time of the request. Statistics are only returned for
--   live broadcasts.
--   
--   <i>See:</i> <a>liveBroadcastStatistics</a> smart constructor.
data LiveBroadcastStatistics

-- | Creates a value of <a>LiveBroadcastStatistics</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbsTotalChatCount</a></li>
--   <li><a>lbsConcurrentViewers</a></li>
--   </ul>
liveBroadcastStatistics :: LiveBroadcastStatistics

-- | The total number of live chat messages currently on the broadcast. The
--   property and its value will be present if the broadcast is public, has
--   the live chat feature enabled, and has at least one message. Note that
--   this field will not be filled after the broadcast ends. So this
--   property would not identify the number of chat messages for an
--   archived video of a completed live broadcast.
lbsTotalChatCount :: Lens' LiveBroadcastStatistics (Maybe Word64)

-- | The number of viewers currently watching the broadcast. The property
--   and its value will be present if the broadcast has current viewers and
--   the broadcast owner has not hidden the viewcount for the video. Note
--   that YouTube stops tracking the number of concurrent viewers for a
--   broadcast when the broadcast ends. So, this property would not
--   identify the number of viewers watching an archived video of a live
--   broadcast that already ended.
lbsConcurrentViewers :: Lens' LiveBroadcastStatistics (Maybe Word64)

-- | The order parameter specifies the method that will be used to sort
--   resources in the API response.
data SubscriptionsListOrder

-- | <tt>alphabetical</tt> Sort alphabetically.
SLOAlphabetical :: SubscriptionsListOrder

-- | <tt>relevance</tt> Sort by relevance.
SLORelevance :: SubscriptionsListOrder

-- | <tt>unread</tt> Sort by order of activity.
SLOUnread :: SubscriptionsListOrder

-- | Basic details about a video category, such as its localized title.
--   
--   <i>See:</i> <a>videoCategorySnippet</a> smart constructor.
data VideoCategorySnippet

-- | Creates a value of <a>VideoCategorySnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcsAssignable</a></li>
--   <li><a>vcsChannelId</a></li>
--   <li><a>vcsTitle</a></li>
--   </ul>
videoCategorySnippet :: VideoCategorySnippet
vcsAssignable :: Lens' VideoCategorySnippet (Maybe Bool)

-- | The YouTube channel that created the video category.
vcsChannelId :: Lens' VideoCategorySnippet Text

-- | The video category's title.
vcsTitle :: Lens' VideoCategorySnippet (Maybe Text)

-- | An i18nLanguage resource identifies a UI language currently supported
--   by YouTube.
--   
--   <i>See:</i> <a>i18nLanguage</a> smart constructor.
data I18nLanguage

-- | Creates a value of <a>I18nLanguage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilEtag</a></li>
--   <li><a>ilSnippet</a></li>
--   <li><a>ilKind</a></li>
--   <li><a>ilId</a></li>
--   </ul>
i18nLanguage :: I18nLanguage

-- | Etag of this resource.
ilEtag :: Lens' I18nLanguage (Maybe Text)

-- | The snippet object contains basic details about the i18n language,
--   such as language code and human-readable name.
ilSnippet :: Lens' I18nLanguage (Maybe I18nLanguageSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#i18nLanguage".
ilKind :: Lens' I18nLanguage Text

-- | The ID that YouTube uses to uniquely identify the i18n language.
ilId :: Lens' I18nLanguage (Maybe Text)

-- | The video's British Board of Film Classification (BBFC) rating.
data ContentRatingBbfcRating

-- | <pre>
--   bbfc12
--   </pre>
BBFC12 :: ContentRatingBbfcRating

-- | <pre>
--   bbfc12a
--   </pre>
Bbfc12a :: ContentRatingBbfcRating

-- | <pre>
--   bbfc15
--   </pre>
BBFC15 :: ContentRatingBbfcRating

-- | <pre>
--   bbfc18
--   </pre>
BBFC18 :: ContentRatingBbfcRating

-- | <pre>
--   bbfcPg
--   </pre>
BbfcPg :: ContentRatingBbfcRating

-- | <pre>
--   bbfcR18
--   </pre>
BBFCR18 :: ContentRatingBbfcRating

-- | <pre>
--   bbfcU
--   </pre>
BbfcU :: ContentRatingBbfcRating

-- | <pre>
--   bbfcUnrated
--   </pre>
BbfcUnrated :: ContentRatingBbfcRating

-- | Statistics about the video, such as the number of times the video was
--   viewed or liked.
--   
--   <i>See:</i> <a>videoStatistics</a> smart constructor.
data VideoStatistics

-- | Creates a value of <a>VideoStatistics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vsLikeCount</a></li>
--   <li><a>vsCommentCount</a></li>
--   <li><a>vsFavoriteCount</a></li>
--   <li><a>vsDislikeCount</a></li>
--   <li><a>vsViewCount</a></li>
--   </ul>
videoStatistics :: VideoStatistics

-- | The number of users who have indicated that they liked the video by
--   giving it a positive rating.
vsLikeCount :: Lens' VideoStatistics (Maybe Word64)

-- | The number of comments for the video.
vsCommentCount :: Lens' VideoStatistics (Maybe Word64)

-- | The number of users who currently have the video marked as a favorite
--   video.
vsFavoriteCount :: Lens' VideoStatistics (Maybe Word64)

-- | The number of users who have indicated that they disliked the video by
--   giving it a negative rating.
vsDislikeCount :: Lens' VideoStatistics (Maybe Word64)

-- | The number of times the video has been viewed.
vsViewCount :: Lens' VideoStatistics (Maybe Word64)
data ActivityListResponse

-- | Creates a value of <a>ActivityListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alrEtag</a></li>
--   <li><a>alrTokenPagination</a></li>
--   <li><a>alrNextPageToken</a></li>
--   <li><a>alrPageInfo</a></li>
--   <li><a>alrKind</a></li>
--   <li><a>alrItems</a></li>
--   <li><a>alrVisitorId</a></li>
--   <li><a>alrEventId</a></li>
--   <li><a>alrPrevPageToken</a></li>
--   </ul>
activityListResponse :: ActivityListResponse

-- | Etag of this resource.
alrEtag :: Lens' ActivityListResponse (Maybe Text)
alrTokenPagination :: Lens' ActivityListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
alrNextPageToken :: Lens' ActivityListResponse (Maybe Text)
alrPageInfo :: Lens' ActivityListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#activityListResponse".
alrKind :: Lens' ActivityListResponse Text

-- | A list of activities, or events, that match the request criteria.
alrItems :: Lens' ActivityListResponse [Activity]

-- | The visitorId identifies the visitor.
alrVisitorId :: Lens' ActivityListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
alrEventId :: Lens' ActivityListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
alrPrevPageToken :: Lens' ActivityListResponse (Maybe Text)

-- | The video's TV Parental Guidelines (TVPG) rating.
data ContentRatingTvpgRating

-- | <pre>
--   pg14
--   </pre>
PG14 :: ContentRatingTvpgRating

-- | <pre>
--   tvpgG
--   </pre>
TvpgG :: ContentRatingTvpgRating

-- | <pre>
--   tvpgMa
--   </pre>
TvpgMa :: ContentRatingTvpgRating

-- | <pre>
--   tvpgPg
--   </pre>
TvpgPg :: ContentRatingTvpgRating

-- | <pre>
--   tvpgUnrated
--   </pre>
TvpgUnrated :: ContentRatingTvpgRating

-- | <pre>
--   tvpgY
--   </pre>
TvpgY :: ContentRatingTvpgRating

-- | <pre>
--   tvpgY7
--   </pre>
TVPGY7 :: ContentRatingTvpgRating

-- | <pre>
--   tvpgY7Fv
--   </pre>
TvpgY7Fv :: ContentRatingTvpgRating

-- | This parameter indicates whether the API should return comments
--   formatted as HTML or as plain text.
data CommentsListTextFormat

-- | <tt>html</tt> Returns the comments in HTML format. This is the default
--   value.
HTML :: CommentsListTextFormat

-- | <tt>plainText</tt> Returns the comments in plain text format.
PlainText :: CommentsListTextFormat

-- | Specifies the rating to record.
data VideosRateRating

-- | <tt>dislike</tt> Records that the authenticated user disliked the
--   video.
VDislike :: VideosRateRating

-- | <tt>like</tt> Records that the authenticated user liked the video.
VLike :: VideosRateRating

-- | <tt>none</tt> Removes any rating that the authenticated user had
--   previously set for the video.
VNone :: VideosRateRating

-- | Details about a channel bulletin post.
--   
--   <i>See:</i> <a>activityContentDetailsBulletin</a> smart constructor.
data ActivityContentDetailsBulletin

-- | Creates a value of <a>ActivityContentDetailsBulletin</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdbResourceId</a></li>
--   </ul>
activityContentDetailsBulletin :: ActivityContentDetailsBulletin

-- | The resourceId object contains information that identifies the
--   resource associated with a bulletin post.
acdbResourceId :: Lens' ActivityContentDetailsBulletin (Maybe ResourceId)

-- | The projection format of this broadcast. This defaults to rectangular.
data LiveBroadcastContentDetailsProjection

-- | <pre>
--   360
--   </pre>
LBCDP360 :: LiveBroadcastContentDetailsProjection

-- | <pre>
--   rectangular
--   </pre>
LBCDPRectangular :: LiveBroadcastContentDetailsProjection

-- | The caption track's status.
data CaptionSnippetStatus

-- | <pre>
--   failed
--   </pre>
Failed :: CaptionSnippetStatus

-- | <pre>
--   serving
--   </pre>
Serving :: CaptionSnippetStatus

-- | <pre>
--   syncing
--   </pre>
Syncing :: CaptionSnippetStatus
data VideoAbuseReport

-- | Creates a value of <a>VideoAbuseReport</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varSecondaryReasonId</a></li>
--   <li><a>varReasonId</a></li>
--   <li><a>varVideoId</a></li>
--   <li><a>varLanguage</a></li>
--   <li><a>varComments</a></li>
--   </ul>
videoAbuseReport :: VideoAbuseReport

-- | The ID of this abuse report secondary reason.
varSecondaryReasonId :: Lens' VideoAbuseReport (Maybe Text)

-- | The high-level, or primary, reason that the content is abusive. The
--   value is an abuse report reason ID.
varReasonId :: Lens' VideoAbuseReport (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the video.
varVideoId :: Lens' VideoAbuseReport (Maybe Text)

-- | The language that the content was viewed in.
varLanguage :: Lens' VideoAbuseReport (Maybe Text)

-- | Additional comments regarding the abuse report.
varComments :: Lens' VideoAbuseReport (Maybe Text)

-- | The video's rating in Slovakia.
data ContentRatingSkfilmRating

-- | <pre>
--   skfilmG
--   </pre>
SkfilmG :: ContentRatingSkfilmRating

-- | <pre>
--   skfilmP2
--   </pre>
SKFILMP2 :: ContentRatingSkfilmRating

-- | <pre>
--   skfilmP5
--   </pre>
SKFILMP5 :: ContentRatingSkfilmRating

-- | <pre>
--   skfilmP8
--   </pre>
SKFILMP8 :: ContentRatingSkfilmRating

-- | <pre>
--   skfilmUnrated
--   </pre>
SkfilmUnrated :: ContentRatingSkfilmRating

-- | The type of the channel section.
data ChannelSectionSnippetType

-- | <pre>
--   allPlaylists
--   </pre>
AllPlayLists :: ChannelSectionSnippetType

-- | <pre>
--   channelsectionTypeUndefined
--   </pre>
ChannelsectionTypeUndefined :: ChannelSectionSnippetType

-- | <pre>
--   completedEvents
--   </pre>
CompletedEvents :: ChannelSectionSnippetType

-- | <pre>
--   likedPlaylists
--   </pre>
LikedPlayLists :: ChannelSectionSnippetType

-- | <pre>
--   likes
--   </pre>
Likes :: ChannelSectionSnippetType

-- | <pre>
--   liveEvents
--   </pre>
LiveEvents :: ChannelSectionSnippetType

-- | <pre>
--   multipleChannels
--   </pre>
MultipleChannels :: ChannelSectionSnippetType

-- | <pre>
--   multiplePlaylists
--   </pre>
MultiplePlayLists :: ChannelSectionSnippetType

-- | <pre>
--   popularUploads
--   </pre>
PopularUploads :: ChannelSectionSnippetType

-- | <pre>
--   postedPlaylists
--   </pre>
PostedPlayLists :: ChannelSectionSnippetType

-- | <pre>
--   postedVideos
--   </pre>
PostedVideos :: ChannelSectionSnippetType

-- | <pre>
--   recentActivity
--   </pre>
RecentActivity :: ChannelSectionSnippetType

-- | <pre>
--   recentPosts
--   </pre>
RecentPosts :: ChannelSectionSnippetType

-- | <pre>
--   recentUploads
--   </pre>
RecentUploads :: ChannelSectionSnippetType

-- | <pre>
--   singlePlaylist
--   </pre>
SinglePlayList :: ChannelSectionSnippetType

-- | <pre>
--   subscriptions
--   </pre>
Subscriptions :: ChannelSectionSnippetType

-- | <pre>
--   upcomingEvents
--   </pre>
UpcomingEvents :: ChannelSectionSnippetType

-- | The broadcastType parameter filters the API response to only include
--   broadcasts with the specified type. This is only compatible with the
--   mine filter for now.
data LiveBroadcastsListBroadcastType

-- | <tt>all</tt> Return all broadcasts.
All :: LiveBroadcastsListBroadcastType

-- | <tt>event</tt> Return only scheduled event broadcasts.
Event :: LiveBroadcastsListBroadcastType

-- | <tt>persistent</tt> Return only persistent broadcasts.
Persistent :: LiveBroadcastsListBroadcastType
data ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbBlasphemy
--   </pre>
FpbBlasphemy :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbCriminalTechniques
--   </pre>
FpbCriminalTechniques :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbDrugs
--   </pre>
FpbDrugs :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbHorror
--   </pre>
FpbHorror :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbImitativeActsTechniques
--   </pre>
FpbImitativeActsTechniques :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbLanguage
--   </pre>
FpbLanguage :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbNudity
--   </pre>
FpbNudity :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbPrejudice
--   </pre>
FpbPrejudice :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbSex
--   </pre>
FpbSex :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbSexualViolence
--   </pre>
FpbSexualViolence :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbViolence
--   </pre>
FpbViolence :: ContentRatingFpbRatingReasonsItem

-- | The video's processing status. This value indicates whether YouTube
--   was able to process the video or if the video is still being
--   processed.
data VideoProcessingDetailsProcessingStatus

-- | <pre>
--   failed
--   </pre>
VPDPSFailed :: VideoProcessingDetailsProcessingStatus

-- | <pre>
--   processing
--   </pre>
VPDPSProcessing :: VideoProcessingDetailsProcessingStatus

-- | <pre>
--   succeeded
--   </pre>
VPDPSSucceeded :: VideoProcessingDetailsProcessingStatus

-- | <pre>
--   terminated
--   </pre>
VPDPSTerminated :: VideoProcessingDetailsProcessingStatus

-- | The type of call-to-action, a message to the user indicating action
--   that can be taken.
data ActivityContentDetailsPromotedItemCtaType

-- | <pre>
--   unspecified
--   </pre>
Unspecified :: ActivityContentDetailsPromotedItemCtaType

-- | <pre>
--   visitAdvertiserSite
--   </pre>
VisitAdvertiserSite :: ActivityContentDetailsPromotedItemCtaType

-- | Information about an audio stream.
--   
--   <i>See:</i> <a>videoFileDetailsAudioStream</a> smart constructor.
data VideoFileDetailsAudioStream

-- | Creates a value of <a>VideoFileDetailsAudioStream</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vfdasBitrateBps</a></li>
--   <li><a>vfdasVendor</a></li>
--   <li><a>vfdasCodec</a></li>
--   <li><a>vfdasChannelCount</a></li>
--   </ul>
videoFileDetailsAudioStream :: VideoFileDetailsAudioStream

-- | The audio stream's bitrate, in bits per second.
vfdasBitrateBps :: Lens' VideoFileDetailsAudioStream (Maybe Word64)

-- | A value that uniquely identifies a video vendor. Typically, the value
--   is a four-letter vendor code.
vfdasVendor :: Lens' VideoFileDetailsAudioStream (Maybe Text)

-- | The audio codec that the stream uses.
vfdasCodec :: Lens' VideoFileDetailsAudioStream (Maybe Text)

-- | The number of audio channels that the stream contains.
vfdasChannelCount :: Lens' VideoFileDetailsAudioStream (Maybe Word32)
data I18nRegionListResponse

-- | Creates a value of <a>I18nRegionListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irlrEtag</a></li>
--   <li><a>irlrKind</a></li>
--   <li><a>irlrItems</a></li>
--   <li><a>irlrVisitorId</a></li>
--   <li><a>irlrEventId</a></li>
--   </ul>
i18nRegionListResponse :: I18nRegionListResponse

-- | Etag of this resource.
irlrEtag :: Lens' I18nRegionListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#i18nRegionListResponse".
irlrKind :: Lens' I18nRegionListResponse Text

-- | A list of regions where YouTube is available. In this map, the i18n
--   region ID is the map key, and its value is the corresponding
--   i18nRegion resource.
irlrItems :: Lens' I18nRegionListResponse [I18nRegion]

-- | The visitorId identifies the visitor.
irlrVisitorId :: Lens' I18nRegionListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
irlrEventId :: Lens' I18nRegionListResponse (Maybe Text)

-- | The channelType parameter lets you restrict a search to a particular
--   type of channel.
data SearchListChannelType

-- | <tt>any</tt> Return all channels.
SLCTAny :: SearchListChannelType

-- | <tt>show</tt> Only retrieve shows.
SLCTShow :: SearchListChannelType

-- | Basic details about a guide category.
--   
--   <i>See:</i> <a>guideCategorySnippet</a> smart constructor.
data GuideCategorySnippet

-- | Creates a value of <a>GuideCategorySnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gcsChannelId</a></li>
--   <li><a>gcsTitle</a></li>
--   </ul>
guideCategorySnippet :: GuideCategorySnippet
gcsChannelId :: Lens' GuideCategorySnippet Text

-- | Description of the guide category.
gcsTitle :: Lens' GuideCategorySnippet (Maybe Text)

-- | The video's Korea Media Rating Board (영상물등급위원회) rating. The KMRB rates
--   videos in South Korea.
data ContentRatingKmrbRating

-- | <pre>
--   kmrb12plus
--   </pre>
Kmrb12plus :: ContentRatingKmrbRating

-- | <pre>
--   kmrb15plus
--   </pre>
Kmrb15plus :: ContentRatingKmrbRating

-- | <pre>
--   kmrbAll
--   </pre>
KmrbAll :: ContentRatingKmrbRating

-- | <pre>
--   kmrbR
--   </pre>
KmrbR :: ContentRatingKmrbRating

-- | <pre>
--   kmrbTeenr
--   </pre>
KmrbTeenr :: ContentRatingKmrbRating

-- | <pre>
--   kmrbUnrated
--   </pre>
KmrbUnrated :: ContentRatingKmrbRating

-- | The video's Office of Film and Literature Classification (OFLC - New
--   Zealand) rating.
data ContentRatingOflcRating

-- | <pre>
--   oflcG
--   </pre>
OflcG :: ContentRatingOflcRating

-- | <pre>
--   oflcM
--   </pre>
OflcM :: ContentRatingOflcRating

-- | <pre>
--   oflcPg
--   </pre>
OflcPg :: ContentRatingOflcRating

-- | <pre>
--   oflcR13
--   </pre>
OFLCR13 :: ContentRatingOflcRating

-- | <pre>
--   oflcR15
--   </pre>
OFLCR15 :: ContentRatingOflcRating

-- | <pre>
--   oflcR16
--   </pre>
OFLCR16 :: ContentRatingOflcRating

-- | <pre>
--   oflcR18
--   </pre>
OFLCR18 :: ContentRatingOflcRating

-- | <pre>
--   oflcRp13
--   </pre>
OFLCRP13 :: ContentRatingOflcRating

-- | <pre>
--   oflcRp16
--   </pre>
OFLCRP16 :: ContentRatingOflcRating

-- | <pre>
--   oflcUnrated
--   </pre>
OflcUnrated :: ContentRatingOflcRating

-- | Rating system in France - Commission de classification
--   cinematographique
data ContentRatingCNCRating

-- | <pre>
--   cnc10
--   </pre>
CNC10 :: ContentRatingCNCRating

-- | <pre>
--   cnc12
--   </pre>
CNC12 :: ContentRatingCNCRating

-- | <pre>
--   cnc16
--   </pre>
CNC16 :: ContentRatingCNCRating

-- | <pre>
--   cnc18
--   </pre>
CNC18 :: ContentRatingCNCRating

-- | <pre>
--   cncE
--   </pre>
CNCE :: ContentRatingCNCRating

-- | <pre>
--   cncT
--   </pre>
CNCT :: ContentRatingCNCRating

-- | <pre>
--   cncUnrated
--   </pre>
CNCUnrated :: ContentRatingCNCRating
data CaptionListResponse

-- | Creates a value of <a>CaptionListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cEtag</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cItems</a></li>
--   <li><a>cVisitorId</a></li>
--   <li><a>cEventId</a></li>
--   </ul>
captionListResponse :: CaptionListResponse

-- | Etag of this resource.
cEtag :: Lens' CaptionListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#captionListResponse".
cKind :: Lens' CaptionListResponse Text

-- | A list of captions that match the request criteria.
cItems :: Lens' CaptionListResponse [Caption]

-- | The visitorId identifies the visitor.
cVisitorId :: Lens' CaptionListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
cEventId :: Lens' CaptionListResponse (Maybe Text)

-- | Information about the playlist item's privacy status.
--   
--   <i>See:</i> <a>playListItemStatus</a> smart constructor.
data PlayListItemStatus

-- | Creates a value of <a>PlayListItemStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plisPrivacyStatus</a></li>
--   </ul>
playListItemStatus :: PlayListItemStatus

-- | This resource's privacy status.
plisPrivacyStatus :: Lens' PlayListItemStatus (Maybe PlayListItemStatusPrivacyStatus)

-- | Describes the spatial position of a visual widget inside a video. It
--   is a union of various position types, out of which only will be set
--   one.
--   
--   <i>See:</i> <a>invideoPosition</a> smart constructor.
data InvideoPosition

-- | Creates a value of <a>InvideoPosition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipCornerPosition</a></li>
--   <li><a>ipType</a></li>
--   </ul>
invideoPosition :: InvideoPosition

-- | Describes in which corner of the video the visual widget will appear.
ipCornerPosition :: Lens' InvideoPosition (Maybe InvideoPositionCornerPosition)

-- | Defines the position type.
ipType :: Lens' InvideoPosition (Maybe InvideoPositionType)

-- | Rating system in Turkey - Evaluation and Classification Board of the
--   Ministry of Culture and Tourism
data ContentRatingEcbmctRating

-- | <pre>
--   ecbmct13a
--   </pre>
Ecbmct13a :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct13plus
--   </pre>
Ecbmct13plus :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct15a
--   </pre>
Ecbmct15a :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct15plus
--   </pre>
Ecbmct15plus :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct18plus
--   </pre>
Ecbmct18plus :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct7a
--   </pre>
Ecbmct7a :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct7plus
--   </pre>
Ecbmct7plus :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmctG
--   </pre>
EcbmctG :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmctUnrated
--   </pre>
EcbmctUnrated :: ContentRatingEcbmctRating

-- | Specifies the projection format of the video.
data VideoContentDetailsProjection

-- | <pre>
--   360
--   </pre>
VCDP360 :: VideoContentDetailsProjection

-- | <pre>
--   rectangular
--   </pre>
VCDPRectangular :: VideoContentDetailsProjection

-- | The video's rating in Greece.
data ContentRatingGrfilmRating

-- | <pre>
--   grfilmE
--   </pre>
GrfilmE :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK
--   </pre>
GrfilmK :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK12
--   </pre>
GRFILMK12 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK13
--   </pre>
GRFILMK13 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK15
--   </pre>
GRFILMK15 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK17
--   </pre>
GRFILMK17 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK18
--   </pre>
GRFILMK18 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmUnrated
--   </pre>
GrfilmUnrated :: ContentRatingGrfilmRating

-- | The order parameter specifies the order in which the API response
--   should list comment threads. Valid values are: - time - Comment
--   threads are ordered by time. This is the default behavior. - relevance
--   - Comment threads are ordered by relevance.Note: This parameter is not
--   supported for use in conjunction with the id parameter.
data CommentThreadsListOrder

-- | <tt>relevance</tt> Order by relevance.
CTLORelevance :: CommentThreadsListOrder

-- | <tt>time</tt> Order by time.
CTLOTime :: CommentThreadsListOrder
data LiveStreamHealthStatus

-- | Creates a value of <a>LiveStreamHealthStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lshsStatus</a></li>
--   <li><a>lshsConfigurationIssues</a></li>
--   <li><a>lshsLastUpdateTimeSeconds</a></li>
--   </ul>
liveStreamHealthStatus :: LiveStreamHealthStatus

-- | The status code of this stream
lshsStatus :: Lens' LiveStreamHealthStatus (Maybe LiveStreamHealthStatusStatus)

-- | The configurations issues on this stream
lshsConfigurationIssues :: Lens' LiveStreamHealthStatus [LiveStreamConfigurationIssue]

-- | The last time this status was updated (in seconds)
lshsLastUpdateTimeSeconds :: Lens' LiveStreamHealthStatus (Maybe Word64)

-- | Localizations for different languages
--   
--   <i>See:</i> <a>channelSectionLocalizations</a> smart constructor.
data ChannelSectionLocalizations

-- | Creates a value of <a>ChannelSectionLocalizations</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cslAddtional</a></li>
--   </ul>
channelSectionLocalizations :: HashMap Text ChannelSectionLocalization -> ChannelSectionLocalizations

-- | The language tag, using string since map_key require simple types.
cslAddtional :: Lens' ChannelSectionLocalizations (HashMap Text ChannelSectionLocalization)

-- | The video's rating in Israel.
data ContentRatingIlfilmRating

-- | <pre>
--   ilfilm12
--   </pre>
ILFILM12 :: ContentRatingIlfilmRating

-- | <pre>
--   ilfilm16
--   </pre>
ILFILM16 :: ContentRatingIlfilmRating

-- | <pre>
--   ilfilm18
--   </pre>
ILFILM18 :: ContentRatingIlfilmRating

-- | <pre>
--   ilfilmAa
--   </pre>
IlfilmAa :: ContentRatingIlfilmRating

-- | <pre>
--   ilfilmUnrated
--   </pre>
IlfilmUnrated :: ContentRatingIlfilmRating
data SubscriptionListResponse

-- | Creates a value of <a>SubscriptionListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>subEtag</a></li>
--   <li><a>subTokenPagination</a></li>
--   <li><a>subNextPageToken</a></li>
--   <li><a>subPageInfo</a></li>
--   <li><a>subKind</a></li>
--   <li><a>subItems</a></li>
--   <li><a>subVisitorId</a></li>
--   <li><a>subEventId</a></li>
--   <li><a>subPrevPageToken</a></li>
--   </ul>
subscriptionListResponse :: SubscriptionListResponse

-- | Etag of this resource.
subEtag :: Lens' SubscriptionListResponse (Maybe Text)
subTokenPagination :: Lens' SubscriptionListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
subNextPageToken :: Lens' SubscriptionListResponse (Maybe Text)
subPageInfo :: Lens' SubscriptionListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#subscriptionListResponse".
subKind :: Lens' SubscriptionListResponse Text

-- | A list of subscriptions that match the request criteria.
subItems :: Lens' SubscriptionListResponse [Subscription]

-- | The visitorId identifies the visitor.
subVisitorId :: Lens' SubscriptionListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
subEventId :: Lens' SubscriptionListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
subPrevPageToken :: Lens' SubscriptionListResponse (Maybe Text)

-- | The video's rating in Poland.
data ContentRatingNbcplRating

-- | <pre>
--   nbcpl18plus
--   </pre>
Nbcpl18plus :: ContentRatingNbcplRating

-- | <pre>
--   nbcplI
--   </pre>
NbcplI :: ContentRatingNbcplRating

-- | <pre>
--   nbcplIi
--   </pre>
NbcplIi :: ContentRatingNbcplRating

-- | <pre>
--   nbcplIii
--   </pre>
NbcplIii :: ContentRatingNbcplRating

-- | <pre>
--   nbcplIv
--   </pre>
NbcplIv :: ContentRatingNbcplRating

-- | <pre>
--   nbcplUnrated
--   </pre>
NbcplUnrated :: ContentRatingNbcplRating

-- | The status of the uploaded video.
data VideoStatusUploadStatus

-- | <pre>
--   deleted
--   </pre>
VSUSDeleted :: VideoStatusUploadStatus

-- | <pre>
--   failed
--   </pre>
VSUSFailed :: VideoStatusUploadStatus

-- | <pre>
--   processed
--   </pre>
VSUSProcessed :: VideoStatusUploadStatus

-- | <pre>
--   rejected
--   </pre>
VSUSRejected :: VideoStatusUploadStatus

-- | <pre>
--   uploaded
--   </pre>
VSUSUploaded :: VideoStatusUploadStatus

-- | Localized versions of certain video properties (e.g. title).
--   
--   <i>See:</i> <a>videoLocalization</a> smart constructor.
data VideoLocalization

-- | Creates a value of <a>VideoLocalization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlTitle</a></li>
--   <li><a>vlDescription</a></li>
--   </ul>
videoLocalization :: VideoLocalization

-- | Localized version of the video's title.
vlTitle :: Lens' VideoLocalization (Maybe Text)

-- | Localized version of the video's description.
vlDescription :: Lens' VideoLocalization (Maybe Text)

-- | The video's rating from Ireland's Raidió Teilifís Éireann.
data ContentRatingRteRating

-- | <pre>
--   rteCh
--   </pre>
RteCh :: ContentRatingRteRating

-- | <pre>
--   rteGa
--   </pre>
RteGa :: ContentRatingRteRating

-- | <pre>
--   rteMa
--   </pre>
RteMa :: ContentRatingRteRating

-- | <pre>
--   rtePs
--   </pre>
RtePs :: ContentRatingRteRating

-- | <pre>
--   rteUnrated
--   </pre>
RteUnrated :: ContentRatingRteRating
data CommentListResponse

-- | Creates a value of <a>CommentListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>comEtag</a></li>
--   <li><a>comTokenPagination</a></li>
--   <li><a>comNextPageToken</a></li>
--   <li><a>comPageInfo</a></li>
--   <li><a>comKind</a></li>
--   <li><a>comItems</a></li>
--   <li><a>comVisitorId</a></li>
--   <li><a>comEventId</a></li>
--   </ul>
commentListResponse :: CommentListResponse

-- | Etag of this resource.
comEtag :: Lens' CommentListResponse (Maybe Text)
comTokenPagination :: Lens' CommentListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
comNextPageToken :: Lens' CommentListResponse (Maybe Text)
comPageInfo :: Lens' CommentListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#commentListResponse".
comKind :: Lens' CommentListResponse Text

-- | A list of comments that match the request criteria.
comItems :: Lens' CommentListResponse [Comment]

-- | The visitorId identifies the visitor.
comVisitorId :: Lens' CommentListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
comEventId :: Lens' CommentListResponse (Maybe Text)

-- | Player to be used for a video playback.
--   
--   <i>See:</i> <a>videoPlayer</a> smart constructor.
data VideoPlayer

-- | Creates a value of <a>VideoPlayer</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpEmbedHeight</a></li>
--   <li><a>vpEmbedWidth</a></li>
--   <li><a>vpEmbedHTML</a></li>
--   </ul>
videoPlayer :: VideoPlayer
vpEmbedHeight :: Lens' VideoPlayer (Maybe Int64)

-- | The embed width
vpEmbedWidth :: Lens' VideoPlayer (Maybe Int64)

-- | An tag that embeds a player that will play the video.
vpEmbedHTML :: Lens' VideoPlayer (Maybe Text)

-- | Describes a single promoted item id. It is a union of various possible
--   types.
--   
--   <i>See:</i> <a>promotedItemId</a> smart constructor.
data PromotedItemId

-- | Creates a value of <a>PromotedItemId</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piiRecentlyUploadedBy</a></li>
--   <li><a>piiVideoId</a></li>
--   <li><a>piiWebsiteURL</a></li>
--   <li><a>piiType</a></li>
--   </ul>
promotedItemId :: PromotedItemId

-- | If type is recentUpload, this field identifies the channel from which
--   to take the recent upload. If missing, the channel is assumed to be
--   the same channel for which the invideoPromotion is set.
piiRecentlyUploadedBy :: Lens' PromotedItemId (Maybe Text)

-- | If the promoted item represents a video, this field represents the
--   unique YouTube ID identifying it. This field will be present only if
--   type has the value video.
piiVideoId :: Lens' PromotedItemId (Maybe Text)

-- | If the promoted item represents a website, this field represents the
--   url pointing to the website. This field will be present only if type
--   has the value website.
piiWebsiteURL :: Lens' PromotedItemId (Maybe Text)

-- | Describes the type of the promoted item.
piiType :: Lens' PromotedItemId (Maybe PromotedItemIdType)

-- | Set this parameter's value to html or plainText to instruct the API to
--   return the comments left by users in html formatted or in plain text.
data CommentThreadsListTextFormat

-- | <tt>html</tt> Returns the comments in HTML format. This is the default
--   value.
CTLTFHTML :: CommentThreadsListTextFormat

-- | <tt>plainText</tt> Returns the comments in plain text format.
CTLTFPlainText :: CommentThreadsListTextFormat
data LocalizedString

-- | Creates a value of <a>LocalizedString</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsValue</a></li>
--   <li><a>lsLanguage</a></li>
--   </ul>
localizedString :: LocalizedString
lsValue :: Lens' LocalizedString (Maybe Text)
lsLanguage :: Lens' LocalizedString (Maybe Text)

-- | The video's Irish Film Classification Office (IFCO - Ireland) rating.
--   See the IFCO website for more information.
data ContentRatingIfcoRating

-- | <pre>
--   ifco12
--   </pre>
IFCO12 :: ContentRatingIfcoRating

-- | <pre>
--   ifco12a
--   </pre>
Ifco12a :: ContentRatingIfcoRating

-- | <pre>
--   ifco15
--   </pre>
IFCO15 :: ContentRatingIfcoRating

-- | <pre>
--   ifco15a
--   </pre>
Ifco15a :: ContentRatingIfcoRating

-- | <pre>
--   ifco16
--   </pre>
IFCO16 :: ContentRatingIfcoRating

-- | <pre>
--   ifco18
--   </pre>
IFCO18 :: ContentRatingIfcoRating

-- | <pre>
--   ifcoG
--   </pre>
IfcoG :: ContentRatingIfcoRating

-- | <pre>
--   ifcoPg
--   </pre>
IfcoPg :: ContentRatingIfcoRating

-- | <pre>
--   ifcoUnrated
--   </pre>
IfcoUnrated :: ContentRatingIfcoRating
data PlayListItemListResponse

-- | Creates a value of <a>PlayListItemListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plilrEtag</a></li>
--   <li><a>plilrTokenPagination</a></li>
--   <li><a>plilrNextPageToken</a></li>
--   <li><a>plilrPageInfo</a></li>
--   <li><a>plilrKind</a></li>
--   <li><a>plilrItems</a></li>
--   <li><a>plilrVisitorId</a></li>
--   <li><a>plilrEventId</a></li>
--   <li><a>plilrPrevPageToken</a></li>
--   </ul>
playListItemListResponse :: PlayListItemListResponse

-- | Etag of this resource.
plilrEtag :: Lens' PlayListItemListResponse (Maybe Text)
plilrTokenPagination :: Lens' PlayListItemListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
plilrNextPageToken :: Lens' PlayListItemListResponse (Maybe Text)
plilrPageInfo :: Lens' PlayListItemListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#playlistItemListResponse".
plilrKind :: Lens' PlayListItemListResponse Text

-- | A list of playlist items that match the request criteria.
plilrItems :: Lens' PlayListItemListResponse [PlayListItem]

-- | The visitorId identifies the visitor.
plilrVisitorId :: Lens' PlayListItemListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
plilrEventId :: Lens' PlayListItemListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
plilrPrevPageToken :: Lens' PlayListItemListResponse (Maybe Text)

-- | Identifies the new moderation status of the specified comments.
data CommentsSetModerationStatusModerationStatus

-- | <tt>heldForReview</tt> Marks a comment as awaiting review by a
--   moderator.
CSMSMSHeldForReview :: CommentsSetModerationStatusModerationStatus

-- | <tt>published</tt> Clears a comment for public display.
CSMSMSPublished :: CommentsSetModerationStatusModerationStatus

-- | <tt>rejected</tt> Rejects a comment as being unfit for display. This
--   action also effectively hides all replies to the rejected comment.
--   Note: The API does not currently provide a way to list or otherwise
--   discover rejected comments. However, you can change the moderation
--   status of a rejected comment if you still know its ID. If you were to
--   change the moderation status of a rejected comment, the comment
--   replies would subsequently be discoverable again as well.
CSMSMSRejected :: CommentsSetModerationStatusModerationStatus

-- | A guideCategory resource identifies a category that YouTube
--   algorithmically assigns based on a channel's content or other
--   indicators, such as the channel's popularity. The list is similar to
--   video categories, with the difference being that a video's uploader
--   can assign a video category but only YouTube can assign a channel
--   category.
--   
--   <i>See:</i> <a>guideCategory</a> smart constructor.
data GuideCategory

-- | Creates a value of <a>GuideCategory</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gcEtag</a></li>
--   <li><a>gcSnippet</a></li>
--   <li><a>gcKind</a></li>
--   <li><a>gcId</a></li>
--   </ul>
guideCategory :: GuideCategory

-- | Etag of this resource.
gcEtag :: Lens' GuideCategory (Maybe Text)

-- | The snippet object contains basic details about the category, such as
--   its title.
gcSnippet :: Lens' GuideCategory (Maybe GuideCategorySnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#guideCategory".
gcKind :: Lens' GuideCategory Text

-- | The ID that YouTube uses to uniquely identify the guide category.
gcId :: Lens' GuideCategory (Maybe Text)

-- | Basic details about a search result, including title, description and
--   thumbnails of the item referenced by the search result.
--   
--   <i>See:</i> <a>searchResultSnippet</a> smart constructor.
data SearchResultSnippet

-- | Creates a value of <a>SearchResultSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srsPublishedAt</a></li>
--   <li><a>srsChannelTitle</a></li>
--   <li><a>srsChannelId</a></li>
--   <li><a>srsThumbnails</a></li>
--   <li><a>srsTitle</a></li>
--   <li><a>srsLiveBroadcastContent</a></li>
--   <li><a>srsDescription</a></li>
--   </ul>
searchResultSnippet :: SearchResultSnippet

-- | The creation date and time of the resource that the search result
--   identifies. The value is specified in ISO 8601
--   (YYYY-MM-DDThh:mm:ss.sZ) format.
srsPublishedAt :: Lens' SearchResultSnippet (Maybe UTCTime)

-- | The title of the channel that published the resource that the search
--   result identifies.
srsChannelTitle :: Lens' SearchResultSnippet (Maybe Text)

-- | The value that YouTube uses to uniquely identify the channel that
--   published the resource that the search result identifies.
srsChannelId :: Lens' SearchResultSnippet (Maybe Text)

-- | A map of thumbnail images associated with the search result. For each
--   object in the map, the key is the name of the thumbnail image, and the
--   value is an object that contains other information about the
--   thumbnail.
srsThumbnails :: Lens' SearchResultSnippet (Maybe ThumbnailDetails)

-- | The title of the search result.
srsTitle :: Lens' SearchResultSnippet (Maybe Text)

-- | It indicates if the resource (video or channel) has upcoming/active
--   live broadcast content. Or it's "none" if there is not any
--   upcoming/active live broadcasts.
srsLiveBroadcastContent :: Lens' SearchResultSnippet (Maybe SearchResultSnippetLiveBroadcastContent)

-- | A description of the search result.
srsDescription :: Lens' SearchResultSnippet (Maybe Text)
data LiveChatPollItem

-- | Creates a value of <a>LiveChatPollItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpiItemId</a></li>
--   <li><a>lcpiDescription</a></li>
--   </ul>
liveChatPollItem :: LiveChatPollItem
lcpiItemId :: Lens' LiveChatPollItem (Maybe Text)

-- | Plain text description of the item.
lcpiDescription :: Lens' LiveChatPollItem (Maybe Text)

-- | The name of the social network.
data ActivityContentDetailsSocialType

-- | <pre>
--   facebook
--   </pre>
ACDSTFacebook :: ActivityContentDetailsSocialType

-- | <pre>
--   googlePlus
--   </pre>
ACDSTGooglePlus :: ActivityContentDetailsSocialType

-- | <pre>
--   twitter
--   </pre>
ACDSTTwitter :: ActivityContentDetailsSocialType

-- | <pre>
--   unspecified
--   </pre>
ACDSTUnspecified :: ActivityContentDetailsSocialType

-- | The video's rating from Medietilsynet, the Norwegian Media Authority.
data ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet11
--   </pre>
MEDIETILSYNET11 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet12
--   </pre>
MEDIETILSYNET12 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet15
--   </pre>
MEDIETILSYNET15 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet18
--   </pre>
MEDIETILSYNET18 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet6
--   </pre>
MEDIETILSYNET6 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet7
--   </pre>
MEDIETILSYNET7 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet9
--   </pre>
MEDIETILSYNET9 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynetA
--   </pre>
MedietilsynetA :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynetUnrated
--   </pre>
MedietilsynetUnrated :: ContentRatingMedietilsynetRating

-- | This resource's privacy status.
data PlayListItemStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
PLISPSPrivate :: PlayListItemStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
PLISPSPublic :: PlayListItemStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
PLISPSUnListed :: PlayListItemStatusPrivacyStatus

-- | The type of activity this subscription is for (only uploads,
--   everything).
data SubscriptionContentDetailsActivityType

-- | <pre>
--   all
--   </pre>
SCDATAll :: SubscriptionContentDetailsActivityType

-- | <pre>
--   uploads
--   </pre>
SCDATUploads :: SubscriptionContentDetailsActivityType

-- | The video's rating from South Africa's Film and Publication Board.
data ContentRatingFpbRating

-- | <pre>
--   fpb10
--   </pre>
FPB10 :: ContentRatingFpbRating

-- | <pre>
--   fpb1012Pg
--   </pre>
Fpb1012Pg :: ContentRatingFpbRating

-- | <pre>
--   fpb13
--   </pre>
FPB13 :: ContentRatingFpbRating

-- | <pre>
--   fpb16
--   </pre>
FPB16 :: ContentRatingFpbRating

-- | <pre>
--   fpb18
--   </pre>
FPB18 :: ContentRatingFpbRating

-- | <pre>
--   fpb79Pg
--   </pre>
Fpb79Pg :: ContentRatingFpbRating

-- | <pre>
--   fpbA
--   </pre>
FpbA :: ContentRatingFpbRating

-- | <pre>
--   fpbPg
--   </pre>
FpbPg :: ContentRatingFpbRating

-- | <pre>
--   fpbUnrated
--   </pre>
FpbUnrated :: ContentRatingFpbRating

-- | <pre>
--   fpbX18
--   </pre>
FPBX18 :: ContentRatingFpbRating

-- | <pre>
--   fpbXx
--   </pre>
FpbXx :: ContentRatingFpbRating
data SponsorListResponse

-- | Creates a value of <a>SponsorListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spoEtag</a></li>
--   <li><a>spoTokenPagination</a></li>
--   <li><a>spoNextPageToken</a></li>
--   <li><a>spoPageInfo</a></li>
--   <li><a>spoKind</a></li>
--   <li><a>spoItems</a></li>
--   <li><a>spoVisitorId</a></li>
--   <li><a>spoEventId</a></li>
--   </ul>
sponsorListResponse :: SponsorListResponse

-- | Etag of this resource.
spoEtag :: Lens' SponsorListResponse (Maybe Text)
spoTokenPagination :: Lens' SponsorListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
spoNextPageToken :: Lens' SponsorListResponse (Maybe Text)
spoPageInfo :: Lens' SponsorListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#sponsorListResponse".
spoKind :: Lens' SponsorListResponse Text

-- | A list of sponsors that match the request criteria.
spoItems :: Lens' SponsorListResponse [Sponsor]

-- | The visitorId identifies the visitor.
spoVisitorId :: Lens' SponsorListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
spoEventId :: Lens' SponsorListResponse (Maybe Text)
data LiveBroadcastContentDetailsClosedCaptionsType

-- | <pre>
--   closedCaptionsDisabled
--   </pre>
ClosedCaptionsDisabled :: LiveBroadcastContentDetailsClosedCaptionsType

-- | <pre>
--   closedCaptionsEmbedded
--   </pre>
ClosedCaptionsEmbedded :: LiveBroadcastContentDetailsClosedCaptionsType

-- | <pre>
--   closedCaptionsHttpPost
--   </pre>
ClosedCaptionsHTTPPost :: LiveBroadcastContentDetailsClosedCaptionsType

-- | The videoDimension parameter lets you restrict a search to only
--   retrieve 2D or 3D videos. If you specify a value for this parameter,
--   you must also set the type parameter's value to video.
data SearchListVideoDimension

-- | <tt>2d</tt> Restrict search results to exclude 3D videos.
S2D :: SearchListVideoDimension

-- | <tt>3d</tt> Restrict search results to only include 3D videos.
S3D :: SearchListVideoDimension

-- | <tt>any</tt> Include both 3D and non-3D videos in returned results.
--   This is the default value.
SAny :: SearchListVideoDimension
data LiveBroadcastTopicSnippet

-- | Creates a value of <a>LiveBroadcastTopicSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbtsName</a></li>
--   <li><a>lbtsReleaseDate</a></li>
--   </ul>
liveBroadcastTopicSnippet :: LiveBroadcastTopicSnippet

-- | The name of the topic.
lbtsName :: Lens' LiveBroadcastTopicSnippet (Maybe Text)

-- | The date at which the topic was released. Filled for types: videoGame
lbtsReleaseDate :: Lens' LiveBroadcastTopicSnippet (Maybe Text)

-- | The video's rating from the Nacionãlais Kino centrs (National Film
--   Centre of Latvia).
data ContentRatingNkclvRating

-- | <pre>
--   nkclv12plus
--   </pre>
Nkclv12plus :: ContentRatingNkclvRating

-- | <pre>
--   nkclv18plus
--   </pre>
Nkclv18plus :: ContentRatingNkclvRating

-- | <pre>
--   nkclv7plus
--   </pre>
Nkclv7plus :: ContentRatingNkclvRating

-- | <pre>
--   nkclvU
--   </pre>
NkclvU :: ContentRatingNkclvRating

-- | <pre>
--   nkclvUnrated
--   </pre>
NkclvUnrated :: ContentRatingNkclvRating

-- | An activity resource contains information about an action that a
--   particular channel, or user, has taken on YouTube.The actions reported
--   in activity feeds include rating a video, sharing a video, marking a
--   video as a favorite, commenting on a video, uploading a video, and so
--   forth. Each activity resource identifies the type of action, the
--   channel associated with the action, and the resource(s) associated
--   with the action, such as the video that was rated or uploaded.
--   
--   <i>See:</i> <a>activity</a> smart constructor.
data Activity

-- | Creates a value of <a>Activity</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aEtag</a></li>
--   <li><a>aSnippet</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aContentDetails</a></li>
--   <li><a>aId</a></li>
--   </ul>
activity :: Activity

-- | Etag of this resource.
aEtag :: Lens' Activity (Maybe Text)

-- | The snippet object contains basic details about the activity,
--   including the activity's type and group ID.
aSnippet :: Lens' Activity (Maybe ActivitySnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#activity".
aKind :: Lens' Activity Text

-- | The contentDetails object contains information about the content
--   associated with the activity. For example, if the snippet.type value
--   is videoRated, then the contentDetails object's content identifies the
--   rated video.
aContentDetails :: Lens' Activity (Maybe ActivityContentDetails)

-- | The ID that YouTube uses to uniquely identify the activity.
aId :: Lens' Activity (Maybe Text)

-- | Describes an invideo promotion campaign consisting of multiple
--   promoted items. A campaign belongs to a single channel_id.
--   
--   <i>See:</i> <a>invideoPromotion</a> smart constructor.
data InvideoPromotion

-- | Creates a value of <a>InvideoPromotion</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipUseSmartTiming</a></li>
--   <li><a>ipItems</a></li>
--   <li><a>ipDefaultTiming</a></li>
--   <li><a>ipPosition</a></li>
--   </ul>
invideoPromotion :: InvideoPromotion

-- | Indicates whether the channel's promotional campaign uses "smart
--   timing." This feature attempts to show promotions at a point in the
--   video when they are more likely to be clicked and less likely to
--   disrupt the viewing experience. This feature also picks up a single
--   promotion to show on each video.
ipUseSmartTiming :: Lens' InvideoPromotion (Maybe Bool)

-- | List of promoted items in decreasing priority.
ipItems :: Lens' InvideoPromotion [PromotedItem]

-- | The default temporal position within the video where the promoted item
--   will be displayed. Can be overriden by more specific timing in the
--   item.
ipDefaultTiming :: Lens' InvideoPromotion (Maybe InvideoTiming)

-- | The spatial position within the video where the promoted item will be
--   displayed.
ipPosition :: Lens' InvideoPromotion (Maybe InvideoPosition)
data InvideoBranding

-- | Creates a value of <a>InvideoBranding</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ibImageURL</a></li>
--   <li><a>ibTargetChannelId</a></li>
--   <li><a>ibTiming</a></li>
--   <li><a>ibImageBytes</a></li>
--   <li><a>ibPosition</a></li>
--   </ul>
invideoBranding :: InvideoBranding
ibImageURL :: Lens' InvideoBranding (Maybe Text)
ibTargetChannelId :: Lens' InvideoBranding (Maybe Text)
ibTiming :: Lens' InvideoBranding (Maybe InvideoTiming)
ibImageBytes :: Lens' InvideoBranding (Maybe ByteString)
ibPosition :: Lens' InvideoBranding (Maybe InvideoPosition)

-- | The filter parameter specifies which channel sponsors to return.
data SponsorsListFilter

-- | <tt>all</tt> Return all sponsors, from newest to oldest.
SLFAll :: SponsorsListFilter

-- | <tt>newest</tt> Return the most recent sponsors, from newest to
--   oldest.
SLFNewest :: SponsorsListFilter

-- | A channel banner returned as the response to a channel_banner.insert
--   call.
--   
--   <i>See:</i> <a>channelBannerResource</a> smart constructor.
data ChannelBannerResource

-- | Creates a value of <a>ChannelBannerResource</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbrEtag</a></li>
--   <li><a>cbrKind</a></li>
--   <li><a>cbrURL</a></li>
--   </ul>
channelBannerResource :: ChannelBannerResource

-- | Etag of this resource.
cbrEtag :: Lens' ChannelBannerResource (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channelBannerResource".
cbrKind :: Lens' ChannelBannerResource Text

-- | The URL of this banner image.
cbrURL :: Lens' ChannelBannerResource (Maybe Text)

-- | The videoType parameter lets you restrict a search to a particular
--   type of videos. If you specify a value for this parameter, you must
--   also set the type parameter's value to video.
data SearchListVideoType

-- | <tt>any</tt> Return all videos.
SLVTAny :: SearchListVideoType

-- | <tt>episode</tt> Only retrieve episodes of shows.
SLVTEpisode :: SearchListVideoType

-- | <tt>movie</tt> Only retrieve movies.
SLVTMovie :: SearchListVideoType
data I18nLanguageListResponse

-- | Creates a value of <a>I18nLanguageListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>illrEtag</a></li>
--   <li><a>illrKind</a></li>
--   <li><a>illrItems</a></li>
--   <li><a>illrVisitorId</a></li>
--   <li><a>illrEventId</a></li>
--   </ul>
i18nLanguageListResponse :: I18nLanguageListResponse

-- | Etag of this resource.
illrEtag :: Lens' I18nLanguageListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#i18nLanguageListResponse".
illrKind :: Lens' I18nLanguageListResponse Text

-- | A list of supported i18n languages. In this map, the i18n language ID
--   is the map key, and its value is the corresponding i18nLanguage
--   resource.
illrItems :: Lens' I18nLanguageListResponse [I18nLanguage]

-- | The visitorId identifies the visitor.
illrVisitorId :: Lens' I18nLanguageListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
illrEventId :: Lens' I18nLanguageListResponse (Maybe Text)
data PlayListPlayer

-- | Creates a value of <a>PlayListPlayer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plpEmbedHTML</a></li>
--   </ul>
playListPlayer :: PlayListPlayer

-- | An tag that embeds a player that will play the playlist.
plpEmbedHTML :: Lens' PlayListPlayer (Maybe Text)

-- | The video's rating from the Ministero dei Beni e delle Attività
--   Culturali e del Turismo (Italy).
data ContentRatingMibacRating

-- | <pre>
--   mibacT
--   </pre>
MibacT :: ContentRatingMibacRating

-- | <pre>
--   mibacUnrated
--   </pre>
MibacUnrated :: ContentRatingMibacRating

-- | <pre>
--   mibacVap
--   </pre>
MibacVap :: ContentRatingMibacRating

-- | <pre>
--   mibacVm12
--   </pre>
MIBACVM12 :: ContentRatingMibacRating

-- | <pre>
--   mibacVm14
--   </pre>
MIBACVM14 :: ContentRatingMibacRating

-- | <pre>
--   mibacVm18
--   </pre>
MIBACVM18 :: ContentRatingMibacRating

-- | The video's rating in Venezuela.
data ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaA
--   </pre>
ResorteviolenciaA :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaB
--   </pre>
ResorteviolenciaB :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaC
--   </pre>
ResorteviolenciaC :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaD
--   </pre>
ResorteviolenciaD :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaE
--   </pre>
ResorteviolenciaE :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaUnrated
--   </pre>
ResorteviolenciaUnrated :: ContentRatingResorteviolenciaRating

-- | The video's rating in Egypt.
data ContentRatingEgfilmRating

-- | <pre>
--   egfilm18
--   </pre>
EGFILM18 :: ContentRatingEgfilmRating

-- | <pre>
--   egfilmBn
--   </pre>
EgfilmBn :: ContentRatingEgfilmRating

-- | <pre>
--   egfilmGn
--   </pre>
EgfilmGn :: ContentRatingEgfilmRating

-- | <pre>
--   egfilmUnrated
--   </pre>
EgfilmUnrated :: ContentRatingEgfilmRating

-- | Branding properties of a YouTube channel.
--   
--   <i>See:</i> <a>channelBrandingSettings</a> smart constructor.
data ChannelBrandingSettings

-- | Creates a value of <a>ChannelBrandingSettings</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbsImage</a></li>
--   <li><a>cbsHints</a></li>
--   <li><a>cbsChannel</a></li>
--   <li><a>cbsWatch</a></li>
--   </ul>
channelBrandingSettings :: ChannelBrandingSettings

-- | Branding properties for branding images.
cbsImage :: Lens' ChannelBrandingSettings (Maybe ImageSettings)

-- | Additional experimental branding properties.
cbsHints :: Lens' ChannelBrandingSettings [PropertyValue]

-- | Branding properties for the channel view.
cbsChannel :: Lens' ChannelBrandingSettings (Maybe ChannelSettings)

-- | Branding properties for the watch page.
cbsWatch :: Lens' ChannelBrandingSettings (Maybe WatchSettings)

-- | A comment thread represents information that applies to a top level
--   comment and all its replies. It can also include the top level comment
--   itself and some of the replies.
--   
--   <i>See:</i> <a>commentThread</a> smart constructor.
data CommentThread

-- | Creates a value of <a>CommentThread</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctEtag</a></li>
--   <li><a>ctSnippet</a></li>
--   <li><a>ctKind</a></li>
--   <li><a>ctReplies</a></li>
--   <li><a>ctId</a></li>
--   </ul>
commentThread :: CommentThread

-- | Etag of this resource.
ctEtag :: Lens' CommentThread (Maybe Text)

-- | The snippet object contains basic details about the comment thread and
--   also the top level comment.
ctSnippet :: Lens' CommentThread (Maybe CommentThreadSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#commentThread".
ctKind :: Lens' CommentThread Text

-- | The replies object contains a limited number of replies (if any) to
--   the top level comment found in the snippet.
ctReplies :: Lens' CommentThread (Maybe CommentThreadReplies)

-- | The ID that YouTube uses to uniquely identify the comment thread.
ctId :: Lens' CommentThread (Maybe Text)
data FanFundingEventListResponse

-- | Creates a value of <a>FanFundingEventListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ffelrEtag</a></li>
--   <li><a>ffelrTokenPagination</a></li>
--   <li><a>ffelrNextPageToken</a></li>
--   <li><a>ffelrPageInfo</a></li>
--   <li><a>ffelrKind</a></li>
--   <li><a>ffelrItems</a></li>
--   <li><a>ffelrVisitorId</a></li>
--   <li><a>ffelrEventId</a></li>
--   </ul>
fanFundingEventListResponse :: FanFundingEventListResponse

-- | Etag of this resource.
ffelrEtag :: Lens' FanFundingEventListResponse (Maybe Text)
ffelrTokenPagination :: Lens' FanFundingEventListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
ffelrNextPageToken :: Lens' FanFundingEventListResponse (Maybe Text)
ffelrPageInfo :: Lens' FanFundingEventListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#fanFundingEventListResponse".
ffelrKind :: Lens' FanFundingEventListResponse Text

-- | A list of fan funding events that match the request criteria.
ffelrItems :: Lens' FanFundingEventListResponse [FanFundingEvent]

-- | The visitorId identifies the visitor.
ffelrVisitorId :: Lens' FanFundingEventListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
ffelrEventId :: Lens' FanFundingEventListResponse (Maybe Text)

-- | Playlist localization setting
--   
--   <i>See:</i> <a>playListLocalization</a> smart constructor.
data PlayListLocalization

-- | Creates a value of <a>PlayListLocalization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pllTitle</a></li>
--   <li><a>pllDescription</a></li>
--   </ul>
playListLocalization :: PlayListLocalization

-- | The localized strings for playlist's title.
pllTitle :: Lens' PlayListLocalization (Maybe Text)

-- | The localized strings for playlist's description.
pllDescription :: Lens' PlayListLocalization (Maybe Text)

-- | The video's rating from the Danish Film Institute's (Det Danske
--   Filminstitut) Media Council for Children and Young People.
data ContentRatingMccypRating

-- | <pre>
--   mccyp11
--   </pre>
MCCYP11 :: ContentRatingMccypRating

-- | <pre>
--   mccyp15
--   </pre>
MCCYP15 :: ContentRatingMccypRating

-- | <pre>
--   mccyp7
--   </pre>
MCCYP7 :: ContentRatingMccypRating

-- | <pre>
--   mccypA
--   </pre>
MccypA :: ContentRatingMccypRating

-- | <pre>
--   mccypUnrated
--   </pre>
MccypUnrated :: ContentRatingMccypRating
data LiveChatBanSnippet

-- | Creates a value of <a>LiveChatBanSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcbsLiveChatId</a></li>
--   <li><a>lcbsBannedUserDetails</a></li>
--   <li><a>lcbsBanDurationSeconds</a></li>
--   <li><a>lcbsType</a></li>
--   </ul>
liveChatBanSnippet :: LiveChatBanSnippet

-- | The chat this ban is pertinent to.
lcbsLiveChatId :: Lens' LiveChatBanSnippet (Maybe Text)
lcbsBannedUserDetails :: Lens' LiveChatBanSnippet (Maybe ChannelProFileDetails)

-- | The duration of a ban, only filled if the ban has type TEMPORARY.
lcbsBanDurationSeconds :: Lens' LiveChatBanSnippet (Maybe Word64)

-- | The type of ban.
lcbsType :: Lens' LiveChatBanSnippet (Maybe LiveChatBanSnippetType)

-- | The playlist's privacy status.
data PlayListStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
PLSPSPrivate :: PlayListStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
PLSPSPublic :: PlayListStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
PLSPSUnListed :: PlayListStatusPrivacyStatus

-- | Details about the content to witch a subscription refers.
--   
--   <i>See:</i> <a>subscriptionContentDetails</a> smart constructor.
data SubscriptionContentDetails

-- | Creates a value of <a>SubscriptionContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scdActivityType</a></li>
--   <li><a>scdTotalItemCount</a></li>
--   <li><a>scdNewItemCount</a></li>
--   </ul>
subscriptionContentDetails :: SubscriptionContentDetails

-- | The type of activity this subscription is for (only uploads,
--   everything).
scdActivityType :: Lens' SubscriptionContentDetails (Maybe SubscriptionContentDetailsActivityType)

-- | The approximate number of items that the subscription points to.
scdTotalItemCount :: Lens' SubscriptionContentDetails (Maybe Word32)

-- | The number of new items in the subscription since its content was last
--   read.
scdNewItemCount :: Lens' SubscriptionContentDetails (Maybe Word32)
data LiveBroadcastTopic

-- | Creates a value of <a>LiveBroadcastTopic</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbtSnippet</a></li>
--   <li><a>lbtUnmatched</a></li>
--   <li><a>lbtType</a></li>
--   </ul>
liveBroadcastTopic :: LiveBroadcastTopic

-- | Information about the topic matched.
lbtSnippet :: Lens' LiveBroadcastTopic (Maybe LiveBroadcastTopicSnippet)

-- | If this flag is set it means that we have not been able to match the
--   topic title and type provided to a known entity.
lbtUnmatched :: Lens' LiveBroadcastTopic (Maybe Bool)

-- | The type of the topic.
lbtType :: Lens' LiveBroadcastTopic (Maybe LiveBroadcastTopicType)

-- | The video's rating from France's Conseil supérieur de l?audiovisuel,
--   which rates broadcast content.
data ContentRatingCsaRating

-- | <pre>
--   csa10
--   </pre>
CSA10 :: ContentRatingCsaRating

-- | <pre>
--   csa12
--   </pre>
CSA12 :: ContentRatingCsaRating

-- | <pre>
--   csa16
--   </pre>
CSA16 :: ContentRatingCsaRating

-- | <pre>
--   csa18
--   </pre>
CSA18 :: ContentRatingCsaRating

-- | <pre>
--   csaInterdiction
--   </pre>
CsaInterdiction :: ContentRatingCsaRating

-- | <pre>
--   csaT
--   </pre>
CsaT :: ContentRatingCsaRating

-- | <pre>
--   csaUnrated
--   </pre>
CsaUnrated :: ContentRatingCsaRating

-- | The conversionPings object encapsulates information about conversion
--   pings that need to be respected by the channel.
--   
--   <i>See:</i> <a>channelConversionPings</a> smart constructor.
data ChannelConversionPings

-- | Creates a value of <a>ChannelConversionPings</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccpPings</a></li>
--   </ul>
channelConversionPings :: ChannelConversionPings

-- | Pings that the app shall fire (authenticated by biscotti cookie). Each
--   ping has a context, in which the app must fire the ping, and a url
--   identifying the ping.
ccpPings :: Lens' ChannelConversionPings [ChannelConversionPing]
data LocalizedProperty

-- | Creates a value of <a>LocalizedProperty</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lpDefault</a></li>
--   <li><a>lpLocalized</a></li>
--   <li><a>lpDefaultLanguage</a></li>
--   </ul>
localizedProperty :: LocalizedProperty
lpDefault :: Lens' LocalizedProperty (Maybe Text)
lpLocalized :: Lens' LocalizedProperty [LocalizedString]

-- | The language of the default property.
lpDefaultLanguage :: Lens' LocalizedProperty (Maybe LanguageTag)

-- | The style of the channel section.
data ChannelSectionSnippetStyle

-- | <pre>
--   channelsectionStyleUndefined
--   </pre>
ChannelsectionStyleUndefined :: ChannelSectionSnippetStyle

-- | <pre>
--   horizontalRow
--   </pre>
HorizontalRow :: ChannelSectionSnippetStyle

-- | <pre>
--   verticalList
--   </pre>
VerticalList :: ChannelSectionSnippetStyle

-- | Channel localization setting
--   
--   <i>See:</i> <a>channelLocalization</a> smart constructor.
data ChannelLocalization

-- | Creates a value of <a>ChannelLocalization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clTitle</a></li>
--   <li><a>clDescription</a></li>
--   </ul>
channelLocalization :: ChannelLocalization

-- | The localized strings for channel's title.
clTitle :: Lens' ChannelLocalization (Maybe Text)

-- | The localized strings for channel's description.
clDescription :: Lens' ChannelLocalization (Maybe Text)
data PlayListItemContentDetails

-- | Creates a value of <a>PlayListItemContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plicdStartAt</a></li>
--   <li><a>plicdNote</a></li>
--   <li><a>plicdVideoPublishedAt</a></li>
--   <li><a>plicdVideoId</a></li>
--   <li><a>plicdEndAt</a></li>
--   </ul>
playListItemContentDetails :: PlayListItemContentDetails

-- | The time, measured in seconds from the start of the video, when the
--   video should start playing. (The playlist owner can specify the times
--   when the video should start and stop playing when the video is played
--   in the context of the playlist.) The default value is 0.
plicdStartAt :: Lens' PlayListItemContentDetails (Maybe Text)

-- | A user-generated note for this item.
plicdNote :: Lens' PlayListItemContentDetails (Maybe Text)

-- | The date and time that the video was published to YouTube. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
plicdVideoPublishedAt :: Lens' PlayListItemContentDetails (Maybe UTCTime)

-- | The ID that YouTube uses to uniquely identify a video. To retrieve the
--   video resource, set the id query parameter to this value in your API
--   request.
plicdVideoId :: Lens' PlayListItemContentDetails (Maybe Text)

-- | The time, measured in seconds from the start of the video, when the
--   video should stop playing. (The playlist owner can specify the times
--   when the video should start and stop playing when the video is played
--   in the context of the playlist.) By default, assume that the
--   video.endTime is the end of the video.
plicdEndAt :: Lens' PlayListItemContentDetails (Maybe Text)

-- | The video's Eirin (映倫) rating. Eirin is the Japanese rating system.
data ContentRatingEirinRating

-- | <pre>
--   eirinG
--   </pre>
EirinG :: ContentRatingEirinRating

-- | <pre>
--   eirinPg12
--   </pre>
EIRINPG12 :: ContentRatingEirinRating

-- | <pre>
--   eirinR15plus
--   </pre>
EirinR15plus :: ContentRatingEirinRating

-- | <pre>
--   eirinR18plus
--   </pre>
EirinR18plus :: ContentRatingEirinRating

-- | <pre>
--   eirinUnrated
--   </pre>
EirinUnrated :: ContentRatingEirinRating
data VideoSuggestionsProcessingHintsItem

-- | <pre>
--   nonStreamableMov
--   </pre>
NonStreamableMov :: VideoSuggestionsProcessingHintsItem

-- | <pre>
--   procsesingHintSpatialAudio
--   </pre>
ProcsesingHintSpatialAudio :: VideoSuggestionsProcessingHintsItem

-- | <pre>
--   procsesingHintSphericalVideo
--   </pre>
ProcsesingHintSphericalVideo :: VideoSuggestionsProcessingHintsItem

-- | <pre>
--   sendBestQualityVideo
--   </pre>
SendBestQualityVideo :: VideoSuggestionsProcessingHintsItem
data VideoAgeGating

-- | Creates a value of <a>VideoAgeGating</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vagAlcoholContent</a></li>
--   <li><a>vagRestricted</a></li>
--   <li><a>vagVideoGameRating</a></li>
--   </ul>
videoAgeGating :: VideoAgeGating

-- | Indicates whether or not the video has alcoholic beverage content.
--   Only users of legal purchasing age in a particular country, as
--   identified by ICAP, can view the content.
vagAlcoholContent :: Lens' VideoAgeGating (Maybe Bool)

-- | Age-restricted trailers. For redband trailers and adult-rated
--   video-games. Only users aged 18+ can view the content. The the field
--   is true the content is restricted to viewers aged 18+. Otherwise The
--   field won't be present.
vagRestricted :: Lens' VideoAgeGating (Maybe Bool)

-- | Video game rating, if any.
vagVideoGameRating :: Lens' VideoAgeGating (Maybe VideoAgeGatingVideoGameRating)

-- | The video's rating from the Bulgarian National Film Center.
data ContentRatingNfrcRating

-- | <pre>
--   nfrcA
--   </pre>
NfrcA :: ContentRatingNfrcRating

-- | <pre>
--   nfrcB
--   </pre>
NfrcB :: ContentRatingNfrcRating

-- | <pre>
--   nfrcC
--   </pre>
NfrcC :: ContentRatingNfrcRating

-- | <pre>
--   nfrcD
--   </pre>
NfrcD :: ContentRatingNfrcRating

-- | <pre>
--   nfrcUnrated
--   </pre>
NfrcUnrated :: ContentRatingNfrcRating

-- | <pre>
--   nfrcX
--   </pre>
NfrcX :: ContentRatingNfrcRating

-- | The type of activity that the resource describes.
data ActivitySnippetType

-- | <pre>
--   bulletin
--   </pre>
ASTBulletin :: ActivitySnippetType

-- | <pre>
--   channelItem
--   </pre>
ASTChannelItem :: ActivitySnippetType

-- | <pre>
--   comment
--   </pre>
ASTComment :: ActivitySnippetType

-- | <pre>
--   favorite
--   </pre>
ASTFavorite :: ActivitySnippetType

-- | <pre>
--   like
--   </pre>
ASTLike :: ActivitySnippetType

-- | <pre>
--   playlistItem
--   </pre>
ASTPlayListItem :: ActivitySnippetType

-- | <pre>
--   promotedItem
--   </pre>
ASTPromotedItem :: ActivitySnippetType

-- | <pre>
--   recommendation
--   </pre>
ASTRecommendation :: ActivitySnippetType

-- | <pre>
--   social
--   </pre>
ASTSocial :: ActivitySnippetType

-- | <pre>
--   subscription
--   </pre>
ASTSubscription :: ActivitySnippetType

-- | <pre>
--   upload
--   </pre>
ASTUpload :: ActivitySnippetType

-- | The video's Ministerio de Cultura (Colombia) rating.
data ContentRatingMocRating

-- | <pre>
--   moc12
--   </pre>
MOC12 :: ContentRatingMocRating

-- | <pre>
--   moc15
--   </pre>
MOC15 :: ContentRatingMocRating

-- | <pre>
--   moc18
--   </pre>
MOC18 :: ContentRatingMocRating

-- | <pre>
--   moc7
--   </pre>
MOC7 :: ContentRatingMocRating

-- | <pre>
--   mocBanned
--   </pre>
MocBanned :: ContentRatingMocRating

-- | <pre>
--   mocE
--   </pre>
MocE :: ContentRatingMocRating

-- | <pre>
--   mocT
--   </pre>
MocT :: ContentRatingMocRating

-- | <pre>
--   mocUnrated
--   </pre>
MocUnrated :: ContentRatingMocRating

-- | <pre>
--   mocX
--   </pre>
MocX :: ContentRatingMocRating

-- | The videoEmbeddable parameter lets you to restrict a search to only
--   videos that can be embedded into a webpage. If you specify a value for
--   this parameter, you must also set the type parameter's value to video.
data SearchListVideoEmbeddable

-- | <tt>any</tt> Return all videos, embeddable or not.
SLVEAny :: SearchListVideoEmbeddable

-- | <tt>true</tt> Only retrieve embeddable videos.
SLVETrue' :: SearchListVideoEmbeddable

-- | The video's rating system for Vietnam - MCST
data ContentRatingMcstRating

-- | <pre>
--   mcst0
--   </pre>
MCST0 :: ContentRatingMcstRating

-- | <pre>
--   mcst16plus
--   </pre>
Mcst16plus :: ContentRatingMcstRating

-- | <pre>
--   mcstC13
--   </pre>
MCSTC13 :: ContentRatingMcstRating

-- | <pre>
--   mcstC16
--   </pre>
MCSTC16 :: ContentRatingMcstRating

-- | <pre>
--   mcstC18
--   </pre>
MCSTC18 :: ContentRatingMcstRating

-- | <pre>
--   mcstGPg
--   </pre>
McstGPg :: ContentRatingMcstRating

-- | <pre>
--   mcstP
--   </pre>
McstP :: ContentRatingMcstRating

-- | <pre>
--   mcstUnrated
--   </pre>
McstUnrated :: ContentRatingMcstRating
data LanguageTag

-- | Creates a value of <a>LanguageTag</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltValue</a></li>
--   </ul>
languageTag :: LanguageTag
ltValue :: Lens' LanguageTag (Maybe Text)
data LiveChatPollOpenedDetails

-- | Creates a value of <a>LiveChatPollOpenedDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpodPrompt</a></li>
--   <li><a>lcpodItems</a></li>
--   <li><a>lcpodId</a></li>
--   </ul>
liveChatPollOpenedDetails :: LiveChatPollOpenedDetails
lcpodPrompt :: Lens' LiveChatPollOpenedDetails (Maybe Text)
lcpodItems :: Lens' LiveChatPollOpenedDetails [LiveChatPollItem]
lcpodId :: Lens' LiveChatPollOpenedDetails (Maybe Text)

-- | The eventType parameter restricts a search to broadcast events. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
data SearchListEventType

-- | <tt>completed</tt> Only include completed broadcasts.
SLETCompleted :: SearchListEventType

-- | <tt>live</tt> Only include active broadcasts.
SLETLive :: SearchListEventType

-- | <tt>upcoming</tt> Only include upcoming broadcasts.
SLETUpcoming :: SearchListEventType

-- | Information about a video stream.
--   
--   <i>See:</i> <a>videoFileDetailsVideoStream</a> smart constructor.
data VideoFileDetailsVideoStream

-- | Creates a value of <a>VideoFileDetailsVideoStream</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vfdvsHeightPixels</a></li>
--   <li><a>vfdvsBitrateBps</a></li>
--   <li><a>vfdvsVendor</a></li>
--   <li><a>vfdvsRotation</a></li>
--   <li><a>vfdvsFrameRateFps</a></li>
--   <li><a>vfdvsCodec</a></li>
--   <li><a>vfdvsAspectRatio</a></li>
--   <li><a>vfdvsWidthPixels</a></li>
--   </ul>
videoFileDetailsVideoStream :: VideoFileDetailsVideoStream

-- | The encoded video content's height in pixels.
vfdvsHeightPixels :: Lens' VideoFileDetailsVideoStream (Maybe Word32)

-- | The video stream's bitrate, in bits per second.
vfdvsBitrateBps :: Lens' VideoFileDetailsVideoStream (Maybe Word64)

-- | A value that uniquely identifies a video vendor. Typically, the value
--   is a four-letter vendor code.
vfdvsVendor :: Lens' VideoFileDetailsVideoStream (Maybe Text)

-- | The amount that YouTube needs to rotate the original source content to
--   properly display the video.
vfdvsRotation :: Lens' VideoFileDetailsVideoStream (Maybe VideoFileDetailsVideoStreamRotation)

-- | The video stream's frame rate, in frames per second.
vfdvsFrameRateFps :: Lens' VideoFileDetailsVideoStream (Maybe Double)

-- | The video codec that the stream uses.
vfdvsCodec :: Lens' VideoFileDetailsVideoStream (Maybe Text)

-- | The video content's display aspect ratio, which specifies the aspect
--   ratio in which the video should be displayed.
vfdvsAspectRatio :: Lens' VideoFileDetailsVideoStream (Maybe Double)

-- | The encoded video content's width in pixels. You can calculate the
--   video's encoding aspect ratio as width_pixels / height_pixels.
vfdvsWidthPixels :: Lens' VideoFileDetailsVideoStream (Maybe Word32)

-- | Pings that the app shall fire (authenticated by biscotti cookie). Each
--   ping has a context, in which the app must fire the ping, and a url
--   identifying the ping.
--   
--   <i>See:</i> <a>channelConversionPing</a> smart constructor.
data ChannelConversionPing

-- | Creates a value of <a>ChannelConversionPing</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccpContext</a></li>
--   <li><a>ccpConversionURL</a></li>
--   </ul>
channelConversionPing :: ChannelConversionPing

-- | Defines the context of the ping.
ccpContext :: Lens' ChannelConversionPing (Maybe ChannelConversionPingContext)

-- | The url (without the schema) that the player shall send the ping to.
--   It's at caller's descretion to decide which schema to use (http vs
--   https) Example of a returned url:
--   //googleads.g.doubleclick.net/pagead/
--   viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D
--   cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&amp;labe=default The caller
--   must append biscotti authentication (ms param in case of mobile, for
--   example) to this ping.
ccpConversionURL :: Lens' ChannelConversionPing (Maybe Text)

-- | A playlistItem resource identifies another resource, such as a video,
--   that is included in a playlist. In addition, the playlistItem resource
--   contains details about the included resource that pertain specifically
--   to how that resource is used in that playlist. YouTube uses playlists
--   to identify special collections of videos for a channel, such as: -
--   uploaded videos - favorite videos - positively rated (liked) videos -
--   watch history - watch later To be more specific, these lists are
--   associated with a channel, which is a collection of a person, group,
--   or company's videos, playlists, and other YouTube information. You can
--   retrieve the playlist IDs for each of these lists from the channel
--   resource for a given channel. You can then use the playlistItems.list
--   method to retrieve any of those lists. You can also add or remove
--   items from those lists by calling the playlistItems.insert and
--   playlistItems.delete methods. For example, if a user gives a positive
--   rating to a video, you would insert that video into the liked videos
--   playlist for that user's channel.
--   
--   <i>See:</i> <a>playListItem</a> smart constructor.
data PlayListItem

-- | Creates a value of <a>PlayListItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pliStatus</a></li>
--   <li><a>pliEtag</a></li>
--   <li><a>pliSnippet</a></li>
--   <li><a>pliKind</a></li>
--   <li><a>pliContentDetails</a></li>
--   <li><a>pliId</a></li>
--   </ul>
playListItem :: PlayListItem

-- | The status object contains information about the playlist item's
--   privacy status.
pliStatus :: Lens' PlayListItem (Maybe PlayListItemStatus)

-- | Etag of this resource.
pliEtag :: Lens' PlayListItem (Maybe Text)

-- | The snippet object contains basic details about the playlist item,
--   such as its title and position in the playlist.
pliSnippet :: Lens' PlayListItem (Maybe PlayListItemSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#playlistItem".
pliKind :: Lens' PlayListItem Text

-- | The contentDetails object is included in the resource if the included
--   item is a YouTube video. The object contains additional information
--   about the video.
pliContentDetails :: Lens' PlayListItem (Maybe PlayListItemContentDetails)

-- | The ID that YouTube uses to uniquely identify the playlist item.
pliId :: Lens' PlayListItem (Maybe Text)

-- | The reason that the resource is recommended to the user.
data ActivityContentDetailsRecommendationReason

-- | <pre>
--   unspecified
--   </pre>
ACDRRUnspecified :: ActivityContentDetailsRecommendationReason

-- | <pre>
--   videoFavorited
--   </pre>
ACDRRVideoFavorited :: ActivityContentDetailsRecommendationReason

-- | <pre>
--   videoLiked
--   </pre>
ACDRRVideoLiked :: ActivityContentDetailsRecommendationReason

-- | <pre>
--   videoWatched
--   </pre>
ACDRRVideoWatched :: ActivityContentDetailsRecommendationReason

-- | voor de Classificatie van Audiovisuele Media (Netherlands).
data ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer12
--   </pre>
KIJKWIJZER12 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer16
--   </pre>
KIJKWIJZER16 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer18
--   </pre>
KIJKWIJZER18 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer6
--   </pre>
KIJKWIJZER6 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer9
--   </pre>
KIJKWIJZER9 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzerAl
--   </pre>
KijkwijzerAl :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzerUnrated
--   </pre>
KijkwijzerUnrated :: ContentRatingKijkwijzerRating
data VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   archiveFile
--   </pre>
ArchiveFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   audioFile
--   </pre>
AudioFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   docFile
--   </pre>
DocFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   imageFile
--   </pre>
ImageFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   notAVideoFile
--   </pre>
NotAVideoFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   projectFile
--   </pre>
ProjectFile :: VideoSuggestionsProcessingErrorsItem

-- | The uploaded file's type as detected by YouTube's video processing
--   engine. Currently, YouTube only processes video files, but this field
--   is present whether a video file or another type of file was uploaded.
data VideoFileDetailsFileType

-- | <pre>
--   archive
--   </pre>
VFDFTArchive :: VideoFileDetailsFileType

-- | <pre>
--   audio
--   </pre>
VFDFTAudio :: VideoFileDetailsFileType

-- | <pre>
--   document
--   </pre>
VFDFTDocument :: VideoFileDetailsFileType

-- | <pre>
--   image
--   </pre>
VFDFTImage :: VideoFileDetailsFileType

-- | <pre>
--   other
--   </pre>
VFDFTOther :: VideoFileDetailsFileType

-- | <pre>
--   project
--   </pre>
VFDFTProject :: VideoFileDetailsFileType

-- | <pre>
--   video
--   </pre>
VFDFTVideo :: VideoFileDetailsFileType

-- | The video's rating from the Movie and Television Review and
--   Classification Board (Philippines).
data ContentRatingMtrcbRating

-- | <pre>
--   mtrcbG
--   </pre>
MtrcbG :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbPg
--   </pre>
MtrcbPg :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbR13
--   </pre>
MTRCBR13 :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbR16
--   </pre>
MTRCBR16 :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbR18
--   </pre>
MTRCBR18 :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbUnrated
--   </pre>
MtrcbUnrated :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbX
--   </pre>
MtrcbX :: ContentRatingMtrcbRating

-- | The video's rating from Hong Kong's Office for Film, Newspaper and
--   Article Administration.
data ContentRatingFcoRating

-- | <pre>
--   fcoI
--   </pre>
FcoI :: ContentRatingFcoRating

-- | <pre>
--   fcoIi
--   </pre>
FcoIi :: ContentRatingFcoRating

-- | <pre>
--   fcoIia
--   </pre>
FcoIia :: ContentRatingFcoRating

-- | <pre>
--   fcoIib
--   </pre>
FcoIib :: ContentRatingFcoRating

-- | <pre>
--   fcoIii
--   </pre>
FcoIii :: ContentRatingFcoRating

-- | <pre>
--   fcoUnrated
--   </pre>
FcoUnrated :: ContentRatingFcoRating
data GuideCategoryListResponse

-- | Creates a value of <a>GuideCategoryListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gclrEtag</a></li>
--   <li><a>gclrTokenPagination</a></li>
--   <li><a>gclrNextPageToken</a></li>
--   <li><a>gclrPageInfo</a></li>
--   <li><a>gclrKind</a></li>
--   <li><a>gclrItems</a></li>
--   <li><a>gclrVisitorId</a></li>
--   <li><a>gclrEventId</a></li>
--   <li><a>gclrPrevPageToken</a></li>
--   </ul>
guideCategoryListResponse :: GuideCategoryListResponse

-- | Etag of this resource.
gclrEtag :: Lens' GuideCategoryListResponse (Maybe Text)
gclrTokenPagination :: Lens' GuideCategoryListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
gclrNextPageToken :: Lens' GuideCategoryListResponse (Maybe Text)
gclrPageInfo :: Lens' GuideCategoryListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#guideCategoryListResponse".
gclrKind :: Lens' GuideCategoryListResponse Text

-- | A list of categories that can be associated with YouTube channels. In
--   this map, the category ID is the map key, and its value is the
--   corresponding guideCategory resource.
gclrItems :: Lens' GuideCategoryListResponse [GuideCategory]

-- | The visitorId identifies the visitor.
gclrVisitorId :: Lens' GuideCategoryListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
gclrEventId :: Lens' GuideCategoryListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
gclrPrevPageToken :: Lens' GuideCategoryListResponse (Maybe Text)

-- | Basic details about a caption track, such as its language and name.
--   
--   <i>See:</i> <a>captionSnippet</a> smart constructor.
data CaptionSnippet

-- | Creates a value of <a>CaptionSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csFailureReason</a></li>
--   <li><a>csStatus</a></li>
--   <li><a>csLastUpdated</a></li>
--   <li><a>csTrackKind</a></li>
--   <li><a>csIsDraft</a></li>
--   <li><a>csIsCC</a></li>
--   <li><a>csVideoId</a></li>
--   <li><a>csName</a></li>
--   <li><a>csIsLarge</a></li>
--   <li><a>csLanguage</a></li>
--   <li><a>csIsAutoSynced</a></li>
--   <li><a>csIsEasyReader</a></li>
--   <li><a>csAudioTrackType</a></li>
--   </ul>
captionSnippet :: CaptionSnippet

-- | The reason that YouTube failed to process the caption track. This
--   property is only present if the state property's value is failed.
csFailureReason :: Lens' CaptionSnippet (Maybe CaptionSnippetFailureReason)

-- | The caption track's status.
csStatus :: Lens' CaptionSnippet (Maybe CaptionSnippetStatus)

-- | The date and time when the caption track was last updated. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
csLastUpdated :: Lens' CaptionSnippet (Maybe UTCTime)

-- | The caption track's type.
csTrackKind :: Lens' CaptionSnippet (Maybe CaptionSnippetTrackKind)

-- | Indicates whether the caption track is a draft. If the value is true,
--   then the track is not publicly visible. The default value is false.
csIsDraft :: Lens' CaptionSnippet (Maybe Bool)

-- | Indicates whether the track contains closed captions for the deaf and
--   hard of hearing. The default value is false.
csIsCC :: Lens' CaptionSnippet (Maybe Bool)

-- | The ID that YouTube uses to uniquely identify the video associated
--   with the caption track.
csVideoId :: Lens' CaptionSnippet (Maybe Text)

-- | The name of the caption track. The name is intended to be visible to
--   the user as an option during playback.
csName :: Lens' CaptionSnippet (Maybe Text)

-- | Indicates whether the caption track uses large text for the
--   vision-impaired. The default value is false.
csIsLarge :: Lens' CaptionSnippet (Maybe Bool)

-- | The language of the caption track. The property value is a BCP-47
--   language tag.
csLanguage :: Lens' CaptionSnippet (Maybe Text)

-- | Indicates whether YouTube synchronized the caption track to the audio
--   track in the video. The value will be true if a sync was explicitly
--   requested when the caption track was uploaded. For example, when
--   calling the captions.insert or captions.update methods, you can set
--   the sync parameter to true to instruct YouTube to sync the uploaded
--   track to the video. If the value is false, YouTube uses the time codes
--   in the uploaded caption track to determine when to display captions.
csIsAutoSynced :: Lens' CaptionSnippet (Maybe Bool)

-- | Indicates whether caption track is formatted for "easy reader,"
--   meaning it is at a third-grade level for language learners. The
--   default value is false.
csIsEasyReader :: Lens' CaptionSnippet (Maybe Bool)

-- | The type of audio track associated with the caption track.
csAudioTrackType :: Lens' CaptionSnippet (Maybe CaptionSnippetAudioTrackType)

-- | The frame rate of the inbound video data.
data CdnSettingsFrameRate

-- | <pre>
--   30fps
--   </pre>
CSFR30fps :: CdnSettingsFrameRate

-- | <pre>
--   60fps
--   </pre>
CSFR60fps :: CdnSettingsFrameRate

-- | A comment represents a single YouTube comment.
--   
--   <i>See:</i> <a>comment</a> smart constructor.
data Comment

-- | Creates a value of <a>Comment</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccEtag</a></li>
--   <li><a>ccSnippet</a></li>
--   <li><a>ccKind</a></li>
--   <li><a>ccId</a></li>
--   </ul>
comment :: Comment

-- | Etag of this resource.
ccEtag :: Lens' Comment (Maybe Text)

-- | The snippet object contains basic details about the comment.
ccSnippet :: Lens' Comment (Maybe CommentSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#comment".
ccKind :: Lens' Comment Text

-- | The ID that YouTube uses to uniquely identify the comment.
ccId :: Lens' Comment (Maybe Text)

-- | Basic details about an i18n region, such as region code and
--   human-readable name.
--   
--   <i>See:</i> <a>i18nRegionSnippet</a> smart constructor.
data I18nRegionSnippet

-- | Creates a value of <a>I18nRegionSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irsName</a></li>
--   <li><a>irsGl</a></li>
--   </ul>
i18nRegionSnippet :: I18nRegionSnippet

-- | The human-readable name of the region.
irsName :: Lens' I18nRegionSnippet (Maybe Text)

-- | The region code as a 2-letter ISO country code.
irsGl :: Lens' I18nRegionSnippet (Maybe Text)

-- | The kind of error happening.
data LiveStreamConfigurationIssueType

-- | <pre>
--   audioBitrateHigh
--   </pre>
AudioBitrateHigh :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioBitrateLow
--   </pre>
AudioBitrateLow :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioBitrateMismatch
--   </pre>
AudioBitrateMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioCodec
--   </pre>
AudioCodec :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioCodecMismatch
--   </pre>
AudioCodecMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioSampleRate
--   </pre>
AudioSampleRate :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioSampleRateMismatch
--   </pre>
AudioSampleRateMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioStereoMismatch
--   </pre>
AudioStereoMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioTooManyChannels
--   </pre>
AudioTooManyChannels :: LiveStreamConfigurationIssueType

-- | <pre>
--   badContainer
--   </pre>
BadContainer :: LiveStreamConfigurationIssueType

-- | <pre>
--   bitrateHigh
--   </pre>
BitrateHigh :: LiveStreamConfigurationIssueType

-- | <pre>
--   bitrateLow
--   </pre>
BitrateLow :: LiveStreamConfigurationIssueType

-- | <pre>
--   frameRateHigh
--   </pre>
FrameRateHigh :: LiveStreamConfigurationIssueType

-- | <pre>
--   framerateMismatch
--   </pre>
FramerateMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   gopMismatch
--   </pre>
GopMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   gopSizeLong
--   </pre>
GopSizeLong :: LiveStreamConfigurationIssueType

-- | <pre>
--   gopSizeOver
--   </pre>
GopSizeOver :: LiveStreamConfigurationIssueType

-- | <pre>
--   gopSizeShort
--   </pre>
GopSizeShort :: LiveStreamConfigurationIssueType

-- | <pre>
--   interlacedVideo
--   </pre>
InterlacedVideo :: LiveStreamConfigurationIssueType

-- | <pre>
--   multipleAudioStreams
--   </pre>
MultipleAudioStreams :: LiveStreamConfigurationIssueType

-- | <pre>
--   multipleVideoStreams
--   </pre>
MultipleVideoStreams :: LiveStreamConfigurationIssueType

-- | <pre>
--   noAudioStream
--   </pre>
NoAudioStream :: LiveStreamConfigurationIssueType

-- | <pre>
--   noVideoStream
--   </pre>
NoVideoStream :: LiveStreamConfigurationIssueType

-- | <pre>
--   openGop
--   </pre>
OpenGop :: LiveStreamConfigurationIssueType

-- | <pre>
--   resolutionMismatch
--   </pre>
ResolutionMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoBitrateMismatch
--   </pre>
VideoBitrateMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoCodec
--   </pre>
VideoCodec :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoCodecMismatch
--   </pre>
VideoCodecMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoIngestionStarved
--   </pre>
VideoIngestionStarved :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoInterlaceMismatch
--   </pre>
VideoInterlaceMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoProfileMismatch
--   </pre>
VideoProFileMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoResolutionSuboptimal
--   </pre>
VideoResolutionSuboptimal :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoResolutionUnsupported
--   </pre>
VideoResolutionUnsupported :: LiveStreamConfigurationIssueType

-- | The safeSearch parameter indicates whether the search results should
--   include restricted content as well as standard content.
data SearchListSafeSearch

-- | <tt>moderate</tt> YouTube will filter some content from search results
--   and, at the least, will filter content that is restricted in your
--   locale. Based on their content, search results could be removed from
--   search results or demoted in search results. This is the default
--   parameter value.
SLSSModerate :: SearchListSafeSearch

-- | <tt>none</tt> YouTube will not filter the search result set.
SLSSNone :: SearchListSafeSearch

-- | <tt>strict</tt> YouTube will try to exclude all restricted content
--   from the search result set. Based on their content, search results
--   could be removed from search results or demoted in search results.
SLSSStrict :: SearchListSafeSearch

-- | A subscription resource contains information about a YouTube user
--   subscription. A subscription notifies a user when new videos are added
--   to a channel or when another user takes one of several actions on
--   YouTube, such as uploading a video, rating a video, or commenting on a
--   video.
--   
--   <i>See:</i> <a>subscription</a> smart constructor.
data Subscription

-- | Creates a value of <a>Subscription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssEtag</a></li>
--   <li><a>ssSubscriberSnippet</a></li>
--   <li><a>ssSnippet</a></li>
--   <li><a>ssKind</a></li>
--   <li><a>ssContentDetails</a></li>
--   <li><a>ssId</a></li>
--   </ul>
subscription :: Subscription

-- | Etag of this resource.
ssEtag :: Lens' Subscription (Maybe Text)

-- | The subscriberSnippet object contains basic details about the
--   sbuscriber.
ssSubscriberSnippet :: Lens' Subscription (Maybe SubscriptionSubscriberSnippet)

-- | The snippet object contains basic details about the subscription,
--   including its title and the channel that the user subscribed to.
ssSnippet :: Lens' Subscription (Maybe SubscriptionSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#subscription".
ssKind :: Lens' Subscription Text

-- | The contentDetails object contains basic statistics about the
--   subscription.
ssContentDetails :: Lens' Subscription (Maybe SubscriptionContentDetails)

-- | The ID that YouTube uses to uniquely identify the subscription.
ssId :: Lens' Subscription (Maybe Text)

-- | The videoSyndicated parameter lets you to restrict a search to only
--   videos that can be played outside youtube.com. If you specify a value
--   for this parameter, you must also set the type parameter's value to
--   video.
data SearchListVideoSyndicated

-- | <tt>any</tt> Return all videos, syndicated or not.
SLVSAny :: SearchListVideoSyndicated

-- | <tt>true</tt> Only retrieve syndicated videos.
SLVSTrue' :: SearchListVideoSyndicated
data ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqCriminalActs
--   </pre>
DjctqCriminalActs :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqDrugs
--   </pre>
DjctqDrugs :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqExplicitSex
--   </pre>
DjctqExplicitSex :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqExtremeViolence
--   </pre>
DjctqExtremeViolence :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqIllegalDrugs
--   </pre>
DjctqIllegalDrugs :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqImpactingContent
--   </pre>
DjctqImpactingContent :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqInappropriateLanguage
--   </pre>
DjctqInAppropriateLanguage :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqLegalDrugs
--   </pre>
DjctqLegalDrugs :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqNudity
--   </pre>
DjctqNudity :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqSex
--   </pre>
DjctqSex :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqSexualContent
--   </pre>
DjctqSexualContent :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqViolence
--   </pre>
DjctqViolence :: ContentRatingDjctqRatingReasonsItem

-- | Recording information associated with the video.
--   
--   <i>See:</i> <a>videoRecordingDetails</a> smart constructor.
data VideoRecordingDetails

-- | Creates a value of <a>VideoRecordingDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vrdLocation</a></li>
--   <li><a>vrdLocationDescription</a></li>
--   <li><a>vrdRecordingDate</a></li>
--   </ul>
videoRecordingDetails :: VideoRecordingDetails

-- | The geolocation information associated with the video.
vrdLocation :: Lens' VideoRecordingDetails (Maybe GeoPoint)

-- | The text description of the location where the video was recorded.
vrdLocationDescription :: Lens' VideoRecordingDetails (Maybe Text)

-- | The date and time when the video was recorded. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sssZ) format.
vrdRecordingDate :: Lens' VideoRecordingDetails (Maybe UTCTime)

-- | The method or protocol used to transmit the video stream.
data CdnSettingsIngestionType

-- | <pre>
--   dash
--   </pre>
Dash :: CdnSettingsIngestionType

-- | <pre>
--   rtmp
--   </pre>
Rtmp :: CdnSettingsIngestionType

-- | Describes a timing type. If the value is offsetFromStart, then the
--   offsetMs field represents an offset from the start of the video. If
--   the value is offsetFromEnd, then the offsetMs field represents an
--   offset from the end of the video.
data InvideoTimingType

-- | <pre>
--   offsetFromEnd
--   </pre>
OffSetFromEnd :: InvideoTimingType

-- | <pre>
--   offsetFromStart
--   </pre>
OffSetFromStart :: InvideoTimingType
data VideoRating

-- | Creates a value of <a>VideoRating</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vRating</a></li>
--   <li><a>vVideoId</a></li>
--   </ul>
videoRating :: VideoRating
vRating :: Lens' VideoRating (Maybe VideoRatingRating)
vVideoId :: Lens' VideoRating (Maybe Text)

-- | The video's rating from Italy's Autorità per le Garanzie nelle
--   Comunicazioni (AGCOM).
data ContentRatingAgcomRating

-- | <pre>
--   agcomT
--   </pre>
AgcomT :: ContentRatingAgcomRating

-- | <pre>
--   agcomUnrated
--   </pre>
AgcomUnrated :: ContentRatingAgcomRating

-- | <pre>
--   agcomVm14
--   </pre>
AGCOMVM14 :: ContentRatingAgcomRating

-- | <pre>
--   agcomVm18
--   </pre>
AGCOMVM18 :: ContentRatingAgcomRating

-- | Basic details about a comment, such as its author and text.
--   
--   <i>See:</i> <a>commentSnippet</a> smart constructor.
data CommentSnippet

-- | Creates a value of <a>CommentSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cViewerRating</a></li>
--   <li><a>cPublishedAt</a></li>
--   <li><a>cAuthorChannelURL</a></li>
--   <li><a>cModerationStatus</a></li>
--   <li><a>cLikeCount</a></li>
--   <li><a>cChannelId</a></li>
--   <li><a>cTextOriginal</a></li>
--   <li><a>cVideoId</a></li>
--   <li><a>cTextDisplay</a></li>
--   <li><a>cAuthorProFileImageURL</a></li>
--   <li><a>cAuthorDisplayName</a></li>
--   <li><a>cUpdatedAt</a></li>
--   <li><a>cAuthorChannelId</a></li>
--   <li><a>cCanRate</a></li>
--   <li><a>cParentId</a></li>
--   </ul>
commentSnippet :: CommentSnippet

-- | The rating the viewer has given to this comment. For the time being
--   this will never return RATE_TYPE_DISLIKE and instead return
--   RATE_TYPE_NONE. This may change in the future.
cViewerRating :: Lens' CommentSnippet (Maybe CommentSnippetViewerRating)

-- | The date and time when the comment was orignally published. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
cPublishedAt :: Lens' CommentSnippet (Maybe UTCTime)

-- | Link to the author's YouTube channel, if any.
cAuthorChannelURL :: Lens' CommentSnippet (Maybe Text)

-- | The comment's moderation status. Will not be set if the comments were
--   requested through the id filter.
cModerationStatus :: Lens' CommentSnippet (Maybe CommentSnippetModerationStatus)

-- | The total number of likes this comment has received.
cLikeCount :: Lens' CommentSnippet (Maybe Word32)

-- | The id of the corresponding YouTube channel. In case of a channel
--   comment this is the channel the comment refers to. In case of a video
--   comment it's the video's channel.
cChannelId :: Lens' CommentSnippet (Maybe Text)

-- | The comment's original raw text as initially posted or last updated.
--   The original text will only be returned if it is accessible to the
--   viewer, which is only guaranteed if the viewer is the comment's
--   author.
cTextOriginal :: Lens' CommentSnippet (Maybe Text)

-- | The ID of the video the comment refers to, if any.
cVideoId :: Lens' CommentSnippet (Maybe Text)

-- | The comment's text. The format is either plain text or HTML dependent
--   on what has been requested. Even the plain text representation may
--   differ from the text originally posted in that it may replace video
--   links with video titles etc.
cTextDisplay :: Lens' CommentSnippet (Maybe Text)

-- | The URL for the avatar of the user who posted the comment.
cAuthorProFileImageURL :: Lens' CommentSnippet (Maybe Text)

-- | The name of the user who posted the comment.
cAuthorDisplayName :: Lens' CommentSnippet (Maybe Text)

-- | The date and time when was last updated . The value is specified in
--   ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
cUpdatedAt :: Lens' CommentSnippet (Maybe UTCTime)

-- | The id of the author's YouTube channel, if any.
cAuthorChannelId :: Lens' CommentSnippet (Maybe JSONValue)

-- | Whether the current viewer can rate this comment.
cCanRate :: Lens' CommentSnippet (Maybe Bool)

-- | The unique id of the parent comment, only set for replies.
cParentId :: Lens' CommentSnippet (Maybe Text)

-- | Brief description of the live stream status.
--   
--   <i>See:</i> <a>liveStreamStatus</a> smart constructor.
data LiveStreamStatus

-- | Creates a value of <a>LiveStreamStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lssStreamStatus</a></li>
--   <li><a>lssHealthStatus</a></li>
--   </ul>
liveStreamStatus :: LiveStreamStatus
lssStreamStatus :: Lens' LiveStreamStatus (Maybe LiveStreamStatusStreamStatus)

-- | The health status of the stream.
lssHealthStatus :: Lens' LiveStreamStatus (Maybe LiveStreamHealthStatus)

-- | Specifies suggestions on how to improve video content, including
--   encoding hints, tag suggestions, and editor suggestions.
--   
--   <i>See:</i> <a>videoSuggestions</a> smart constructor.
data VideoSuggestions

-- | Creates a value of <a>VideoSuggestions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vsProcessingErrors</a></li>
--   <li><a>vsProcessingHints</a></li>
--   <li><a>vsEditorSuggestions</a></li>
--   <li><a>vsProcessingWarnings</a></li>
--   <li><a>vsTagSuggestions</a></li>
--   </ul>
videoSuggestions :: VideoSuggestions

-- | A list of errors that will prevent YouTube from successfully
--   processing the uploaded video video. These errors indicate that,
--   regardless of the video's current processing status, eventually, that
--   status will almost certainly be failed.
vsProcessingErrors :: Lens' VideoSuggestions [VideoSuggestionsProcessingErrorsItem]

-- | A list of suggestions that may improve YouTube's ability to process
--   the video.
vsProcessingHints :: Lens' VideoSuggestions [VideoSuggestionsProcessingHintsItem]

-- | A list of video editing operations that might improve the video
--   quality or playback experience of the uploaded video.
vsEditorSuggestions :: Lens' VideoSuggestions [VideoSuggestionsEditorSuggestionsItem]

-- | A list of reasons why YouTube may have difficulty transcoding the
--   uploaded video or that might result in an erroneous transcoding. These
--   warnings are generated before YouTube actually processes the uploaded
--   video file. In addition, they identify issues that are unlikely to
--   cause the video processing to fail but that might cause problems such
--   as sync issues, video artifacts, or a missing audio track.
vsProcessingWarnings :: Lens' VideoSuggestions [VideoSuggestionsProcessingWarningsItem]

-- | A list of keyword tags that could be added to the video's metadata to
--   increase the likelihood that users will locate your video when
--   searching or browsing on YouTube.
vsTagSuggestions :: Lens' VideoSuggestions [VideoSuggestionsTagSuggestion]

-- | The comment's moderation status. Will not be set if the comments were
--   requested through the id filter.
data CommentSnippetModerationStatus

-- | <pre>
--   heldForReview
--   </pre>
CSMSHeldForReview :: CommentSnippetModerationStatus

-- | <pre>
--   likelySpam
--   </pre>
CSMSLikelySpam :: CommentSnippetModerationStatus

-- | <pre>
--   published
--   </pre>
CSMSPublished :: CommentSnippetModerationStatus

-- | <pre>
--   rejected
--   </pre>
CSMSRejected :: CommentSnippetModerationStatus

-- | Basic details about a playlist, including title, description and
--   thumbnails.
--   
--   <i>See:</i> <a>playListItemSnippet</a> smart constructor.
data PlayListItemSnippet

-- | Creates a value of <a>PlayListItemSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plisResourceId</a></li>
--   <li><a>plisPublishedAt</a></li>
--   <li><a>plisChannelTitle</a></li>
--   <li><a>plisChannelId</a></li>
--   <li><a>plisThumbnails</a></li>
--   <li><a>plisTitle</a></li>
--   <li><a>plisPlayListId</a></li>
--   <li><a>plisDescription</a></li>
--   <li><a>plisPosition</a></li>
--   </ul>
playListItemSnippet :: PlayListItemSnippet

-- | The id object contains information that can be used to uniquely
--   identify the resource that is included in the playlist as the playlist
--   item.
plisResourceId :: Lens' PlayListItemSnippet (Maybe ResourceId)

-- | The date and time that the item was added to the playlist. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
plisPublishedAt :: Lens' PlayListItemSnippet (Maybe UTCTime)

-- | Channel title for the channel that the playlist item belongs to.
plisChannelTitle :: Lens' PlayListItemSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the user that added the
--   item to the playlist.
plisChannelId :: Lens' PlayListItemSnippet (Maybe Text)

-- | A map of thumbnail images associated with the playlist item. For each
--   object in the map, the key is the name of the thumbnail image, and the
--   value is an object that contains other information about the
--   thumbnail.
plisThumbnails :: Lens' PlayListItemSnippet (Maybe ThumbnailDetails)

-- | The item's title.
plisTitle :: Lens' PlayListItemSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the playlist that the
--   playlist item is in.
plisPlayListId :: Lens' PlayListItemSnippet (Maybe Text)

-- | The item's description.
plisDescription :: Lens' PlayListItemSnippet (Maybe Text)

-- | The order in which the item appears in the playlist. The value uses a
--   zero-based index, so the first item has a position of 0, the second
--   item has a position of 1, and so forth.
plisPosition :: Lens' PlayListItemSnippet (Maybe Word32)

-- | Project specific details about the content of a YouTube Video.
--   
--   <i>See:</i> <a>videoProjectDetails</a> smart constructor.
data VideoProjectDetails

-- | Creates a value of <a>VideoProjectDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpdTags</a></li>
--   </ul>
videoProjectDetails :: VideoProjectDetails

-- | A list of project tags associated with the video during the upload.
vpdTags :: Lens' VideoProjectDetails [Text]

-- | The videoLicense parameter filters search results to only include
--   videos with a particular license. YouTube lets video uploaders choose
--   to attach either the Creative Commons license or the standard YouTube
--   license to each of their videos. If you specify a value for this
--   parameter, you must also set the type parameter's value to video.
data SearchListVideoLicense

-- | <tt>any</tt> Return all videos, regardless of which license they have,
--   that match the query parameters.
SLVLAny :: SearchListVideoLicense

-- | <tt>creativeCommon</tt> Only return videos that have a Creative
--   Commons license. Users can reuse videos with this license in other
--   videos that they create. Learn more.
SLVLCreativeCommon :: SearchListVideoLicense

-- | <tt>youtube</tt> Only return videos that have the standard YouTube
--   license.
SLVLYouTube :: SearchListVideoLicense

-- | Ratings schemes. The country-specific ratings are mostly for movies
--   and shows. NEXT_ID: 69
--   
--   <i>See:</i> <a>contentRating</a> smart constructor.
data ContentRating

-- | Creates a value of <a>ContentRating</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crFpbRatingReasons</a></li>
--   <li><a>crPefilmRating</a></li>
--   <li><a>crCccRating</a></li>
--   <li><a>crAnatelRating</a></li>
--   <li><a>crMpaaRating</a></li>
--   <li><a>crCceRating</a></li>
--   <li><a>crMccaaRating</a></li>
--   <li><a>crChfilmRating</a></li>
--   <li><a>crIcaaRating</a></li>
--   <li><a>crFcbmRating</a></li>
--   <li><a>crBmukkRating</a></li>
--   <li><a>crMoctwRating</a></li>
--   <li><a>crNfvcbRating</a></li>
--   <li><a>crDjctqRatingReasons</a></li>
--   <li><a>crAgcomRating</a></li>
--   <li><a>crCnaRating</a></li>
--   <li><a>crCatvfrRating</a></li>
--   <li><a>crCbfcRating</a></li>
--   <li><a>crKfcbRating</a></li>
--   <li><a>crSmsaRating</a></li>
--   <li><a>crChvrsRating</a></li>
--   <li><a>crIncaaRating</a></li>
--   <li><a>crMcstRating</a></li>
--   <li><a>crNfrcRating</a></li>
--   <li><a>crCsaRating</a></li>
--   <li><a>crMocRating</a></li>
--   <li><a>crEirinRating</a></li>
--   <li><a>crFskRating</a></li>
--   <li><a>crEefilmRating</a></li>
--   <li><a>crRcnofRating</a></li>
--   <li><a>crMekuRating</a></li>
--   <li><a>crIlfilmRating</a></li>
--   <li><a>crIfcoRating</a></li>
--   <li><a>crNbcplRating</a></li>
--   <li><a>crGrfilmRating</a></li>
--   <li><a>crRteRating</a></li>
--   <li><a>crAcbRating</a></li>
--   <li><a>crCatvRating</a></li>
--   <li><a>crMdaRating</a></li>
--   <li><a>crDjctqRating</a></li>
--   <li><a>crSmaisRating</a></li>
--   <li><a>crCscfRating</a></li>
--   <li><a>crTvpgRating</a></li>
--   <li><a>crRtcRating</a></li>
--   <li><a>crYtRating</a></li>
--   <li><a>crBbfcRating</a></li>
--   <li><a>crKijkwijzerRating</a></li>
--   <li><a>crMtrcbRating</a></li>
--   <li><a>crFcoRating</a></li>
--   <li><a>crCicfRating</a></li>
--   <li><a>crCzfilmRating</a></li>
--   <li><a>crNbcRating</a></li>
--   <li><a>crFmocRating</a></li>
--   <li><a>crRussiaRating</a></li>
--   <li><a>crEgfilmRating</a></li>
--   <li><a>crResorteviolenciaRating</a></li>
--   <li><a>crMibacRating</a></li>
--   <li><a>crMedietilsynetRating</a></li>
--   <li><a>crMccypRating</a></li>
--   <li><a>crNkclvRating</a></li>
--   <li><a>crFpbRating</a></li>
--   <li><a>crLsfRating</a></li>
--   <li><a>crBfvcRating</a></li>
--   <li><a>crEcbmctRating</a></li>
--   <li><a>crCNCRating</a></li>
--   <li><a>crSkfilmRating</a></li>
--   <li><a>crOflcRating</a></li>
--   <li><a>crKmrbRating</a></li>
--   </ul>
contentRating :: ContentRating

-- | Reasons that explain why the video received its FPB (South Africa)
--   rating.
crFpbRatingReasons :: Lens' ContentRating [ContentRatingFpbRatingReasonsItem]

-- | The video's rating in Peru.
crPefilmRating :: Lens' ContentRating (Maybe ContentRatingPefilmRating)

-- | The video's Consejo de Calificación Cinematográfica (Chile) rating.
crCccRating :: Lens' ContentRating (Maybe ContentRatingCccRating)

-- | The video's Anatel (Asociación Nacional de Televisión) rating for
--   Chilean television.
crAnatelRating :: Lens' ContentRating (Maybe ContentRatingAnatelRating)

-- | The video's Motion Picture Association of America (MPAA) rating.
crMpaaRating :: Lens' ContentRating (Maybe ContentRatingMpaaRating)

-- | The video's rating from Portugal's Comissão de Classificação de
--   Espect´culos.
crCceRating :: Lens' ContentRating (Maybe ContentRatingCceRating)

-- | The video's rating from Malta's Film Age-Classification Board.
crMccaaRating :: Lens' ContentRating (Maybe ContentRatingMccaaRating)

-- | The video's rating in Switzerland.
crChfilmRating :: Lens' ContentRating (Maybe ContentRatingChfilmRating)

-- | The video's Instituto de la Cinematografía y de las Artes
--   Audiovisuales (ICAA - Spain) rating.
crIcaaRating :: Lens' ContentRating (Maybe ContentRatingIcaaRating)

-- | The video's rating from Malaysia's Film Censorship Board.
crFcbmRating :: Lens' ContentRating (Maybe ContentRatingFcbmRating)

-- | The video's rating from the Austrian Board of Media Classification
--   (Bundesministerium für Unterricht, Kunst und Kultur).
crBmukkRating :: Lens' ContentRating (Maybe ContentRatingBmukkRating)

-- | The video's rating from Taiwan's Ministry of Culture (文化部).
crMoctwRating :: Lens' ContentRating (Maybe ContentRatingMoctwRating)

-- | The video's rating from Nigeria's National Film and Video Censors
--   Board.
crNfvcbRating :: Lens' ContentRating (Maybe ContentRatingNfvcbRating)

-- | Reasons that explain why the video received its DJCQT (Brazil) rating.
crDjctqRatingReasons :: Lens' ContentRating [ContentRatingDjctqRatingReasonsItem]

-- | The video's rating from Italy's Autorità per le Garanzie nelle
--   Comunicazioni (AGCOM).
crAgcomRating :: Lens' ContentRating (Maybe ContentRatingAgcomRating)

-- | The video's rating from Romania's CONSILIUL NATIONAL AL
--   AUDIOVIZUALULUI (CNA).
crCnaRating :: Lens' ContentRating (Maybe ContentRatingCnaRating)

-- | The video's rating from the Canadian Radio-Television and
--   Telecommunications Commission (CRTC) for Canadian French-language
--   broadcasts. For more information, see the Canadian Broadcast Standards
--   Council website.
crCatvfrRating :: Lens' ContentRating (Maybe ContentRatingCatvfrRating)

-- | The video's Central Board of Film Certification (CBFC - India) rating.
crCbfcRating :: Lens' ContentRating (Maybe ContentRatingCbfcRating)

-- | The video's rating from the Kenya Film Classification Board.
crKfcbRating :: Lens' ContentRating (Maybe ContentRatingKfcbRating)

-- | The video's rating from Statens medieråd (Sweden's National Media
--   Council).
crSmsaRating :: Lens' ContentRating (Maybe ContentRatingSmsaRating)

-- | The video's Canadian Home Video Rating System (CHVRS) rating.
crChvrsRating :: Lens' ContentRating (Maybe ContentRatingChvrsRating)

-- | The video's INCAA (Instituto Nacional de Cine y Artes Audiovisuales -
--   Argentina) rating.
crIncaaRating :: Lens' ContentRating (Maybe ContentRatingIncaaRating)

-- | The video's rating system for Vietnam - MCST
crMcstRating :: Lens' ContentRating (Maybe ContentRatingMcstRating)

-- | The video's rating from the Bulgarian National Film Center.
crNfrcRating :: Lens' ContentRating (Maybe ContentRatingNfrcRating)

-- | The video's rating from France's Conseil supérieur de l?audiovisuel,
--   which rates broadcast content.
crCsaRating :: Lens' ContentRating (Maybe ContentRatingCsaRating)

-- | The video's Ministerio de Cultura (Colombia) rating.
crMocRating :: Lens' ContentRating (Maybe ContentRatingMocRating)

-- | The video's Eirin (映倫) rating. Eirin is the Japanese rating system.
crEirinRating :: Lens' ContentRating (Maybe ContentRatingEirinRating)

-- | The video's Freiwillige Selbstkontrolle der Filmwirtschaft (FSK -
--   Germany) rating.
crFskRating :: Lens' ContentRating (Maybe ContentRatingFskRating)

-- | The video's rating in Estonia.
crEefilmRating :: Lens' ContentRating (Maybe ContentRatingEefilmRating)

-- | The video's rating from the Hungarian Nemzeti Filmiroda, the Rating
--   Committee of the National Office of Film.
crRcnofRating :: Lens' ContentRating (Maybe ContentRatingRcnofRating)

-- | The video's rating from Finland's Kansallinen Audiovisuaalinen
--   Instituutti (National Audiovisual Institute).
crMekuRating :: Lens' ContentRating (Maybe ContentRatingMekuRating)

-- | The video's rating in Israel.
crIlfilmRating :: Lens' ContentRating (Maybe ContentRatingIlfilmRating)

-- | The video's Irish Film Classification Office (IFCO - Ireland) rating.
--   See the IFCO website for more information.
crIfcoRating :: Lens' ContentRating (Maybe ContentRatingIfcoRating)

-- | The video's rating in Poland.
crNbcplRating :: Lens' ContentRating (Maybe ContentRatingNbcplRating)

-- | The video's rating in Greece.
crGrfilmRating :: Lens' ContentRating (Maybe ContentRatingGrfilmRating)

-- | The video's rating from Ireland's Raidió Teilifís Éireann.
crRteRating :: Lens' ContentRating (Maybe ContentRatingRteRating)

-- | The video's Australian Classification Board (ACB) or Australian
--   Communications and Media Authority (ACMA) rating. ACMA ratings are
--   used to classify children's television programming.
crAcbRating :: Lens' ContentRating (Maybe ContentRatingAcbRating)

-- | Rating system for Canadian TV - Canadian TV Classification System The
--   video's rating from the Canadian Radio-Television and
--   Telecommunications Commission (CRTC) for Canadian English-language
--   broadcasts. For more information, see the Canadian Broadcast Standards
--   Council website.
crCatvRating :: Lens' ContentRating (Maybe ContentRatingCatvRating)

-- | The video's rating from Singapore's Media Development Authority (MDA)
--   and, specifically, it's Board of Film Censors (BFC).
crMdaRating :: Lens' ContentRating (Maybe ContentRatingMdaRating)

-- | The video's Departamento de Justiça, Classificação, Qualificação e
--   Títulos (DJCQT - Brazil) rating.
crDjctqRating :: Lens' ContentRating (Maybe ContentRatingDjctqRating)

-- | The video's rating in Iceland.
crSmaisRating :: Lens' ContentRating (Maybe ContentRatingSmaisRating)

-- | The video's rating from Luxembourg's Commission de surveillance de la
--   classification des films (CSCF).
crCscfRating :: Lens' ContentRating (Maybe ContentRatingCscfRating)

-- | The video's TV Parental Guidelines (TVPG) rating.
crTvpgRating :: Lens' ContentRating (Maybe ContentRatingTvpgRating)

-- | The video's General Directorate of Radio, Television and
--   Cinematography (Mexico) rating.
crRtcRating :: Lens' ContentRating (Maybe ContentRatingRtcRating)

-- | A rating that YouTube uses to identify age-restricted content.
crYtRating :: Lens' ContentRating (Maybe ContentRatingYtRating)

-- | The video's British Board of Film Classification (BBFC) rating.
crBbfcRating :: Lens' ContentRating (Maybe ContentRatingBbfcRating)

-- | voor de Classificatie van Audiovisuele Media (Netherlands).
crKijkwijzerRating :: Lens' ContentRating (Maybe ContentRatingKijkwijzerRating)

-- | The video's rating from the Movie and Television Review and
--   Classification Board (Philippines).
crMtrcbRating :: Lens' ContentRating (Maybe ContentRatingMtrcbRating)

-- | The video's rating from Hong Kong's Office for Film, Newspaper and
--   Article Administration.
crFcoRating :: Lens' ContentRating (Maybe ContentRatingFcoRating)

-- | The video's rating from the Commission de Contrôle des Films
--   (Belgium).
crCicfRating :: Lens' ContentRating (Maybe ContentRatingCicfRating)

-- | The video's rating in the Czech Republic.
crCzfilmRating :: Lens' ContentRating (Maybe ContentRatingCzfilmRating)

-- | The video's rating from the Maldives National Bureau of
--   Classification.
crNbcRating :: Lens' ContentRating (Maybe ContentRatingNbcRating)

-- | This property has been deprecated. Use the
--   contentDetails.contentRating.cncRating instead.
crFmocRating :: Lens' ContentRating (Maybe ContentRatingFmocRating)

-- | The video's National Film Registry of the Russian Federation (MKRF -
--   Russia) rating.
crRussiaRating :: Lens' ContentRating (Maybe ContentRatingRussiaRating)

-- | The video's rating in Egypt.
crEgfilmRating :: Lens' ContentRating (Maybe ContentRatingEgfilmRating)

-- | The video's rating in Venezuela.
crResorteviolenciaRating :: Lens' ContentRating (Maybe ContentRatingResorteviolenciaRating)

-- | The video's rating from the Ministero dei Beni e delle Attività
--   Culturali e del Turismo (Italy).
crMibacRating :: Lens' ContentRating (Maybe ContentRatingMibacRating)

-- | The video's rating from Medietilsynet, the Norwegian Media Authority.
crMedietilsynetRating :: Lens' ContentRating (Maybe ContentRatingMedietilsynetRating)

-- | The video's rating from the Danish Film Institute's (Det Danske
--   Filminstitut) Media Council for Children and Young People.
crMccypRating :: Lens' ContentRating (Maybe ContentRatingMccypRating)

-- | The video's rating from the Nacionãlais Kino centrs (National Film
--   Centre of Latvia).
crNkclvRating :: Lens' ContentRating (Maybe ContentRatingNkclvRating)

-- | The video's rating from South Africa's Film and Publication Board.
crFpbRating :: Lens' ContentRating (Maybe ContentRatingFpbRating)

-- | The video's rating from Indonesia's Lembaga Sensor Film.
crLsfRating :: Lens' ContentRating (Maybe ContentRatingLsfRating)

-- | The video's rating from Thailand's Board of Film and Video Censors.
crBfvcRating :: Lens' ContentRating (Maybe ContentRatingBfvcRating)

-- | Rating system in Turkey - Evaluation and Classification Board of the
--   Ministry of Culture and Tourism
crEcbmctRating :: Lens' ContentRating (Maybe ContentRatingEcbmctRating)

-- | Rating system in France - Commission de classification
--   cinematographique
crCNCRating :: Lens' ContentRating (Maybe ContentRatingCNCRating)

-- | The video's rating in Slovakia.
crSkfilmRating :: Lens' ContentRating (Maybe ContentRatingSkfilmRating)

-- | The video's Office of Film and Literature Classification (OFLC - New
--   Zealand) rating.
crOflcRating :: Lens' ContentRating (Maybe ContentRatingOflcRating)

-- | The video's Korea Media Rating Board (영상물등급위원회) rating. The KMRB rates
--   videos in South Korea.
crKmrbRating :: Lens' ContentRating (Maybe ContentRatingKmrbRating)

-- | A playlist resource represents a YouTube playlist. A playlist is a
--   collection of videos that can be viewed sequentially and shared with
--   other users. A playlist can contain up to 200 videos, and YouTube does
--   not limit the number of playlists that each user creates. By default,
--   playlists are publicly visible to other users, but playlists can be
--   public or private. YouTube also uses playlists to identify special
--   collections of videos for a channel, such as: - uploaded videos -
--   favorite videos - positively rated (liked) videos - watch history -
--   watch later To be more specific, these lists are associated with a
--   channel, which is a collection of a person, group, or company's
--   videos, playlists, and other YouTube information. You can retrieve the
--   playlist IDs for each of these lists from the channel resource for a
--   given channel. You can then use the playlistItems.list method to
--   retrieve any of those lists. You can also add or remove items from
--   those lists by calling the playlistItems.insert and
--   playlistItems.delete methods.
--   
--   <i>See:</i> <a>playList</a> smart constructor.
data PlayList

-- | Creates a value of <a>PlayList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plStatus</a></li>
--   <li><a>plEtag</a></li>
--   <li><a>plSnippet</a></li>
--   <li><a>plKind</a></li>
--   <li><a>plContentDetails</a></li>
--   <li><a>plId</a></li>
--   <li><a>plLocalizations</a></li>
--   <li><a>plPlayer</a></li>
--   </ul>
playList :: PlayList

-- | The status object contains status information for the playlist.
plStatus :: Lens' PlayList (Maybe PlayListStatus)

-- | Etag of this resource.
plEtag :: Lens' PlayList (Maybe Text)

-- | The snippet object contains basic details about the playlist, such as
--   its title and description.
plSnippet :: Lens' PlayList (Maybe PlayListSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#playlist".
plKind :: Lens' PlayList Text

-- | The contentDetails object contains information like video count.
plContentDetails :: Lens' PlayList (Maybe PlayListContentDetails)

-- | The ID that YouTube uses to uniquely identify the playlist.
plId :: Lens' PlayList (Maybe Text)

-- | Localizations for different languages
plLocalizations :: Lens' PlayList (Maybe PlayListLocalizations)

-- | The player object contains information that you would use to play the
--   playlist in an embedded player.
plPlayer :: Lens' PlayList (Maybe PlayListPlayer)

-- | The type of message, this will always be present, it determines the
--   contents of the message as well as which fields will be present.
data LiveChatMessageSnippetType

-- | <pre>
--   chatEndedEvent
--   </pre>
LCMSTChatEndedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   fanFundingEvent
--   </pre>
LCMSTFanFundingEvent :: LiveChatMessageSnippetType

-- | <pre>
--   messageDeletedEvent
--   </pre>
LCMSTMessageDeletedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   messageRetractedEvent
--   </pre>
LCMSTMessageRetractedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   newSponsorEvent
--   </pre>
LCMSTNewSponsorEvent :: LiveChatMessageSnippetType

-- | <pre>
--   pollClosedEvent
--   </pre>
LCMSTPollClosedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   pollEditedEvent
--   </pre>
LCMSTPollEditedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   pollOpenedEvent
--   </pre>
LCMSTPollOpenedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   pollVotedEvent
--   </pre>
LCMSTPollVotedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   sponsorOnlyModeEndedEvent
--   </pre>
LCMSTSponsorOnlyModeEndedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   sponsorOnlyModeStartedEvent
--   </pre>
LCMSTSponsorOnlyModeStartedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   textMessageEvent
--   </pre>
LCMSTTextMessageEvent :: LiveChatMessageSnippetType

-- | <pre>
--   tombstone
--   </pre>
LCMSTTombstone :: LiveChatMessageSnippetType

-- | <pre>
--   userBannedEvent
--   </pre>
LCMSTUserBannedEvent :: LiveChatMessageSnippetType
data LiveStreamStatusStreamStatus

-- | <pre>
--   active
--   </pre>
LSSSSActive :: LiveStreamStatusStreamStatus

-- | <pre>
--   created
--   </pre>
LSSSSCreated :: LiveStreamStatusStreamStatus

-- | <pre>
--   error
--   </pre>
LSSSSError' :: LiveStreamStatusStreamStatus

-- | <pre>
--   inactive
--   </pre>
LSSSSInactive :: LiveStreamStatusStreamStatus

-- | <pre>
--   ready
--   </pre>
LSSSSReady :: LiveStreamStatusStreamStatus

-- | The video's license.
data VideoStatusLicense

-- | <pre>
--   creativeCommon
--   </pre>
CreativeCommon :: VideoStatusLicense

-- | <pre>
--   youtube
--   </pre>
YouTube :: VideoStatusLicense

-- | The video's rating from Nigeria's National Film and Video Censors
--   Board.
data ContentRatingNfvcbRating

-- | <pre>
--   nfvcb12
--   </pre>
NFVCB12 :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcb12a
--   </pre>
Nfvcb12a :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcb15
--   </pre>
NFVCB15 :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcb18
--   </pre>
NFVCB18 :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcbG
--   </pre>
NfvcbG :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcbPg
--   </pre>
NfvcbPg :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcbRe
--   </pre>
NfvcbRe :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcbUnrated
--   </pre>
NfvcbUnrated :: ContentRatingNfvcbRating

-- | Branding properties for the channel view.
--   
--   <i>See:</i> <a>channelSettings</a> smart constructor.
data ChannelSettings

-- | Creates a value of <a>ChannelSettings</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cShowRelatedChannels</a></li>
--   <li><a>cDefaultTab</a></li>
--   <li><a>cFeaturedChannelsTitle</a></li>
--   <li><a>cCountry</a></li>
--   <li><a>cProFileColor</a></li>
--   <li><a>cModerateComments</a></li>
--   <li><a>cKeywords</a></li>
--   <li><a>cUnsubscribedTrailer</a></li>
--   <li><a>cTrackingAnalyticsAccountId</a></li>
--   <li><a>cFeaturedChannelsURLs</a></li>
--   <li><a>cShowBrowseView</a></li>
--   <li><a>cTitle</a></li>
--   <li><a>cDescription</a></li>
--   <li><a>cDefaultLanguage</a></li>
--   </ul>
channelSettings :: ChannelSettings

-- | Whether related channels should be proposed.
cShowRelatedChannels :: Lens' ChannelSettings (Maybe Bool)

-- | Which content tab users should see when viewing the channel.
cDefaultTab :: Lens' ChannelSettings (Maybe Text)

-- | Title for the featured channels tab.
cFeaturedChannelsTitle :: Lens' ChannelSettings (Maybe Text)

-- | The country of the channel.
cCountry :: Lens' ChannelSettings (Maybe Text)

-- | A prominent color that can be rendered on this channel page.
cProFileColor :: Lens' ChannelSettings (Maybe Text)

-- | Whether user-submitted comments left on the channel page need to be
--   approved by the channel owner to be publicly visible.
cModerateComments :: Lens' ChannelSettings (Maybe Bool)

-- | Lists keywords associated with the channel, comma-separated.
cKeywords :: Lens' ChannelSettings (Maybe Text)

-- | The trailer of the channel, for users that are not subscribers.
cUnsubscribedTrailer :: Lens' ChannelSettings (Maybe Text)

-- | The ID for a Google Analytics account to track and measure traffic to
--   the channels.
cTrackingAnalyticsAccountId :: Lens' ChannelSettings (Maybe Text)

-- | The list of featured channels.
cFeaturedChannelsURLs :: Lens' ChannelSettings [Text]

-- | Whether the tab to browse the videos should be displayed.
cShowBrowseView :: Lens' ChannelSettings (Maybe Bool)

-- | Specifies the channel title.
cTitle :: Lens' ChannelSettings (Maybe Text)

-- | Specifies the channel description.
cDescription :: Lens' ChannelSettings (Maybe Text)
cDefaultLanguage :: Lens' ChannelSettings (Maybe Text)

-- | Basic details about a subscription, including title, description and
--   thumbnails of the subscribed item.
--   
--   <i>See:</i> <a>subscriptionSnippet</a> smart constructor.
data SubscriptionSnippet

-- | Creates a value of <a>SubscriptionSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssResourceId</a></li>
--   <li><a>ssPublishedAt</a></li>
--   <li><a>ssChannelTitle</a></li>
--   <li><a>ssChannelId</a></li>
--   <li><a>ssThumbnails</a></li>
--   <li><a>ssTitle</a></li>
--   <li><a>ssDescription</a></li>
--   </ul>
subscriptionSnippet :: SubscriptionSnippet

-- | The id object contains information about the channel that the user
--   subscribed to.
ssResourceId :: Lens' SubscriptionSnippet (Maybe ResourceId)

-- | The date and time that the subscription was created. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
ssPublishedAt :: Lens' SubscriptionSnippet (Maybe UTCTime)

-- | Channel title for the channel that the subscription belongs to.
ssChannelTitle :: Lens' SubscriptionSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the subscriber's
--   channel.
ssChannelId :: Lens' SubscriptionSnippet (Maybe Text)

-- | A map of thumbnail images associated with the video. For each object
--   in the map, the key is the name of the thumbnail image, and the value
--   is an object that contains other information about the thumbnail.
ssThumbnails :: Lens' SubscriptionSnippet (Maybe ThumbnailDetails)

-- | The subscription's title.
ssTitle :: Lens' SubscriptionSnippet (Maybe Text)

-- | The subscription's details.
ssDescription :: Lens' SubscriptionSnippet (Maybe Text)

-- | Details about the live streaming metadata.
--   
--   <i>See:</i> <a>videoLiveStreamingDetails</a> smart constructor.
data VideoLiveStreamingDetails

-- | Creates a value of <a>VideoLiveStreamingDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlsdActualEndTime</a></li>
--   <li><a>vlsdConcurrentViewers</a></li>
--   <li><a>vlsdScheduledEndTime</a></li>
--   <li><a>vlsdScheduledStartTime</a></li>
--   <li><a>vlsdActualStartTime</a></li>
--   <li><a>vlsdActiveLiveChatId</a></li>
--   </ul>
videoLiveStreamingDetails :: VideoLiveStreamingDetails

-- | The time that the broadcast actually ended. The value is specified in
--   ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. This value will not be
--   available until the broadcast is over.
vlsdActualEndTime :: Lens' VideoLiveStreamingDetails (Maybe UTCTime)

-- | The number of viewers currently watching the broadcast. The property
--   and its value will be present if the broadcast has current viewers and
--   the broadcast owner has not hidden the viewcount for the video. Note
--   that YouTube stops tracking the number of concurrent viewers for a
--   broadcast when the broadcast ends. So, this property would not
--   identify the number of viewers watching an archived video of a live
--   broadcast that already ended.
vlsdConcurrentViewers :: Lens' VideoLiveStreamingDetails (Maybe Word64)

-- | The time that the broadcast is scheduled to end. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. If the value is
--   empty or the property is not present, then the broadcast is scheduled
--   to continue indefinitely.
vlsdScheduledEndTime :: Lens' VideoLiveStreamingDetails (Maybe UTCTime)

-- | The time that the broadcast is scheduled to begin. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
vlsdScheduledStartTime :: Lens' VideoLiveStreamingDetails (Maybe UTCTime)

-- | The time that the broadcast actually started. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. This value will not be
--   available until the broadcast begins.
vlsdActualStartTime :: Lens' VideoLiveStreamingDetails (Maybe UTCTime)

-- | The ID of the currently active live chat attached to this video. This
--   field is filled only if the video is a currently live broadcast that
--   has live chat. Once the broadcast transitions to complete this field
--   will be removed and the live chat closed down. For persistent
--   broadcasts that live chat id will no longer be tied to this video but
--   rather to the new video being displayed at the persistent page.
vlsdActiveLiveChatId :: Lens' VideoLiveStreamingDetails (Maybe Text)
data FanFundingEventSnippet

-- | Creates a value of <a>FanFundingEventSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ffesDisplayString</a></li>
--   <li><a>ffesSupporterDetails</a></li>
--   <li><a>ffesCreatedAt</a></li>
--   <li><a>ffesAmountMicros</a></li>
--   <li><a>ffesChannelId</a></li>
--   <li><a>ffesCommentText</a></li>
--   <li><a>ffesCurrency</a></li>
--   </ul>
fanFundingEventSnippet :: FanFundingEventSnippet

-- | A rendered string that displays the fund amount and currency (e.g.,
--   "$1.00"). The string is rendered for the given language.
ffesDisplayString :: Lens' FanFundingEventSnippet (Maybe Text)

-- | Details about the supporter. Only filled if the event was made public
--   by the user.
ffesSupporterDetails :: Lens' FanFundingEventSnippet (Maybe ChannelProFileDetails)

-- | The date and time when the funding occurred. The value is specified in
--   ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
ffesCreatedAt :: Lens' FanFundingEventSnippet (Maybe UTCTime)

-- | The amount of funding in micros of fund_currency. e.g., 1 is
--   represented
ffesAmountMicros :: Lens' FanFundingEventSnippet (Maybe Word64)

-- | Channel id where the funding event occurred.
ffesChannelId :: Lens' FanFundingEventSnippet (Maybe Text)

-- | The text contents of the comment left by the user.
ffesCommentText :: Lens' FanFundingEventSnippet (Maybe Text)

-- | The currency in which the fund was made. ISO 4217.
ffesCurrency :: Lens' FanFundingEventSnippet (Maybe Text)

-- | The video's rating from Singapore's Media Development Authority (MDA)
--   and, specifically, it's Board of Film Censors (BFC).
data ContentRatingMdaRating

-- | <pre>
--   mdaG
--   </pre>
MdaG :: ContentRatingMdaRating

-- | <pre>
--   mdaM18
--   </pre>
MDAM18 :: ContentRatingMdaRating

-- | <pre>
--   mdaNc16
--   </pre>
MDANC16 :: ContentRatingMdaRating

-- | <pre>
--   mdaPg
--   </pre>
MdaPg :: ContentRatingMdaRating

-- | <pre>
--   mdaPg13
--   </pre>
MDAPG13 :: ContentRatingMdaRating

-- | <pre>
--   mdaR21
--   </pre>
MDAR21 :: ContentRatingMdaRating

-- | <pre>
--   mdaUnrated
--   </pre>
MdaUnrated :: ContentRatingMdaRating

-- | Details about a resource which is being promoted.
--   
--   <i>See:</i> <a>activityContentDetailsPromotedItem</a> smart
--   constructor.
data ActivityContentDetailsPromotedItem

-- | Creates a value of <a>ActivityContentDetailsPromotedItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdpiDestinationURL</a></li>
--   <li><a>acdpiClickTrackingURL</a></li>
--   <li><a>acdpiForecastingURL</a></li>
--   <li><a>acdpiDescriptionText</a></li>
--   <li><a>acdpiCtaType</a></li>
--   <li><a>acdpiVideoId</a></li>
--   <li><a>acdpiAdTag</a></li>
--   <li><a>acdpiCreativeViewURL</a></li>
--   <li><a>acdpiImpressionURL</a></li>
--   <li><a>acdpiCustomCtaButtonText</a></li>
--   </ul>
activityContentDetailsPromotedItem :: ActivityContentDetailsPromotedItem

-- | The URL the client should direct the user to, if the user chooses to
--   visit the advertiser's website.
acdpiDestinationURL :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The URL the client should ping to indicate that the user clicked
--   through on this promoted item.
acdpiClickTrackingURL :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The list of forecasting URLs. The client should ping all of these URLs
--   when a promoted item is not available, to indicate that a promoted
--   item could have been shown.
acdpiForecastingURL :: Lens' ActivityContentDetailsPromotedItem [Text]

-- | The text description to accompany the promoted item.
acdpiDescriptionText :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The type of call-to-action, a message to the user indicating action
--   that can be taken.
acdpiCtaType :: Lens' ActivityContentDetailsPromotedItem (Maybe ActivityContentDetailsPromotedItemCtaType)

-- | The ID that YouTube uses to uniquely identify the promoted video.
acdpiVideoId :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The URL the client should fetch to request a promoted item.
acdpiAdTag :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The URL the client should ping to indicate that the user was shown
--   this promoted item.
acdpiCreativeViewURL :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The list of impression URLs. The client should ping all of these URLs
--   to indicate that the user was shown this promoted item.
acdpiImpressionURL :: Lens' ActivityContentDetailsPromotedItem [Text]

-- | The custom call-to-action button text. If specified, it will override
--   the default button text for the cta_type.
acdpiCustomCtaButtonText :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The video's Australian Classification Board (ACB) or Australian
--   Communications and Media Authority (ACMA) rating. ACMA ratings are
--   used to classify children's television programming.
data ContentRatingAcbRating

-- | <pre>
--   acbC
--   </pre>
AcbC :: ContentRatingAcbRating

-- | <pre>
--   acbE
--   </pre>
AcbE :: ContentRatingAcbRating

-- | <pre>
--   acbG
--   </pre>
AcbG :: ContentRatingAcbRating

-- | <pre>
--   acbM
--   </pre>
AcbM :: ContentRatingAcbRating

-- | <pre>
--   acbMa15plus
--   </pre>
AcbMa15plus :: ContentRatingAcbRating

-- | <pre>
--   acbP
--   </pre>
AcbP :: ContentRatingAcbRating

-- | <pre>
--   acbPg
--   </pre>
AcbPg :: ContentRatingAcbRating

-- | <pre>
--   acbR18plus
--   </pre>
AcbR18plus :: ContentRatingAcbRating

-- | <pre>
--   acbUnrated
--   </pre>
AcbUnrated :: ContentRatingAcbRating
data SponsorSnippet

-- | Creates a value of <a>SponsorSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sChannelId</a></li>
--   <li><a>sSponsorDetails</a></li>
--   <li><a>sSponsorSince</a></li>
--   </ul>
sponsorSnippet :: SponsorSnippet

-- | The id of the channel being sponsored.
sChannelId :: Lens' SponsorSnippet (Maybe Text)

-- | Details about the sponsor.
sSponsorDetails :: Lens' SponsorSnippet (Maybe ChannelProFileDetails)

-- | The date and time when the user became a sponsor. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
sSponsorSince :: Lens' SponsorSnippet (Maybe UTCTime)

-- | The video's Departamento de Justiça, Classificação, Qualificação e
--   Títulos (DJCQT - Brazil) rating.
data ContentRatingDjctqRating

-- | <pre>
--   djctq10
--   </pre>
DJCTQ10 :: ContentRatingDjctqRating

-- | <pre>
--   djctq12
--   </pre>
DJCTQ12 :: ContentRatingDjctqRating

-- | <pre>
--   djctq14
--   </pre>
DJCTQ14 :: ContentRatingDjctqRating

-- | <pre>
--   djctq16
--   </pre>
DJCTQ16 :: ContentRatingDjctqRating

-- | <pre>
--   djctq18
--   </pre>
DJCTQ18 :: ContentRatingDjctqRating

-- | <pre>
--   djctqL
--   </pre>
DjctqL :: ContentRatingDjctqRating

-- | <pre>
--   djctqUnrated
--   </pre>
DjctqUnrated :: ContentRatingDjctqRating

-- | Geographical coordinates of a point, in WGS84.
--   
--   <i>See:</i> <a>geoPoint</a> smart constructor.
data GeoPoint

-- | Creates a value of <a>GeoPoint</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpLatitude</a></li>
--   <li><a>gpAltitude</a></li>
--   <li><a>gpLongitude</a></li>
--   </ul>
geoPoint :: GeoPoint

-- | Latitude in degrees.
gpLatitude :: Lens' GeoPoint (Maybe Double)

-- | Altitude above the reference ellipsoid, in meters.
gpAltitude :: Lens' GeoPoint (Maybe Double)

-- | Longitude in degrees.
gpLongitude :: Lens' GeoPoint (Maybe Double)

-- | Comments written in (direct or indirect) reply to the top level
--   comment.
--   
--   <i>See:</i> <a>commentThreadReplies</a> smart constructor.
data CommentThreadReplies

-- | Creates a value of <a>CommentThreadReplies</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctrComments</a></li>
--   </ul>
commentThreadReplies :: CommentThreadReplies

-- | A limited number of replies. Unless the number of replies returned
--   equals total_reply_count in the snippet the returned replies are only
--   a subset of the total number of replies.
ctrComments :: Lens' CommentThreadReplies [Comment]

-- | ChannelSection localization setting
--   
--   <i>See:</i> <a>channelSectionLocalization</a> smart constructor.
data ChannelSectionLocalization

-- | Creates a value of <a>ChannelSectionLocalization</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cslTitle</a></li>
--   </ul>
channelSectionLocalization :: ChannelSectionLocalization

-- | The localized strings for channel section's title.
cslTitle :: Lens' ChannelSectionLocalization (Maybe Text)
data VideoAbuseReportSecondaryReason

-- | Creates a value of <a>VideoAbuseReportSecondaryReason</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varsrId</a></li>
--   <li><a>varsrLabel</a></li>
--   </ul>
videoAbuseReportSecondaryReason :: VideoAbuseReportSecondaryReason

-- | The ID of this abuse report secondary reason.
varsrId :: Lens' VideoAbuseReportSecondaryReason (Maybe Text)

-- | The localized label for this abuse report secondary reason.
varsrLabel :: Lens' VideoAbuseReportSecondaryReason (Maybe Text)

-- | This value explains why a video failed to upload. This property is
--   only present if the uploadStatus property indicates that the upload
--   failed.
data VideoStatusFailureReason

-- | <pre>
--   codec
--   </pre>
Codec :: VideoStatusFailureReason

-- | <pre>
--   conversion
--   </pre>
Conversion :: VideoStatusFailureReason

-- | <pre>
--   emptyFile
--   </pre>
EmptyFile :: VideoStatusFailureReason

-- | <pre>
--   invalidFile
--   </pre>
InvalidFile :: VideoStatusFailureReason

-- | <pre>
--   tooSmall
--   </pre>
TooSmall :: VideoStatusFailureReason

-- | <pre>
--   uploadAborted
--   </pre>
UploadAborted :: VideoStatusFailureReason

-- | The contentOwnerDetails object encapsulates channel data that is
--   relevant for YouTube Partners linked with the channel.
--   
--   <i>See:</i> <a>channelContentOwnerDetails</a> smart constructor.
data ChannelContentOwnerDetails

-- | Creates a value of <a>ChannelContentOwnerDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccodTimeLinked</a></li>
--   <li><a>ccodContentOwner</a></li>
--   </ul>
channelContentOwnerDetails :: ChannelContentOwnerDetails

-- | The date and time of when the channel was linked to the content owner.
--   The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
ccodTimeLinked :: Lens' ChannelContentOwnerDetails (Maybe UTCTime)

-- | The ID of the content owner linked to the channel.
ccodContentOwner :: Lens' ChannelContentOwnerDetails (Maybe Text)

-- | Basic details about an i18n language, such as language code and
--   human-readable name.
--   
--   <i>See:</i> <a>i18nLanguageSnippet</a> smart constructor.
data I18nLanguageSnippet

-- | Creates a value of <a>I18nLanguageSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilsHl</a></li>
--   <li><a>ilsName</a></li>
--   </ul>
i18nLanguageSnippet :: I18nLanguageSnippet

-- | A short BCP-47 code that uniquely identifies a language.
ilsHl :: Lens' I18nLanguageSnippet (Maybe Text)

-- | The human-readable name of the language in the language itself.
ilsName :: Lens' I18nLanguageSnippet (Maybe Text)

-- | Rating system for Canadian TV - Canadian TV Classification System The
--   video's rating from the Canadian Radio-Television and
--   Telecommunications Commission (CRTC) for Canadian English-language
--   broadcasts. For more information, see the Canadian Broadcast Standards
--   Council website.
data ContentRatingCatvRating

-- | <pre>
--   catv14plus
--   </pre>
Catv14plus :: ContentRatingCatvRating

-- | <pre>
--   catv18plus
--   </pre>
Catv18plus :: ContentRatingCatvRating

-- | <pre>
--   catvC
--   </pre>
CatvC :: ContentRatingCatvRating

-- | <pre>
--   catvC8
--   </pre>
CATVC8 :: ContentRatingCatvRating

-- | <pre>
--   catvG
--   </pre>
CatvG :: ContentRatingCatvRating

-- | <pre>
--   catvPg
--   </pre>
CatvPg :: ContentRatingCatvRating

-- | <pre>
--   catvUnrated
--   </pre>
CatvUnrated :: ContentRatingCatvRating
data LiveChatPollVotedDetails

-- | Creates a value of <a>LiveChatPollVotedDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpvdPollId</a></li>
--   <li><a>lcpvdItemId</a></li>
--   </ul>
liveChatPollVotedDetails :: LiveChatPollVotedDetails

-- | The poll the user voted on.
lcpvdPollId :: Lens' LiveChatPollVotedDetails (Maybe Text)

-- | The poll item the user chose.
lcpvdItemId :: Lens' LiveChatPollVotedDetails (Maybe Text)


-- | Deletes a channel's watermark image.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.watermarks.unset</tt>.
module Network.Google.Resource.YouTube.Watermarks.UnSet

-- | A resource alias for <tt>youtube.watermarks.unset</tt> method which
--   the <a>WatermarksUnSet</a> request conforms to.
type WatermarksUnSetResource = "youtube" :> ("v3" :> ("watermarks" :> ("unset" :> (QueryParam "channelId" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] ()))))))

-- | Creates a value of <a>WatermarksUnSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wusChannelId</a></li>
--   <li><a>wusOnBehalfOfContentOwner</a></li>
--   </ul>
watermarksUnSet :: Text -> WatermarksUnSet

-- | Deletes a channel's watermark image.
--   
--   <i>See:</i> <a>watermarksUnSet</a> smart constructor.
data WatermarksUnSet

-- | The channelId parameter specifies the YouTube channel ID for which the
--   watermark is being unset.
wusChannelId :: Lens' WatermarksUnSet Text

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
wusOnBehalfOfContentOwner :: Lens' WatermarksUnSet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Watermarks.UnSet.WatermarksUnSet
instance Data.Data.Data Network.Google.Resource.YouTube.Watermarks.UnSet.WatermarksUnSet
instance GHC.Show.Show Network.Google.Resource.YouTube.Watermarks.UnSet.WatermarksUnSet
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Watermarks.UnSet.WatermarksUnSet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Watermarks.UnSet.WatermarksUnSet


-- | Uploads a watermark image to YouTube and sets it for a channel.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.watermarks.set</tt>.
module Network.Google.Resource.YouTube.Watermarks.Set

-- | A resource alias for <tt>youtube.watermarks.set</tt> method which the
--   <a>WatermarksSet</a> request conforms to.
type WatermarksSetResource = ("youtube" :> ("v3" :> ("watermarks" :> ("set" :> (QueryParam "channelId" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InvideoBranding :> Post '[JSON] ())))))))) :<|> ("upload" :> ("youtube" :> ("v3" :> ("watermarks" :> ("set" :> (QueryParam "channelId" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] InvideoBranding :> Post '[JSON] ()))))))))))

-- | Creates a value of <a>WatermarksSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wsChannelId</a></li>
--   <li><a>wsPayload</a></li>
--   <li><a>wsOnBehalfOfContentOwner</a></li>
--   </ul>
watermarksSet :: Text -> InvideoBranding -> WatermarksSet

-- | Uploads a watermark image to YouTube and sets it for a channel.
--   
--   <i>See:</i> <a>watermarksSet</a> smart constructor.
data WatermarksSet

-- | The channelId parameter specifies the YouTube channel ID for which the
--   watermark is being provided.
wsChannelId :: Lens' WatermarksSet Text

-- | Multipart request metadata.
wsPayload :: Lens' WatermarksSet InvideoBranding

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
wsOnBehalfOfContentOwner :: Lens' WatermarksSet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Watermarks.Set.WatermarksSet
instance Data.Data.Data Network.Google.Resource.YouTube.Watermarks.Set.WatermarksSet
instance GHC.Show.Show Network.Google.Resource.YouTube.Watermarks.Set.WatermarksSet
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Watermarks.Set.WatermarksSet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Watermarks.Set.WatermarksSet
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.YouTube.Watermarks.Set.WatermarksSet)


-- | Updates a video's metadata.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videos.update</tt>.
module Network.Google.Resource.YouTube.Videos.Update

-- | A resource alias for <tt>youtube.videos.update</tt> method which the
--   <a>VideosUpdate</a> request conforms to.
type VideosUpdateResource = "youtube" :> ("v3" :> ("videos" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Video :> Put '[JSON] Video))))))

-- | Creates a value of <a>VideosUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vuPart</a></li>
--   <li><a>vuPayload</a></li>
--   <li><a>vuOnBehalfOfContentOwner</a></li>
--   </ul>
videosUpdate :: Text -> Video -> VideosUpdate

-- | Updates a video's metadata.
--   
--   <i>See:</i> <a>videosUpdate</a> smart constructor.
data VideosUpdate

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. Note that this
--   method will override the existing values for all of the mutable
--   properties that are contained in any parts that the parameter value
--   specifies. For example, a video's privacy setting is contained in the
--   status part. As such, if your request is updating a private video, and
--   the request's part parameter value includes the status part, the
--   video's privacy setting will be updated to whatever value the request
--   body specifies. If the request body does not specify a value, the
--   existing privacy setting will be removed and the video will revert to
--   the default privacy setting. In addition, not all parts contain
--   properties that can be set when inserting or updating a video. For
--   example, the statistics object encapsulates statistics that YouTube
--   calculates for a video and does not contain values that you can set or
--   modify. If the parameter value specifies a part that does not contain
--   mutable values, that part will still be included in the API response.
vuPart :: Lens' VideosUpdate Text

-- | Multipart request metadata.
vuPayload :: Lens' VideosUpdate Video

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The actual CMS account that the user
--   authenticates with must be linked to the specified YouTube content
--   owner.
vuOnBehalfOfContentOwner :: Lens' VideosUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Videos.Update.VideosUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.Videos.Update.VideosUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.Videos.Update.VideosUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Videos.Update.VideosUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Videos.Update.VideosUpdate


-- | Report abuse for a video.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videos.reportAbuse</tt>.
module Network.Google.Resource.YouTube.Videos.ReportAbuse

-- | A resource alias for <tt>youtube.videos.reportAbuse</tt> method which
--   the <a>VideosReportAbuse</a> request conforms to.
type VideosReportAbuseResource = "youtube" :> ("v3" :> ("videos" :> ("reportAbuse" :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] VideoAbuseReport :> Post '[JSON] ()))))))

-- | Creates a value of <a>VideosReportAbuse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vraPayload</a></li>
--   <li><a>vraOnBehalfOfContentOwner</a></li>
--   </ul>
videosReportAbuse :: VideoAbuseReport -> VideosReportAbuse

-- | Report abuse for a video.
--   
--   <i>See:</i> <a>videosReportAbuse</a> smart constructor.
data VideosReportAbuse

-- | Multipart request metadata.
vraPayload :: Lens' VideosReportAbuse VideoAbuseReport

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
vraOnBehalfOfContentOwner :: Lens' VideosReportAbuse (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Videos.ReportAbuse.VideosReportAbuse
instance Data.Data.Data Network.Google.Resource.YouTube.Videos.ReportAbuse.VideosReportAbuse
instance GHC.Show.Show Network.Google.Resource.YouTube.Videos.ReportAbuse.VideosReportAbuse
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Videos.ReportAbuse.VideosReportAbuse
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Videos.ReportAbuse.VideosReportAbuse


-- | Add a like or dislike rating to a video or remove a rating from a
--   video.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videos.rate</tt>.
module Network.Google.Resource.YouTube.Videos.Rate

-- | A resource alias for <tt>youtube.videos.rate</tt> method which the
--   <a>VideosRate</a> request conforms to.
type VideosRateResource = "youtube" :> ("v3" :> ("videos" :> ("rate" :> (QueryParam "id" Text :> (QueryParam "rating" VideosRateRating :> (QueryParam "alt" AltJSON :> Post '[JSON] ()))))))

-- | Creates a value of <a>VideosRate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vrRating</a></li>
--   <li><a>vrId</a></li>
--   </ul>
videosRate :: VideosRateRating -> Text -> VideosRate

-- | Add a like or dislike rating to a video or remove a rating from a
--   video.
--   
--   <i>See:</i> <a>videosRate</a> smart constructor.
data VideosRate

-- | Specifies the rating to record.
vrRating :: Lens' VideosRate VideosRateRating

-- | The id parameter specifies the YouTube video ID of the video that is
--   being rated or having its rating removed.
vrId :: Lens' VideosRate Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Videos.Rate.VideosRate
instance Data.Data.Data Network.Google.Resource.YouTube.Videos.Rate.VideosRate
instance GHC.Show.Show Network.Google.Resource.YouTube.Videos.Rate.VideosRate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Videos.Rate.VideosRate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Videos.Rate.VideosRate


-- | Returns a list of videos that match the API request parameters.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videos.list</tt>.
module Network.Google.Resource.YouTube.Videos.List

-- | A resource alias for <tt>youtube.videos.list</tt> method which the
--   <a>VideosList</a> request conforms to.
type VideosListResource = "youtube" :> ("v3" :> ("videos" :> (QueryParam "part" Text :> (QueryParam "chart" VideosListChart :> (QueryParam "regionCode" Text :> (QueryParam "locale" Text :> (QueryParam "myRating" VideosListMyRating :> (QueryParam "maxHeight" (Textual Word32) :> (QueryParam "hl" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "videoCategoryId" Text :> (QueryParam "maxWidth" (Textual Word32) :> (QueryParam "id" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] VideoListResponse))))))))))))))))

-- | Creates a value of <a>VideosList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlChart</a></li>
--   <li><a>vlPart</a></li>
--   <li><a>vlRegionCode</a></li>
--   <li><a>vlLocale</a></li>
--   <li><a>vlMyRating</a></li>
--   <li><a>vlMaxHeight</a></li>
--   <li><a>vlHl</a></li>
--   <li><a>vlOnBehalfOfContentOwner</a></li>
--   <li><a>vlVideoCategoryId</a></li>
--   <li><a>vlMaxWidth</a></li>
--   <li><a>vlId</a></li>
--   <li><a>vlPageToken</a></li>
--   <li><a>vlMaxResults</a></li>
--   </ul>
videosList :: Text -> VideosList

-- | Returns a list of videos that match the API request parameters.
--   
--   <i>See:</i> <a>videosList</a> smart constructor.
data VideosList

-- | The chart parameter identifies the chart that you want to retrieve.
vlChart :: Lens' VideosList (Maybe VideosListChart)

-- | The part parameter specifies a comma-separated list of one or more
--   video resource properties that the API response will include. If the
--   parameter identifies a property that contains child properties, the
--   child properties will be included in the response. For example, in a
--   video resource, the snippet property contains the channelId, title,
--   description, tags, and categoryId properties. As such, if you set
--   part=snippet, the API response will contain all of those properties.
vlPart :: Lens' VideosList Text

-- | The regionCode parameter instructs the API to select a video chart
--   available in the specified region. This parameter can only be used in
--   conjunction with the chart parameter. The parameter value is an ISO
--   3166-1 alpha-2 country code.
vlRegionCode :: Lens' VideosList (Maybe Text)

-- | DEPRECATED
vlLocale :: Lens' VideosList (Maybe Text)

-- | Set this parameter's value to like or dislike to instruct the API to
--   only return videos liked or disliked by the authenticated user.
vlMyRating :: Lens' VideosList (Maybe VideosListMyRating)

-- | The maxHeight parameter specifies a maximum height of the embedded
--   player. If maxWidth is provided, maxHeight may not be reached in order
--   to not violate the width request.
vlMaxHeight :: Lens' VideosList (Maybe Word32)

-- | The hl parameter instructs the API to retrieve localized resource
--   metadata for a specific application language that the YouTube website
--   supports. The parameter value must be a language code included in the
--   list returned by the i18nLanguages.list method. If localized resource
--   details are available in that language, the resource's
--   snippet.localized object will contain the localized values. However,
--   if localized details are not available, the snippet.localized object
--   will contain resource details in the resource's default language.
vlHl :: Lens' VideosList (Maybe Text)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
vlOnBehalfOfContentOwner :: Lens' VideosList (Maybe Text)

-- | The videoCategoryId parameter identifies the video category for which
--   the chart should be retrieved. This parameter can only be used in
--   conjunction with the chart parameter. By default, charts are not
--   restricted to a particular category.
vlVideoCategoryId :: Lens' VideosList Text

-- | The maxWidth parameter specifies a maximum width of the embedded
--   player. If maxHeight is provided, maxWidth may not be reached in order
--   to not violate the height request.
vlMaxWidth :: Lens' VideosList (Maybe Word32)

-- | The id parameter specifies a comma-separated list of the YouTube video
--   ID(s) for the resource(s) that are being retrieved. In a video
--   resource, the id property specifies the video's ID.
vlId :: Lens' VideosList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
--   Note: This parameter is supported for use in conjunction with the
--   myRating and chart parameters, but it is not supported for use in
--   conjunction with the id parameter.
vlPageToken :: Lens' VideosList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set. Note: This parameter is
--   supported for use in conjunction with the myRating and chart
--   parameters, but it is not supported for use in conjunction with the id
--   parameter.
vlMaxResults :: Lens' VideosList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Videos.List.VideosList
instance Data.Data.Data Network.Google.Resource.YouTube.Videos.List.VideosList
instance GHC.Show.Show Network.Google.Resource.YouTube.Videos.List.VideosList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Videos.List.VideosList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Videos.List.VideosList


-- | Uploads a video to YouTube and optionally sets the video's metadata.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videos.insert</tt>.
module Network.Google.Resource.YouTube.Videos.Insert

-- | A resource alias for <tt>youtube.videos.insert</tt> method which the
--   <a>VideosInsert</a> request conforms to.
type VideosInsertResource = ("youtube" :> ("v3" :> ("videos" :> (QueryParam "part" Text :> (QueryParam "stabilize" Bool :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "notifySubscribers" Bool :> (QueryParam "autoLevels" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Video :> Post '[JSON] Video))))))))))) :<|> ("upload" :> ("youtube" :> ("v3" :> ("videos" :> (QueryParam "part" Text :> (QueryParam "stabilize" Bool :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "notifySubscribers" Bool :> (QueryParam "autoLevels" Bool :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Video :> Post '[JSON] Video)))))))))))))

-- | Creates a value of <a>VideosInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>viPart</a></li>
--   <li><a>viStabilize</a></li>
--   <li><a>viPayload</a></li>
--   <li><a>viOnBehalfOfContentOwner</a></li>
--   <li><a>viOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>viNotifySubscribers</a></li>
--   <li><a>viAutoLevels</a></li>
--   </ul>
videosInsert :: Text -> Video -> VideosInsert

-- | Uploads a video to YouTube and optionally sets the video's metadata.
--   
--   <i>See:</i> <a>videosInsert</a> smart constructor.
data VideosInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. Note that not all
--   parts contain properties that can be set when inserting or updating a
--   video. For example, the statistics object encapsulates statistics that
--   YouTube calculates for a video and does not contain values that you
--   can set or modify. If the parameter value specifies a part that does
--   not contain mutable values, that part will still be included in the
--   API response.
viPart :: Lens' VideosInsert Text

-- | The stabilize parameter indicates whether YouTube should adjust the
--   video to remove shaky camera motions.
viStabilize :: Lens' VideosInsert (Maybe Bool)

-- | Multipart request metadata.
viPayload :: Lens' VideosInsert Video

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
viOnBehalfOfContentOwner :: Lens' VideosInsert (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
viOnBehalfOfContentOwnerChannel :: Lens' VideosInsert (Maybe Text)

-- | The notifySubscribers parameter indicates whether YouTube should send
--   a notification about the new video to users who subscribe to the
--   video's channel. A parameter value of True indicates that subscribers
--   will be notified of newly uploaded videos. However, a channel owner
--   who is uploading many videos might prefer to set the value to False to
--   avoid sending a notification about each new video to the channel's
--   subscribers.
viNotifySubscribers :: Lens' VideosInsert Bool

-- | The autoLevels parameter indicates whether YouTube should
--   automatically enhance the video's lighting and color.
viAutoLevels :: Lens' VideosInsert (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Videos.Insert.VideosInsert
instance Data.Data.Data Network.Google.Resource.YouTube.Videos.Insert.VideosInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.Videos.Insert.VideosInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Videos.Insert.VideosInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Videos.Insert.VideosInsert
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.YouTube.Videos.Insert.VideosInsert)


-- | Retrieves the ratings that the authorized user gave to a list of
--   specified videos.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videos.getRating</tt>.
module Network.Google.Resource.YouTube.Videos.GetRating

-- | A resource alias for <tt>youtube.videos.getRating</tt> method which
--   the <a>VideosGetRating</a> request conforms to.
type VideosGetRatingResource = "youtube" :> ("v3" :> ("videos" :> ("getRating" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] VideoGetRatingResponse))))))

-- | Creates a value of <a>VideosGetRating</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vgrOnBehalfOfContentOwner</a></li>
--   <li><a>vgrId</a></li>
--   </ul>
videosGetRating :: Text -> VideosGetRating

-- | Retrieves the ratings that the authorized user gave to a list of
--   specified videos.
--   
--   <i>See:</i> <a>videosGetRating</a> smart constructor.
data VideosGetRating

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
vgrOnBehalfOfContentOwner :: Lens' VideosGetRating (Maybe Text)

-- | The id parameter specifies a comma-separated list of the YouTube video
--   ID(s) for the resource(s) for which you are retrieving rating data. In
--   a video resource, the id property specifies the video's ID.
vgrId :: Lens' VideosGetRating Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Videos.GetRating.VideosGetRating
instance Data.Data.Data Network.Google.Resource.YouTube.Videos.GetRating.VideosGetRating
instance GHC.Show.Show Network.Google.Resource.YouTube.Videos.GetRating.VideosGetRating
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Videos.GetRating.VideosGetRating
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Videos.GetRating.VideosGetRating


-- | Deletes a YouTube video.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videos.delete</tt>.
module Network.Google.Resource.YouTube.Videos.Delete

-- | A resource alias for <tt>youtube.videos.delete</tt> method which the
--   <a>VideosDelete</a> request conforms to.
type VideosDeleteResource = "youtube" :> ("v3" :> ("videos" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>VideosDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vdOnBehalfOfContentOwner</a></li>
--   <li><a>vdId</a></li>
--   </ul>
videosDelete :: Text -> VideosDelete

-- | Deletes a YouTube video.
--   
--   <i>See:</i> <a>videosDelete</a> smart constructor.
data VideosDelete

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The actual CMS account that the user
--   authenticates with must be linked to the specified YouTube content
--   owner.
vdOnBehalfOfContentOwner :: Lens' VideosDelete (Maybe Text)

-- | The id parameter specifies the YouTube video ID for the resource that
--   is being deleted. In a video resource, the id property specifies the
--   video's ID.
vdId :: Lens' VideosDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Videos.Delete.VideosDelete
instance Data.Data.Data Network.Google.Resource.YouTube.Videos.Delete.VideosDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.Videos.Delete.VideosDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Videos.Delete.VideosDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Videos.Delete.VideosDelete


-- | Returns a list of categories that can be associated with YouTube
--   videos.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videoCategories.list</tt>.
module Network.Google.Resource.YouTube.VideoCategories.List

-- | A resource alias for <tt>youtube.videoCategories.list</tt> method
--   which the <a>VideoCategoriesList</a> request conforms to.
type VideoCategoriesListResource = "youtube" :> ("v3" :> ("videoCategories" :> (QueryParam "part" Text :> (QueryParam "regionCode" Text :> (QueryParam "hl" Text :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] VideoCategoryListResponse)))))))

-- | Creates a value of <a>VideoCategoriesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vclPart</a></li>
--   <li><a>vclRegionCode</a></li>
--   <li><a>vclHl</a></li>
--   <li><a>vclId</a></li>
--   </ul>
videoCategoriesList :: Text -> VideoCategoriesList

-- | Returns a list of categories that can be associated with YouTube
--   videos.
--   
--   <i>See:</i> <a>videoCategoriesList</a> smart constructor.
data VideoCategoriesList

-- | The part parameter specifies the videoCategory resource properties
--   that the API response will include. Set the parameter value to
--   snippet.
vclPart :: Lens' VideoCategoriesList Text

-- | The regionCode parameter instructs the API to return the list of video
--   categories available in the specified country. The parameter value is
--   an ISO 3166-1 alpha-2 country code.
vclRegionCode :: Lens' VideoCategoriesList (Maybe Text)

-- | The hl parameter specifies the language that should be used for text
--   values in the API response.
vclHl :: Lens' VideoCategoriesList Text

-- | The id parameter specifies a comma-separated list of video category
--   IDs for the resources that you are retrieving.
vclId :: Lens' VideoCategoriesList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.VideoCategories.List.VideoCategoriesList
instance Data.Data.Data Network.Google.Resource.YouTube.VideoCategories.List.VideoCategoriesList
instance GHC.Show.Show Network.Google.Resource.YouTube.VideoCategories.List.VideoCategoriesList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.VideoCategories.List.VideoCategoriesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.VideoCategories.List.VideoCategoriesList


-- | Returns a list of abuse reasons that can be used for reporting abusive
--   videos.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.videoAbuseReportReasons.list</tt>.
module Network.Google.Resource.YouTube.VideoAbuseReportReasons.List

-- | A resource alias for <tt>youtube.videoAbuseReportReasons.list</tt>
--   method which the <a>VideoAbuseReportReasonsList</a> request conforms
--   to.
type VideoAbuseReportReasonsListResource = "youtube" :> ("v3" :> ("videoAbuseReportReasons" :> (QueryParam "part" Text :> (QueryParam "hl" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] VideoAbuseReportReasonListResponse)))))

-- | Creates a value of <a>VideoAbuseReportReasonsList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varrlPart</a></li>
--   <li><a>varrlHl</a></li>
--   </ul>
videoAbuseReportReasonsList :: Text -> VideoAbuseReportReasonsList

-- | Returns a list of abuse reasons that can be used for reporting abusive
--   videos.
--   
--   <i>See:</i> <a>videoAbuseReportReasonsList</a> smart constructor.
data VideoAbuseReportReasonsList

-- | The part parameter specifies the videoCategory resource parts that the
--   API response will include. Supported values are id and snippet.
varrlPart :: Lens' VideoAbuseReportReasonsList Text

-- | The hl parameter specifies the language that should be used for text
--   values in the API response.
varrlHl :: Lens' VideoAbuseReportReasonsList Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.VideoAbuseReportReasons.List.VideoAbuseReportReasonsList
instance Data.Data.Data Network.Google.Resource.YouTube.VideoAbuseReportReasons.List.VideoAbuseReportReasonsList
instance GHC.Show.Show Network.Google.Resource.YouTube.VideoAbuseReportReasons.List.VideoAbuseReportReasonsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.VideoAbuseReportReasons.List.VideoAbuseReportReasonsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.VideoAbuseReportReasons.List.VideoAbuseReportReasonsList


-- | Uploads a custom video thumbnail to YouTube and sets it for a video.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.thumbnails.set</tt>.
module Network.Google.Resource.YouTube.Thumbnails.Set

-- | A resource alias for <tt>youtube.thumbnails.set</tt> method which the
--   <a>ThumbnailsSet</a> request conforms to.
type ThumbnailsSetResource = ("youtube" :> ("v3" :> ("thumbnails" :> ("set" :> (QueryParam "videoId" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] ThumbnailSetResponse))))))) :<|> ("upload" :> ("youtube" :> ("v3" :> ("thumbnails" :> ("set" :> (QueryParam "videoId" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" AltMedia :> (AltMedia :> Post '[JSON] ThumbnailSetResponse))))))))))

-- | Creates a value of <a>ThumbnailsSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsOnBehalfOfContentOwner</a></li>
--   <li><a>tsVideoId</a></li>
--   </ul>
thumbnailsSet :: Text -> ThumbnailsSet

-- | Uploads a custom video thumbnail to YouTube and sets it for a video.
--   
--   <i>See:</i> <a>thumbnailsSet</a> smart constructor.
data ThumbnailsSet

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The actual CMS account that the user
--   authenticates with must be linked to the specified YouTube content
--   owner.
tsOnBehalfOfContentOwner :: Lens' ThumbnailsSet (Maybe Text)

-- | The videoId parameter specifies a YouTube video ID for which the
--   custom video thumbnail is being provided.
tsVideoId :: Lens' ThumbnailsSet Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Thumbnails.Set.ThumbnailsSet
instance Data.Data.Data Network.Google.Resource.YouTube.Thumbnails.Set.ThumbnailsSet
instance GHC.Show.Show Network.Google.Resource.YouTube.Thumbnails.Set.ThumbnailsSet
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Thumbnails.Set.ThumbnailsSet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Thumbnails.Set.ThumbnailsSet
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.YouTube.Thumbnails.Set.ThumbnailsSet)


-- | Returns subscription resources that match the API request criteria.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.subscriptions.list</tt>.
module Network.Google.Resource.YouTube.Subscriptions.List

-- | A resource alias for <tt>youtube.subscriptions.list</tt> method which
--   the <a>SubscriptionsList</a> request conforms to.
type SubscriptionsListResource = "youtube" :> ("v3" :> ("subscriptions" :> (QueryParam "part" Text :> (QueryParam "mine" Bool :> (QueryParam "channelId" Text :> (QueryParam "myRecentSubscribers" Bool :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "id" Text :> (QueryParam "mySubscribers" Bool :> (QueryParam "forChannelId" Text :> (QueryParam "pageToken" Text :> (QueryParam "order" SubscriptionsListOrder :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SubscriptionListResponse)))))))))))))))

-- | Creates a value of <a>SubscriptionsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>subPart</a></li>
--   <li><a>subMine</a></li>
--   <li><a>subChannelId</a></li>
--   <li><a>subMyRecentSubscribers</a></li>
--   <li><a>subOnBehalfOfContentOwner</a></li>
--   <li><a>subOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>subId</a></li>
--   <li><a>subMySubscribers</a></li>
--   <li><a>subForChannelId</a></li>
--   <li><a>subPageToken</a></li>
--   <li><a>subOrder</a></li>
--   <li><a>subMaxResults</a></li>
--   </ul>
subscriptionsList :: Text -> SubscriptionsList

-- | Returns subscription resources that match the API request criteria.
--   
--   <i>See:</i> <a>subscriptionsList</a> smart constructor.
data SubscriptionsList

-- | The part parameter specifies a comma-separated list of one or more
--   subscription resource properties that the API response will include.
--   If the parameter identifies a property that contains child properties,
--   the child properties will be included in the response. For example, in
--   a subscription resource, the snippet property contains other
--   properties, such as a display title for the subscription. If you set
--   part=snippet, the API response will also contain all of those nested
--   properties.
subPart :: Lens' SubscriptionsList Text

-- | Set this parameter's value to true to retrieve a feed of the
--   authenticated user's subscriptions.
subMine :: Lens' SubscriptionsList (Maybe Bool)

-- | The channelId parameter specifies a YouTube channel ID. The API will
--   only return that channel's subscriptions.
subChannelId :: Lens' SubscriptionsList (Maybe Text)

-- | Set this parameter's value to true to retrieve a feed of the
--   subscribers of the authenticated user in reverse chronological order
--   (newest first).
subMyRecentSubscribers :: Lens' SubscriptionsList (Maybe Bool)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
subOnBehalfOfContentOwner :: Lens' SubscriptionsList (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
subOnBehalfOfContentOwnerChannel :: Lens' SubscriptionsList (Maybe Text)

-- | The id parameter specifies a comma-separated list of the YouTube
--   subscription ID(s) for the resource(s) that are being retrieved. In a
--   subscription resource, the id property specifies the YouTube
--   subscription ID.
subId :: Lens' SubscriptionsList (Maybe Text)

-- | Set this parameter's value to true to retrieve a feed of the
--   subscribers of the authenticated user in no particular order.
subMySubscribers :: Lens' SubscriptionsList (Maybe Bool)

-- | The forChannelId parameter specifies a comma-separated list of channel
--   IDs. The API response will then only contain subscriptions matching
--   those channels.
subForChannelId :: Lens' SubscriptionsList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
subPageToken :: Lens' SubscriptionsList (Maybe Text)

-- | The order parameter specifies the method that will be used to sort
--   resources in the API response.
subOrder :: Lens' SubscriptionsList SubscriptionsListOrder

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
subMaxResults :: Lens' SubscriptionsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Subscriptions.List.SubscriptionsList
instance Data.Data.Data Network.Google.Resource.YouTube.Subscriptions.List.SubscriptionsList
instance GHC.Show.Show Network.Google.Resource.YouTube.Subscriptions.List.SubscriptionsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Subscriptions.List.SubscriptionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Subscriptions.List.SubscriptionsList


-- | Adds a subscription for the authenticated user's channel.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.subscriptions.insert</tt>.
module Network.Google.Resource.YouTube.Subscriptions.Insert

-- | A resource alias for <tt>youtube.subscriptions.insert</tt> method
--   which the <a>SubscriptionsInsert</a> request conforms to.
type SubscriptionsInsertResource = "youtube" :> ("v3" :> ("subscriptions" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Subscription :> Post '[JSON] Subscription)))))

-- | Creates a value of <a>SubscriptionsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siPart</a></li>
--   <li><a>siPayload</a></li>
--   </ul>
subscriptionsInsert :: Text -> Subscription -> SubscriptionsInsert

-- | Adds a subscription for the authenticated user's channel.
--   
--   <i>See:</i> <a>subscriptionsInsert</a> smart constructor.
data SubscriptionsInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include.
siPart :: Lens' SubscriptionsInsert Text

-- | Multipart request metadata.
siPayload :: Lens' SubscriptionsInsert Subscription
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Subscriptions.Insert.SubscriptionsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.Subscriptions.Insert.SubscriptionsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.Subscriptions.Insert.SubscriptionsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Subscriptions.Insert.SubscriptionsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Subscriptions.Insert.SubscriptionsInsert


-- | Deletes a subscription.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.subscriptions.delete</tt>.
module Network.Google.Resource.YouTube.Subscriptions.Delete

-- | A resource alias for <tt>youtube.subscriptions.delete</tt> method
--   which the <a>SubscriptionsDelete</a> request conforms to.
type SubscriptionsDeleteResource = "youtube" :> ("v3" :> ("subscriptions" :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))

-- | Creates a value of <a>SubscriptionsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdId</a></li>
--   </ul>
subscriptionsDelete :: Text -> SubscriptionsDelete

-- | Deletes a subscription.
--   
--   <i>See:</i> <a>subscriptionsDelete</a> smart constructor.
data SubscriptionsDelete

-- | The id parameter specifies the YouTube subscription ID for the
--   resource that is being deleted. In a subscription resource, the id
--   property specifies the YouTube subscription ID.
sdId :: Lens' SubscriptionsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Subscriptions.Delete.SubscriptionsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.Subscriptions.Delete.SubscriptionsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.Subscriptions.Delete.SubscriptionsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Subscriptions.Delete.SubscriptionsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Subscriptions.Delete.SubscriptionsDelete


-- | Lists sponsors for a channel.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.sponsors.list</tt>.
module Network.Google.Resource.YouTube.Sponsors.List

-- | A resource alias for <tt>youtube.sponsors.list</tt> method which the
--   <a>SponsorsList</a> request conforms to.
type SponsorsListResource = "youtube" :> ("v3" :> ("sponsors" :> (QueryParam "part" Text :> (QueryParam "filter" SponsorsListFilter :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SponsorListResponse)))))))

-- | Creates a value of <a>SponsorsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sPart</a></li>
--   <li><a>sFilter</a></li>
--   <li><a>sPageToken</a></li>
--   <li><a>sMaxResults</a></li>
--   </ul>
sponsorsList :: Text -> SponsorsList

-- | Lists sponsors for a channel.
--   
--   <i>See:</i> <a>sponsorsList</a> smart constructor.
data SponsorsList

-- | The part parameter specifies the sponsor resource parts that the API
--   response will include. Supported values are id and snippet.
sPart :: Lens' SponsorsList Text

-- | The filter parameter specifies which channel sponsors to return.
sFilter :: Lens' SponsorsList SponsorsListFilter

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
sPageToken :: Lens' SponsorsList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
sMaxResults :: Lens' SponsorsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Sponsors.List.SponsorsList
instance Data.Data.Data Network.Google.Resource.YouTube.Sponsors.List.SponsorsList
instance GHC.Show.Show Network.Google.Resource.YouTube.Sponsors.List.SponsorsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Sponsors.List.SponsorsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Sponsors.List.SponsorsList


-- | Returns a collection of search results that match the query parameters
--   specified in the API request. By default, a search result set
--   identifies matching video, channel, and playlist resources, but you
--   can also configure queries to only retrieve a specific type of
--   resource.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.search.list</tt>.
module Network.Google.Resource.YouTube.Search.List

-- | A resource alias for <tt>youtube.search.list</tt> method which the
--   <a>SearchList</a> request conforms to.
type SearchListResource = "youtube" :> ("v3" :> ("search" :> (QueryParam "part" Text :> (QueryParam "publishedAfter" DateTime' :> (QueryParam "videoDefinition" SearchListVideoDefinition :> (QueryParam "videoDuration" SearchListVideoDuration :> (QueryParam "videoCaption" SearchListVideoCaption :> (QueryParam "videoLicense" SearchListVideoLicense :> (QueryParam "regionCode" Text :> (QueryParam "forDeveloper" Bool :> (QueryParam "location" Text :> (QueryParam "locationRadius" Text :> (QueryParam "forContentOwner" Bool :> (QueryParam "channelId" Text :> (QueryParam "q" Text :> (QueryParam "forMine" Bool :> (QueryParam "videoEmbeddable" SearchListVideoEmbeddable :> (QueryParam "eventType" SearchListEventType :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "videoCategoryId" Text :> (QueryParam "topicId" Text :> (QueryParam "safeSearch" SearchListSafeSearch :> (QueryParam "videoSyndicated" SearchListVideoSyndicated :> (QueryParam "relatedToVideoId" Text :> (QueryParam "pageToken" Text :> (QueryParam "type" Text :> (QueryParam "channelType" SearchListChannelType :> (QueryParam "relevanceLanguage" Text :> (QueryParam "order" SearchListOrder :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "publishedBefore" DateTime' :> (QueryParam "videoType" SearchListVideoType :> (QueryParam "videoDimension" SearchListVideoDimension :> (QueryParam "alt" AltJSON :> Get '[JSON] SearchListResponse))))))))))))))))))))))))))))))))))

-- | Creates a value of <a>SearchList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slPublishedAfter</a></li>
--   <li><a>slVideoDefinition</a></li>
--   <li><a>slPart</a></li>
--   <li><a>slVideoDuration</a></li>
--   <li><a>slVideoCaption</a></li>
--   <li><a>slVideoLicense</a></li>
--   <li><a>slRegionCode</a></li>
--   <li><a>slForDeveloper</a></li>
--   <li><a>slLocation</a></li>
--   <li><a>slLocationRadius</a></li>
--   <li><a>slForContentOwner</a></li>
--   <li><a>slChannelId</a></li>
--   <li><a>slQ</a></li>
--   <li><a>slForMine</a></li>
--   <li><a>slVideoEmbeddable</a></li>
--   <li><a>slEventType</a></li>
--   <li><a>slOnBehalfOfContentOwner</a></li>
--   <li><a>slVideoCategoryId</a></li>
--   <li><a>slTopicId</a></li>
--   <li><a>slSafeSearch</a></li>
--   <li><a>slVideoSyndicated</a></li>
--   <li><a>slRelatedToVideoId</a></li>
--   <li><a>slPageToken</a></li>
--   <li><a>slType</a></li>
--   <li><a>slChannelType</a></li>
--   <li><a>slRelevanceLanguage</a></li>
--   <li><a>slOrder</a></li>
--   <li><a>slMaxResults</a></li>
--   <li><a>slPublishedBefore</a></li>
--   <li><a>slVideoType</a></li>
--   <li><a>slVideoDimension</a></li>
--   </ul>
searchList :: Text -> SearchList

-- | Returns a collection of search results that match the query parameters
--   specified in the API request. By default, a search result set
--   identifies matching video, channel, and playlist resources, but you
--   can also configure queries to only retrieve a specific type of
--   resource.
--   
--   <i>See:</i> <a>searchList</a> smart constructor.
data SearchList

-- | The publishedAfter parameter indicates that the API response should
--   only contain resources created after the specified time. The value is
--   an RFC 3339 formatted date-time value (1970-01-01T00:00:00Z).
slPublishedAfter :: Lens' SearchList (Maybe UTCTime)

-- | The videoDefinition parameter lets you restrict a search to only
--   include either high definition (HD) or standard definition (SD)
--   videos. HD videos are available for playback in at least 720p, though
--   higher resolutions, like 1080p, might also be available. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
slVideoDefinition :: Lens' SearchList (Maybe SearchListVideoDefinition)

-- | The part parameter specifies a comma-separated list of one or more
--   search resource properties that the API response will include. Set the
--   parameter value to snippet.
slPart :: Lens' SearchList Text

-- | The videoDuration parameter filters video search results based on
--   their duration. If you specify a value for this parameter, you must
--   also set the type parameter's value to video.
slVideoDuration :: Lens' SearchList (Maybe SearchListVideoDuration)

-- | The videoCaption parameter indicates whether the API should filter
--   video search results based on whether they have captions. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
slVideoCaption :: Lens' SearchList (Maybe SearchListVideoCaption)

-- | The videoLicense parameter filters search results to only include
--   videos with a particular license. YouTube lets video uploaders choose
--   to attach either the Creative Commons license or the standard YouTube
--   license to each of their videos. If you specify a value for this
--   parameter, you must also set the type parameter's value to video.
slVideoLicense :: Lens' SearchList (Maybe SearchListVideoLicense)

-- | The regionCode parameter instructs the API to return search results
--   for the specified country. The parameter value is an ISO 3166-1
--   alpha-2 country code.
slRegionCode :: Lens' SearchList (Maybe Text)

-- | The forDeveloper parameter restricts the search to only retrieve
--   videos uploaded via the developer's application or website. The API
--   server uses the request's authorization credentials to identify the
--   developer. Therefore, a developer can restrict results to videos
--   uploaded through the developer's own app or website but not to videos
--   uploaded through other apps or sites.
slForDeveloper :: Lens' SearchList (Maybe Bool)

-- | The location parameter, in conjunction with the locationRadius
--   parameter, defines a circular geographic area and also restricts a
--   search to videos that specify, in their metadata, a geographic
--   location that falls within that area. The parameter value is a string
--   that specifies latitude/longitude coordinates e.g.
--   (37.42307,-122.08427). - The location parameter value identifies the
--   point at the center of the area. - The locationRadius parameter
--   specifies the maximum distance that the location associated with a
--   video can be from that point for the video to still be included in the
--   search results.The API returns an error if your request specifies a
--   value for the location parameter but does not also specify a value for
--   the locationRadius parameter.
slLocation :: Lens' SearchList (Maybe Text)

-- | The locationRadius parameter, in conjunction with the location
--   parameter, defines a circular geographic area. The parameter value
--   must be a floating point number followed by a measurement unit. Valid
--   measurement units are m, km, ft, and mi. For example, valid parameter
--   values include 1500m, 5km, 10000ft, and 0.75mi. The API does not
--   support locationRadius parameter values larger than 1000 kilometers.
--   Note: See the definition of the location parameter for more
--   information.
slLocationRadius :: Lens' SearchList (Maybe Text)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The forContentOwner parameter restricts the search to only
--   retrieve resources owned by the content owner specified by the
--   onBehalfOfContentOwner parameter. The user must be authenticated using
--   a CMS account linked to the specified content owner and
--   onBehalfOfContentOwner must be provided.
slForContentOwner :: Lens' SearchList (Maybe Bool)

-- | The channelId parameter indicates that the API response should only
--   contain resources created by the channel
slChannelId :: Lens' SearchList (Maybe Text)

-- | The q parameter specifies the query term to search for. Your request
--   can also use the Boolean NOT (-) and OR (|) operators to exclude
--   videos or to find videos that are associated with one of several
--   search terms. For example, to search for videos matching either
--   "boating" or "sailing", set the q parameter value to boating|sailing.
--   Similarly, to search for videos matching either "boating" or "sailing"
--   but not "fishing", set the q parameter value to boating|sailing
--   -fishing. Note that the pipe character must be URL-escaped when it is
--   sent in your API request. The URL-escaped value for the pipe character
--   is %7C.
slQ :: Lens' SearchList (Maybe Text)

-- | The forMine parameter restricts the search to only retrieve videos
--   owned by the authenticated user. If you set this parameter to true,
--   then the type parameter's value must also be set to video.
slForMine :: Lens' SearchList (Maybe Bool)

-- | The videoEmbeddable parameter lets you to restrict a search to only
--   videos that can be embedded into a webpage. If you specify a value for
--   this parameter, you must also set the type parameter's value to video.
slVideoEmbeddable :: Lens' SearchList (Maybe SearchListVideoEmbeddable)

-- | The eventType parameter restricts a search to broadcast events. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
slEventType :: Lens' SearchList (Maybe SearchListEventType)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
slOnBehalfOfContentOwner :: Lens' SearchList (Maybe Text)

-- | The videoCategoryId parameter filters video search results based on
--   their category. If you specify a value for this parameter, you must
--   also set the type parameter's value to video.
slVideoCategoryId :: Lens' SearchList (Maybe Text)

-- | The topicId parameter indicates that the API response should only
--   contain resources associated with the specified topic. The value
--   identifies a Freebase topic ID.
slTopicId :: Lens' SearchList (Maybe Text)

-- | The safeSearch parameter indicates whether the search results should
--   include restricted content as well as standard content.
slSafeSearch :: Lens' SearchList (Maybe SearchListSafeSearch)

-- | The videoSyndicated parameter lets you to restrict a search to only
--   videos that can be played outside youtube.com. If you specify a value
--   for this parameter, you must also set the type parameter's value to
--   video.
slVideoSyndicated :: Lens' SearchList (Maybe SearchListVideoSyndicated)

-- | The relatedToVideoId parameter retrieves a list of videos that are
--   related to the video that the parameter value identifies. The
--   parameter value must be set to a YouTube video ID and, if you are
--   using this parameter, the type parameter must be set to video.
slRelatedToVideoId :: Lens' SearchList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
slPageToken :: Lens' SearchList (Maybe Text)

-- | The type parameter restricts a search query to only retrieve a
--   particular type of resource. The value is a comma-separated list of
--   resource types.
slType :: Lens' SearchList Text

-- | The channelType parameter lets you restrict a search to a particular
--   type of channel.
slChannelType :: Lens' SearchList (Maybe SearchListChannelType)

-- | The relevanceLanguage parameter instructs the API to return search
--   results that are most relevant to the specified language. The
--   parameter value is typically an ISO 639-1 two-letter language code.
--   However, you should use the values zh-Hans for simplified Chinese and
--   zh-Hant for traditional Chinese. Please note that results in other
--   languages will still be returned if they are highly relevant to the
--   search query term.
slRelevanceLanguage :: Lens' SearchList (Maybe Text)

-- | The order parameter specifies the method that will be used to order
--   resources in the API response.
slOrder :: Lens' SearchList SearchListOrder

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
slMaxResults :: Lens' SearchList Word32

-- | The publishedBefore parameter indicates that the API response should
--   only contain resources created before the specified time. The value is
--   an RFC 3339 formatted date-time value (1970-01-01T00:00:00Z).
slPublishedBefore :: Lens' SearchList (Maybe UTCTime)

-- | The videoType parameter lets you restrict a search to a particular
--   type of videos. If you specify a value for this parameter, you must
--   also set the type parameter's value to video.
slVideoType :: Lens' SearchList (Maybe SearchListVideoType)

-- | The videoDimension parameter lets you restrict a search to only
--   retrieve 2D or 3D videos. If you specify a value for this parameter,
--   you must also set the type parameter's value to video.
slVideoDimension :: Lens' SearchList (Maybe SearchListVideoDimension)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Search.List.SearchList
instance Data.Data.Data Network.Google.Resource.YouTube.Search.List.SearchList
instance GHC.Show.Show Network.Google.Resource.YouTube.Search.List.SearchList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Search.List.SearchList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Search.List.SearchList


-- | Modifies a playlist. For example, you could change a playlist's title,
--   description, or privacy status.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.playlists.update</tt>.
module Network.Google.Resource.YouTube.PlayLists.Update

-- | A resource alias for <tt>youtube.playlists.update</tt> method which
--   the <a>PlayListsUpdate</a> request conforms to.
type PlayListsUpdateResource = "youtube" :> ("v3" :> ("playlists" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PlayList :> Put '[JSON] PlayList))))))

-- | Creates a value of <a>PlayListsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pluPart</a></li>
--   <li><a>pluPayload</a></li>
--   <li><a>pluOnBehalfOfContentOwner</a></li>
--   </ul>
playListsUpdate :: Text -> PlayList -> PlayListsUpdate

-- | Modifies a playlist. For example, you could change a playlist's title,
--   description, or privacy status.
--   
--   <i>See:</i> <a>playListsUpdate</a> smart constructor.
data PlayListsUpdate

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. Note that this
--   method will override the existing values for mutable properties that
--   are contained in any parts that the request body specifies. For
--   example, a playlist's description is contained in the snippet part,
--   which must be included in the request body. If the request does not
--   specify a value for the snippet.description property, the playlist's
--   existing description will be deleted.
pluPart :: Lens' PlayListsUpdate Text

-- | Multipart request metadata.
pluPayload :: Lens' PlayListsUpdate PlayList

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
pluOnBehalfOfContentOwner :: Lens' PlayListsUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.PlayLists.Update.PlayListsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.PlayLists.Update.PlayListsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.PlayLists.Update.PlayListsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.PlayLists.Update.PlayListsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.PlayLists.Update.PlayListsUpdate


-- | Returns a collection of playlists that match the API request
--   parameters. For example, you can retrieve all playlists that the
--   authenticated user owns, or you can retrieve one or more playlists by
--   their unique IDs.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.playlists.list</tt>.
module Network.Google.Resource.YouTube.PlayLists.List

-- | A resource alias for <tt>youtube.playlists.list</tt> method which the
--   <a>PlayListsList</a> request conforms to.
type PlayListsListResource = "youtube" :> ("v3" :> ("playlists" :> (QueryParam "part" Text :> (QueryParam "mine" Bool :> (QueryParam "channelId" Text :> (QueryParam "hl" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "id" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] PlayListListResponse))))))))))))

-- | Creates a value of <a>PlayListsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pllPart</a></li>
--   <li><a>pllMine</a></li>
--   <li><a>pllChannelId</a></li>
--   <li><a>pllHl</a></li>
--   <li><a>pllOnBehalfOfContentOwner</a></li>
--   <li><a>pllOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>pllId</a></li>
--   <li><a>pllPageToken</a></li>
--   <li><a>pllMaxResults</a></li>
--   </ul>
playListsList :: Text -> PlayListsList

-- | Returns a collection of playlists that match the API request
--   parameters. For example, you can retrieve all playlists that the
--   authenticated user owns, or you can retrieve one or more playlists by
--   their unique IDs.
--   
--   <i>See:</i> <a>playListsList</a> smart constructor.
data PlayListsList

-- | The part parameter specifies a comma-separated list of one or more
--   playlist resource properties that the API response will include. If
--   the parameter identifies a property that contains child properties,
--   the child properties will be included in the response. For example, in
--   a playlist resource, the snippet property contains properties like
--   author, title, description, tags, and timeCreated. As such, if you set
--   part=snippet, the API response will contain all of those properties.
pllPart :: Lens' PlayListsList Text

-- | Set this parameter's value to true to instruct the API to only return
--   playlists owned by the authenticated user.
pllMine :: Lens' PlayListsList (Maybe Bool)

-- | This value indicates that the API should only return the specified
--   channel's playlists.
pllChannelId :: Lens' PlayListsList (Maybe Text)

-- | The hl parameter should be used for filter out the properties that are
--   not in the given language. Used for the snippet part.
pllHl :: Lens' PlayListsList (Maybe Text)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
pllOnBehalfOfContentOwner :: Lens' PlayListsList (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
pllOnBehalfOfContentOwnerChannel :: Lens' PlayListsList (Maybe Text)

-- | The id parameter specifies a comma-separated list of the YouTube
--   playlist ID(s) for the resource(s) that are being retrieved. In a
--   playlist resource, the id property specifies the playlist's YouTube
--   playlist ID.
pllId :: Lens' PlayListsList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
pllPageToken :: Lens' PlayListsList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
pllMaxResults :: Lens' PlayListsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.PlayLists.List.PlayListsList
instance Data.Data.Data Network.Google.Resource.YouTube.PlayLists.List.PlayListsList
instance GHC.Show.Show Network.Google.Resource.YouTube.PlayLists.List.PlayListsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.PlayLists.List.PlayListsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.PlayLists.List.PlayListsList


-- | Creates a playlist.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.playlists.insert</tt>.
module Network.Google.Resource.YouTube.PlayLists.Insert

-- | A resource alias for <tt>youtube.playlists.insert</tt> method which
--   the <a>PlayListsInsert</a> request conforms to.
type PlayListsInsertResource = "youtube" :> ("v3" :> ("playlists" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PlayList :> Post '[JSON] PlayList)))))))

-- | Creates a value of <a>PlayListsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pliPart</a></li>
--   <li><a>pliPayload</a></li>
--   <li><a>pliOnBehalfOfContentOwner</a></li>
--   <li><a>pliOnBehalfOfContentOwnerChannel</a></li>
--   </ul>
playListsInsert :: Text -> PlayList -> PlayListsInsert

-- | Creates a playlist.
--   
--   <i>See:</i> <a>playListsInsert</a> smart constructor.
data PlayListsInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include.
pliPart :: Lens' PlayListsInsert Text

-- | Multipart request metadata.
pliPayload :: Lens' PlayListsInsert PlayList

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
pliOnBehalfOfContentOwner :: Lens' PlayListsInsert (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
pliOnBehalfOfContentOwnerChannel :: Lens' PlayListsInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.PlayLists.Insert.PlayListsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.PlayLists.Insert.PlayListsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.PlayLists.Insert.PlayListsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.PlayLists.Insert.PlayListsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.PlayLists.Insert.PlayListsInsert


-- | Deletes a playlist.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.playlists.delete</tt>.
module Network.Google.Resource.YouTube.PlayLists.Delete

-- | A resource alias for <tt>youtube.playlists.delete</tt> method which
--   the <a>PlayListsDelete</a> request conforms to.
type PlayListsDeleteResource = "youtube" :> ("v3" :> ("playlists" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>PlayListsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pldOnBehalfOfContentOwner</a></li>
--   <li><a>pldId</a></li>
--   </ul>
playListsDelete :: Text -> PlayListsDelete

-- | Deletes a playlist.
--   
--   <i>See:</i> <a>playListsDelete</a> smart constructor.
data PlayListsDelete

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
pldOnBehalfOfContentOwner :: Lens' PlayListsDelete (Maybe Text)

-- | The id parameter specifies the YouTube playlist ID for the playlist
--   that is being deleted. In a playlist resource, the id property
--   specifies the playlist's ID.
pldId :: Lens' PlayListsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.PlayLists.Delete.PlayListsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.PlayLists.Delete.PlayListsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.PlayLists.Delete.PlayListsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.PlayLists.Delete.PlayListsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.PlayLists.Delete.PlayListsDelete


-- | Modifies a playlist item. For example, you could update the item's
--   position in the playlist.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.playlistItems.update</tt>.
module Network.Google.Resource.YouTube.PlayListItems.Update

-- | A resource alias for <tt>youtube.playlistItems.update</tt> method
--   which the <a>PlayListItemsUpdate</a> request conforms to.
type PlayListItemsUpdateResource = "youtube" :> ("v3" :> ("playlistItems" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PlayListItem :> Put '[JSON] PlayListItem))))))

-- | Creates a value of <a>PlayListItemsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pliuPart</a></li>
--   <li><a>pliuPayload</a></li>
--   <li><a>pliuOnBehalfOfContentOwner</a></li>
--   </ul>
playListItemsUpdate :: Text -> PlayListItem -> PlayListItemsUpdate

-- | Modifies a playlist item. For example, you could update the item's
--   position in the playlist.
--   
--   <i>See:</i> <a>playListItemsUpdate</a> smart constructor.
data PlayListItemsUpdate

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. Note that this
--   method will override the existing values for all of the mutable
--   properties that are contained in any parts that the parameter value
--   specifies. For example, a playlist item can specify a start time and
--   end time, which identify the times portion of the video that should
--   play when users watch the video in the playlist. If your request is
--   updating a playlist item that sets these values, and the request's
--   part parameter value includes the contentDetails part, the playlist
--   item's start and end times will be updated to whatever value the
--   request body specifies. If the request body does not specify values,
--   the existing start and end times will be removed and replaced with the
--   default settings.
pliuPart :: Lens' PlayListItemsUpdate Text

-- | Multipart request metadata.
pliuPayload :: Lens' PlayListItemsUpdate PlayListItem

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
pliuOnBehalfOfContentOwner :: Lens' PlayListItemsUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.PlayListItems.Update.PlayListItemsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.PlayListItems.Update.PlayListItemsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.PlayListItems.Update.PlayListItemsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.PlayListItems.Update.PlayListItemsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.PlayListItems.Update.PlayListItemsUpdate


-- | Returns a collection of playlist items that match the API request
--   parameters. You can retrieve all of the playlist items in a specified
--   playlist or retrieve one or more playlist items by their unique IDs.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.playlistItems.list</tt>.
module Network.Google.Resource.YouTube.PlayListItems.List

-- | A resource alias for <tt>youtube.playlistItems.list</tt> method which
--   the <a>PlayListItemsList</a> request conforms to.
type PlayListItemsListResource = "youtube" :> ("v3" :> ("playlistItems" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "videoId" Text :> (QueryParam "id" Text :> (QueryParam "pageToken" Text :> (QueryParam "playlistId" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] PlayListItemListResponse))))))))))

-- | Creates a value of <a>PlayListItemsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plilPart</a></li>
--   <li><a>plilOnBehalfOfContentOwner</a></li>
--   <li><a>plilVideoId</a></li>
--   <li><a>plilId</a></li>
--   <li><a>plilPageToken</a></li>
--   <li><a>plilPlayListId</a></li>
--   <li><a>plilMaxResults</a></li>
--   </ul>
playListItemsList :: Text -> PlayListItemsList

-- | Returns a collection of playlist items that match the API request
--   parameters. You can retrieve all of the playlist items in a specified
--   playlist or retrieve one or more playlist items by their unique IDs.
--   
--   <i>See:</i> <a>playListItemsList</a> smart constructor.
data PlayListItemsList

-- | The part parameter specifies a comma-separated list of one or more
--   playlistItem resource properties that the API response will include.
--   If the parameter identifies a property that contains child properties,
--   the child properties will be included in the response. For example, in
--   a playlistItem resource, the snippet property contains numerous
--   fields, including the title, description, position, and resourceId
--   properties. As such, if you set part=snippet, the API response will
--   contain all of those properties.
plilPart :: Lens' PlayListItemsList Text

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
plilOnBehalfOfContentOwner :: Lens' PlayListItemsList (Maybe Text)

-- | The videoId parameter specifies that the request should return only
--   the playlist items that contain the specified video.
plilVideoId :: Lens' PlayListItemsList (Maybe Text)

-- | The id parameter specifies a comma-separated list of one or more
--   unique playlist item IDs.
plilId :: Lens' PlayListItemsList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
plilPageToken :: Lens' PlayListItemsList (Maybe Text)

-- | The playlistId parameter specifies the unique ID of the playlist for
--   which you want to retrieve playlist items. Note that even though this
--   is an optional parameter, every request to retrieve playlist items
--   must specify a value for either the id parameter or the playlistId
--   parameter.
plilPlayListId :: Lens' PlayListItemsList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
plilMaxResults :: Lens' PlayListItemsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.PlayListItems.List.PlayListItemsList
instance Data.Data.Data Network.Google.Resource.YouTube.PlayListItems.List.PlayListItemsList
instance GHC.Show.Show Network.Google.Resource.YouTube.PlayListItems.List.PlayListItemsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.PlayListItems.List.PlayListItemsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.PlayListItems.List.PlayListItemsList


-- | Adds a resource to a playlist.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.playlistItems.insert</tt>.
module Network.Google.Resource.YouTube.PlayListItems.Insert

-- | A resource alias for <tt>youtube.playlistItems.insert</tt> method
--   which the <a>PlayListItemsInsert</a> request conforms to.
type PlayListItemsInsertResource = "youtube" :> ("v3" :> ("playlistItems" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PlayListItem :> Post '[JSON] PlayListItem))))))

-- | Creates a value of <a>PlayListItemsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pliiPart</a></li>
--   <li><a>pliiPayload</a></li>
--   <li><a>pliiOnBehalfOfContentOwner</a></li>
--   </ul>
playListItemsInsert :: Text -> PlayListItem -> PlayListItemsInsert

-- | Adds a resource to a playlist.
--   
--   <i>See:</i> <a>playListItemsInsert</a> smart constructor.
data PlayListItemsInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include.
pliiPart :: Lens' PlayListItemsInsert Text

-- | Multipart request metadata.
pliiPayload :: Lens' PlayListItemsInsert PlayListItem

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
pliiOnBehalfOfContentOwner :: Lens' PlayListItemsInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.PlayListItems.Insert.PlayListItemsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.PlayListItems.Insert.PlayListItemsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.PlayListItems.Insert.PlayListItemsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.PlayListItems.Insert.PlayListItemsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.PlayListItems.Insert.PlayListItemsInsert


-- | Deletes a playlist item.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.playlistItems.delete</tt>.
module Network.Google.Resource.YouTube.PlayListItems.Delete

-- | A resource alias for <tt>youtube.playlistItems.delete</tt> method
--   which the <a>PlayListItemsDelete</a> request conforms to.
type PlayListItemsDeleteResource = "youtube" :> ("v3" :> ("playlistItems" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>PlayListItemsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plidOnBehalfOfContentOwner</a></li>
--   <li><a>plidId</a></li>
--   </ul>
playListItemsDelete :: Text -> PlayListItemsDelete

-- | Deletes a playlist item.
--   
--   <i>See:</i> <a>playListItemsDelete</a> smart constructor.
data PlayListItemsDelete

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
plidOnBehalfOfContentOwner :: Lens' PlayListItemsDelete (Maybe Text)

-- | The id parameter specifies the YouTube playlist item ID for the
--   playlist item that is being deleted. In a playlistItem resource, the
--   id property specifies the playlist item's ID.
plidId :: Lens' PlayListItemsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.PlayListItems.Delete.PlayListItemsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.PlayListItems.Delete.PlayListItemsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.PlayListItems.Delete.PlayListItemsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.PlayListItems.Delete.PlayListItemsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.PlayListItems.Delete.PlayListItemsDelete


-- | Updates a video stream. If the properties that you want to change
--   cannot be updated, then you need to create a new stream with the
--   proper settings.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveStreams.update</tt>.
module Network.Google.Resource.YouTube.LiveStreams.Update

-- | A resource alias for <tt>youtube.liveStreams.update</tt> method which
--   the <a>LiveStreamsUpdate</a> request conforms to.
type LiveStreamsUpdateResource = "youtube" :> ("v3" :> ("liveStreams" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] LiveStream :> Put '[JSON] LiveStream)))))))

-- | Creates a value of <a>LiveStreamsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsuPart</a></li>
--   <li><a>lsuPayload</a></li>
--   <li><a>lsuOnBehalfOfContentOwner</a></li>
--   <li><a>lsuOnBehalfOfContentOwnerChannel</a></li>
--   </ul>
liveStreamsUpdate :: Text -> LiveStream -> LiveStreamsUpdate

-- | Updates a video stream. If the properties that you want to change
--   cannot be updated, then you need to create a new stream with the
--   proper settings.
--   
--   <i>See:</i> <a>liveStreamsUpdate</a> smart constructor.
data LiveStreamsUpdate

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. The part properties
--   that you can include in the parameter value are id, snippet, cdn, and
--   status. Note that this method will override the existing values for
--   all of the mutable properties that are contained in any parts that the
--   parameter value specifies. If the request body does not specify a
--   value for a mutable property, the existing value for that property
--   will be removed.
lsuPart :: Lens' LiveStreamsUpdate Text

-- | Multipart request metadata.
lsuPayload :: Lens' LiveStreamsUpdate LiveStream

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lsuOnBehalfOfContentOwner :: Lens' LiveStreamsUpdate (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lsuOnBehalfOfContentOwnerChannel :: Lens' LiveStreamsUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveStreams.Update.LiveStreamsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.LiveStreams.Update.LiveStreamsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveStreams.Update.LiveStreamsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveStreams.Update.LiveStreamsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveStreams.Update.LiveStreamsUpdate


-- | Returns a list of video streams that match the API request parameters.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveStreams.list</tt>.
module Network.Google.Resource.YouTube.LiveStreams.List

-- | A resource alias for <tt>youtube.liveStreams.list</tt> method which
--   the <a>LiveStreamsList</a> request conforms to.
type LiveStreamsListResource = "youtube" :> ("v3" :> ("liveStreams" :> (QueryParam "part" Text :> (QueryParam "mine" Bool :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "id" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] LiveStreamListResponse))))))))))

-- | Creates a value of <a>LiveStreamsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lslPart</a></li>
--   <li><a>lslMine</a></li>
--   <li><a>lslOnBehalfOfContentOwner</a></li>
--   <li><a>lslOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>lslId</a></li>
--   <li><a>lslPageToken</a></li>
--   <li><a>lslMaxResults</a></li>
--   </ul>
liveStreamsList :: Text -> LiveStreamsList

-- | Returns a list of video streams that match the API request parameters.
--   
--   <i>See:</i> <a>liveStreamsList</a> smart constructor.
data LiveStreamsList

-- | The part parameter specifies a comma-separated list of one or more
--   liveStream resource properties that the API response will include. The
--   part names that you can include in the parameter value are id,
--   snippet, cdn, and status.
lslPart :: Lens' LiveStreamsList Text

-- | The mine parameter can be used to instruct the API to only return
--   streams owned by the authenticated user. Set the parameter value to
--   true to only retrieve your own streams.
lslMine :: Lens' LiveStreamsList (Maybe Bool)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lslOnBehalfOfContentOwner :: Lens' LiveStreamsList (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lslOnBehalfOfContentOwnerChannel :: Lens' LiveStreamsList (Maybe Text)

-- | The id parameter specifies a comma-separated list of YouTube stream
--   IDs that identify the streams being retrieved. In a liveStream
--   resource, the id property specifies the stream's ID.
lslId :: Lens' LiveStreamsList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
lslPageToken :: Lens' LiveStreamsList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
lslMaxResults :: Lens' LiveStreamsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveStreams.List.LiveStreamsList
instance Data.Data.Data Network.Google.Resource.YouTube.LiveStreams.List.LiveStreamsList
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveStreams.List.LiveStreamsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveStreams.List.LiveStreamsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveStreams.List.LiveStreamsList


-- | Creates a video stream. The stream enables you to send your video to
--   YouTube, which can then broadcast the video to your audience.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveStreams.insert</tt>.
module Network.Google.Resource.YouTube.LiveStreams.Insert

-- | A resource alias for <tt>youtube.liveStreams.insert</tt> method which
--   the <a>LiveStreamsInsert</a> request conforms to.
type LiveStreamsInsertResource = "youtube" :> ("v3" :> ("liveStreams" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] LiveStream :> Post '[JSON] LiveStream)))))))

-- | Creates a value of <a>LiveStreamsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsiPart</a></li>
--   <li><a>lsiPayload</a></li>
--   <li><a>lsiOnBehalfOfContentOwner</a></li>
--   <li><a>lsiOnBehalfOfContentOwnerChannel</a></li>
--   </ul>
liveStreamsInsert :: Text -> LiveStream -> LiveStreamsInsert

-- | Creates a video stream. The stream enables you to send your video to
--   YouTube, which can then broadcast the video to your audience.
--   
--   <i>See:</i> <a>liveStreamsInsert</a> smart constructor.
data LiveStreamsInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. The part properties
--   that you can include in the parameter value are id, snippet, cdn, and
--   status.
lsiPart :: Lens' LiveStreamsInsert Text

-- | Multipart request metadata.
lsiPayload :: Lens' LiveStreamsInsert LiveStream

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lsiOnBehalfOfContentOwner :: Lens' LiveStreamsInsert (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lsiOnBehalfOfContentOwnerChannel :: Lens' LiveStreamsInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveStreams.Insert.LiveStreamsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.LiveStreams.Insert.LiveStreamsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveStreams.Insert.LiveStreamsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveStreams.Insert.LiveStreamsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveStreams.Insert.LiveStreamsInsert


-- | Deletes a video stream.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveStreams.delete</tt>.
module Network.Google.Resource.YouTube.LiveStreams.Delete

-- | A resource alias for <tt>youtube.liveStreams.delete</tt> method which
--   the <a>LiveStreamsDelete</a> request conforms to.
type LiveStreamsDeleteResource = "youtube" :> ("v3" :> ("liveStreams" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>LiveStreamsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsdOnBehalfOfContentOwner</a></li>
--   <li><a>lsdOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>lsdId</a></li>
--   </ul>
liveStreamsDelete :: Text -> LiveStreamsDelete

-- | Deletes a video stream.
--   
--   <i>See:</i> <a>liveStreamsDelete</a> smart constructor.
data LiveStreamsDelete

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lsdOnBehalfOfContentOwner :: Lens' LiveStreamsDelete (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lsdOnBehalfOfContentOwnerChannel :: Lens' LiveStreamsDelete (Maybe Text)

-- | The id parameter specifies the YouTube live stream ID for the resource
--   that is being deleted.
lsdId :: Lens' LiveStreamsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveStreams.Delete.LiveStreamsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.LiveStreams.Delete.LiveStreamsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveStreams.Delete.LiveStreamsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveStreams.Delete.LiveStreamsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveStreams.Delete.LiveStreamsDelete


-- | Lists moderators for a live chat.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveChatModerators.list</tt>.
module Network.Google.Resource.YouTube.LiveChatModerators.List

-- | A resource alias for <tt>youtube.liveChatModerators.list</tt> method
--   which the <a>LiveChatModeratorsList</a> request conforms to.
type LiveChatModeratorsListResource = "youtube" :> ("v3" :> ("liveChat" :> ("moderators" :> (QueryParam "liveChatId" Text :> (QueryParam "part" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] LiveChatModeratorListResponse))))))))

-- | Creates a value of <a>LiveChatModeratorsList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>livPart</a></li>
--   <li><a>livLiveChatId</a></li>
--   <li><a>livPageToken</a></li>
--   <li><a>livMaxResults</a></li>
--   </ul>
liveChatModeratorsList :: Text -> Text -> LiveChatModeratorsList

-- | Lists moderators for a live chat.
--   
--   <i>See:</i> <a>liveChatModeratorsList</a> smart constructor.
data LiveChatModeratorsList

-- | The part parameter specifies the liveChatModerator resource parts that
--   the API response will include. Supported values are id and snippet.
livPart :: Lens' LiveChatModeratorsList Text

-- | The liveChatId parameter specifies the YouTube live chat for which the
--   API should return moderators.
livLiveChatId :: Lens' LiveChatModeratorsList Text

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
livPageToken :: Lens' LiveChatModeratorsList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
livMaxResults :: Lens' LiveChatModeratorsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveChatModerators.List.LiveChatModeratorsList
instance Data.Data.Data Network.Google.Resource.YouTube.LiveChatModerators.List.LiveChatModeratorsList
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveChatModerators.List.LiveChatModeratorsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveChatModerators.List.LiveChatModeratorsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveChatModerators.List.LiveChatModeratorsList


-- | Adds a new moderator for the chat.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveChatModerators.insert</tt>.
module Network.Google.Resource.YouTube.LiveChatModerators.Insert

-- | A resource alias for <tt>youtube.liveChatModerators.insert</tt> method
--   which the <a>LiveChatModeratorsInsert</a> request conforms to.
type LiveChatModeratorsInsertResource = "youtube" :> ("v3" :> ("liveChat" :> ("moderators" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] LiveChatModerator :> Post '[JSON] LiveChatModerator))))))

-- | Creates a value of <a>LiveChatModeratorsInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lPart</a></li>
--   <li><a>lPayload</a></li>
--   </ul>
liveChatModeratorsInsert :: Text -> LiveChatModerator -> LiveChatModeratorsInsert

-- | Adds a new moderator for the chat.
--   
--   <i>See:</i> <a>liveChatModeratorsInsert</a> smart constructor.
data LiveChatModeratorsInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response returns. Set the parameter value
--   to snippet.
lPart :: Lens' LiveChatModeratorsInsert Text

-- | Multipart request metadata.
lPayload :: Lens' LiveChatModeratorsInsert LiveChatModerator
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveChatModerators.Insert.LiveChatModeratorsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.LiveChatModerators.Insert.LiveChatModeratorsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveChatModerators.Insert.LiveChatModeratorsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveChatModerators.Insert.LiveChatModeratorsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveChatModerators.Insert.LiveChatModeratorsInsert


-- | Removes a chat moderator.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveChatModerators.delete</tt>.
module Network.Google.Resource.YouTube.LiveChatModerators.Delete

-- | A resource alias for <tt>youtube.liveChatModerators.delete</tt> method
--   which the <a>LiveChatModeratorsDelete</a> request conforms to.
type LiveChatModeratorsDeleteResource = "youtube" :> ("v3" :> ("liveChat" :> ("moderators" :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>LiveChatModeratorsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmdId</a></li>
--   </ul>
liveChatModeratorsDelete :: Text -> LiveChatModeratorsDelete

-- | Removes a chat moderator.
--   
--   <i>See:</i> <a>liveChatModeratorsDelete</a> smart constructor.
data LiveChatModeratorsDelete

-- | The id parameter identifies the chat moderator to remove. The value
--   uniquely identifies both the moderator and the chat.
lcmdId :: Lens' LiveChatModeratorsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveChatModerators.Delete.LiveChatModeratorsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.LiveChatModerators.Delete.LiveChatModeratorsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveChatModerators.Delete.LiveChatModeratorsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveChatModerators.Delete.LiveChatModeratorsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveChatModerators.Delete.LiveChatModeratorsDelete


-- | Lists live chat messages for a specific chat.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveChatMessages.list</tt>.
module Network.Google.Resource.YouTube.LiveChatMessages.List

-- | A resource alias for <tt>youtube.liveChatMessages.list</tt> method
--   which the <a>LiveChatMessagesList</a> request conforms to.
type LiveChatMessagesListResource = "youtube" :> ("v3" :> ("liveChat" :> ("messages" :> (QueryParam "liveChatId" Text :> (QueryParam "part" Text :> (QueryParam "hl" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "profileImageSize" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] LiveChatMessageListResponse))))))))))

-- | Creates a value of <a>LiveChatMessagesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmlPart</a></li>
--   <li><a>lcmlLiveChatId</a></li>
--   <li><a>lcmlHl</a></li>
--   <li><a>lcmlPageToken</a></li>
--   <li><a>lcmlMaxResults</a></li>
--   <li><a>lcmlProFileImageSize</a></li>
--   </ul>
liveChatMessagesList :: Text -> Text -> LiveChatMessagesList

-- | Lists live chat messages for a specific chat.
--   
--   <i>See:</i> <a>liveChatMessagesList</a> smart constructor.
data LiveChatMessagesList

-- | The part parameter specifies the liveChatComment resource parts that
--   the API response will include. Supported values are id and snippet.
lcmlPart :: Lens' LiveChatMessagesList Text

-- | The liveChatId parameter specifies the ID of the chat whose messages
--   will be returned.
lcmlLiveChatId :: Lens' LiveChatMessagesList Text

-- | The hl parameter instructs the API to retrieve localized resource
--   metadata for a specific application language that the YouTube website
--   supports. The parameter value must be a language code included in the
--   list returned by the i18nLanguages.list method. If localized resource
--   details are available in that language, the resource's
--   snippet.localized object will contain the localized values. However,
--   if localized details are not available, the snippet.localized object
--   will contain resource details in the resource's default language.
lcmlHl :: Lens' LiveChatMessagesList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken
--   property identify other pages that could be retrieved.
lcmlPageToken :: Lens' LiveChatMessagesList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of messages that
--   should be returned in the result set.
lcmlMaxResults :: Lens' LiveChatMessagesList Word32

-- | The profileImageSize parameter specifies the size of the user profile
--   pictures that should be returned in the result set. Default: 88.
lcmlProFileImageSize :: Lens' LiveChatMessagesList (Maybe Word32)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveChatMessages.List.LiveChatMessagesList
instance Data.Data.Data Network.Google.Resource.YouTube.LiveChatMessages.List.LiveChatMessagesList
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveChatMessages.List.LiveChatMessagesList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveChatMessages.List.LiveChatMessagesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveChatMessages.List.LiveChatMessagesList


-- | Adds a message to a live chat.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveChatMessages.insert</tt>.
module Network.Google.Resource.YouTube.LiveChatMessages.Insert

-- | A resource alias for <tt>youtube.liveChatMessages.insert</tt> method
--   which the <a>LiveChatMessagesInsert</a> request conforms to.
type LiveChatMessagesInsertResource = "youtube" :> ("v3" :> ("liveChat" :> ("messages" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] LiveChatMessage :> Post '[JSON] LiveChatMessage))))))

-- | Creates a value of <a>LiveChatMessagesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmiPart</a></li>
--   <li><a>lcmiPayload</a></li>
--   </ul>
liveChatMessagesInsert :: Text -> LiveChatMessage -> LiveChatMessagesInsert

-- | Adds a message to a live chat.
--   
--   <i>See:</i> <a>liveChatMessagesInsert</a> smart constructor.
data LiveChatMessagesInsert

-- | The part parameter serves two purposes. It identifies the properties
--   that the write operation will set as well as the properties that the
--   API response will include. Set the parameter value to snippet.
lcmiPart :: Lens' LiveChatMessagesInsert Text

-- | Multipart request metadata.
lcmiPayload :: Lens' LiveChatMessagesInsert LiveChatMessage
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveChatMessages.Insert.LiveChatMessagesInsert
instance Data.Data.Data Network.Google.Resource.YouTube.LiveChatMessages.Insert.LiveChatMessagesInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveChatMessages.Insert.LiveChatMessagesInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveChatMessages.Insert.LiveChatMessagesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveChatMessages.Insert.LiveChatMessagesInsert


-- | Deletes a chat message.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveChatMessages.delete</tt>.
module Network.Google.Resource.YouTube.LiveChatMessages.Delete

-- | A resource alias for <tt>youtube.liveChatMessages.delete</tt> method
--   which the <a>LiveChatMessagesDelete</a> request conforms to.
type LiveChatMessagesDeleteResource = "youtube" :> ("v3" :> ("liveChat" :> ("messages" :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>LiveChatMessagesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lId</a></li>
--   </ul>
liveChatMessagesDelete :: Text -> LiveChatMessagesDelete

-- | Deletes a chat message.
--   
--   <i>See:</i> <a>liveChatMessagesDelete</a> smart constructor.
data LiveChatMessagesDelete

-- | The id parameter specifies the YouTube chat message ID of the resource
--   that is being deleted.
lId :: Lens' LiveChatMessagesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveChatMessages.Delete.LiveChatMessagesDelete
instance Data.Data.Data Network.Google.Resource.YouTube.LiveChatMessages.Delete.LiveChatMessagesDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveChatMessages.Delete.LiveChatMessagesDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveChatMessages.Delete.LiveChatMessagesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveChatMessages.Delete.LiveChatMessagesDelete


-- | Adds a new ban to the chat.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveChatBans.insert</tt>.
module Network.Google.Resource.YouTube.LiveChatBans.Insert

-- | A resource alias for <tt>youtube.liveChatBans.insert</tt> method which
--   the <a>LiveChatBansInsert</a> request conforms to.
type LiveChatBansInsertResource = "youtube" :> ("v3" :> ("liveChat" :> ("bans" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] LiveChatBan :> Post '[JSON] LiveChatBan))))))

-- | Creates a value of <a>LiveChatBansInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcbiPart</a></li>
--   <li><a>lcbiPayload</a></li>
--   </ul>
liveChatBansInsert :: Text -> LiveChatBan -> LiveChatBansInsert

-- | Adds a new ban to the chat.
--   
--   <i>See:</i> <a>liveChatBansInsert</a> smart constructor.
data LiveChatBansInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response returns. Set the parameter value
--   to snippet.
lcbiPart :: Lens' LiveChatBansInsert Text

-- | Multipart request metadata.
lcbiPayload :: Lens' LiveChatBansInsert LiveChatBan
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveChatBans.Insert.LiveChatBansInsert
instance Data.Data.Data Network.Google.Resource.YouTube.LiveChatBans.Insert.LiveChatBansInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveChatBans.Insert.LiveChatBansInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveChatBans.Insert.LiveChatBansInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveChatBans.Insert.LiveChatBansInsert


-- | Removes a chat ban.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveChatBans.delete</tt>.
module Network.Google.Resource.YouTube.LiveChatBans.Delete

-- | A resource alias for <tt>youtube.liveChatBans.delete</tt> method which
--   the <a>LiveChatBansDelete</a> request conforms to.
type LiveChatBansDeleteResource = "youtube" :> ("v3" :> ("liveChat" :> ("bans" :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>LiveChatBansDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcbdId</a></li>
--   </ul>
liveChatBansDelete :: Text -> LiveChatBansDelete

-- | Removes a chat ban.
--   
--   <i>See:</i> <a>liveChatBansDelete</a> smart constructor.
data LiveChatBansDelete

-- | The id parameter identifies the chat ban to remove. The value uniquely
--   identifies both the ban and the chat.
lcbdId :: Lens' LiveChatBansDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveChatBans.Delete.LiveChatBansDelete
instance Data.Data.Data Network.Google.Resource.YouTube.LiveChatBans.Delete.LiveChatBansDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveChatBans.Delete.LiveChatBansDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveChatBans.Delete.LiveChatBansDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveChatBans.Delete.LiveChatBansDelete


-- | Updates a broadcast. For example, you could modify the broadcast
--   settings defined in the liveBroadcast resource's contentDetails
--   object.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveBroadcasts.update</tt>.
module Network.Google.Resource.YouTube.LiveBroadcasts.Update

-- | A resource alias for <tt>youtube.liveBroadcasts.update</tt> method
--   which the <a>LiveBroadcastsUpdate</a> request conforms to.
type LiveBroadcastsUpdateResource = "youtube" :> ("v3" :> ("liveBroadcasts" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] LiveBroadcast :> Put '[JSON] LiveBroadcast)))))))

-- | Creates a value of <a>LiveBroadcastsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbuPart</a></li>
--   <li><a>lbuPayload</a></li>
--   <li><a>lbuOnBehalfOfContentOwner</a></li>
--   <li><a>lbuOnBehalfOfContentOwnerChannel</a></li>
--   </ul>
liveBroadcastsUpdate :: Text -> LiveBroadcast -> LiveBroadcastsUpdate

-- | Updates a broadcast. For example, you could modify the broadcast
--   settings defined in the liveBroadcast resource's contentDetails
--   object.
--   
--   <i>See:</i> <a>liveBroadcastsUpdate</a> smart constructor.
data LiveBroadcastsUpdate

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. The part properties
--   that you can include in the parameter value are id, snippet,
--   contentDetails, and status. Note that this method will override the
--   existing values for all of the mutable properties that are contained
--   in any parts that the parameter value specifies. For example, a
--   broadcast's privacy status is defined in the status part. As such, if
--   your request is updating a private or unlisted broadcast, and the
--   request's part parameter value includes the status part, the
--   broadcast's privacy setting will be updated to whatever value the
--   request body specifies. If the request body does not specify a value,
--   the existing privacy setting will be removed and the broadcast will
--   revert to the default privacy setting.
lbuPart :: Lens' LiveBroadcastsUpdate Text

-- | Multipart request metadata.
lbuPayload :: Lens' LiveBroadcastsUpdate LiveBroadcast

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lbuOnBehalfOfContentOwner :: Lens' LiveBroadcastsUpdate (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lbuOnBehalfOfContentOwnerChannel :: Lens' LiveBroadcastsUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveBroadcasts.Update.LiveBroadcastsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.LiveBroadcasts.Update.LiveBroadcastsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveBroadcasts.Update.LiveBroadcastsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveBroadcasts.Update.LiveBroadcastsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveBroadcasts.Update.LiveBroadcastsUpdate


-- | Changes the status of a YouTube live broadcast and initiates any
--   processes associated with the new status. For example, when you
--   transition a broadcast's status to testing, YouTube starts to transmit
--   video to that broadcast's monitor stream. Before calling this method,
--   you should confirm that the value of the status.streamStatus property
--   for the stream bound to your broadcast is active.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveBroadcasts.transition</tt>.
module Network.Google.Resource.YouTube.LiveBroadcasts.Transition

-- | A resource alias for <tt>youtube.liveBroadcasts.transition</tt> method
--   which the <a>LiveBroadcastsTransition</a> request conforms to.
type LiveBroadcastsTransitionResource = "youtube" :> ("v3" :> ("liveBroadcasts" :> ("transition" :> (QueryParam "broadcastStatus" LiveBroadcastsTransitionBroadcastStatus :> (QueryParam "id" Text :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] LiveBroadcast)))))))))

-- | Creates a value of <a>LiveBroadcastsTransition</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbtPart</a></li>
--   <li><a>lbtBroadcastStatus</a></li>
--   <li><a>lbtOnBehalfOfContentOwner</a></li>
--   <li><a>lbtOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>lbtId</a></li>
--   </ul>
liveBroadcastsTransition :: Text -> LiveBroadcastsTransitionBroadcastStatus -> Text -> LiveBroadcastsTransition

-- | Changes the status of a YouTube live broadcast and initiates any
--   processes associated with the new status. For example, when you
--   transition a broadcast's status to testing, YouTube starts to transmit
--   video to that broadcast's monitor stream. Before calling this method,
--   you should confirm that the value of the status.streamStatus property
--   for the stream bound to your broadcast is active.
--   
--   <i>See:</i> <a>liveBroadcastsTransition</a> smart constructor.
data LiveBroadcastsTransition

-- | The part parameter specifies a comma-separated list of one or more
--   liveBroadcast resource properties that the API response will include.
--   The part names that you can include in the parameter value are id,
--   snippet, contentDetails, and status.
lbtPart :: Lens' LiveBroadcastsTransition Text

-- | The broadcastStatus parameter identifies the state to which the
--   broadcast is changing. Note that to transition a broadcast to either
--   the testing or live state, the status.streamStatus must be active for
--   the stream that the broadcast is bound to.
lbtBroadcastStatus :: Lens' LiveBroadcastsTransition LiveBroadcastsTransitionBroadcastStatus

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lbtOnBehalfOfContentOwner :: Lens' LiveBroadcastsTransition (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lbtOnBehalfOfContentOwnerChannel :: Lens' LiveBroadcastsTransition (Maybe Text)

-- | The id parameter specifies the unique ID of the broadcast that is
--   transitioning to another status.
lbtId :: Lens' LiveBroadcastsTransition Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveBroadcasts.Transition.LiveBroadcastsTransition
instance Data.Data.Data Network.Google.Resource.YouTube.LiveBroadcasts.Transition.LiveBroadcastsTransition
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveBroadcasts.Transition.LiveBroadcastsTransition
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveBroadcasts.Transition.LiveBroadcastsTransition
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveBroadcasts.Transition.LiveBroadcastsTransition


-- | Returns a list of YouTube broadcasts that match the API request
--   parameters.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveBroadcasts.list</tt>.
module Network.Google.Resource.YouTube.LiveBroadcasts.List

-- | A resource alias for <tt>youtube.liveBroadcasts.list</tt> method which
--   the <a>LiveBroadcastsList</a> request conforms to.
type LiveBroadcastsListResource = "youtube" :> ("v3" :> ("liveBroadcasts" :> (QueryParam "part" Text :> (QueryParam "mine" Bool :> (QueryParam "broadcastStatus" LiveBroadcastsListBroadcastStatus :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "broadcastType" LiveBroadcastsListBroadcastType :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "id" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] LiveBroadcastListResponse))))))))))))

-- | Creates a value of <a>LiveBroadcastsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lblPart</a></li>
--   <li><a>lblMine</a></li>
--   <li><a>lblBroadcastStatus</a></li>
--   <li><a>lblOnBehalfOfContentOwner</a></li>
--   <li><a>lblBroadcastType</a></li>
--   <li><a>lblOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>lblId</a></li>
--   <li><a>lblPageToken</a></li>
--   <li><a>lblMaxResults</a></li>
--   </ul>
liveBroadcastsList :: Text -> LiveBroadcastsList

-- | Returns a list of YouTube broadcasts that match the API request
--   parameters.
--   
--   <i>See:</i> <a>liveBroadcastsList</a> smart constructor.
data LiveBroadcastsList

-- | The part parameter specifies a comma-separated list of one or more
--   liveBroadcast resource properties that the API response will include.
--   The part names that you can include in the parameter value are id,
--   snippet, contentDetails, and status.
lblPart :: Lens' LiveBroadcastsList Text

-- | The mine parameter can be used to instruct the API to only return
--   broadcasts owned by the authenticated user. Set the parameter value to
--   true to only retrieve your own broadcasts.
lblMine :: Lens' LiveBroadcastsList (Maybe Bool)

-- | The broadcastStatus parameter filters the API response to only include
--   broadcasts with the specified status.
lblBroadcastStatus :: Lens' LiveBroadcastsList (Maybe LiveBroadcastsListBroadcastStatus)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lblOnBehalfOfContentOwner :: Lens' LiveBroadcastsList (Maybe Text)

-- | The broadcastType parameter filters the API response to only include
--   broadcasts with the specified type. This is only compatible with the
--   mine filter for now.
lblBroadcastType :: Lens' LiveBroadcastsList LiveBroadcastsListBroadcastType

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lblOnBehalfOfContentOwnerChannel :: Lens' LiveBroadcastsList (Maybe Text)

-- | The id parameter specifies a comma-separated list of YouTube broadcast
--   IDs that identify the broadcasts being retrieved. In a liveBroadcast
--   resource, the id property specifies the broadcast's ID.
lblId :: Lens' LiveBroadcastsList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
lblPageToken :: Lens' LiveBroadcastsList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
lblMaxResults :: Lens' LiveBroadcastsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveBroadcasts.List.LiveBroadcastsList
instance Data.Data.Data Network.Google.Resource.YouTube.LiveBroadcasts.List.LiveBroadcastsList
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveBroadcasts.List.LiveBroadcastsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveBroadcasts.List.LiveBroadcastsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveBroadcasts.List.LiveBroadcastsList


-- | Creates a broadcast.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveBroadcasts.insert</tt>.
module Network.Google.Resource.YouTube.LiveBroadcasts.Insert

-- | A resource alias for <tt>youtube.liveBroadcasts.insert</tt> method
--   which the <a>LiveBroadcastsInsert</a> request conforms to.
type LiveBroadcastsInsertResource = "youtube" :> ("v3" :> ("liveBroadcasts" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] LiveBroadcast :> Post '[JSON] LiveBroadcast)))))))

-- | Creates a value of <a>LiveBroadcastsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbiPart</a></li>
--   <li><a>lbiPayload</a></li>
--   <li><a>lbiOnBehalfOfContentOwner</a></li>
--   <li><a>lbiOnBehalfOfContentOwnerChannel</a></li>
--   </ul>
liveBroadcastsInsert :: Text -> LiveBroadcast -> LiveBroadcastsInsert

-- | Creates a broadcast.
--   
--   <i>See:</i> <a>liveBroadcastsInsert</a> smart constructor.
data LiveBroadcastsInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. The part properties
--   that you can include in the parameter value are id, snippet,
--   contentDetails, and status.
lbiPart :: Lens' LiveBroadcastsInsert Text

-- | Multipart request metadata.
lbiPayload :: Lens' LiveBroadcastsInsert LiveBroadcast

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lbiOnBehalfOfContentOwner :: Lens' LiveBroadcastsInsert (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lbiOnBehalfOfContentOwnerChannel :: Lens' LiveBroadcastsInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveBroadcasts.Insert.LiveBroadcastsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.LiveBroadcasts.Insert.LiveBroadcastsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveBroadcasts.Insert.LiveBroadcastsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveBroadcasts.Insert.LiveBroadcastsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveBroadcasts.Insert.LiveBroadcastsInsert


-- | Deletes a broadcast.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveBroadcasts.delete</tt>.
module Network.Google.Resource.YouTube.LiveBroadcasts.Delete

-- | A resource alias for <tt>youtube.liveBroadcasts.delete</tt> method
--   which the <a>LiveBroadcastsDelete</a> request conforms to.
type LiveBroadcastsDeleteResource = "youtube" :> ("v3" :> ("liveBroadcasts" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>LiveBroadcastsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbdOnBehalfOfContentOwner</a></li>
--   <li><a>lbdOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>lbdId</a></li>
--   </ul>
liveBroadcastsDelete :: Text -> LiveBroadcastsDelete

-- | Deletes a broadcast.
--   
--   <i>See:</i> <a>liveBroadcastsDelete</a> smart constructor.
data LiveBroadcastsDelete

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lbdOnBehalfOfContentOwner :: Lens' LiveBroadcastsDelete (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lbdOnBehalfOfContentOwnerChannel :: Lens' LiveBroadcastsDelete (Maybe Text)

-- | The id parameter specifies the YouTube live broadcast ID for the
--   resource that is being deleted.
lbdId :: Lens' LiveBroadcastsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveBroadcasts.Delete.LiveBroadcastsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.LiveBroadcasts.Delete.LiveBroadcastsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveBroadcasts.Delete.LiveBroadcastsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveBroadcasts.Delete.LiveBroadcastsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveBroadcasts.Delete.LiveBroadcastsDelete


-- | Controls the settings for a slate that can be displayed in the
--   broadcast stream.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveBroadcasts.control</tt>.
module Network.Google.Resource.YouTube.LiveBroadcasts.Control

-- | A resource alias for <tt>youtube.liveBroadcasts.control</tt> method
--   which the <a>LiveBroadcastsControl</a> request conforms to.
type LiveBroadcastsControlResource = "youtube" :> ("v3" :> ("liveBroadcasts" :> ("control" :> (QueryParam "id" Text :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "displaySlate" Bool :> (QueryParam "walltime" DateTime' :> (QueryParam "offsetTimeMs" (Textual Word64) :> (QueryParam "alt" AltJSON :> Post '[JSON] LiveBroadcast)))))))))))

-- | Creates a value of <a>LiveBroadcastsControl</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbcPart</a></li>
--   <li><a>lbcOnBehalfOfContentOwner</a></li>
--   <li><a>lbcOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>lbcId</a></li>
--   <li><a>lbcDisplaySlate</a></li>
--   <li><a>lbcWalltime</a></li>
--   <li><a>lbcOffSetTimeMs</a></li>
--   </ul>
liveBroadcastsControl :: Text -> Text -> LiveBroadcastsControl

-- | Controls the settings for a slate that can be displayed in the
--   broadcast stream.
--   
--   <i>See:</i> <a>liveBroadcastsControl</a> smart constructor.
data LiveBroadcastsControl

-- | The part parameter specifies a comma-separated list of one or more
--   liveBroadcast resource properties that the API response will include.
--   The part names that you can include in the parameter value are id,
--   snippet, contentDetails, and status.
lbcPart :: Lens' LiveBroadcastsControl Text

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lbcOnBehalfOfContentOwner :: Lens' LiveBroadcastsControl (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lbcOnBehalfOfContentOwnerChannel :: Lens' LiveBroadcastsControl (Maybe Text)

-- | The id parameter specifies the YouTube live broadcast ID that uniquely
--   identifies the broadcast in which the slate is being updated.
lbcId :: Lens' LiveBroadcastsControl Text

-- | The displaySlate parameter specifies whether the slate is being
--   enabled or disabled.
lbcDisplaySlate :: Lens' LiveBroadcastsControl (Maybe Bool)

-- | The walltime parameter specifies the wall clock time at which the
--   specified slate change will occur. The value is specified in ISO 8601
--   (YYYY-MM-DDThh:mm:ss.sssZ) format.
lbcWalltime :: Lens' LiveBroadcastsControl (Maybe UTCTime)

-- | The offsetTimeMs parameter specifies a positive time offset when the
--   specified slate change will occur. The value is measured in
--   milliseconds from the beginning of the broadcast's monitor stream,
--   which is the time that the testing phase for the broadcast began. Even
--   though it is specified in milliseconds, the value is actually an
--   approximation, and YouTube completes the requested action as closely
--   as possible to that time. If you do not specify a value for this
--   parameter, then YouTube performs the action as soon as possible. See
--   the Getting started guide for more details. Important: You should only
--   specify a value for this parameter if your broadcast stream is
--   delayed.
lbcOffSetTimeMs :: Lens' LiveBroadcastsControl (Maybe Word64)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveBroadcasts.Control.LiveBroadcastsControl
instance Data.Data.Data Network.Google.Resource.YouTube.LiveBroadcasts.Control.LiveBroadcastsControl
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveBroadcasts.Control.LiveBroadcastsControl
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveBroadcasts.Control.LiveBroadcastsControl
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveBroadcasts.Control.LiveBroadcastsControl


-- | Binds a YouTube broadcast to a stream or removes an existing binding
--   between a broadcast and a stream. A broadcast can only be bound to one
--   video stream, though a video stream may be bound to more than one
--   broadcast.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.liveBroadcasts.bind</tt>.
module Network.Google.Resource.YouTube.LiveBroadcasts.Bind

-- | A resource alias for <tt>youtube.liveBroadcasts.bind</tt> method which
--   the <a>LiveBroadcastsBind</a> request conforms to.
type LiveBroadcastsBindResource = "youtube" :> ("v3" :> ("liveBroadcasts" :> ("bind" :> (QueryParam "id" Text :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "streamId" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] LiveBroadcast)))))))))

-- | Creates a value of <a>LiveBroadcastsBind</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbbPart</a></li>
--   <li><a>lbbOnBehalfOfContentOwner</a></li>
--   <li><a>lbbOnBehalfOfContentOwnerChannel</a></li>
--   <li><a>lbbId</a></li>
--   <li><a>lbbStreamId</a></li>
--   </ul>
liveBroadcastsBind :: Text -> Text -> LiveBroadcastsBind

-- | Binds a YouTube broadcast to a stream or removes an existing binding
--   between a broadcast and a stream. A broadcast can only be bound to one
--   video stream, though a video stream may be bound to more than one
--   broadcast.
--   
--   <i>See:</i> <a>liveBroadcastsBind</a> smart constructor.
data LiveBroadcastsBind

-- | The part parameter specifies a comma-separated list of one or more
--   liveBroadcast resource properties that the API response will include.
--   The part names that you can include in the parameter value are id,
--   snippet, contentDetails, and status.
lbbPart :: Lens' LiveBroadcastsBind Text

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
lbbOnBehalfOfContentOwner :: Lens' LiveBroadcastsBind (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
lbbOnBehalfOfContentOwnerChannel :: Lens' LiveBroadcastsBind (Maybe Text)

-- | The id parameter specifies the unique ID of the broadcast that is
--   being bound to a video stream.
lbbId :: Lens' LiveBroadcastsBind Text

-- | The streamId parameter specifies the unique ID of the video stream
--   that is being bound to a broadcast. If this parameter is omitted, the
--   API will remove any existing binding between the broadcast and a video
--   stream.
lbbStreamId :: Lens' LiveBroadcastsBind (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.LiveBroadcasts.Bind.LiveBroadcastsBind
instance Data.Data.Data Network.Google.Resource.YouTube.LiveBroadcasts.Bind.LiveBroadcastsBind
instance GHC.Show.Show Network.Google.Resource.YouTube.LiveBroadcasts.Bind.LiveBroadcastsBind
instance GHC.Classes.Eq Network.Google.Resource.YouTube.LiveBroadcasts.Bind.LiveBroadcastsBind
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.LiveBroadcasts.Bind.LiveBroadcastsBind


-- | Returns a list of content regions that the YouTube website supports.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.i18nRegions.list</tt>.
module Network.Google.Resource.YouTube.I18nRegions.List

-- | A resource alias for <tt>youtube.i18nRegions.list</tt> method which
--   the <a>I18nRegionsList</a> request conforms to.
type I18nRegionsListResource = "youtube" :> ("v3" :> ("i18nRegions" :> (QueryParam "part" Text :> (QueryParam "hl" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] I18nRegionListResponse)))))

-- | Creates a value of <a>I18nRegionsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irlPart</a></li>
--   <li><a>irlHl</a></li>
--   </ul>
i18nRegionsList :: Text -> I18nRegionsList

-- | Returns a list of content regions that the YouTube website supports.
--   
--   <i>See:</i> <a>i18nRegionsList</a> smart constructor.
data I18nRegionsList

-- | The part parameter specifies the i18nRegion resource properties that
--   the API response will include. Set the parameter value to snippet.
irlPart :: Lens' I18nRegionsList Text

-- | The hl parameter specifies the language that should be used for text
--   values in the API response.
irlHl :: Lens' I18nRegionsList Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.I18nRegions.List.I18nRegionsList
instance Data.Data.Data Network.Google.Resource.YouTube.I18nRegions.List.I18nRegionsList
instance GHC.Show.Show Network.Google.Resource.YouTube.I18nRegions.List.I18nRegionsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.I18nRegions.List.I18nRegionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.I18nRegions.List.I18nRegionsList


-- | Returns a list of application languages that the YouTube website
--   supports.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.i18nLanguages.list</tt>.
module Network.Google.Resource.YouTube.I18nLanguages.List

-- | A resource alias for <tt>youtube.i18nLanguages.list</tt> method which
--   the <a>I18nLanguagesList</a> request conforms to.
type I18nLanguagesListResource = "youtube" :> ("v3" :> ("i18nLanguages" :> (QueryParam "part" Text :> (QueryParam "hl" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] I18nLanguageListResponse)))))

-- | Creates a value of <a>I18nLanguagesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>illPart</a></li>
--   <li><a>illHl</a></li>
--   </ul>
i18nLanguagesList :: Text -> I18nLanguagesList

-- | Returns a list of application languages that the YouTube website
--   supports.
--   
--   <i>See:</i> <a>i18nLanguagesList</a> smart constructor.
data I18nLanguagesList

-- | The part parameter specifies the i18nLanguage resource properties that
--   the API response will include. Set the parameter value to snippet.
illPart :: Lens' I18nLanguagesList Text

-- | The hl parameter specifies the language that should be used for text
--   values in the API response.
illHl :: Lens' I18nLanguagesList Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.I18nLanguages.List.I18nLanguagesList
instance Data.Data.Data Network.Google.Resource.YouTube.I18nLanguages.List.I18nLanguagesList
instance GHC.Show.Show Network.Google.Resource.YouTube.I18nLanguages.List.I18nLanguagesList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.I18nLanguages.List.I18nLanguagesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.I18nLanguages.List.I18nLanguagesList


-- | Returns a list of categories that can be associated with YouTube
--   channels.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.guideCategories.list</tt>.
module Network.Google.Resource.YouTube.GuideCategories.List

-- | A resource alias for <tt>youtube.guideCategories.list</tt> method
--   which the <a>GuideCategoriesList</a> request conforms to.
type GuideCategoriesListResource = "youtube" :> ("v3" :> ("guideCategories" :> (QueryParam "part" Text :> (QueryParam "regionCode" Text :> (QueryParam "hl" Text :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] GuideCategoryListResponse)))))))

-- | Creates a value of <a>GuideCategoriesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gclPart</a></li>
--   <li><a>gclRegionCode</a></li>
--   <li><a>gclHl</a></li>
--   <li><a>gclId</a></li>
--   </ul>
guideCategoriesList :: Text -> GuideCategoriesList

-- | Returns a list of categories that can be associated with YouTube
--   channels.
--   
--   <i>See:</i> <a>guideCategoriesList</a> smart constructor.
data GuideCategoriesList

-- | The part parameter specifies the guideCategory resource properties
--   that the API response will include. Set the parameter value to
--   snippet.
gclPart :: Lens' GuideCategoriesList Text

-- | The regionCode parameter instructs the API to return the list of guide
--   categories available in the specified country. The parameter value is
--   an ISO 3166-1 alpha-2 country code.
gclRegionCode :: Lens' GuideCategoriesList (Maybe Text)

-- | The hl parameter specifies the language that will be used for text
--   values in the API response.
gclHl :: Lens' GuideCategoriesList Text

-- | The id parameter specifies a comma-separated list of the YouTube
--   channel category ID(s) for the resource(s) that are being retrieved.
--   In a guideCategory resource, the id property specifies the YouTube
--   channel category ID.
gclId :: Lens' GuideCategoriesList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.GuideCategories.List.GuideCategoriesList
instance Data.Data.Data Network.Google.Resource.YouTube.GuideCategories.List.GuideCategoriesList
instance GHC.Show.Show Network.Google.Resource.YouTube.GuideCategories.List.GuideCategoriesList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.GuideCategories.List.GuideCategoriesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.GuideCategories.List.GuideCategoriesList


-- | Lists fan funding events for a channel.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.fanFundingEvents.list</tt>.
module Network.Google.Resource.YouTube.FanFundingEvents.List

-- | A resource alias for <tt>youtube.fanFundingEvents.list</tt> method
--   which the <a>FanFundingEventsList</a> request conforms to.
type FanFundingEventsListResource = "youtube" :> ("v3" :> ("fanFundingEvents" :> (QueryParam "part" Text :> (QueryParam "hl" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] FanFundingEventListResponse)))))))

-- | Creates a value of <a>FanFundingEventsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ffelPart</a></li>
--   <li><a>ffelHl</a></li>
--   <li><a>ffelPageToken</a></li>
--   <li><a>ffelMaxResults</a></li>
--   </ul>
fanFundingEventsList :: Text -> FanFundingEventsList

-- | Lists fan funding events for a channel.
--   
--   <i>See:</i> <a>fanFundingEventsList</a> smart constructor.
data FanFundingEventsList

-- | The part parameter specifies the fanFundingEvent resource parts that
--   the API response will include. Supported values are id and snippet.
ffelPart :: Lens' FanFundingEventsList Text

-- | The hl parameter instructs the API to retrieve localized resource
--   metadata for a specific application language that the YouTube website
--   supports. The parameter value must be a language code included in the
--   list returned by the i18nLanguages.list method. If localized resource
--   details are available in that language, the resource's
--   snippet.localized object will contain the localized values. However,
--   if localized details are not available, the snippet.localized object
--   will contain resource details in the resource's default language.
ffelHl :: Lens' FanFundingEventsList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
ffelPageToken :: Lens' FanFundingEventsList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
ffelMaxResults :: Lens' FanFundingEventsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.FanFundingEvents.List.FanFundingEventsList
instance Data.Data.Data Network.Google.Resource.YouTube.FanFundingEvents.List.FanFundingEventsList
instance GHC.Show.Show Network.Google.Resource.YouTube.FanFundingEvents.List.FanFundingEventsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.FanFundingEvents.List.FanFundingEventsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.FanFundingEvents.List.FanFundingEventsList


-- | Modifies a comment.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.comments.update</tt>.
module Network.Google.Resource.YouTube.Comments.Update

-- | A resource alias for <tt>youtube.comments.update</tt> method which the
--   <a>CommentsUpdate</a> request conforms to.
type CommentsUpdateResource = "youtube" :> ("v3" :> ("comments" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Comment :> Put '[JSON] Comment)))))

-- | Creates a value of <a>CommentsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cuPart</a></li>
--   <li><a>cuPayload</a></li>
--   </ul>
commentsUpdate :: Text -> Comment -> CommentsUpdate

-- | Modifies a comment.
--   
--   <i>See:</i> <a>commentsUpdate</a> smart constructor.
data CommentsUpdate

-- | The part parameter identifies the properties that the API response
--   will include. You must at least include the snippet part in the
--   parameter value since that part contains all of the properties that
--   the API request can update.
cuPart :: Lens' CommentsUpdate Text

-- | Multipart request metadata.
cuPayload :: Lens' CommentsUpdate Comment
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Comments.Update.CommentsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.Comments.Update.CommentsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.Comments.Update.CommentsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Comments.Update.CommentsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Comments.Update.CommentsUpdate


-- | Sets the moderation status of one or more comments. The API request
--   must be authorized by the owner of the channel or video associated
--   with the comments.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.comments.setModerationStatus</tt>.
module Network.Google.Resource.YouTube.Comments.SetModerationStatus

-- | A resource alias for <tt>youtube.comments.setModerationStatus</tt>
--   method which the <a>CommentsSetModerationStatus</a> request conforms
--   to.
type CommentsSetModerationStatusResource = "youtube" :> ("v3" :> ("comments" :> ("setModerationStatus" :> (QueryParam "id" Text :> (QueryParam "moderationStatus" CommentsSetModerationStatusModerationStatus :> (QueryParam "banAuthor" Bool :> (QueryParam "alt" AltJSON :> Post '[JSON] ())))))))

-- | Creates a value of <a>CommentsSetModerationStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csmsBanAuthor</a></li>
--   <li><a>csmsModerationStatus</a></li>
--   <li><a>csmsId</a></li>
--   </ul>
commentsSetModerationStatus :: CommentsSetModerationStatusModerationStatus -> Text -> CommentsSetModerationStatus

-- | Sets the moderation status of one or more comments. The API request
--   must be authorized by the owner of the channel or video associated
--   with the comments.
--   
--   <i>See:</i> <a>commentsSetModerationStatus</a> smart constructor.
data CommentsSetModerationStatus

-- | The banAuthor parameter lets you indicate that you want to
--   automatically reject any additional comments written by the comment's
--   author. Set the parameter value to true to ban the author. Note: This
--   parameter is only valid if the moderationStatus parameter is also set
--   to rejected.
csmsBanAuthor :: Lens' CommentsSetModerationStatus Bool

-- | Identifies the new moderation status of the specified comments.
csmsModerationStatus :: Lens' CommentsSetModerationStatus CommentsSetModerationStatusModerationStatus

-- | The id parameter specifies a comma-separated list of IDs that identify
--   the comments for which you are updating the moderation status.
csmsId :: Lens' CommentsSetModerationStatus Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Comments.SetModerationStatus.CommentsSetModerationStatus
instance Data.Data.Data Network.Google.Resource.YouTube.Comments.SetModerationStatus.CommentsSetModerationStatus
instance GHC.Show.Show Network.Google.Resource.YouTube.Comments.SetModerationStatus.CommentsSetModerationStatus
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Comments.SetModerationStatus.CommentsSetModerationStatus
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Comments.SetModerationStatus.CommentsSetModerationStatus


-- | Expresses the caller's opinion that one or more comments should be
--   flagged as spam.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.comments.markAsSpam</tt>.
module Network.Google.Resource.YouTube.Comments.MarkAsSpam

-- | A resource alias for <tt>youtube.comments.markAsSpam</tt> method which
--   the <a>CommentsMarkAsSpam</a> request conforms to.
type CommentsMarkAsSpamResource = "youtube" :> ("v3" :> ("comments" :> ("markAsSpam" :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] ())))))

-- | Creates a value of <a>CommentsMarkAsSpam</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cmasId</a></li>
--   </ul>
commentsMarkAsSpam :: Text -> CommentsMarkAsSpam

-- | Expresses the caller's opinion that one or more comments should be
--   flagged as spam.
--   
--   <i>See:</i> <a>commentsMarkAsSpam</a> smart constructor.
data CommentsMarkAsSpam

-- | The id parameter specifies a comma-separated list of IDs of comments
--   that the caller believes should be classified as spam.
cmasId :: Lens' CommentsMarkAsSpam Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Comments.MarkAsSpam.CommentsMarkAsSpam
instance Data.Data.Data Network.Google.Resource.YouTube.Comments.MarkAsSpam.CommentsMarkAsSpam
instance GHC.Show.Show Network.Google.Resource.YouTube.Comments.MarkAsSpam.CommentsMarkAsSpam
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Comments.MarkAsSpam.CommentsMarkAsSpam
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Comments.MarkAsSpam.CommentsMarkAsSpam


-- | Returns a list of comments that match the API request parameters.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.comments.list</tt>.
module Network.Google.Resource.YouTube.Comments.List

-- | A resource alias for <tt>youtube.comments.list</tt> method which the
--   <a>CommentsList</a> request conforms to.
type CommentsListResource = "youtube" :> ("v3" :> ("comments" :> (QueryParam "part" Text :> (QueryParam "id" Text :> (QueryParam "pageToken" Text :> (QueryParam "textFormat" CommentsListTextFormat :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "parentId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] CommentListResponse)))))))))

-- | Creates a value of <a>CommentsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cllPart</a></li>
--   <li><a>cllId</a></li>
--   <li><a>cllPageToken</a></li>
--   <li><a>cllTextFormat</a></li>
--   <li><a>cllMaxResults</a></li>
--   <li><a>cllParentId</a></li>
--   </ul>
commentsList :: Text -> CommentsList

-- | Returns a list of comments that match the API request parameters.
--   
--   <i>See:</i> <a>commentsList</a> smart constructor.
data CommentsList

-- | The part parameter specifies a comma-separated list of one or more
--   comment resource properties that the API response will include.
cllPart :: Lens' CommentsList Text

-- | The id parameter specifies a comma-separated list of comment IDs for
--   the resources that are being retrieved. In a comment resource, the id
--   property specifies the comment's ID.
cllId :: Lens' CommentsList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken
--   property identifies the next page of the result that can be retrieved.
--   Note: This parameter is not supported for use in conjunction with the
--   id parameter.
cllPageToken :: Lens' CommentsList (Maybe Text)

-- | This parameter indicates whether the API should return comments
--   formatted as HTML or as plain text.
cllTextFormat :: Lens' CommentsList CommentsListTextFormat

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set. Note: This parameter is not
--   supported for use in conjunction with the id parameter.
cllMaxResults :: Lens' CommentsList Word32

-- | The parentId parameter specifies the ID of the comment for which
--   replies should be retrieved. Note: YouTube currently supports replies
--   only for top-level comments. However, replies to replies may be
--   supported in the future.
cllParentId :: Lens' CommentsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Comments.List.CommentsList
instance Data.Data.Data Network.Google.Resource.YouTube.Comments.List.CommentsList
instance GHC.Show.Show Network.Google.Resource.YouTube.Comments.List.CommentsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Comments.List.CommentsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Comments.List.CommentsList


-- | Creates a reply to an existing comment. Note: To create a top-level
--   comment, use the commentThreads.insert method.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.comments.insert</tt>.
module Network.Google.Resource.YouTube.Comments.Insert

-- | A resource alias for <tt>youtube.comments.insert</tt> method which the
--   <a>CommentsInsert</a> request conforms to.
type CommentsInsertResource = "youtube" :> ("v3" :> ("comments" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Comment :> Post '[JSON] Comment)))))

-- | Creates a value of <a>CommentsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>comPart</a></li>
--   <li><a>comPayload</a></li>
--   </ul>
commentsInsert :: Text -> Comment -> CommentsInsert

-- | Creates a reply to an existing comment. Note: To create a top-level
--   comment, use the commentThreads.insert method.
--   
--   <i>See:</i> <a>commentsInsert</a> smart constructor.
data CommentsInsert

-- | The part parameter identifies the properties that the API response
--   will include. Set the parameter value to snippet. The snippet part has
--   a quota cost of 2 units.
comPart :: Lens' CommentsInsert Text

-- | Multipart request metadata.
comPayload :: Lens' CommentsInsert Comment
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Comments.Insert.CommentsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.Comments.Insert.CommentsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.Comments.Insert.CommentsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Comments.Insert.CommentsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Comments.Insert.CommentsInsert


-- | Deletes a comment.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.comments.delete</tt>.
module Network.Google.Resource.YouTube.Comments.Delete

-- | A resource alias for <tt>youtube.comments.delete</tt> method which the
--   <a>CommentsDelete</a> request conforms to.
type CommentsDeleteResource = "youtube" :> ("v3" :> ("comments" :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))

-- | Creates a value of <a>CommentsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdId</a></li>
--   </ul>
commentsDelete :: Text -> CommentsDelete

-- | Deletes a comment.
--   
--   <i>See:</i> <a>commentsDelete</a> smart constructor.
data CommentsDelete

-- | The id parameter specifies the comment ID for the resource that is
--   being deleted.
cdId :: Lens' CommentsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Comments.Delete.CommentsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.Comments.Delete.CommentsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.Comments.Delete.CommentsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Comments.Delete.CommentsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Comments.Delete.CommentsDelete


-- | Modifies the top-level comment in a comment thread.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.commentThreads.update</tt>.
module Network.Google.Resource.YouTube.CommentThreads.Update

-- | A resource alias for <tt>youtube.commentThreads.update</tt> method
--   which the <a>CommentThreadsUpdate</a> request conforms to.
type CommentThreadsUpdateResource = "youtube" :> ("v3" :> ("commentThreads" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CommentThread :> Put '[JSON] CommentThread)))))

-- | Creates a value of <a>CommentThreadsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctuPart</a></li>
--   <li><a>ctuPayload</a></li>
--   </ul>
commentThreadsUpdate :: Text -> CommentThread -> CommentThreadsUpdate

-- | Modifies the top-level comment in a comment thread.
--   
--   <i>See:</i> <a>commentThreadsUpdate</a> smart constructor.
data CommentThreadsUpdate

-- | The part parameter specifies a comma-separated list of commentThread
--   resource properties that the API response will include. You must at
--   least include the snippet part in the parameter value since that part
--   contains all of the properties that the API request can update.
ctuPart :: Lens' CommentThreadsUpdate Text

-- | Multipart request metadata.
ctuPayload :: Lens' CommentThreadsUpdate CommentThread
instance GHC.Generics.Generic Network.Google.Resource.YouTube.CommentThreads.Update.CommentThreadsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.CommentThreads.Update.CommentThreadsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.CommentThreads.Update.CommentThreadsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.CommentThreads.Update.CommentThreadsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.CommentThreads.Update.CommentThreadsUpdate


-- | Returns a list of comment threads that match the API request
--   parameters.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.commentThreads.list</tt>.
module Network.Google.Resource.YouTube.CommentThreads.List

-- | A resource alias for <tt>youtube.commentThreads.list</tt> method which
--   the <a>CommentThreadsList</a> request conforms to.
type CommentThreadsListResource = "youtube" :> ("v3" :> ("commentThreads" :> (QueryParam "part" Text :> (QueryParam "moderationStatus" CommentThreadsListModerationStatus :> (QueryParam "searchTerms" Text :> (QueryParam "channelId" Text :> (QueryParam "allThreadsRelatedToChannelId" Text :> (QueryParam "videoId" Text :> (QueryParam "id" Text :> (QueryParam "pageToken" Text :> (QueryParam "order" CommentThreadsListOrder :> (QueryParam "textFormat" CommentThreadsListTextFormat :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] CommentThreadListResponse))))))))))))))

-- | Creates a value of <a>CommentThreadsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctlPart</a></li>
--   <li><a>ctlModerationStatus</a></li>
--   <li><a>ctlSearchTerms</a></li>
--   <li><a>ctlChannelId</a></li>
--   <li><a>ctlAllThreadsRelatedToChannelId</a></li>
--   <li><a>ctlVideoId</a></li>
--   <li><a>ctlId</a></li>
--   <li><a>ctlPageToken</a></li>
--   <li><a>ctlOrder</a></li>
--   <li><a>ctlTextFormat</a></li>
--   <li><a>ctlMaxResults</a></li>
--   </ul>
commentThreadsList :: Text -> CommentThreadsList

-- | Returns a list of comment threads that match the API request
--   parameters.
--   
--   <i>See:</i> <a>commentThreadsList</a> smart constructor.
data CommentThreadsList

-- | The part parameter specifies a comma-separated list of one or more
--   commentThread resource properties that the API response will include.
ctlPart :: Lens' CommentThreadsList Text

-- | Set this parameter to limit the returned comment threads to a
--   particular moderation state. Note: This parameter is not supported for
--   use in conjunction with the id parameter.
ctlModerationStatus :: Lens' CommentThreadsList CommentThreadsListModerationStatus

-- | The searchTerms parameter instructs the API to limit the API response
--   to only contain comments that contain the specified search terms.
--   Note: This parameter is not supported for use in conjunction with the
--   id parameter.
ctlSearchTerms :: Lens' CommentThreadsList (Maybe Text)

-- | The channelId parameter instructs the API to return comment threads
--   containing comments about the specified channel. (The response will
--   not include comments left on videos that the channel uploaded.)
ctlChannelId :: Lens' CommentThreadsList (Maybe Text)

-- | The allThreadsRelatedToChannelId parameter instructs the API to return
--   all comment threads associated with the specified channel. The
--   response can include comments about the channel or about the channel's
--   videos.
ctlAllThreadsRelatedToChannelId :: Lens' CommentThreadsList (Maybe Text)

-- | The videoId parameter instructs the API to return comment threads
--   associated with the specified video ID.
ctlVideoId :: Lens' CommentThreadsList (Maybe Text)

-- | The id parameter specifies a comma-separated list of comment thread
--   IDs for the resources that should be retrieved.
ctlId :: Lens' CommentThreadsList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken
--   property identifies the next page of the result that can be retrieved.
--   Note: This parameter is not supported for use in conjunction with the
--   id parameter.
ctlPageToken :: Lens' CommentThreadsList (Maybe Text)

-- | The order parameter specifies the order in which the API response
--   should list comment threads. Valid values are: - time - Comment
--   threads are ordered by time. This is the default behavior. - relevance
--   - Comment threads are ordered by relevance.Note: This parameter is not
--   supported for use in conjunction with the id parameter.
ctlOrder :: Lens' CommentThreadsList CommentThreadsListOrder

-- | Set this parameter's value to html or plainText to instruct the API to
--   return the comments left by users in html formatted or in plain text.
ctlTextFormat :: Lens' CommentThreadsList CommentThreadsListTextFormat

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set. Note: This parameter is not
--   supported for use in conjunction with the id parameter.
ctlMaxResults :: Lens' CommentThreadsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.CommentThreads.List.CommentThreadsList
instance Data.Data.Data Network.Google.Resource.YouTube.CommentThreads.List.CommentThreadsList
instance GHC.Show.Show Network.Google.Resource.YouTube.CommentThreads.List.CommentThreadsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.CommentThreads.List.CommentThreadsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.CommentThreads.List.CommentThreadsList


-- | Creates a new top-level comment. To add a reply to an existing
--   comment, use the comments.insert method instead.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.commentThreads.insert</tt>.
module Network.Google.Resource.YouTube.CommentThreads.Insert

-- | A resource alias for <tt>youtube.commentThreads.insert</tt> method
--   which the <a>CommentThreadsInsert</a> request conforms to.
type CommentThreadsInsertResource = "youtube" :> ("v3" :> ("commentThreads" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CommentThread :> Post '[JSON] CommentThread)))))

-- | Creates a value of <a>CommentThreadsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctiPart</a></li>
--   <li><a>ctiPayload</a></li>
--   </ul>
commentThreadsInsert :: Text -> CommentThread -> CommentThreadsInsert

-- | Creates a new top-level comment. To add a reply to an existing
--   comment, use the comments.insert method instead.
--   
--   <i>See:</i> <a>commentThreadsInsert</a> smart constructor.
data CommentThreadsInsert

-- | The part parameter identifies the properties that the API response
--   will include. Set the parameter value to snippet. The snippet part has
--   a quota cost of 2 units.
ctiPart :: Lens' CommentThreadsInsert Text

-- | Multipart request metadata.
ctiPayload :: Lens' CommentThreadsInsert CommentThread
instance GHC.Generics.Generic Network.Google.Resource.YouTube.CommentThreads.Insert.CommentThreadsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.CommentThreads.Insert.CommentThreadsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.CommentThreads.Insert.CommentThreadsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.CommentThreads.Insert.CommentThreadsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.CommentThreads.Insert.CommentThreadsInsert


-- | Updates a channel's metadata. Note that this method currently only
--   supports updates to the channel resource's brandingSettings and
--   invideoPromotion objects and their child properties.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.channels.update</tt>.
module Network.Google.Resource.YouTube.Channels.Update

-- | A resource alias for <tt>youtube.channels.update</tt> method which the
--   <a>ChannelsUpdate</a> request conforms to.
type ChannelsUpdateResource = "youtube" :> ("v3" :> ("channels" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Put '[JSON] Channel))))))

-- | Creates a value of <a>ChannelsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>chaPart</a></li>
--   <li><a>chaPayload</a></li>
--   <li><a>chaOnBehalfOfContentOwner</a></li>
--   </ul>
channelsUpdate :: Text -> Channel -> ChannelsUpdate

-- | Updates a channel's metadata. Note that this method currently only
--   supports updates to the channel resource's brandingSettings and
--   invideoPromotion objects and their child properties.
--   
--   <i>See:</i> <a>channelsUpdate</a> smart constructor.
data ChannelsUpdate

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. The API currently
--   only allows the parameter value to be set to either brandingSettings
--   or invideoPromotion. (You cannot update both of those parts with a
--   single request.) Note that this method overrides the existing values
--   for all of the mutable properties that are contained in any parts that
--   the parameter value specifies.
chaPart :: Lens' ChannelsUpdate Text

-- | Multipart request metadata.
chaPayload :: Lens' ChannelsUpdate Channel

-- | The onBehalfOfContentOwner parameter indicates that the authenticated
--   user is acting on behalf of the content owner specified in the
--   parameter value. This parameter is intended for YouTube content
--   partners that own and manage many different YouTube channels. It
--   allows content owners to authenticate once and get access to all their
--   video and channel data, without having to provide authentication
--   credentials for each individual channel. The actual CMS account that
--   the user authenticates with needs to be linked to the specified
--   YouTube content owner.
chaOnBehalfOfContentOwner :: Lens' ChannelsUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Channels.Update.ChannelsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.Channels.Update.ChannelsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.Channels.Update.ChannelsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Channels.Update.ChannelsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Channels.Update.ChannelsUpdate


-- | Returns a collection of zero or more channel resources that match the
--   request criteria.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.channels.list</tt>.
module Network.Google.Resource.YouTube.Channels.List

-- | A resource alias for <tt>youtube.channels.list</tt> method which the
--   <a>ChannelsList</a> request conforms to.
type ChannelsListResource = "youtube" :> ("v3" :> ("channels" :> (QueryParam "part" Text :> (QueryParam "mine" Bool :> (QueryParam "forUsername" Text :> (QueryParam "hl" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "categoryId" Text :> (QueryParam "id" Text :> (QueryParam "mySubscribers" Bool :> (QueryParam "pageToken" Text :> (QueryParam "managedByMe" Bool :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ChannelListResponse))))))))))))))

-- | Creates a value of <a>ChannelsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cPart</a></li>
--   <li><a>cMine</a></li>
--   <li><a>cForUsername</a></li>
--   <li><a>cHl</a></li>
--   <li><a>cOnBehalfOfContentOwner</a></li>
--   <li><a>cCategoryId</a></li>
--   <li><a>cId</a></li>
--   <li><a>cMySubscribers</a></li>
--   <li><a>cPageToken</a></li>
--   <li><a>cManagedByMe</a></li>
--   <li><a>cMaxResults</a></li>
--   </ul>
channelsList :: Text -> ChannelsList

-- | Returns a collection of zero or more channel resources that match the
--   request criteria.
--   
--   <i>See:</i> <a>channelsList</a> smart constructor.
data ChannelsList

-- | The part parameter specifies a comma-separated list of one or more
--   channel resource properties that the API response will include. If the
--   parameter identifies a property that contains child properties, the
--   child properties will be included in the response. For example, in a
--   channel resource, the contentDetails property contains other
--   properties, such as the uploads properties. As such, if you set
--   part=contentDetails, the API response will also contain all of those
--   nested properties.
cPart :: Lens' ChannelsList Text

-- | Set this parameter's value to true to instruct the API to only return
--   channels owned by the authenticated user.
cMine :: Lens' ChannelsList (Maybe Bool)

-- | The forUsername parameter specifies a YouTube username, thereby
--   requesting the channel associated with that username.
cForUsername :: Lens' ChannelsList (Maybe Text)

-- | The hl parameter should be used for filter out the properties that are
--   not in the given language. Used for the brandingSettings part.
cHl :: Lens' ChannelsList (Maybe Text)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
cOnBehalfOfContentOwner :: Lens' ChannelsList (Maybe Text)

-- | The categoryId parameter specifies a YouTube guide category, thereby
--   requesting YouTube channels associated with that category.
cCategoryId :: Lens' ChannelsList (Maybe Text)

-- | The id parameter specifies a comma-separated list of the YouTube
--   channel ID(s) for the resource(s) that are being retrieved. In a
--   channel resource, the id property specifies the channel's YouTube
--   channel ID.
cId :: Lens' ChannelsList (Maybe Text)

-- | Use the subscriptions.list method and its mySubscribers parameter to
--   retrieve a list of subscribers to the authenticated user's channel.
cMySubscribers :: Lens' ChannelsList (Maybe Bool)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
cPageToken :: Lens' ChannelsList (Maybe Text)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. Set this parameter's value to true to instruct the API to
--   only return channels managed by the content owner that the
--   onBehalfOfContentOwner parameter specifies. The user must be
--   authenticated as a CMS account linked to the specified content owner
--   and onBehalfOfContentOwner must be provided.
cManagedByMe :: Lens' ChannelsList (Maybe Bool)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
cMaxResults :: Lens' ChannelsList Word32
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Channels.List.ChannelsList
instance Data.Data.Data Network.Google.Resource.YouTube.Channels.List.ChannelsList
instance GHC.Show.Show Network.Google.Resource.YouTube.Channels.List.ChannelsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Channels.List.ChannelsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Channels.List.ChannelsList


-- | Update a channelSection.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.channelSections.update</tt>.
module Network.Google.Resource.YouTube.ChannelSections.Update

-- | A resource alias for <tt>youtube.channelSections.update</tt> method
--   which the <a>ChannelSectionsUpdate</a> request conforms to.
type ChannelSectionsUpdateResource = "youtube" :> ("v3" :> ("channelSections" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ChannelSection :> Put '[JSON] ChannelSection))))))

-- | Creates a value of <a>ChannelSectionsUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csuPart</a></li>
--   <li><a>csuPayload</a></li>
--   <li><a>csuOnBehalfOfContentOwner</a></li>
--   </ul>
channelSectionsUpdate :: Text -> ChannelSection -> ChannelSectionsUpdate

-- | Update a channelSection.
--   
--   <i>See:</i> <a>channelSectionsUpdate</a> smart constructor.
data ChannelSectionsUpdate

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. The part names that
--   you can include in the parameter value are snippet and contentDetails.
csuPart :: Lens' ChannelSectionsUpdate Text

-- | Multipart request metadata.
csuPayload :: Lens' ChannelSectionsUpdate ChannelSection

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
csuOnBehalfOfContentOwner :: Lens' ChannelSectionsUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.ChannelSections.Update.ChannelSectionsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.ChannelSections.Update.ChannelSectionsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.ChannelSections.Update.ChannelSectionsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.ChannelSections.Update.ChannelSectionsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.ChannelSections.Update.ChannelSectionsUpdate


-- | Returns channelSection resources that match the API request criteria.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.channelSections.list</tt>.
module Network.Google.Resource.YouTube.ChannelSections.List

-- | A resource alias for <tt>youtube.channelSections.list</tt> method
--   which the <a>ChannelSectionsList</a> request conforms to.
type ChannelSectionsListResource = "youtube" :> ("v3" :> ("channelSections" :> (QueryParam "part" Text :> (QueryParam "mine" Bool :> (QueryParam "channelId" Text :> (QueryParam "hl" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ChannelSectionListResponse)))))))))

-- | Creates a value of <a>ChannelSectionsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cslPart</a></li>
--   <li><a>cslMine</a></li>
--   <li><a>cslChannelId</a></li>
--   <li><a>cslHl</a></li>
--   <li><a>cslOnBehalfOfContentOwner</a></li>
--   <li><a>cslId</a></li>
--   </ul>
channelSectionsList :: Text -> ChannelSectionsList

-- | Returns channelSection resources that match the API request criteria.
--   
--   <i>See:</i> <a>channelSectionsList</a> smart constructor.
data ChannelSectionsList

-- | The part parameter specifies a comma-separated list of one or more
--   channelSection resource properties that the API response will include.
--   The part names that you can include in the parameter value are id,
--   snippet, and contentDetails. If the parameter identifies a property
--   that contains child properties, the child properties will be included
--   in the response. For example, in a channelSection resource, the
--   snippet property contains other properties, such as a display title
--   for the channelSection. If you set part=snippet, the API response will
--   also contain all of those nested properties.
cslPart :: Lens' ChannelSectionsList Text

-- | Set this parameter's value to true to retrieve a feed of the
--   authenticated user's channelSections.
cslMine :: Lens' ChannelSectionsList (Maybe Bool)

-- | The channelId parameter specifies a YouTube channel ID. The API will
--   only return that channel's channelSections.
cslChannelId :: Lens' ChannelSectionsList (Maybe Text)

-- | The hl parameter indicates that the snippet.localized property values
--   in the returned channelSection resources should be in the specified
--   language if localized values for that language are available. For
--   example, if the API request specifies hl=de, the snippet.localized
--   properties in the API response will contain German titles if German
--   titles are available. Channel owners can provide localized channel
--   section titles using either the channelSections.insert or
--   channelSections.update method.
cslHl :: Lens' ChannelSectionsList (Maybe Text)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
cslOnBehalfOfContentOwner :: Lens' ChannelSectionsList (Maybe Text)

-- | The id parameter specifies a comma-separated list of the YouTube
--   channelSection ID(s) for the resource(s) that are being retrieved. In
--   a channelSection resource, the id property specifies the YouTube
--   channelSection ID.
cslId :: Lens' ChannelSectionsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.ChannelSections.List.ChannelSectionsList
instance Data.Data.Data Network.Google.Resource.YouTube.ChannelSections.List.ChannelSectionsList
instance GHC.Show.Show Network.Google.Resource.YouTube.ChannelSections.List.ChannelSectionsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.ChannelSections.List.ChannelSectionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.ChannelSections.List.ChannelSectionsList


-- | Adds a channelSection for the authenticated user's channel.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.channelSections.insert</tt>.
module Network.Google.Resource.YouTube.ChannelSections.Insert

-- | A resource alias for <tt>youtube.channelSections.insert</tt> method
--   which the <a>ChannelSectionsInsert</a> request conforms to.
type ChannelSectionsInsertResource = "youtube" :> ("v3" :> ("channelSections" :> (QueryParam "part" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "onBehalfOfContentOwnerChannel" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ChannelSection :> Post '[JSON] ChannelSection)))))))

-- | Creates a value of <a>ChannelSectionsInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csiPart</a></li>
--   <li><a>csiPayload</a></li>
--   <li><a>csiOnBehalfOfContentOwner</a></li>
--   <li><a>csiOnBehalfOfContentOwnerChannel</a></li>
--   </ul>
channelSectionsInsert :: Text -> ChannelSection -> ChannelSectionsInsert

-- | Adds a channelSection for the authenticated user's channel.
--   
--   <i>See:</i> <a>channelSectionsInsert</a> smart constructor.
data ChannelSectionsInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. The part names that
--   you can include in the parameter value are snippet and contentDetails.
csiPart :: Lens' ChannelSectionsInsert Text

-- | Multipart request metadata.
csiPayload :: Lens' ChannelSectionsInsert ChannelSection

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
csiOnBehalfOfContentOwner :: Lens' ChannelSectionsInsert (Maybe Text)

-- | This parameter can only be used in a properly authorized request.
--   Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwnerChannel parameter specifies the
--   YouTube channel ID of the channel to which a video is being added.
--   This parameter is required when a request specifies a value for the
--   onBehalfOfContentOwner parameter, and it can only be used in
--   conjunction with that parameter. In addition, the request must be
--   authorized using a CMS account that is linked to the content owner
--   that the onBehalfOfContentOwner parameter specifies. Finally, the
--   channel that the onBehalfOfContentOwnerChannel parameter value
--   specifies must be linked to the content owner that the
--   onBehalfOfContentOwner parameter specifies. This parameter is intended
--   for YouTube content partners that own and manage many different
--   YouTube channels. It allows content owners to authenticate once and
--   perform actions on behalf of the channel specified in the parameter
--   value, without having to provide authentication credentials for each
--   separate channel.
csiOnBehalfOfContentOwnerChannel :: Lens' ChannelSectionsInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.ChannelSections.Insert.ChannelSectionsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.ChannelSections.Insert.ChannelSectionsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.ChannelSections.Insert.ChannelSectionsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.ChannelSections.Insert.ChannelSectionsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.ChannelSections.Insert.ChannelSectionsInsert


-- | Deletes a channelSection.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.channelSections.delete</tt>.
module Network.Google.Resource.YouTube.ChannelSections.Delete

-- | A resource alias for <tt>youtube.channelSections.delete</tt> method
--   which the <a>ChannelSectionsDelete</a> request conforms to.
type ChannelSectionsDeleteResource = "youtube" :> ("v3" :> ("channelSections" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>ChannelSectionsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csdOnBehalfOfContentOwner</a></li>
--   <li><a>csdId</a></li>
--   </ul>
channelSectionsDelete :: Text -> ChannelSectionsDelete

-- | Deletes a channelSection.
--   
--   <i>See:</i> <a>channelSectionsDelete</a> smart constructor.
data ChannelSectionsDelete

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
csdOnBehalfOfContentOwner :: Lens' ChannelSectionsDelete (Maybe Text)

-- | The id parameter specifies the YouTube channelSection ID for the
--   resource that is being deleted. In a channelSection resource, the id
--   property specifies the YouTube channelSection ID.
csdId :: Lens' ChannelSectionsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.ChannelSections.Delete.ChannelSectionsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.ChannelSections.Delete.ChannelSectionsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.ChannelSections.Delete.ChannelSectionsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.ChannelSections.Delete.ChannelSectionsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.ChannelSections.Delete.ChannelSectionsDelete


-- | Uploads a channel banner image to YouTube. This method represents the
--   first two steps in a three-step process to update the banner image for
--   a channel: - Call the channelBanners.insert method to upload the
--   binary image data to YouTube. The image must have a 16:9 aspect ratio
--   and be at least 2120x1192 pixels. - Extract the url property's value
--   from the response that the API returns for step 1. - Call the
--   channels.update method to update the channel's branding settings. Set
--   the brandingSettings.image.bannerExternalUrl property's value to the
--   URL obtained in step 2.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.channelBanners.insert</tt>.
module Network.Google.Resource.YouTube.ChannelBanners.Insert

-- | A resource alias for <tt>youtube.channelBanners.insert</tt> method
--   which the <a>ChannelBannersInsert</a> request conforms to.
type ChannelBannersInsertResource = ("youtube" :> ("v3" :> ("channelBanners" :> ("insert" :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ChannelBannerResource :> Post '[JSON] ChannelBannerResource))))))) :<|> ("upload" :> ("youtube" :> ("v3" :> ("channelBanners" :> ("insert" :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] ChannelBannerResource :> Post '[JSON] ChannelBannerResource)))))))))

-- | Creates a value of <a>ChannelBannersInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbiPayload</a></li>
--   <li><a>cbiOnBehalfOfContentOwner</a></li>
--   </ul>
channelBannersInsert :: ChannelBannerResource -> ChannelBannersInsert

-- | Uploads a channel banner image to YouTube. This method represents the
--   first two steps in a three-step process to update the banner image for
--   a channel: - Call the channelBanners.insert method to upload the
--   binary image data to YouTube. The image must have a 16:9 aspect ratio
--   and be at least 2120x1192 pixels. - Extract the url property's value
--   from the response that the API returns for step 1. - Call the
--   channels.update method to update the channel's branding settings. Set
--   the brandingSettings.image.bannerExternalUrl property's value to the
--   URL obtained in step 2.
--   
--   <i>See:</i> <a>channelBannersInsert</a> smart constructor.
data ChannelBannersInsert

-- | Multipart request metadata.
cbiPayload :: Lens' ChannelBannersInsert ChannelBannerResource

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The CMS account that the user authenticates
--   with must be linked to the specified YouTube content owner.
cbiOnBehalfOfContentOwner :: Lens' ChannelBannersInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.ChannelBanners.Insert.ChannelBannersInsert
instance Data.Data.Data Network.Google.Resource.YouTube.ChannelBanners.Insert.ChannelBannersInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.ChannelBanners.Insert.ChannelBannersInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.ChannelBanners.Insert.ChannelBannersInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.ChannelBanners.Insert.ChannelBannersInsert
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.YouTube.ChannelBanners.Insert.ChannelBannersInsert)


-- | Updates a caption track. When updating a caption track, you can change
--   the track's draft status, upload a new caption file for the track, or
--   both.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.captions.update</tt>.
module Network.Google.Resource.YouTube.Captions.Update

-- | A resource alias for <tt>youtube.captions.update</tt> method which the
--   <a>CaptionsUpdate</a> request conforms to.
type CaptionsUpdateResource = ("youtube" :> ("v3" :> ("captions" :> (QueryParam "part" Text :> (QueryParam "onBehalfOf" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "sync" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Caption :> Put '[JSON] Caption))))))))) :<|> ("upload" :> ("youtube" :> ("v3" :> ("captions" :> (QueryParam "part" Text :> (QueryParam "onBehalfOf" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "sync" Bool :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Caption :> Put '[JSON] Caption)))))))))))

-- | Creates a value of <a>CaptionsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>capOnBehalfOf</a></li>
--   <li><a>capPart</a></li>
--   <li><a>capPayload</a></li>
--   <li><a>capOnBehalfOfContentOwner</a></li>
--   <li><a>capSync</a></li>
--   </ul>
captionsUpdate :: Text -> Caption -> CaptionsUpdate

-- | Updates a caption track. When updating a caption track, you can change
--   the track's draft status, upload a new caption file for the track, or
--   both.
--   
--   <i>See:</i> <a>captionsUpdate</a> smart constructor.
data CaptionsUpdate

-- | ID of the Google+ Page for the channel that the request is be on
--   behalf of
capOnBehalfOf :: Lens' CaptionsUpdate (Maybe Text)

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include. Set the property
--   value to snippet if you are updating the track's draft status.
--   Otherwise, set the property value to id.
capPart :: Lens' CaptionsUpdate Text

-- | Multipart request metadata.
capPayload :: Lens' CaptionsUpdate Caption

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The actual CMS account that the user
--   authenticates with must be linked to the specified YouTube content
--   owner.
capOnBehalfOfContentOwner :: Lens' CaptionsUpdate (Maybe Text)

-- | Note: The API server only processes the parameter value if the request
--   contains an updated caption file. The sync parameter indicates whether
--   YouTube should automatically synchronize the caption file with the
--   audio track of the video. If you set the value to true, YouTube will
--   automatically synchronize the caption track with the audio track.
capSync :: Lens' CaptionsUpdate (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Captions.Update.CaptionsUpdate
instance Data.Data.Data Network.Google.Resource.YouTube.Captions.Update.CaptionsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTube.Captions.Update.CaptionsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Captions.Update.CaptionsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Captions.Update.CaptionsUpdate
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.YouTube.Captions.Update.CaptionsUpdate)


-- | Returns a list of caption tracks that are associated with a specified
--   video. Note that the API response does not contain the actual captions
--   and that the captions.download method provides the ability to retrieve
--   a caption track.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.captions.list</tt>.
module Network.Google.Resource.YouTube.Captions.List

-- | A resource alias for <tt>youtube.captions.list</tt> method which the
--   <a>CaptionsList</a> request conforms to.
type CaptionsListResource = "youtube" :> ("v3" :> ("captions" :> (QueryParam "part" Text :> (QueryParam "videoId" Text :> (QueryParam "onBehalfOf" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "id" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] CaptionListResponse))))))))

-- | Creates a value of <a>CaptionsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clOnBehalfOf</a></li>
--   <li><a>clPart</a></li>
--   <li><a>clOnBehalfOfContentOwner</a></li>
--   <li><a>clVideoId</a></li>
--   <li><a>clId</a></li>
--   </ul>
captionsList :: Text -> Text -> CaptionsList

-- | Returns a list of caption tracks that are associated with a specified
--   video. Note that the API response does not contain the actual captions
--   and that the captions.download method provides the ability to retrieve
--   a caption track.
--   
--   <i>See:</i> <a>captionsList</a> smart constructor.
data CaptionsList

-- | ID of the Google+ Page for the channel that the request is on behalf
--   of.
clOnBehalfOf :: Lens' CaptionsList (Maybe Text)

-- | The part parameter specifies a comma-separated list of one or more
--   caption resource parts that the API response will include. The part
--   names that you can include in the parameter value are id and snippet.
clPart :: Lens' CaptionsList Text

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The actual CMS account that the user
--   authenticates with must be linked to the specified YouTube content
--   owner.
clOnBehalfOfContentOwner :: Lens' CaptionsList (Maybe Text)

-- | The videoId parameter specifies the YouTube video ID of the video for
--   which the API should return caption tracks.
clVideoId :: Lens' CaptionsList Text

-- | The id parameter specifies a comma-separated list of IDs that identify
--   the caption resources that should be retrieved. Each ID must identify
--   a caption track associated with the specified video.
clId :: Lens' CaptionsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Captions.List.CaptionsList
instance Data.Data.Data Network.Google.Resource.YouTube.Captions.List.CaptionsList
instance GHC.Show.Show Network.Google.Resource.YouTube.Captions.List.CaptionsList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Captions.List.CaptionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Captions.List.CaptionsList


-- | Uploads a caption track.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.captions.insert</tt>.
module Network.Google.Resource.YouTube.Captions.Insert

-- | A resource alias for <tt>youtube.captions.insert</tt> method which the
--   <a>CaptionsInsert</a> request conforms to.
type CaptionsInsertResource = ("youtube" :> ("v3" :> ("captions" :> (QueryParam "part" Text :> (QueryParam "onBehalfOf" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "sync" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Caption :> Post '[JSON] Caption))))))))) :<|> ("upload" :> ("youtube" :> ("v3" :> ("captions" :> (QueryParam "part" Text :> (QueryParam "onBehalfOf" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "sync" Bool :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Caption :> Post '[JSON] Caption)))))))))))

-- | Creates a value of <a>CaptionsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ciOnBehalfOf</a></li>
--   <li><a>ciPart</a></li>
--   <li><a>ciPayload</a></li>
--   <li><a>ciOnBehalfOfContentOwner</a></li>
--   <li><a>ciSync</a></li>
--   </ul>
captionsInsert :: Text -> Caption -> CaptionsInsert

-- | Uploads a caption track.
--   
--   <i>See:</i> <a>captionsInsert</a> smart constructor.
data CaptionsInsert

-- | ID of the Google+ Page for the channel that the request is be on
--   behalf of
ciOnBehalfOf :: Lens' CaptionsInsert (Maybe Text)

-- | The part parameter specifies the caption resource parts that the API
--   response will include. Set the parameter value to snippet.
ciPart :: Lens' CaptionsInsert Text

-- | Multipart request metadata.
ciPayload :: Lens' CaptionsInsert Caption

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The actual CMS account that the user
--   authenticates with must be linked to the specified YouTube content
--   owner.
ciOnBehalfOfContentOwner :: Lens' CaptionsInsert (Maybe Text)

-- | The sync parameter indicates whether YouTube should automatically
--   synchronize the caption file with the audio track of the video. If you
--   set the value to true, YouTube will disregard any time codes that are
--   in the uploaded caption file and generate new time codes for the
--   captions. You should set the sync parameter to true if you are
--   uploading a transcript, which has no time codes, or if you suspect the
--   time codes in your file are incorrect and want YouTube to try to fix
--   them.
ciSync :: Lens' CaptionsInsert (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Captions.Insert.CaptionsInsert
instance Data.Data.Data Network.Google.Resource.YouTube.Captions.Insert.CaptionsInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.Captions.Insert.CaptionsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Captions.Insert.CaptionsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Captions.Insert.CaptionsInsert
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.YouTube.Captions.Insert.CaptionsInsert)


-- | Downloads a caption track. The caption track is returned in its
--   original format unless the request specifies a value for the tfmt
--   parameter and in its original language unless the request specifies a
--   value for the tlang parameter.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.captions.download</tt>.
module Network.Google.Resource.YouTube.Captions.Download

-- | A resource alias for <tt>youtube.captions.download</tt> method which
--   the <a>CaptionsDownload</a> request conforms to.
type CaptionsDownloadResource = ("youtube" :> ("v3" :> ("captions" :> (Capture "id" Text :> (QueryParam "onBehalfOf" Text :> (QueryParam "tlang" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "tfmt" CaptionsDownloadTfmt :> (QueryParam "alt" AltJSON :> Get '[JSON] ()))))))))) :<|> ("youtube" :> ("v3" :> ("captions" :> (Capture "id" Text :> (QueryParam "onBehalfOf" Text :> (QueryParam "tlang" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "tfmt" CaptionsDownloadTfmt :> (QueryParam "alt" AltMedia :> Get '[OctetStream] Stream)))))))))

-- | Creates a value of <a>CaptionsDownload</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>capaOnBehalfOf</a></li>
--   <li><a>capaTlang</a></li>
--   <li><a>capaOnBehalfOfContentOwner</a></li>
--   <li><a>capaId</a></li>
--   <li><a>capaTfmt</a></li>
--   </ul>
captionsDownload :: Text -> CaptionsDownload

-- | Downloads a caption track. The caption track is returned in its
--   original format unless the request specifies a value for the tfmt
--   parameter and in its original language unless the request specifies a
--   value for the tlang parameter.
--   
--   <i>See:</i> <a>captionsDownload</a> smart constructor.
data CaptionsDownload

-- | ID of the Google+ Page for the channel that the request is be on
--   behalf of
capaOnBehalfOf :: Lens' CaptionsDownload (Maybe Text)

-- | The tlang parameter specifies that the API response should return a
--   translation of the specified caption track. The parameter value is an
--   ISO 639-1 two-letter language code that identifies the desired caption
--   language. The translation is generated by using machine translation,
--   such as Google Translate.
capaTlang :: Lens' CaptionsDownload (Maybe Text)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The actual CMS account that the user
--   authenticates with must be linked to the specified YouTube content
--   owner.
capaOnBehalfOfContentOwner :: Lens' CaptionsDownload (Maybe Text)

-- | The id parameter identifies the caption track that is being retrieved.
--   The value is a caption track ID as identified by the id property in a
--   caption resource.
capaId :: Lens' CaptionsDownload Text

-- | The tfmt parameter specifies that the caption track should be returned
--   in a specific format. If the parameter is not included in the request,
--   the track is returned in its original format.
capaTfmt :: Lens' CaptionsDownload (Maybe CaptionsDownloadTfmt)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Captions.Download.CaptionsDownload
instance Data.Data.Data Network.Google.Resource.YouTube.Captions.Download.CaptionsDownload
instance GHC.Show.Show Network.Google.Resource.YouTube.Captions.Download.CaptionsDownload
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Captions.Download.CaptionsDownload
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Captions.Download.CaptionsDownload
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaDownload Network.Google.Resource.YouTube.Captions.Download.CaptionsDownload)


-- | Deletes a specified caption track.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.captions.delete</tt>.
module Network.Google.Resource.YouTube.Captions.Delete

-- | A resource alias for <tt>youtube.captions.delete</tt> method which the
--   <a>CaptionsDelete</a> request conforms to.
type CaptionsDeleteResource = "youtube" :> ("v3" :> ("captions" :> (QueryParam "id" Text :> (QueryParam "onBehalfOf" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>CaptionsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cddOnBehalfOf</a></li>
--   <li><a>cddOnBehalfOfContentOwner</a></li>
--   <li><a>cddId</a></li>
--   </ul>
captionsDelete :: Text -> CaptionsDelete

-- | Deletes a specified caption track.
--   
--   <i>See:</i> <a>captionsDelete</a> smart constructor.
data CaptionsDelete

-- | ID of the Google+ Page for the channel that the request is be on
--   behalf of
cddOnBehalfOf :: Lens' CaptionsDelete (Maybe Text)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The onBehalfOfContentOwner parameter indicates that the
--   request's authorization credentials identify a YouTube CMS user who is
--   acting on behalf of the content owner specified in the parameter
--   value. This parameter is intended for YouTube content partners that
--   own and manage many different YouTube channels. It allows content
--   owners to authenticate once and get access to all their video and
--   channel data, without having to provide authentication credentials for
--   each individual channel. The actual CMS account that the user
--   authenticates with must be linked to the specified YouTube content
--   owner.
cddOnBehalfOfContentOwner :: Lens' CaptionsDelete (Maybe Text)

-- | The id parameter identifies the caption track that is being deleted.
--   The value is a caption track ID as identified by the id property in a
--   caption resource.
cddId :: Lens' CaptionsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Captions.Delete.CaptionsDelete
instance Data.Data.Data Network.Google.Resource.YouTube.Captions.Delete.CaptionsDelete
instance GHC.Show.Show Network.Google.Resource.YouTube.Captions.Delete.CaptionsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Captions.Delete.CaptionsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Captions.Delete.CaptionsDelete


-- | Returns a list of channel activity events that match the request
--   criteria. For example, you can retrieve events associated with a
--   particular channel, events associated with the user's subscriptions
--   and Google+ friends, or the YouTube home page feed, which is
--   customized for each user.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.activities.list</tt>.
module Network.Google.Resource.YouTube.Activities.List

-- | A resource alias for <tt>youtube.activities.list</tt> method which the
--   <a>ActivitiesList</a> request conforms to.
type ActivitiesListResource = "youtube" :> ("v3" :> ("activities" :> (QueryParam "part" Text :> (QueryParam "publishedAfter" DateTime' :> (QueryParam "home" Bool :> (QueryParam "mine" Bool :> (QueryParam "regionCode" Text :> (QueryParam "channelId" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "publishedBefore" DateTime' :> (QueryParam "alt" AltJSON :> Get '[JSON] ActivityListResponse))))))))))))

-- | Creates a value of <a>ActivitiesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alPublishedAfter</a></li>
--   <li><a>alPart</a></li>
--   <li><a>alHome</a></li>
--   <li><a>alMine</a></li>
--   <li><a>alRegionCode</a></li>
--   <li><a>alChannelId</a></li>
--   <li><a>alPageToken</a></li>
--   <li><a>alMaxResults</a></li>
--   <li><a>alPublishedBefore</a></li>
--   </ul>
activitiesList :: Text -> ActivitiesList

-- | Returns a list of channel activity events that match the request
--   criteria. For example, you can retrieve events associated with a
--   particular channel, events associated with the user's subscriptions
--   and Google+ friends, or the YouTube home page feed, which is
--   customized for each user.
--   
--   <i>See:</i> <a>activitiesList</a> smart constructor.
data ActivitiesList

-- | The publishedAfter parameter specifies the earliest date and time that
--   an activity could have occurred for that activity to be included in
--   the API response. If the parameter value specifies a day, but not a
--   time, then any activities that occurred that day will be included in
--   the result set. The value is specified in ISO 8601
--   (YYYY-MM-DDThh:mm:ss.sZ) format.
alPublishedAfter :: Lens' ActivitiesList (Maybe UTCTime)

-- | The part parameter specifies a comma-separated list of one or more
--   activity resource properties that the API response will include. If
--   the parameter identifies a property that contains child properties,
--   the child properties will be included in the response. For example, in
--   an activity resource, the snippet property contains other properties
--   that identify the type of activity, a display title for the activity,
--   and so forth. If you set part=snippet, the API response will also
--   contain all of those nested properties.
alPart :: Lens' ActivitiesList Text

-- | Set this parameter's value to true to retrieve the activity feed that
--   displays on the YouTube home page for the currently authenticated
--   user.
alHome :: Lens' ActivitiesList (Maybe Bool)

-- | Set this parameter's value to true to retrieve a feed of the
--   authenticated user's activities.
alMine :: Lens' ActivitiesList (Maybe Bool)

-- | The regionCode parameter instructs the API to return results for the
--   specified country. The parameter value is an ISO 3166-1 alpha-2
--   country code. YouTube uses this value when the authorized user's
--   previous activity on YouTube does not provide enough information to
--   generate the activity feed.
alRegionCode :: Lens' ActivitiesList (Maybe Text)

-- | The channelId parameter specifies a unique YouTube channel ID. The API
--   will then return a list of that channel's activities.
alChannelId :: Lens' ActivitiesList (Maybe Text)

-- | The pageToken parameter identifies a specific page in the result set
--   that should be returned. In an API response, the nextPageToken and
--   prevPageToken properties identify other pages that could be retrieved.
alPageToken :: Lens' ActivitiesList (Maybe Text)

-- | The maxResults parameter specifies the maximum number of items that
--   should be returned in the result set.
alMaxResults :: Lens' ActivitiesList Word32

-- | The publishedBefore parameter specifies the date and time before which
--   an activity must have occurred for that activity to be included in the
--   API response. If the parameter value specifies a day, but not a time,
--   then any activities that occurred that day will be excluded from the
--   result set. The value is specified in ISO 8601
--   (YYYY-MM-DDThh:mm:ss.sZ) format.
alPublishedBefore :: Lens' ActivitiesList (Maybe UTCTime)
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Activities.List.ActivitiesList
instance Data.Data.Data Network.Google.Resource.YouTube.Activities.List.ActivitiesList
instance GHC.Show.Show Network.Google.Resource.YouTube.Activities.List.ActivitiesList
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Activities.List.ActivitiesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Activities.List.ActivitiesList


-- | Posts a bulletin for a specific channel. (The user submitting the
--   request must be authorized to act on the channel's behalf.) Note: Even
--   though an activity resource can contain information about actions like
--   a user rating a video or marking a video as a favorite, you need to
--   use other API methods to generate those activity resources. For
--   example, you would use the API's videos.rate() method to rate a video
--   and the playlistItems.insert() method to mark a video as a favorite.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a> for
--   <tt>youtube.activities.insert</tt>.
module Network.Google.Resource.YouTube.Activities.Insert

-- | A resource alias for <tt>youtube.activities.insert</tt> method which
--   the <a>ActivitiesInsert</a> request conforms to.
type ActivitiesInsertResource = "youtube" :> ("v3" :> ("activities" :> (QueryParam "part" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Activity :> Post '[JSON] Activity)))))

-- | Creates a value of <a>ActivitiesInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aiPart</a></li>
--   <li><a>aiPayload</a></li>
--   </ul>
activitiesInsert :: Text -> Activity -> ActivitiesInsert

-- | Posts a bulletin for a specific channel. (The user submitting the
--   request must be authorized to act on the channel's behalf.) Note: Even
--   though an activity resource can contain information about actions like
--   a user rating a video or marking a video as a favorite, you need to
--   use other API methods to generate those activity resources. For
--   example, you would use the API's videos.rate() method to rate a video
--   and the playlistItems.insert() method to mark a video as a favorite.
--   
--   <i>See:</i> <a>activitiesInsert</a> smart constructor.
data ActivitiesInsert

-- | The part parameter serves two purposes in this operation. It
--   identifies the properties that the write operation will set as well as
--   the properties that the API response will include.
aiPart :: Lens' ActivitiesInsert Text

-- | Multipart request metadata.
aiPayload :: Lens' ActivitiesInsert Activity
instance GHC.Generics.Generic Network.Google.Resource.YouTube.Activities.Insert.ActivitiesInsert
instance Data.Data.Data Network.Google.Resource.YouTube.Activities.Insert.ActivitiesInsert
instance GHC.Show.Show Network.Google.Resource.YouTube.Activities.Insert.ActivitiesInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTube.Activities.Insert.ActivitiesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTube.Activities.Insert.ActivitiesInsert


-- | Supports core YouTube features, such as uploading videos, creating and
--   managing playlists, searching for content, and much more.
--   
--   <i>See:</i> <a>YouTube Data API Reference</a>
module Network.Google.YouTube

-- | Default request referring to version <tt>v3</tt> of the YouTube Data
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
youTubeService :: ServiceConfig

-- | Manage your YouTube videos
youTubeUploadScope :: Proxy '["https://www.googleapis.com/auth/youtube.upload"]

-- | Manage your YouTube account
youTubeScope :: Proxy '["https://www.googleapis.com/auth/youtube"]

-- | View and manage your assets and associated content on YouTube
youTubePartnerScope :: Proxy '["https://www.googleapis.com/auth/youtubepartner"]

-- | Manage your YouTube account
youTubeForceSslScope :: Proxy '["https://www.googleapis.com/auth/youtube.force-ssl"]

-- | View your YouTube account
youTubeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/youtube.readonly"]

-- | View private information of your YouTube channel relevant during the
--   audit process with a YouTube partner
youTubePartnerChannelAuditScope :: Proxy '["https://www.googleapis.com/auth/youtubepartner-channel-audit"]

-- | Represents the entirety of the methods and resources available for the
--   YouTube Data API service.
type YouTubeAPI = ChannelBannersInsertResource :<|> (GuideCategoriesListResource :<|> (SponsorsListResource :<|> (FanFundingEventsListResource :<|> (I18nLanguagesListResource :<|> (LiveBroadcastsControlResource :<|> (LiveBroadcastsTransitionResource :<|> (LiveBroadcastsInsertResource :<|> (LiveBroadcastsListResource :<|> (LiveBroadcastsBindResource :<|> (LiveBroadcastsDeleteResource :<|> (LiveBroadcastsUpdateResource :<|> (LiveChatModeratorsInsertResource :<|> (LiveChatModeratorsListResource :<|> (LiveChatModeratorsDeleteResource :<|> (VideosInsertResource :<|> (VideosListResource :<|> (VideosRateResource :<|> (VideosReportAbuseResource :<|> (VideosDeleteResource :<|> (VideosUpdateResource :<|> (VideosGetRatingResource :<|> (CaptionsInsertResource :<|> (CaptionsListResource :<|> (CaptionsDownloadResource :<|> (CaptionsDeleteResource :<|> (CaptionsUpdateResource :<|> (I18nRegionsListResource :<|> (VideoAbuseReportReasonsListResource :<|> (LiveChatMessagesInsertResource :<|> (LiveChatMessagesListResource :<|> (LiveChatMessagesDeleteResource :<|> (ChannelsListResource :<|> (ChannelsUpdateResource :<|> (ActivitiesInsertResource :<|> (ActivitiesListResource :<|> (WatermarksSetResource :<|> (WatermarksUnSetResource :<|> (CommentThreadsInsertResource :<|> (CommentThreadsListResource :<|> (CommentThreadsUpdateResource :<|> (VideoCategoriesListResource :<|> (ThumbnailsSetResource :<|> (PlayListsInsertResource :<|> (PlayListsListResource :<|> (PlayListsDeleteResource :<|> (PlayListsUpdateResource :<|> (PlayListItemsInsertResource :<|> (PlayListItemsListResource :<|> (PlayListItemsDeleteResource :<|> (PlayListItemsUpdateResource :<|> (CommentsInsertResource :<|> (CommentsSetModerationStatusResource :<|> (CommentsListResource :<|> (CommentsMarkAsSpamResource :<|> (CommentsDeleteResource :<|> (CommentsUpdateResource :<|> (SubscriptionsInsertResource :<|> (SubscriptionsListResource :<|> (SubscriptionsDeleteResource :<|> (LiveChatBansInsertResource :<|> (LiveChatBansDeleteResource :<|> (SearchListResource :<|> (ChannelSectionsInsertResource :<|> (ChannelSectionsListResource :<|> (ChannelSectionsDeleteResource :<|> (ChannelSectionsUpdateResource :<|> (LiveStreamsInsertResource :<|> (LiveStreamsListResource :<|> (LiveStreamsDeleteResource :<|> LiveStreamsUpdateResource)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
data LiveChatMessageAuthorDetails

-- | Creates a value of <a>LiveChatMessageAuthorDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmadIsVerified</a></li>
--   <li><a>lcmadIsChatOwner</a></li>
--   <li><a>lcmadChannelId</a></li>
--   <li><a>lcmadProFileImageURL</a></li>
--   <li><a>lcmadIsChatModerator</a></li>
--   <li><a>lcmadDisplayName</a></li>
--   <li><a>lcmadIsChatSponsor</a></li>
--   <li><a>lcmadChannelURL</a></li>
--   </ul>
liveChatMessageAuthorDetails :: LiveChatMessageAuthorDetails

-- | Whether the author's identity has been verified by YouTube.
lcmadIsVerified :: Lens' LiveChatMessageAuthorDetails (Maybe Bool)

-- | Whether the author is the owner of the live chat.
lcmadIsChatOwner :: Lens' LiveChatMessageAuthorDetails (Maybe Bool)

-- | The YouTube channel ID.
lcmadChannelId :: Lens' LiveChatMessageAuthorDetails (Maybe Text)

-- | The channels's avatar URL.
lcmadProFileImageURL :: Lens' LiveChatMessageAuthorDetails (Maybe Text)

-- | Whether the author is a moderator of the live chat.
lcmadIsChatModerator :: Lens' LiveChatMessageAuthorDetails (Maybe Bool)

-- | The channel's display name.
lcmadDisplayName :: Lens' LiveChatMessageAuthorDetails (Maybe Text)

-- | Whether the author is a sponsor of the live chat.
lcmadIsChatSponsor :: Lens' LiveChatMessageAuthorDetails (Maybe Bool)

-- | The channel's URL.
lcmadChannelURL :: Lens' LiveChatMessageAuthorDetails (Maybe Text)

-- | The video's rating from Portugal's Comissão de Classificação de
--   Espect´culos.
data ContentRatingCceRating

-- | <pre>
--   cceM12
--   </pre>
CCEM12 :: ContentRatingCceRating

-- | <pre>
--   cceM14
--   </pre>
CCEM14 :: ContentRatingCceRating

-- | <pre>
--   cceM16
--   </pre>
CCEM16 :: ContentRatingCceRating

-- | <pre>
--   cceM18
--   </pre>
CCEM18 :: ContentRatingCceRating

-- | <pre>
--   cceM4
--   </pre>
CCEM4 :: ContentRatingCceRating

-- | <pre>
--   cceM6
--   </pre>
CCEM6 :: ContentRatingCceRating

-- | <pre>
--   cceUnrated
--   </pre>
CceUnrated :: ContentRatingCceRating

-- | The video's rating in Switzerland.
data ContentRatingChfilmRating

-- | <pre>
--   chfilm0
--   </pre>
CHFILM0 :: ContentRatingChfilmRating

-- | <pre>
--   chfilm12
--   </pre>
CHFILM12 :: ContentRatingChfilmRating

-- | <pre>
--   chfilm16
--   </pre>
CHFILM16 :: ContentRatingChfilmRating

-- | <pre>
--   chfilm18
--   </pre>
CHFILM18 :: ContentRatingChfilmRating

-- | <pre>
--   chfilm6
--   </pre>
CHFILM6 :: ContentRatingChfilmRating

-- | <pre>
--   chfilmUnrated
--   </pre>
ChfilmUnrated :: ContentRatingChfilmRating

-- | Basic details about a subscription's subscriber including title,
--   description, channel ID and thumbnails.
--   
--   <i>See:</i> <a>subscriptionSubscriberSnippet</a> smart constructor.
data SubscriptionSubscriberSnippet

-- | Creates a value of <a>SubscriptionSubscriberSnippet</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sssChannelId</a></li>
--   <li><a>sssThumbnails</a></li>
--   <li><a>sssTitle</a></li>
--   <li><a>sssDescription</a></li>
--   </ul>
subscriptionSubscriberSnippet :: SubscriptionSubscriberSnippet

-- | The channel ID of the subscriber.
sssChannelId :: Lens' SubscriptionSubscriberSnippet (Maybe Text)

-- | Thumbnails for this subscriber.
sssThumbnails :: Lens' SubscriptionSubscriberSnippet (Maybe ThumbnailDetails)

-- | The title of the subscriber.
sssTitle :: Lens' SubscriptionSubscriberSnippet (Maybe Text)

-- | The description of the subscriber.
sssDescription :: Lens' SubscriptionSubscriberSnippet (Maybe Text)

-- | The video's rating from Malta's Film Age-Classification Board.
data ContentRatingMccaaRating

-- | <pre>
--   mccaa12
--   </pre>
MCCAA12 :: ContentRatingMccaaRating

-- | <pre>
--   mccaa12a
--   </pre>
Mccaa12a :: ContentRatingMccaaRating

-- | <pre>
--   mccaa14
--   </pre>
MCCAA14 :: ContentRatingMccaaRating

-- | <pre>
--   mccaa15
--   </pre>
MCCAA15 :: ContentRatingMccaaRating

-- | <pre>
--   mccaa16
--   </pre>
MCCAA16 :: ContentRatingMccaaRating

-- | <pre>
--   mccaa18
--   </pre>
MCCAA18 :: ContentRatingMccaaRating

-- | <pre>
--   mccaaPg
--   </pre>
MccaaPg :: ContentRatingMccaaRating

-- | <pre>
--   mccaaU
--   </pre>
MccaaU :: ContentRatingMccaaRating

-- | <pre>
--   mccaaUnrated
--   </pre>
MccaaUnrated :: ContentRatingMccaaRating

-- | The chart parameter identifies the chart that you want to retrieve.
data VideosListChart

-- | <tt>mostPopular</tt> Return the most popular videos for the specified
--   content region and video category.
MostPopular :: VideosListChart

-- | Describes information necessary for ingesting an RTMP or an HTTP
--   stream.
--   
--   <i>See:</i> <a>ingestionInfo</a> smart constructor.
data IngestionInfo

-- | Creates a value of <a>IngestionInfo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iiBackupIngestionAddress</a></li>
--   <li><a>iiIngestionAddress</a></li>
--   <li><a>iiStreamName</a></li>
--   </ul>
ingestionInfo :: IngestionInfo

-- | The backup ingestion URL that you should use to stream video to
--   YouTube. You have the option of simultaneously streaming the content
--   that you are sending to the ingestionAddress to this URL.
iiBackupIngestionAddress :: Lens' IngestionInfo (Maybe Text)

-- | The primary ingestion URL that you should use to stream video to
--   YouTube. You must stream video to this URL. Depending on which
--   application or tool you use to encode your video stream, you may need
--   to enter the stream URL and stream name separately or you may need to
--   concatenate them in the following format: STREAM_URL/STREAM_NAME
iiIngestionAddress :: Lens' IngestionInfo (Maybe Text)

-- | The HTTP or RTMP stream name that YouTube assigns to the video stream.
iiStreamName :: Lens' IngestionInfo (Maybe Text)

-- | The auditDetails object encapsulates channel data that is relevant for
--   YouTube Partners during the audit process.
--   
--   <i>See:</i> <a>channelAuditDetails</a> smart constructor.
data ChannelAuditDetails

-- | Creates a value of <a>ChannelAuditDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cadContentIdClaimsGoodStanding</a></li>
--   <li><a>cadOverallGoodStanding</a></li>
--   <li><a>cadCopyrightStrikesGoodStanding</a></li>
--   <li><a>cadCommUnityGuidelinesGoodStanding</a></li>
--   </ul>
channelAuditDetails :: ChannelAuditDetails

-- | Whether or not the channel has any unresolved claims.
cadContentIdClaimsGoodStanding :: Lens' ChannelAuditDetails (Maybe Bool)

-- | Describes the general state of the channel. This field will always
--   show if there are any issues whatsoever with the channel. Currently
--   this field represents the result of the logical and operation over the
--   community guidelines good standing, the copyright strikes good
--   standing and the content ID claims good standing, but this may change
--   in the future.
cadOverallGoodStanding :: Lens' ChannelAuditDetails (Maybe Bool)

-- | Whether or not the channel has any copyright strikes.
cadCopyrightStrikesGoodStanding :: Lens' ChannelAuditDetails (Maybe Bool)

-- | Whether or not the channel respects the community guidelines.
cadCommUnityGuidelinesGoodStanding :: Lens' ChannelAuditDetails (Maybe Bool)

-- | A thumbnail is an image representing a YouTube resource.
--   
--   <i>See:</i> <a>thumbnail</a> smart constructor.
data Thumbnail

-- | Creates a value of <a>Thumbnail</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tHeight</a></li>
--   <li><a>tURL</a></li>
--   <li><a>tWidth</a></li>
--   </ul>
thumbnail :: Thumbnail

-- | (Optional) Height of the thumbnail image.
tHeight :: Lens' Thumbnail (Maybe Word32)

-- | The thumbnail image's URL.
tURL :: Lens' Thumbnail (Maybe Text)

-- | (Optional) Width of the thumbnail image.
tWidth :: Lens' Thumbnail (Maybe Word32)

-- | The video's Motion Picture Association of America (MPAA) rating.
data ContentRatingMpaaRating

-- | <pre>
--   mpaaG
--   </pre>
MpaaG :: ContentRatingMpaaRating

-- | <pre>
--   mpaaNc17
--   </pre>
MPAANC17 :: ContentRatingMpaaRating

-- | <pre>
--   mpaaPg
--   </pre>
MpaaPg :: ContentRatingMpaaRating

-- | <pre>
--   mpaaPg13
--   </pre>
MPAAPG13 :: ContentRatingMpaaRating

-- | <pre>
--   mpaaR
--   </pre>
MpaaR :: ContentRatingMpaaRating

-- | <pre>
--   mpaaUnrated
--   </pre>
MpaaUnrated :: ContentRatingMpaaRating

-- | The caption track's type.
data CaptionSnippetTrackKind

-- | <pre>
--   ASR
--   </pre>
Asr :: CaptionSnippetTrackKind

-- | <pre>
--   forced
--   </pre>
Forced :: CaptionSnippetTrackKind

-- | <pre>
--   standard
--   </pre>
Standard :: CaptionSnippetTrackKind

-- | Indicates if the video is an upcoming/active live broadcast. Or it's
--   "none" if the video is not an upcoming/active live broadcast.
data VideoSnippetLiveBroadcastContent

-- | <pre>
--   live
--   </pre>
Live :: VideoSnippetLiveBroadcastContent

-- | <pre>
--   none
--   </pre>
None :: VideoSnippetLiveBroadcastContent

-- | <pre>
--   upcoming
--   </pre>
Upcoming :: VideoSnippetLiveBroadcastContent

-- | Defines the context of the ping.
data ChannelConversionPingContext

-- | <pre>
--   cview
--   </pre>
Cview :: ChannelConversionPingContext

-- | <pre>
--   subscribe
--   </pre>
Subscribe :: ChannelConversionPingContext

-- | <pre>
--   unsubscribe
--   </pre>
Unsubscribe :: ChannelConversionPingContext
data LiveChatTextMessageDetails

-- | Creates a value of <a>LiveChatTextMessageDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lctmdMessageText</a></li>
--   </ul>
liveChatTextMessageDetails :: LiveChatTextMessageDetails

-- | The user's message.
lctmdMessageText :: Lens' LiveChatTextMessageDetails (Maybe Text)

-- | Information that identifies the recommended resource.
--   
--   <i>See:</i> <a>activityContentDetailsRecommendation</a> smart
--   constructor.
data ActivityContentDetailsRecommendation

-- | Creates a value of <a>ActivityContentDetailsRecommendation</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdrResourceId</a></li>
--   <li><a>acdrSeedResourceId</a></li>
--   <li><a>acdrReason</a></li>
--   </ul>
activityContentDetailsRecommendation :: ActivityContentDetailsRecommendation

-- | The resourceId object contains information that identifies the
--   recommended resource.
acdrResourceId :: Lens' ActivityContentDetailsRecommendation (Maybe ResourceId)

-- | The seedResourceId object contains information about the resource that
--   caused the recommendation.
acdrSeedResourceId :: Lens' ActivityContentDetailsRecommendation (Maybe ResourceId)

-- | The reason that the resource is recommended to the user.
acdrReason :: Lens' ActivityContentDetailsRecommendation (Maybe ActivityContentDetailsRecommendationReason)
data LiveChatMessageRetractedDetails

-- | Creates a value of <a>LiveChatMessageRetractedDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmrdRetractedMessageId</a></li>
--   </ul>
liveChatMessageRetractedDetails :: LiveChatMessageRetractedDetails
lcmrdRetractedMessageId :: Lens' LiveChatMessageRetractedDetails (Maybe Text)

-- | The video's rating from the Hungarian Nemzeti Filmiroda, the Rating
--   Committee of the National Office of Film.
data ContentRatingRcnofRating

-- | <pre>
--   rcnofI
--   </pre>
RcnofI :: ContentRatingRcnofRating

-- | <pre>
--   rcnofIi
--   </pre>
RcnofIi :: ContentRatingRcnofRating

-- | <pre>
--   rcnofIii
--   </pre>
RcnofIii :: ContentRatingRcnofRating

-- | <pre>
--   rcnofIv
--   </pre>
RcnofIv :: ContentRatingRcnofRating

-- | <pre>
--   rcnofUnrated
--   </pre>
RcnofUnrated :: ContentRatingRcnofRating

-- | <pre>
--   rcnofV
--   </pre>
RcnofV :: ContentRatingRcnofRating

-- | <pre>
--   rcnofVi
--   </pre>
RcnofVi :: ContentRatingRcnofRating
data PlayListListResponse

-- | Creates a value of <a>PlayListListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pllrEtag</a></li>
--   <li><a>pllrTokenPagination</a></li>
--   <li><a>pllrNextPageToken</a></li>
--   <li><a>pllrPageInfo</a></li>
--   <li><a>pllrKind</a></li>
--   <li><a>pllrItems</a></li>
--   <li><a>pllrVisitorId</a></li>
--   <li><a>pllrEventId</a></li>
--   <li><a>pllrPrevPageToken</a></li>
--   </ul>
playListListResponse :: PlayListListResponse

-- | Etag of this resource.
pllrEtag :: Lens' PlayListListResponse (Maybe Text)
pllrTokenPagination :: Lens' PlayListListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
pllrNextPageToken :: Lens' PlayListListResponse (Maybe Text)
pllrPageInfo :: Lens' PlayListListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#playlistListResponse".
pllrKind :: Lens' PlayListListResponse Text

-- | A list of playlists that match the request criteria.
pllrItems :: Lens' PlayListListResponse [PlayList]

-- | The visitorId identifies the visitor.
pllrVisitorId :: Lens' PlayListListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
pllrEventId :: Lens' PlayListListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
pllrPrevPageToken :: Lens' PlayListListResponse (Maybe Text)

-- | The video's privacy status.
data VideoStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
Private :: VideoStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
Public :: VideoStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
UnListed :: VideoStatusPrivacyStatus

-- | Basic details about a channel section, including title, style and
--   position.
--   
--   <i>See:</i> <a>channelSectionSnippet</a> smart constructor.
data ChannelSectionSnippet

-- | Creates a value of <a>ChannelSectionSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cssStyle</a></li>
--   <li><a>cssChannelId</a></li>
--   <li><a>cssLocalized</a></li>
--   <li><a>cssTitle</a></li>
--   <li><a>cssType</a></li>
--   <li><a>cssPosition</a></li>
--   <li><a>cssDefaultLanguage</a></li>
--   </ul>
channelSectionSnippet :: ChannelSectionSnippet

-- | The style of the channel section.
cssStyle :: Lens' ChannelSectionSnippet (Maybe ChannelSectionSnippetStyle)

-- | The ID that YouTube uses to uniquely identify the channel that
--   published the channel section.
cssChannelId :: Lens' ChannelSectionSnippet (Maybe Text)

-- | Localized title, read-only.
cssLocalized :: Lens' ChannelSectionSnippet (Maybe ChannelSectionLocalization)

-- | The channel section's title for multiple_playlists and
--   multiple_channels.
cssTitle :: Lens' ChannelSectionSnippet (Maybe Text)

-- | The type of the channel section.
cssType :: Lens' ChannelSectionSnippet (Maybe ChannelSectionSnippetType)

-- | The position of the channel section in the channel.
cssPosition :: Lens' ChannelSectionSnippet (Maybe Word32)

-- | The language of the channel section's default title and description.
cssDefaultLanguage :: Lens' ChannelSectionSnippet (Maybe Text)

-- | JSON template for the status part of a channel.
--   
--   <i>See:</i> <a>channelStatus</a> smart constructor.
data ChannelStatus

-- | Creates a value of <a>ChannelStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csIsLinked</a></li>
--   <li><a>csLongUploadsStatus</a></li>
--   <li><a>csPrivacyStatus</a></li>
--   </ul>
channelStatus :: ChannelStatus

-- | If true, then the user is linked to either a YouTube username or G+
--   account. Otherwise, the user doesn't have a public YouTube identity.
csIsLinked :: Lens' ChannelStatus (Maybe Bool)

-- | The long uploads status of this channel. See
csLongUploadsStatus :: Lens' ChannelStatus (Maybe ChannelStatusLongUploadsStatus)

-- | Privacy status of the channel.
csPrivacyStatus :: Lens' ChannelStatus (Maybe ChannelStatusPrivacyStatus)

-- | The broadcast's status. The status can be updated using the API's
--   liveBroadcasts.transition method.
data LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   abandoned
--   </pre>
LBSLCSAbandoned :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   complete
--   </pre>
LBSLCSComplete :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   completeStarting
--   </pre>
LBSLCSCompleteStarting :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   created
--   </pre>
LBSLCSCreated :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   live
--   </pre>
LBSLCSLive :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   liveStarting
--   </pre>
LBSLCSLiveStarting :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   ready
--   </pre>
LBSLCSReady :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   reclaimed
--   </pre>
LBSLCSReclaimed :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   revoked
--   </pre>
LBSLCSRevoked :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   testStarting
--   </pre>
LBSLCSTestStarting :: LiveBroadcastStatusLifeCycleStatus

-- | <pre>
--   testing
--   </pre>
LBSLCSTesting :: LiveBroadcastStatusLifeCycleStatus

-- | The reason that YouTube failed to process the caption track. This
--   property is only present if the state property's value is failed.
data CaptionSnippetFailureReason

-- | <pre>
--   processingFailed
--   </pre>
ProcessingFailed :: CaptionSnippetFailureReason

-- | <pre>
--   unknownFormat
--   </pre>
UnknownFormat :: CaptionSnippetFailureReason

-- | <pre>
--   unsupportedFormat
--   </pre>
UnsupportedFormat :: CaptionSnippetFailureReason
data LiveChatPollClosedDetails

-- | Creates a value of <a>LiveChatPollClosedDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpcdPollId</a></li>
--   </ul>
liveChatPollClosedDetails :: LiveChatPollClosedDetails

-- | The id of the poll that was closed.
lcpcdPollId :: Lens' LiveChatPollClosedDetails (Maybe Text)

-- | Describes a single promoted item.
--   
--   <i>See:</i> <a>promotedItem</a> smart constructor.
data PromotedItem

-- | Creates a value of <a>PromotedItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piCustomMessage</a></li>
--   <li><a>piPromotedByContentOwner</a></li>
--   <li><a>piId</a></li>
--   <li><a>piTiming</a></li>
--   </ul>
promotedItem :: PromotedItem

-- | A custom message to display for this promotion. This field is
--   currently ignored unless the promoted item is a website.
piCustomMessage :: Lens' PromotedItem (Maybe Text)

-- | If true, the content owner's name will be used when displaying the
--   promotion. This field can only be set when the update is made on
--   behalf of the content owner.
piPromotedByContentOwner :: Lens' PromotedItem (Maybe Bool)

-- | Identifies the promoted item.
piId :: Lens' PromotedItem (Maybe PromotedItemId)

-- | The temporal position within the video where the promoted item will be
--   displayed. If present, it overrides the default timing.
piTiming :: Lens' PromotedItem (Maybe InvideoTiming)

-- | The type of ban.
data LiveChatUserBannedMessageDetailsBanType

-- | <pre>
--   permanent
--   </pre>
Permanent :: LiveChatUserBannedMessageDetailsBanType

-- | <pre>
--   temporary
--   </pre>
Temporary :: LiveChatUserBannedMessageDetailsBanType

-- | The reason that YouTube failed to process the video. This property
--   will only have a value if the processingStatus property's value is
--   failed.
data VideoProcessingDetailsProcessingFailureReason

-- | <pre>
--   other
--   </pre>
Other :: VideoProcessingDetailsProcessingFailureReason

-- | <pre>
--   streamingFailed
--   </pre>
StreamingFailed :: VideoProcessingDetailsProcessingFailureReason

-- | <pre>
--   transcodeFailed
--   </pre>
TranscodeFailed :: VideoProcessingDetailsProcessingFailureReason

-- | <pre>
--   uploadFailed
--   </pre>
UploadFailed :: VideoProcessingDetailsProcessingFailureReason

-- | Defines the position type.
data InvideoPositionType

-- | <pre>
--   corner
--   </pre>
Corner :: InvideoPositionType
data LiveStreamSnippet

-- | Creates a value of <a>LiveStreamSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lssPublishedAt</a></li>
--   <li><a>lssChannelId</a></li>
--   <li><a>lssIsDefaultStream</a></li>
--   <li><a>lssTitle</a></li>
--   <li><a>lssDescription</a></li>
--   </ul>
liveStreamSnippet :: LiveStreamSnippet

-- | The date and time that the stream was created. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lssPublishedAt :: Lens' LiveStreamSnippet (Maybe UTCTime)

-- | The ID that YouTube uses to uniquely identify the channel that is
--   transmitting the stream.
lssChannelId :: Lens' LiveStreamSnippet (Maybe Text)
lssIsDefaultStream :: Lens' LiveStreamSnippet (Maybe Bool)

-- | The stream's title. The value must be between 1 and 128 characters
--   long.
lssTitle :: Lens' LiveStreamSnippet (Maybe Text)

-- | The stream's description. The value cannot be longer than 10000
--   characters.
lssDescription :: Lens' LiveStreamSnippet (Maybe Text)

-- | The video's Freiwillige Selbstkontrolle der Filmwirtschaft (FSK -
--   Germany) rating.
data ContentRatingFskRating

-- | <pre>
--   fsk0
--   </pre>
FSK0 :: ContentRatingFskRating

-- | <pre>
--   fsk12
--   </pre>
FSK12 :: ContentRatingFskRating

-- | <pre>
--   fsk16
--   </pre>
FSK16 :: ContentRatingFskRating

-- | <pre>
--   fsk18
--   </pre>
FSK18 :: ContentRatingFskRating

-- | <pre>
--   fsk6
--   </pre>
FSK6 :: ContentRatingFskRating

-- | <pre>
--   fskUnrated
--   </pre>
FskUnrated :: ContentRatingFskRating

-- | A search result contains information about a YouTube video, channel,
--   or playlist that matches the search parameters specified in an API
--   request. While a search result points to a uniquely identifiable
--   resource, like a video, it does not have its own persistent data.
--   
--   <i>See:</i> <a>searchResult</a> smart constructor.
data SearchResult

-- | Creates a value of <a>SearchResult</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srEtag</a></li>
--   <li><a>srSnippet</a></li>
--   <li><a>srKind</a></li>
--   <li><a>srId</a></li>
--   </ul>
searchResult :: SearchResult

-- | Etag of this resource.
srEtag :: Lens' SearchResult (Maybe Text)

-- | The snippet object contains basic details about a search result, such
--   as its title or description. For example, if the search result is a
--   video, then the title will be the video's title and the description
--   will be the video's description.
srSnippet :: Lens' SearchResult (Maybe SearchResultSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#searchResult".
srKind :: Lens' SearchResult Text

-- | The id object contains information that can be used to uniquely
--   identify the resource that matches the search request.
srId :: Lens' SearchResult (Maybe ResourceId)

-- | The video's rating from Finland's Kansallinen Audiovisuaalinen
--   Instituutti (National Audiovisual Institute).
data ContentRatingMekuRating

-- | <pre>
--   meku12
--   </pre>
MEKU12 :: ContentRatingMekuRating

-- | <pre>
--   meku16
--   </pre>
MEKU16 :: ContentRatingMekuRating

-- | <pre>
--   meku18
--   </pre>
MEKU18 :: ContentRatingMekuRating

-- | <pre>
--   meku7
--   </pre>
MEKU7 :: ContentRatingMekuRating

-- | <pre>
--   mekuS
--   </pre>
MekuS :: ContentRatingMekuRating

-- | <pre>
--   mekuUnrated
--   </pre>
MekuUnrated :: ContentRatingMekuRating

-- | Stub token pagination template to suppress results.
--   
--   <i>See:</i> <a>tokenPagination</a> smart constructor.
data TokenPagination

-- | Creates a value of <a>TokenPagination</a> with the minimum fields
--   required to make a request.
tokenPagination :: TokenPagination

-- | A resource id is a generic reference that points to another YouTube
--   resource.
--   
--   <i>See:</i> <a>resourceId</a> smart constructor.
data ResourceId

-- | Creates a value of <a>ResourceId</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riKind</a></li>
--   <li><a>riChannelId</a></li>
--   <li><a>riVideoId</a></li>
--   <li><a>riPlayListId</a></li>
--   </ul>
resourceId :: ResourceId

-- | The type of the API resource.
riKind :: Lens' ResourceId (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the referred resource,
--   if that resource is a channel. This property is only present if the
--   resourceId.kind value is youtube#channel.
riChannelId :: Lens' ResourceId (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the referred resource,
--   if that resource is a video. This property is only present if the
--   resourceId.kind value is youtube#video.
riVideoId :: Lens' ResourceId (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the referred resource,
--   if that resource is a playlist. This property is only present if the
--   resourceId.kind value is youtube#playlist.
riPlayListId :: Lens' ResourceId (Maybe Text)

-- | The value of definition indicates whether the video is available in
--   high definition or only in standard definition.
data VideoContentDetailsDefinition

-- | <pre>
--   hd
--   </pre>
HD :: VideoContentDetailsDefinition

-- | <pre>
--   sd
--   </pre>
SD :: VideoContentDetailsDefinition

-- | The video's rating in Estonia.
data ContentRatingEefilmRating

-- | <pre>
--   eefilmK12
--   </pre>
EEFILMK12 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmK14
--   </pre>
EEFILMK14 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmK16
--   </pre>
EEFILMK16 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmK6
--   </pre>
EEFILMK6 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmL
--   </pre>
EefilmL :: ContentRatingEefilmRating

-- | <pre>
--   eefilmMs12
--   </pre>
EEFILMMS12 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmMs6
--   </pre>
EEFILMMS6 :: ContentRatingEefilmRating

-- | <pre>
--   eefilmPere
--   </pre>
EefilmPere :: ContentRatingEefilmRating

-- | <pre>
--   eefilmUnrated
--   </pre>
EefilmUnrated :: ContentRatingEefilmRating
data SearchListResponse

-- | Creates a value of <a>SearchListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slrEtag</a></li>
--   <li><a>slrTokenPagination</a></li>
--   <li><a>slrNextPageToken</a></li>
--   <li><a>slrRegionCode</a></li>
--   <li><a>slrPageInfo</a></li>
--   <li><a>slrKind</a></li>
--   <li><a>slrItems</a></li>
--   <li><a>slrVisitorId</a></li>
--   <li><a>slrEventId</a></li>
--   <li><a>slrPrevPageToken</a></li>
--   </ul>
searchListResponse :: SearchListResponse

-- | Etag of this resource.
slrEtag :: Lens' SearchListResponse (Maybe Text)
slrTokenPagination :: Lens' SearchListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
slrNextPageToken :: Lens' SearchListResponse (Maybe Text)
slrRegionCode :: Lens' SearchListResponse (Maybe Text)
slrPageInfo :: Lens' SearchListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#searchListResponse".
slrKind :: Lens' SearchListResponse Text

-- | A list of results that match the search criteria.
slrItems :: Lens' SearchListResponse [SearchResult]

-- | The visitorId identifies the visitor.
slrVisitorId :: Lens' SearchListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
slrEventId :: Lens' SearchListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
slrPrevPageToken :: Lens' SearchListResponse (Maybe Text)

-- | The broadcast's privacy status. Note that the broadcast represents
--   exactly one YouTube video, so the privacy settings are identical to
--   those supported for videos. In addition, you can set this field by
--   modifying the broadcast resource or by setting the privacyStatus field
--   of the corresponding video resource.
data LiveBroadcastStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
LBSPSPrivate :: LiveBroadcastStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
LBSPSPublic :: LiveBroadcastStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
LBSPSUnListed :: LiveBroadcastStatusPrivacyStatus
data LiveBroadcastTopicDetails

-- | Creates a value of <a>LiveBroadcastTopicDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbtdTopics</a></li>
--   </ul>
liveBroadcastTopicDetails :: LiveBroadcastTopicDetails
lbtdTopics :: Lens' LiveBroadcastTopicDetails [LiveBroadcastTopic]
data PlayListStatus

-- | Creates a value of <a>PlayListStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plsPrivacyStatus</a></li>
--   </ul>
playListStatus :: PlayListStatus

-- | The playlist's privacy status.
plsPrivacyStatus :: Lens' PlayListStatus (Maybe PlayListStatusPrivacyStatus)
data LiveChatMessageListResponse

-- | Creates a value of <a>LiveChatMessageListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmlrOfflineAt</a></li>
--   <li><a>lcmlrEtag</a></li>
--   <li><a>lcmlrTokenPagination</a></li>
--   <li><a>lcmlrNextPageToken</a></li>
--   <li><a>lcmlrPageInfo</a></li>
--   <li><a>lcmlrKind</a></li>
--   <li><a>lcmlrItems</a></li>
--   <li><a>lcmlrVisitorId</a></li>
--   <li><a>lcmlrPollingIntervalMillis</a></li>
--   <li><a>lcmlrEventId</a></li>
--   </ul>
liveChatMessageListResponse :: LiveChatMessageListResponse

-- | The date and time when the underlying stream went offline. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lcmlrOfflineAt :: Lens' LiveChatMessageListResponse (Maybe UTCTime)

-- | Etag of this resource.
lcmlrEtag :: Lens' LiveChatMessageListResponse (Maybe Text)
lcmlrTokenPagination :: Lens' LiveChatMessageListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
lcmlrNextPageToken :: Lens' LiveChatMessageListResponse (Maybe Text)
lcmlrPageInfo :: Lens' LiveChatMessageListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatMessageListResponse".
lcmlrKind :: Lens' LiveChatMessageListResponse Text

-- | A list of live chat messages.
lcmlrItems :: Lens' LiveChatMessageListResponse [LiveChatMessage]

-- | The visitorId identifies the visitor.
lcmlrVisitorId :: Lens' LiveChatMessageListResponse (Maybe Text)

-- | The amount of time the client should wait before polling again.
lcmlrPollingIntervalMillis :: Lens' LiveChatMessageListResponse (Maybe Word32)

-- | Serialized EventId of the request which produced this response.
lcmlrEventId :: Lens' LiveChatMessageListResponse (Maybe Text)
data ChannelListResponse

-- | Creates a value of <a>ChannelListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clrEtag</a></li>
--   <li><a>clrTokenPagination</a></li>
--   <li><a>clrNextPageToken</a></li>
--   <li><a>clrPageInfo</a></li>
--   <li><a>clrKind</a></li>
--   <li><a>clrItems</a></li>
--   <li><a>clrVisitorId</a></li>
--   <li><a>clrEventId</a></li>
--   <li><a>clrPrevPageToken</a></li>
--   </ul>
channelListResponse :: ChannelListResponse

-- | Etag of this resource.
clrEtag :: Lens' ChannelListResponse (Maybe Text)
clrTokenPagination :: Lens' ChannelListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
clrNextPageToken :: Lens' ChannelListResponse (Maybe Text)
clrPageInfo :: Lens' ChannelListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channelListResponse".
clrKind :: Lens' ChannelListResponse Text

-- | A list of channels that match the request criteria.
clrItems :: Lens' ChannelListResponse [Channel]

-- | The visitorId identifies the visitor.
clrVisitorId :: Lens' ChannelListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
clrEventId :: Lens' ChannelListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
clrPrevPageToken :: Lens' ChannelListResponse (Maybe Text)

-- | The tfmt parameter specifies that the caption track should be returned
--   in a specific format. If the parameter is not included in the request,
--   the track is returned in its original format.
data CaptionsDownloadTfmt

-- | <tt>sbv</tt> SubViewer subtitle.
Sbv :: CaptionsDownloadTfmt

-- | <tt>scc</tt> Scenarist Closed Caption format.
Scc :: CaptionsDownloadTfmt

-- | <tt>srt</tt> SubRip subtitle.
Srt :: CaptionsDownloadTfmt

-- | <tt>ttml</tt> Timed Text Markup Language caption.
Ttml :: CaptionsDownloadTfmt

-- | <tt>vtt</tt> Web Video Text Tracks caption.
Vtt :: CaptionsDownloadTfmt

-- | Describes the type of the promoted item.
data PromotedItemIdType

-- | <pre>
--   recentUpload
--   </pre>
PIITRecentUpload :: PromotedItemIdType

-- | <pre>
--   video
--   </pre>
PIITVideo :: PromotedItemIdType

-- | <pre>
--   website
--   </pre>
PIITWebsite :: PromotedItemIdType

-- | The video's rating in Peru.
data ContentRatingPefilmRating

-- | <pre>
--   pefilm14
--   </pre>
PEFILM14 :: ContentRatingPefilmRating

-- | <pre>
--   pefilm18
--   </pre>
PEFILM18 :: ContentRatingPefilmRating

-- | <pre>
--   pefilmPg
--   </pre>
PefilmPg :: ContentRatingPefilmRating

-- | <pre>
--   pefilmPt
--   </pre>
PefilmPt :: ContentRatingPefilmRating

-- | <pre>
--   pefilmUnrated
--   </pre>
PefilmUnrated :: ContentRatingPefilmRating
data ChannelProFileDetails

-- | Creates a value of <a>ChannelProFileDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpfdChannelId</a></li>
--   <li><a>cpfdProFileImageURL</a></li>
--   <li><a>cpfdDisplayName</a></li>
--   <li><a>cpfdChannelURL</a></li>
--   </ul>
channelProFileDetails :: ChannelProFileDetails

-- | The YouTube channel ID.
cpfdChannelId :: Lens' ChannelProFileDetails (Maybe Text)

-- | The channels's avatar URL.
cpfdProFileImageURL :: Lens' ChannelProFileDetails (Maybe Text)

-- | The channel's display name.
cpfdDisplayName :: Lens' ChannelProFileDetails (Maybe Text)

-- | The channel's URL.
cpfdChannelURL :: Lens' ChannelProFileDetails (Maybe Text)
data VideoAbuseReportReasonListResponse

-- | Creates a value of <a>VideoAbuseReportReasonListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varrlrEtag</a></li>
--   <li><a>varrlrKind</a></li>
--   <li><a>varrlrItems</a></li>
--   <li><a>varrlrVisitorId</a></li>
--   <li><a>varrlrEventId</a></li>
--   </ul>
videoAbuseReportReasonListResponse :: VideoAbuseReportReasonListResponse

-- | Etag of this resource.
varrlrEtag :: Lens' VideoAbuseReportReasonListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoAbuseReportReasonListResponse".
varrlrKind :: Lens' VideoAbuseReportReasonListResponse Text

-- | A list of valid abuse reasons that are used with video.ReportAbuse.
varrlrItems :: Lens' VideoAbuseReportReasonListResponse [VideoAbuseReportReason]

-- | The visitorId identifies the visitor.
varrlrVisitorId :: Lens' VideoAbuseReportReasonListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
varrlrEventId :: Lens' VideoAbuseReportReasonListResponse (Maybe Text)

-- | The resolution of the inbound video data.
data CdnSettingsResolution

-- | <pre>
--   1080p
--   </pre>
CSR1080p :: CdnSettingsResolution

-- | <pre>
--   1440p
--   </pre>
CSR1440p :: CdnSettingsResolution

-- | <pre>
--   2160p
--   </pre>
CSR2160p :: CdnSettingsResolution

-- | <pre>
--   240p
--   </pre>
CSR240p :: CdnSettingsResolution

-- | <pre>
--   360p
--   </pre>
CSR360p :: CdnSettingsResolution

-- | <pre>
--   480p
--   </pre>
CSR480p :: CdnSettingsResolution

-- | <pre>
--   720p
--   </pre>
CSR720p :: CdnSettingsResolution
data LiveChatUserBannedMessageDetails

-- | Creates a value of <a>LiveChatUserBannedMessageDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcubmdBanType</a></li>
--   <li><a>lcubmdBannedUserDetails</a></li>
--   <li><a>lcubmdBanDurationSeconds</a></li>
--   </ul>
liveChatUserBannedMessageDetails :: LiveChatUserBannedMessageDetails

-- | The type of ban.
lcubmdBanType :: Lens' LiveChatUserBannedMessageDetails (Maybe LiveChatUserBannedMessageDetailsBanType)

-- | The details of the user that was banned.
lcubmdBannedUserDetails :: Lens' LiveChatUserBannedMessageDetails (Maybe ChannelProFileDetails)

-- | The duration of the ban. This property is only present if the banType
--   is temporary.
lcubmdBanDurationSeconds :: Lens' LiveChatUserBannedMessageDetails (Maybe Word64)

-- | It indicates if the resource (video or channel) has upcoming/active
--   live broadcast content. Or it's "none" if there is not any
--   upcoming/active live broadcasts.
data SearchResultSnippetLiveBroadcastContent

-- | <pre>
--   live
--   </pre>
SRSLBCLive :: SearchResultSnippetLiveBroadcastContent

-- | <pre>
--   none
--   </pre>
SRSLBCNone :: SearchResultSnippetLiveBroadcastContent

-- | <pre>
--   upcoming
--   </pre>
SRSLBCUpcoming :: SearchResultSnippetLiveBroadcastContent

-- | Detailed settings of a broadcast.
--   
--   <i>See:</i> <a>liveBroadcastContentDetails</a> smart constructor.
data LiveBroadcastContentDetails

-- | Creates a value of <a>LiveBroadcastContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbcdEnableContentEncryption</a></li>
--   <li><a>lbcdEnableLowLatency</a></li>
--   <li><a>lbcdClosedCaptionsType</a></li>
--   <li><a>lbcdEnableEmbed</a></li>
--   <li><a>lbcdStartWithSlate</a></li>
--   <li><a>lbcdProjection</a></li>
--   <li><a>lbcdMonitorStream</a></li>
--   <li><a>lbcdBoundStreamId</a></li>
--   <li><a>lbcdRecordFromStart</a></li>
--   <li><a>lbcdEnableClosedCaptions</a></li>
--   <li><a>lbcdBoundStreamLastUpdateTimeMs</a></li>
--   <li><a>lbcdEnableDvr</a></li>
--   </ul>
liveBroadcastContentDetails :: LiveBroadcastContentDetails

-- | This setting indicates whether YouTube should enable content
--   encryption for the broadcast.
lbcdEnableContentEncryption :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | Indicates whether this broadcast has low latency enabled.
lbcdEnableLowLatency :: Lens' LiveBroadcastContentDetails (Maybe Bool)
lbcdClosedCaptionsType :: Lens' LiveBroadcastContentDetails (Maybe LiveBroadcastContentDetailsClosedCaptionsType)

-- | This setting indicates whether the broadcast video can be played in an
--   embedded player. If you choose to archive the video (using the
--   enableArchive property), this setting will also apply to the archived
--   video.
lbcdEnableEmbed :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | This setting indicates whether the broadcast should automatically
--   begin with an in-stream slate when you update the broadcast's status
--   to live. After updating the status, you then need to send a
--   liveCuepoints.insert request that sets the cuepoint's eventState to
--   end to remove the in-stream slate and make your broadcast stream
--   visible to viewers.
lbcdStartWithSlate :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | The projection format of this broadcast. This defaults to rectangular.
lbcdProjection :: Lens' LiveBroadcastContentDetails (Maybe LiveBroadcastContentDetailsProjection)

-- | The monitorStream object contains information about the monitor
--   stream, which the broadcaster can use to review the event content
--   before the broadcast stream is shown publicly.
lbcdMonitorStream :: Lens' LiveBroadcastContentDetails (Maybe MonitorStreamInfo)

-- | This value uniquely identifies the live stream bound to the broadcast.
lbcdBoundStreamId :: Lens' LiveBroadcastContentDetails (Maybe Text)

-- | Automatically start recording after the event goes live. The default
--   value for this property is true. Important: You must also set the
--   enableDvr property's value to true if you want the playback to be
--   available immediately after the broadcast ends. If you set this
--   property's value to true but do not also set the enableDvr property to
--   true, there may be a delay of around one day before the archived video
--   will be available for playback.
lbcdRecordFromStart :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | This setting indicates whether HTTP POST closed captioning is enabled
--   for this broadcast. The ingestion URL of the closed captions is
--   returned through the liveStreams API. This is mutually exclusive with
--   using the closed_captions_type property, and is equivalent to setting
--   closed_captions_type to CLOSED_CAPTIONS_HTTP_POST.
lbcdEnableClosedCaptions :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | The date and time that the live stream referenced by boundStreamId was
--   last updated.
lbcdBoundStreamLastUpdateTimeMs :: Lens' LiveBroadcastContentDetails (Maybe UTCTime)

-- | This setting determines whether viewers can access DVR controls while
--   watching the video. DVR controls enable the viewer to control the
--   video playback experience by pausing, rewinding, or fast forwarding
--   content. The default value for this property is true. Important: You
--   must set the value to true and also set the enableArchive property's
--   value to true if you want to make playback available immediately after
--   the broadcast ends.
lbcdEnableDvr :: Lens' LiveBroadcastContentDetails (Maybe Bool)

-- | The video's Anatel (Asociación Nacional de Televisión) rating for
--   Chilean television.
data ContentRatingAnatelRating

-- | <pre>
--   anatelA
--   </pre>
AnatelA :: ContentRatingAnatelRating

-- | <pre>
--   anatelF
--   </pre>
AnatelF :: ContentRatingAnatelRating

-- | <pre>
--   anatelI
--   </pre>
AnatelI :: ContentRatingAnatelRating

-- | <pre>
--   anatelI10
--   </pre>
ANATELI10 :: ContentRatingAnatelRating

-- | <pre>
--   anatelI12
--   </pre>
ANATELI12 :: ContentRatingAnatelRating

-- | <pre>
--   anatelI7
--   </pre>
ANATELI7 :: ContentRatingAnatelRating

-- | <pre>
--   anatelR
--   </pre>
AnatelR :: ContentRatingAnatelRating

-- | <pre>
--   anatelUnrated
--   </pre>
AnatelUnrated :: ContentRatingAnatelRating

-- | The order parameter specifies the method that will be used to order
--   resources in the API response.
data SearchListOrder

-- | <tt>date</tt> Resources are sorted in reverse chronological order
--   based on the date they were created.
Date :: SearchListOrder

-- | <tt>rating</tt> Resources are sorted from highest to lowest rating.
Rating :: SearchListOrder

-- | <tt>relevance</tt> Resources are sorted based on their relevance to
--   the search query. This is the default value for this parameter.
Relevance :: SearchListOrder

-- | <tt>title</tt> Resources are sorted alphabetically by title.
Title :: SearchListOrder

-- | <tt>videoCount</tt> Channels are sorted in descending order of their
--   number of uploaded videos.
VideoCount :: SearchListOrder

-- | <tt>viewCount</tt> Resources are sorted from highest to lowest number
--   of views.
ViewCount :: SearchListOrder
data ChannelSection

-- | Creates a value of <a>ChannelSection</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csEtag</a></li>
--   <li><a>csSnippet</a></li>
--   <li><a>csKind</a></li>
--   <li><a>csContentDetails</a></li>
--   <li><a>csTargeting</a></li>
--   <li><a>csId</a></li>
--   <li><a>csLocalizations</a></li>
--   </ul>
channelSection :: ChannelSection

-- | Etag of this resource.
csEtag :: Lens' ChannelSection (Maybe Text)

-- | The snippet object contains basic details about the channel section,
--   such as its type, style and title.
csSnippet :: Lens' ChannelSection (Maybe ChannelSectionSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channelSection".
csKind :: Lens' ChannelSection Text

-- | The contentDetails object contains details about the channel section
--   content, such as a list of playlists or channels featured in the
--   section.
csContentDetails :: Lens' ChannelSection (Maybe ChannelSectionContentDetails)

-- | The targeting object contains basic targeting settings about the
--   channel section.
csTargeting :: Lens' ChannelSection (Maybe ChannelSectionTargeting)

-- | The ID that YouTube uses to uniquely identify the channel section.
csId :: Lens' ChannelSection (Maybe Text)

-- | Localizations for different languages
csLocalizations :: Lens' ChannelSection (Maybe ChannelSectionLocalizations)

-- | The video's Consejo de Calificación Cinematográfica (Chile) rating.
data ContentRatingCccRating

-- | <pre>
--   ccc14
--   </pre>
CCC14 :: ContentRatingCccRating

-- | <pre>
--   ccc18
--   </pre>
CCC18 :: ContentRatingCccRating

-- | <pre>
--   ccc18s
--   </pre>
Ccc18s :: ContentRatingCccRating

-- | <pre>
--   ccc18v
--   </pre>
Ccc18v :: ContentRatingCccRating

-- | <pre>
--   ccc6
--   </pre>
CCC6 :: ContentRatingCccRating

-- | <pre>
--   cccTe
--   </pre>
CccTe :: ContentRatingCccRating

-- | <pre>
--   cccUnrated
--   </pre>
CccUnrated :: ContentRatingCccRating
data ChannelContentDetailsRelatedPlayLists

-- | Creates a value of <a>ChannelContentDetailsRelatedPlayLists</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccdrplFavorites</a></li>
--   <li><a>ccdrplWatchHistory</a></li>
--   <li><a>ccdrplWatchLater</a></li>
--   <li><a>ccdrplUploads</a></li>
--   <li><a>ccdrplLikes</a></li>
--   </ul>
channelContentDetailsRelatedPlayLists :: ChannelContentDetailsRelatedPlayLists

-- | The ID of the playlist that contains the channel"s favorite videos.
--   Use the playlistItems.insert and playlistItems.delete to add or remove
--   items from that list.
ccdrplFavorites :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | The ID of the playlist that contains the channel"s watch history. Use
--   the playlistItems.insert and playlistItems.delete to add or remove
--   items from that list.
ccdrplWatchHistory :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | The ID of the playlist that contains the channel"s watch later
--   playlist. Use the playlistItems.insert and playlistItems.delete to add
--   or remove items from that list.
ccdrplWatchLater :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | The ID of the playlist that contains the channel"s uploaded videos.
--   Use the videos.insert method to upload new videos and the
--   videos.delete method to delete previously uploaded videos.
ccdrplUploads :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | The ID of the playlist that contains the channel"s liked videos. Use
--   the playlistItems.insert and playlistItems.delete to add or remove
--   items from that list.
ccdrplLikes :: Lens' ChannelContentDetailsRelatedPlayLists (Maybe Text)

-- | A live stream describes a live ingestion point.
--   
--   <i>See:</i> <a>liveStream</a> smart constructor.
data LiveStream

-- | Creates a value of <a>LiveStream</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsStatus</a></li>
--   <li><a>lsEtag</a></li>
--   <li><a>lsSnippet</a></li>
--   <li><a>lsKind</a></li>
--   <li><a>lsContentDetails</a></li>
--   <li><a>lsId</a></li>
--   <li><a>lsCdn</a></li>
--   </ul>
liveStream :: LiveStream

-- | The status object contains information about live stream's status.
lsStatus :: Lens' LiveStream (Maybe LiveStreamStatus)

-- | Etag of this resource.
lsEtag :: Lens' LiveStream (Maybe Text)

-- | The snippet object contains basic details about the stream, including
--   its channel, title, and description.
lsSnippet :: Lens' LiveStream (Maybe LiveStreamSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveStream".
lsKind :: Lens' LiveStream Text

-- | The content_details object contains information about the stream,
--   including the closed captions ingestion URL.
lsContentDetails :: Lens' LiveStream (Maybe LiveStreamContentDetails)

-- | The ID that YouTube assigns to uniquely identify the stream.
lsId :: Lens' LiveStream (Maybe Text)

-- | The cdn object defines the live stream's content delivery network
--   (CDN) settings. These settings provide details about the manner in
--   which you stream your content to YouTube.
lsCdn :: Lens' LiveStream (Maybe CdnSettings)

-- | Information about a video that was marked as a favorite video.
--   
--   <i>See:</i> <a>activityContentDetailsFavorite</a> smart constructor.
data ActivityContentDetailsFavorite

-- | Creates a value of <a>ActivityContentDetailsFavorite</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdfResourceId</a></li>
--   </ul>
activityContentDetailsFavorite :: ActivityContentDetailsFavorite

-- | The resourceId object contains information that identifies the
--   resource that was marked as a favorite.
acdfResourceId :: Lens' ActivityContentDetailsFavorite (Maybe ResourceId)

-- | Details about the content of a YouTube Video.
--   
--   <i>See:</i> <a>videoContentDetails</a> smart constructor.
data VideoContentDetails

-- | Creates a value of <a>VideoContentDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcdCountryRestriction</a></li>
--   <li><a>vcdHasCustomThumbnail</a></li>
--   <li><a>vcdDefinition</a></li>
--   <li><a>vcdDimension</a></li>
--   <li><a>vcdCaption</a></li>
--   <li><a>vcdRegionRestriction</a></li>
--   <li><a>vcdProjection</a></li>
--   <li><a>vcdDuration</a></li>
--   <li><a>vcdContentRating</a></li>
--   <li><a>vcdLicensedContent</a></li>
--   </ul>
videoContentDetails :: VideoContentDetails

-- | The countryRestriction object contains information about the countries
--   where a video is (or is not) viewable.
vcdCountryRestriction :: Lens' VideoContentDetails (Maybe AccessPolicy)

-- | Indicates whether the video uploader has provided a custom thumbnail
--   image for the video. This property is only visible to the video
--   uploader.
vcdHasCustomThumbnail :: Lens' VideoContentDetails (Maybe Bool)

-- | The value of definition indicates whether the video is available in
--   high definition or only in standard definition.
vcdDefinition :: Lens' VideoContentDetails (Maybe VideoContentDetailsDefinition)

-- | The value of dimension indicates whether the video is available in 3D
--   or in 2D.
vcdDimension :: Lens' VideoContentDetails (Maybe Text)

-- | The value of captions indicates whether the video has captions or not.
vcdCaption :: Lens' VideoContentDetails (Maybe VideoContentDetailsCaption)

-- | The regionRestriction object contains information about the countries
--   where a video is (or is not) viewable. The object will contain either
--   the contentDetails.regionRestriction.allowed property or the
--   contentDetails.regionRestriction.blocked property.
vcdRegionRestriction :: Lens' VideoContentDetails (Maybe VideoContentDetailsRegionRestriction)

-- | Specifies the projection format of the video.
vcdProjection :: Lens' VideoContentDetails (Maybe VideoContentDetailsProjection)

-- | The length of the video. The tag value is an ISO 8601 duration in the
--   format PTS, in which the letters PT indicate that the value specifies
--   a period of time, and the letters M and S refer to length in minutes
--   and seconds, respectively. The # characters preceding the M and S
--   letters are both integers that specify the number of minutes (or
--   seconds) of the video. For example, a value of PT15M51S indicates that
--   the video is 15 minutes and 51 seconds long.
vcdDuration :: Lens' VideoContentDetails (Maybe Text)

-- | Specifies the ratings that the video received under various rating
--   schemes.
vcdContentRating :: Lens' VideoContentDetails (Maybe ContentRating)

-- | The value of is_license_content indicates whether the video is
--   licensed content.
vcdLicensedContent :: Lens' VideoContentDetails (Maybe Bool)

-- | The type of audio track associated with the caption track.
data CaptionSnippetAudioTrackType

-- | <pre>
--   commentary
--   </pre>
Commentary :: CaptionSnippetAudioTrackType

-- | <pre>
--   descriptive
--   </pre>
Descriptive :: CaptionSnippetAudioTrackType

-- | <pre>
--   primary
--   </pre>
Primary :: CaptionSnippetAudioTrackType

-- | <pre>
--   unknown
--   </pre>
Unknown :: CaptionSnippetAudioTrackType

-- | Branding properties for images associated with the channel.
--   
--   <i>See:</i> <a>imageSettings</a> smart constructor.
data ImageSettings

-- | Creates a value of <a>ImageSettings</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isBannerMobileLowImageURL</a></li>
--   <li><a>isBannerTabletExtraHdImageURL</a></li>
--   <li><a>isSmallBrandedBannerImageImapScript</a></li>
--   <li><a>isBannerTvHighImageURL</a></li>
--   <li><a>isBannerMobileHdImageURL</a></li>
--   <li><a>isBannerTvMediumImageURL</a></li>
--   <li><a>isBannerTvImageURL</a></li>
--   <li><a>isBannerTabletImageURL</a></li>
--   <li><a>isBannerMobileImageURL</a></li>
--   <li><a>isTrackingImageURL</a></li>
--   <li><a>isBannerMobileMediumHdImageURL</a></li>
--   <li><a>isLargeBrandedBannerImageURL</a></li>
--   <li><a>isBannerExternalURL</a></li>
--   <li><a>isBackgRoundImageURL</a></li>
--   <li><a>isSmallBrandedBannerImageURL</a></li>
--   <li><a>isBannerImageURL</a></li>
--   <li><a>isWatchIconImageURL</a></li>
--   <li><a>isBannerTvLowImageURL</a></li>
--   <li><a>isBannerMobileExtraHdImageURL</a></li>
--   <li><a>isLargeBrandedBannerImageImapScript</a></li>
--   <li><a>isBannerTabletLowImageURL</a></li>
--   <li><a>isBannerTabletHdImageURL</a></li>
--   </ul>
imageSettings :: ImageSettings

-- | Banner image. Mobile size low resolution (320x88).
isBannerMobileLowImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Tablet size extra high resolution (2560x424).
isBannerTabletExtraHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | The image map script for the small banner image.
isSmallBrandedBannerImageImapScript :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | Banner image. TV size high resolution (1920x1080).
isBannerTvHighImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Mobile size high resolution (1280x360).
isBannerMobileHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. TV size medium resolution (1280x720).
isBannerTvMediumImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. TV size extra high resolution (2120x1192).
isBannerTvImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Tablet size (1707x283).
isBannerTabletImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Mobile size (640x175).
isBannerMobileImageURL :: Lens' ImageSettings (Maybe Text)

-- | The URL for a 1px by 1px tracking pixel that can be used to collect
--   statistics for views of the channel or video pages.
isTrackingImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Mobile size medium/high resolution (960x263).
isBannerMobileMediumHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | The URL for the 854px by 70px image that appears below the video
--   player in the expanded video view of the video watch page.
isLargeBrandedBannerImageURL :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | This is used only in update requests; if it's set, we use this URL to
--   generate all of the above banner URLs.
isBannerExternalURL :: Lens' ImageSettings (Maybe Text)

-- | The URL for the background image shown on the video watch page. The
--   image should be 1200px by 615px, with a maximum file size of 128k.
isBackgRoundImageURL :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | The URL for the 640px by 70px banner image that appears below the
--   video player in the default view of the video watch page.
isSmallBrandedBannerImageURL :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | Banner image. Desktop size (1060x175).
isBannerImageURL :: Lens' ImageSettings (Maybe Text)

-- | The URL for the image that appears above the top-left corner of the
--   video player. This is a 25-pixel-high image with a flexible width that
--   cannot exceed 170 pixels.
isWatchIconImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. TV size low resolution (854x480).
isBannerTvLowImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Mobile size high resolution (1440x395).
isBannerMobileExtraHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | The image map script for the large banner image.
isLargeBrandedBannerImageImapScript :: Lens' ImageSettings (Maybe LocalizedProperty)

-- | Banner image. Tablet size low resolution (1138x188).
isBannerTabletLowImageURL :: Lens' ImageSettings (Maybe Text)

-- | Banner image. Tablet size high resolution (2276x377).
isBannerTabletHdImageURL :: Lens' ImageSettings (Maybe Text)

-- | Freebase topic information related to the video.
--   
--   <i>See:</i> <a>videoTopicDetails</a> smart constructor.
data VideoTopicDetails

-- | Creates a value of <a>VideoTopicDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtdTopicIds</a></li>
--   <li><a>vtdRelevantTopicIds</a></li>
--   </ul>
videoTopicDetails :: VideoTopicDetails

-- | A list of Freebase topic IDs that are centrally associated with the
--   video. These are topics that are centrally featured in the video, and
--   it can be said that the video is mainly about each of these. You can
--   retrieve information about each topic using the Freebase Topic API.
vtdTopicIds :: Lens' VideoTopicDetails [Text]

-- | Similar to topic_id, except that these topics are merely relevant to
--   the video. These are topics that may be mentioned in, or appear in the
--   video. You can retrieve information about each topic using Freebase
--   Topic API.
vtdRelevantTopicIds :: Lens' VideoTopicDetails [Text]

-- | Information about a resource that received a comment.
--   
--   <i>See:</i> <a>activityContentDetailsComment</a> smart constructor.
data ActivityContentDetailsComment

-- | Creates a value of <a>ActivityContentDetailsComment</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdcResourceId</a></li>
--   </ul>
activityContentDetailsComment :: ActivityContentDetailsComment

-- | The resourceId object contains information that identifies the
--   resource associated with the comment.
acdcResourceId :: Lens' ActivityContentDetailsComment (Maybe ResourceId)

-- | Privacy status of the channel.
data ChannelStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
CSPSPrivate :: ChannelStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
CSPSPublic :: ChannelStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
CSPSUnListed :: ChannelStatusPrivacyStatus
data LiveBroadcastStatus

-- | Creates a value of <a>LiveBroadcastStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbsLiveBroadcastPriority</a></li>
--   <li><a>lbsRecordingStatus</a></li>
--   <li><a>lbsLifeCycleStatus</a></li>
--   <li><a>lbsPrivacyStatus</a></li>
--   </ul>
liveBroadcastStatus :: LiveBroadcastStatus

-- | Priority of the live broadcast event (internal state).
lbsLiveBroadcastPriority :: Lens' LiveBroadcastStatus (Maybe LiveBroadcastStatusLiveBroadcastPriority)

-- | The broadcast's recording status.
lbsRecordingStatus :: Lens' LiveBroadcastStatus (Maybe LiveBroadcastStatusRecordingStatus)

-- | The broadcast's status. The status can be updated using the API's
--   liveBroadcasts.transition method.
lbsLifeCycleStatus :: Lens' LiveBroadcastStatus (Maybe LiveBroadcastStatusLifeCycleStatus)

-- | The broadcast's privacy status. Note that the broadcast represents
--   exactly one YouTube video, so the privacy settings are identical to
--   those supported for videos. In addition, you can set this field by
--   modifying the broadcast resource or by setting the privacyStatus field
--   of the corresponding video resource.
lbsPrivacyStatus :: Lens' LiveBroadcastStatus (Maybe LiveBroadcastStatusPrivacyStatus)

-- | Information about the uploaded video.
--   
--   <i>See:</i> <a>activityContentDetailsUpload</a> smart constructor.
data ActivityContentDetailsUpload

-- | Creates a value of <a>ActivityContentDetailsUpload</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acduVideoId</a></li>
--   </ul>
activityContentDetailsUpload :: ActivityContentDetailsUpload

-- | The ID that YouTube uses to uniquely identify the uploaded video.
acduVideoId :: Lens' ActivityContentDetailsUpload (Maybe Text)

-- | Information about a new playlist item.
--   
--   <i>See:</i> <a>activityContentDetailsPlayListItem</a> smart
--   constructor.
data ActivityContentDetailsPlayListItem

-- | Creates a value of <a>ActivityContentDetailsPlayListItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdpliResourceId</a></li>
--   <li><a>acdpliPlayListId</a></li>
--   <li><a>acdpliPlayListItemId</a></li>
--   </ul>
activityContentDetailsPlayListItem :: ActivityContentDetailsPlayListItem

-- | The resourceId object contains information about the resource that was
--   added to the playlist.
acdpliResourceId :: Lens' ActivityContentDetailsPlayListItem (Maybe ResourceId)

-- | The value that YouTube uses to uniquely identify the playlist.
acdpliPlayListId :: Lens' ActivityContentDetailsPlayListItem (Maybe Text)

-- | ID of the item within the playlist.
acdpliPlayListItemId :: Lens' ActivityContentDetailsPlayListItem (Maybe Text)

-- | Details about a social network post.
--   
--   <i>See:</i> <a>activityContentDetailsSocial</a> smart constructor.
data ActivityContentDetailsSocial

-- | Creates a value of <a>ActivityContentDetailsSocial</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdsResourceId</a></li>
--   <li><a>acdsImageURL</a></li>
--   <li><a>acdsAuthor</a></li>
--   <li><a>acdsReferenceURL</a></li>
--   <li><a>acdsType</a></li>
--   </ul>
activityContentDetailsSocial :: ActivityContentDetailsSocial

-- | The resourceId object encapsulates information that identifies the
--   resource associated with a social network post.
acdsResourceId :: Lens' ActivityContentDetailsSocial (Maybe ResourceId)

-- | An image of the post's author.
acdsImageURL :: Lens' ActivityContentDetailsSocial (Maybe Text)

-- | The author of the social network post.
acdsAuthor :: Lens' ActivityContentDetailsSocial (Maybe Text)

-- | The URL of the social network post.
acdsReferenceURL :: Lens' ActivityContentDetailsSocial (Maybe Text)

-- | The name of the social network.
acdsType :: Lens' ActivityContentDetailsSocial (Maybe ActivityContentDetailsSocialType)
data VideoSuggestionsEditorSuggestionsItem

-- | <pre>
--   audioQuietAudioSwap
--   </pre>
AudioQuietAudioSwap :: VideoSuggestionsEditorSuggestionsItem

-- | <pre>
--   videoAutoLevels
--   </pre>
VideoAutoLevels :: VideoSuggestionsEditorSuggestionsItem

-- | <pre>
--   videoCrop
--   </pre>
VideoCrop :: VideoSuggestionsEditorSuggestionsItem

-- | <pre>
--   videoStabilize
--   </pre>
VideoStabilize :: VideoSuggestionsEditorSuggestionsItem

-- | The video's rating from the Canadian Radio-Television and
--   Telecommunications Commission (CRTC) for Canadian French-language
--   broadcasts. For more information, see the Canadian Broadcast Standards
--   Council website.
data ContentRatingCatvfrRating

-- | <pre>
--   catvfr13plus
--   </pre>
Catvfr13plus :: ContentRatingCatvfrRating

-- | <pre>
--   catvfr16plus
--   </pre>
Catvfr16plus :: ContentRatingCatvfrRating

-- | <pre>
--   catvfr18plus
--   </pre>
Catvfr18plus :: ContentRatingCatvfrRating

-- | <pre>
--   catvfr8plus
--   </pre>
Catvfr8plus :: ContentRatingCatvfrRating

-- | <pre>
--   catvfrG
--   </pre>
CatvfrG :: ContentRatingCatvfrRating

-- | <pre>
--   catvfrUnrated
--   </pre>
CatvfrUnrated :: ContentRatingCatvfrRating

-- | The video's rating from Romania's CONSILIUL NATIONAL AL
--   AUDIOVIZUALULUI (CNA).
data ContentRatingCnaRating

-- | <pre>
--   cna12
--   </pre>
CNA12 :: ContentRatingCnaRating

-- | <pre>
--   cna15
--   </pre>
CNA15 :: ContentRatingCnaRating

-- | <pre>
--   cna18
--   </pre>
CNA18 :: ContentRatingCnaRating

-- | <pre>
--   cna18plus
--   </pre>
Cna18plus :: ContentRatingCnaRating

-- | <pre>
--   cnaAp
--   </pre>
CnaAp :: ContentRatingCnaRating

-- | <pre>
--   cnaUnrated
--   </pre>
CnaUnrated :: ContentRatingCnaRating

-- | A liveChatBan resource represents a ban for a YouTube live chat.
--   
--   <i>See:</i> <a>liveChatBan</a> smart constructor.
data LiveChatBan

-- | Creates a value of <a>LiveChatBan</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcbEtag</a></li>
--   <li><a>lcbSnippet</a></li>
--   <li><a>lcbKind</a></li>
--   <li><a>lcbId</a></li>
--   </ul>
liveChatBan :: LiveChatBan

-- | Etag of this resource.
lcbEtag :: Lens' LiveChatBan (Maybe Text)

-- | The snippet object contains basic details about the ban.
lcbSnippet :: Lens' LiveChatBan (Maybe LiveChatBanSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatBan".
lcbKind :: Lens' LiveChatBan Text

-- | The ID that YouTube assigns to uniquely identify the ban.
lcbId :: Lens' LiveChatBan (Maybe Text)

-- | The video's Canadian Home Video Rating System (CHVRS) rating.
data ContentRatingChvrsRating

-- | <pre>
--   chvrs14a
--   </pre>
Chvrs14a :: ContentRatingChvrsRating

-- | <pre>
--   chvrs18a
--   </pre>
Chvrs18a :: ContentRatingChvrsRating

-- | <pre>
--   chvrsE
--   </pre>
ChvrsE :: ContentRatingChvrsRating

-- | <pre>
--   chvrsG
--   </pre>
ChvrsG :: ContentRatingChvrsRating

-- | <pre>
--   chvrsPg
--   </pre>
ChvrsPg :: ContentRatingChvrsRating

-- | <pre>
--   chvrsR
--   </pre>
ChvrsR :: ContentRatingChvrsRating

-- | <pre>
--   chvrsUnrated
--   </pre>
ChvrsUnrated :: ContentRatingChvrsRating

-- | Information about a channel that a user subscribed to.
--   
--   <i>See:</i> <a>activityContentDetailsSubscription</a> smart
--   constructor.
data ActivityContentDetailsSubscription

-- | Creates a value of <a>ActivityContentDetailsSubscription</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aResourceId</a></li>
--   </ul>
activityContentDetailsSubscription :: ActivityContentDetailsSubscription

-- | The resourceId object contains information that identifies the
--   resource that the user subscribed to.
aResourceId :: Lens' ActivityContentDetailsSubscription (Maybe ResourceId)

-- | Information about a resource that received a positive (like) rating.
--   
--   <i>See:</i> <a>activityContentDetailsLike</a> smart constructor.
data ActivityContentDetailsLike

-- | Creates a value of <a>ActivityContentDetailsLike</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdlResourceId</a></li>
--   </ul>
activityContentDetailsLike :: ActivityContentDetailsLike

-- | The resourceId object contains information that identifies the rated
--   resource.
acdlResourceId :: Lens' ActivityContentDetailsLike (Maybe ResourceId)
data PlayListContentDetails

-- | Creates a value of <a>PlayListContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plcdItemCount</a></li>
--   </ul>
playListContentDetails :: PlayListContentDetails

-- | The number of videos in the playlist.
plcdItemCount :: Lens' PlayListContentDetails (Maybe Word32)

-- | The video's INCAA (Instituto Nacional de Cine y Artes Audiovisuales -
--   Argentina) rating.
data ContentRatingIncaaRating

-- | <pre>
--   incaaAtp
--   </pre>
IncaaAtp :: ContentRatingIncaaRating

-- | <pre>
--   incaaC
--   </pre>
IncaaC :: ContentRatingIncaaRating

-- | <pre>
--   incaaSam13
--   </pre>
INCAASAM13 :: ContentRatingIncaaRating

-- | <pre>
--   incaaSam16
--   </pre>
INCAASAM16 :: ContentRatingIncaaRating

-- | <pre>
--   incaaSam18
--   </pre>
INCAASAM18 :: ContentRatingIncaaRating

-- | <pre>
--   incaaUnrated
--   </pre>
IncaaUnrated :: ContentRatingIncaaRating

-- | The video's rating from Statens medieråd (Sweden's National Media
--   Council).
data ContentRatingSmsaRating

-- | <pre>
--   smsa11
--   </pre>
SMSA11 :: ContentRatingSmsaRating

-- | <pre>
--   smsa15
--   </pre>
SMSA15 :: ContentRatingSmsaRating

-- | <pre>
--   smsa7
--   </pre>
SMSA7 :: ContentRatingSmsaRating

-- | <pre>
--   smsaA
--   </pre>
SmsaA :: ContentRatingSmsaRating

-- | <pre>
--   smsaUnrated
--   </pre>
SmsaUnrated :: ContentRatingSmsaRating

-- | Paging details for lists of resources, including total number of items
--   available and number of resources returned in a single page.
--   
--   <i>See:</i> <a>pageInfo</a> smart constructor.
data PageInfo

-- | Creates a value of <a>PageInfo</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piResultsPerPage</a></li>
--   <li><a>piTotalResults</a></li>
--   </ul>
pageInfo :: PageInfo

-- | The number of results included in the API response.
piResultsPerPage :: Lens' PageInfo (Maybe Int32)

-- | The total number of results in the result set.
piTotalResults :: Lens' PageInfo (Maybe Int32)

-- | The video's Central Board of Film Certification (CBFC - India) rating.
data ContentRatingCbfcRating

-- | <pre>
--   cbfcA
--   </pre>
CbfcA :: ContentRatingCbfcRating

-- | <pre>
--   cbfcS
--   </pre>
CbfcS :: ContentRatingCbfcRating

-- | <pre>
--   cbfcU
--   </pre>
CbfcU :: ContentRatingCbfcRating

-- | <pre>
--   cbfcUA
--   </pre>
CbfcUA :: ContentRatingCbfcRating

-- | <pre>
--   cbfcUnrated
--   </pre>
CbfcUnrated :: ContentRatingCbfcRating

-- | Basic details about a video category, such as its localized title.
--   
--   <i>See:</i> <a>videoStatus</a> smart constructor.
data VideoStatus

-- | Creates a value of <a>VideoStatus</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vsFailureReason</a></li>
--   <li><a>vsPublicStatsViewable</a></li>
--   <li><a>vsRejectionReason</a></li>
--   <li><a>vsPublishAt</a></li>
--   <li><a>vsUploadStatus</a></li>
--   <li><a>vsPrivacyStatus</a></li>
--   <li><a>vsEmbeddable</a></li>
--   <li><a>vsLicense</a></li>
--   </ul>
videoStatus :: VideoStatus

-- | This value explains why a video failed to upload. This property is
--   only present if the uploadStatus property indicates that the upload
--   failed.
vsFailureReason :: Lens' VideoStatus (Maybe VideoStatusFailureReason)

-- | This value indicates if the extended video statistics on the watch
--   page can be viewed by everyone. Note that the view count, likes, etc
--   will still be visible if this is disabled.
vsPublicStatsViewable :: Lens' VideoStatus (Maybe Bool)

-- | This value explains why YouTube rejected an uploaded video. This
--   property is only present if the uploadStatus property indicates that
--   the upload was rejected.
vsRejectionReason :: Lens' VideoStatus (Maybe VideoStatusRejectionReason)

-- | The date and time when the video is scheduled to publish. It can be
--   set only if the privacy status of the video is private. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
vsPublishAt :: Lens' VideoStatus (Maybe UTCTime)

-- | The status of the uploaded video.
vsUploadStatus :: Lens' VideoStatus (Maybe VideoStatusUploadStatus)

-- | The video's privacy status.
vsPrivacyStatus :: Lens' VideoStatus (Maybe VideoStatusPrivacyStatus)

-- | This value indicates if the video can be embedded on another website.
vsEmbeddable :: Lens' VideoStatus (Maybe Bool)

-- | The video's license.
vsLicense :: Lens' VideoStatus (Maybe VideoStatusLicense)

-- | The video's rating from the Kenya Film Classification Board.
data ContentRatingKfcbRating

-- | <pre>
--   kfcb16plus
--   </pre>
Kfcb16plus :: ContentRatingKfcbRating

-- | <pre>
--   kfcbG
--   </pre>
KfcbG :: ContentRatingKfcbRating

-- | <pre>
--   kfcbPg
--   </pre>
KfcbPg :: ContentRatingKfcbRating

-- | <pre>
--   kfcbR
--   </pre>
KfcbR :: ContentRatingKfcbRating

-- | <pre>
--   kfcbUnrated
--   </pre>
KfcbUnrated :: ContentRatingKfcbRating

-- | Describes original video file properties, including technical details
--   about audio and video streams, but also metadata information like
--   content length, digitization time, or geotagging information.
--   
--   <i>See:</i> <a>videoFileDetails</a> smart constructor.
data VideoFileDetails

-- | Creates a value of <a>VideoFileDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vfdBitrateBps</a></li>
--   <li><a>vfdCreationTime</a></li>
--   <li><a>vfdDurationMs</a></li>
--   <li><a>vfdFileSize</a></li>
--   <li><a>vfdFileType</a></li>
--   <li><a>vfdContainer</a></li>
--   <li><a>vfdVideoStreams</a></li>
--   <li><a>vfdAudioStreams</a></li>
--   <li><a>vfdFileName</a></li>
--   </ul>
videoFileDetails :: VideoFileDetails

-- | The uploaded video file's combined (video and audio) bitrate in bits
--   per second.
vfdBitrateBps :: Lens' VideoFileDetails (Maybe Word64)

-- | The date and time when the uploaded video file was created. The value
--   is specified in ISO 8601 format. Currently, the following ISO 8601
--   formats are supported: - Date only: YYYY-MM-DD - Naive time:
--   YYYY-MM-DDTHH:MM:SS - Time with timezone: YYYY-MM-DDTHH:MM:SS+HH:MM
vfdCreationTime :: Lens' VideoFileDetails (Maybe Text)

-- | The length of the uploaded video in milliseconds.
vfdDurationMs :: Lens' VideoFileDetails (Maybe Word64)

-- | The uploaded file's size in bytes. This field is present whether a
--   video file or another type of file was uploaded.
vfdFileSize :: Lens' VideoFileDetails (Maybe Word64)

-- | The uploaded file's type as detected by YouTube's video processing
--   engine. Currently, YouTube only processes video files, but this field
--   is present whether a video file or another type of file was uploaded.
vfdFileType :: Lens' VideoFileDetails (Maybe VideoFileDetailsFileType)

-- | The uploaded video file's container format.
vfdContainer :: Lens' VideoFileDetails (Maybe Text)

-- | A list of video streams contained in the uploaded video file. Each
--   item in the list contains detailed metadata about a video stream.
vfdVideoStreams :: Lens' VideoFileDetails [VideoFileDetailsVideoStream]

-- | A list of audio streams contained in the uploaded video file. Each
--   item in the list contains detailed metadata about an audio stream.
vfdAudioStreams :: Lens' VideoFileDetails [VideoFileDetailsAudioStream]

-- | The uploaded file's name. This field is present whether a video file
--   or another type of file was uploaded.
vfdFileName :: Lens' VideoFileDetails (Maybe Text)
data ThumbnailSetResponse

-- | Creates a value of <a>ThumbnailSetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsrEtag</a></li>
--   <li><a>tsrKind</a></li>
--   <li><a>tsrItems</a></li>
--   <li><a>tsrVisitorId</a></li>
--   <li><a>tsrEventId</a></li>
--   </ul>
thumbnailSetResponse :: ThumbnailSetResponse

-- | Etag of this resource.
tsrEtag :: Lens' ThumbnailSetResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#thumbnailSetResponse".
tsrKind :: Lens' ThumbnailSetResponse Text

-- | A list of thumbnails.
tsrItems :: Lens' ThumbnailSetResponse [ThumbnailDetails]

-- | The visitorId identifies the visitor.
tsrVisitorId :: Lens' ThumbnailSetResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
tsrEventId :: Lens' ThumbnailSetResponse (Maybe Text)

-- | How severe this issue is to the stream.
data LiveStreamConfigurationIssueSeverity

-- | <pre>
--   error
--   </pre>
Error' :: LiveStreamConfigurationIssueSeverity

-- | <pre>
--   info
--   </pre>
Info :: LiveStreamConfigurationIssueSeverity

-- | <pre>
--   warning
--   </pre>
Warning :: LiveStreamConfigurationIssueSeverity
data LiveBroadcastListResponse

-- | Creates a value of <a>LiveBroadcastListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lblrEtag</a></li>
--   <li><a>lblrTokenPagination</a></li>
--   <li><a>lblrNextPageToken</a></li>
--   <li><a>lblrPageInfo</a></li>
--   <li><a>lblrKind</a></li>
--   <li><a>lblrItems</a></li>
--   <li><a>lblrVisitorId</a></li>
--   <li><a>lblrEventId</a></li>
--   <li><a>lblrPrevPageToken</a></li>
--   </ul>
liveBroadcastListResponse :: LiveBroadcastListResponse

-- | Etag of this resource.
lblrEtag :: Lens' LiveBroadcastListResponse (Maybe Text)
lblrTokenPagination :: Lens' LiveBroadcastListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
lblrNextPageToken :: Lens' LiveBroadcastListResponse (Maybe Text)
lblrPageInfo :: Lens' LiveBroadcastListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveBroadcastListResponse".
lblrKind :: Lens' LiveBroadcastListResponse Text

-- | A list of broadcasts that match the request criteria.
lblrItems :: Lens' LiveBroadcastListResponse [LiveBroadcast]

-- | The visitorId identifies the visitor.
lblrVisitorId :: Lens' LiveBroadcastListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
lblrEventId :: Lens' LiveBroadcastListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
lblrPrevPageToken :: Lens' LiveBroadcastListResponse (Maybe Text)

-- | Details about the content of a channel.
--   
--   <i>See:</i> <a>channelContentDetails</a> smart constructor.
data ChannelContentDetails

-- | Creates a value of <a>ChannelContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccdRelatedPlayLists</a></li>
--   </ul>
channelContentDetails :: ChannelContentDetails
ccdRelatedPlayLists :: Lens' ChannelContentDetails (Maybe ChannelContentDetailsRelatedPlayLists)

-- | The videoDefinition parameter lets you restrict a search to only
--   include either high definition (HD) or standard definition (SD)
--   videos. HD videos are available for playback in at least 720p, though
--   higher resolutions, like 1080p, might also be available. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
data SearchListVideoDefinition

-- | <tt>any</tt> Return all videos, regardless of their resolution.
SLVDAny :: SearchListVideoDefinition

-- | <tt>high</tt> Only retrieve HD videos.
SLVDHigh :: SearchListVideoDefinition

-- | <tt>standard</tt> Only retrieve videos in standard definition.
SLVDStandard :: SearchListVideoDefinition

-- | Details about a resource which was added to a channel.
--   
--   <i>See:</i> <a>activityContentDetailsChannelItem</a> smart
--   constructor.
data ActivityContentDetailsChannelItem

-- | Creates a value of <a>ActivityContentDetailsChannelItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdciResourceId</a></li>
--   </ul>
activityContentDetailsChannelItem :: ActivityContentDetailsChannelItem

-- | The resourceId object contains information that identifies the
--   resource that was added to the channel.
acdciResourceId :: Lens' ActivityContentDetailsChannelItem (Maybe ResourceId)
data VideoListResponse

-- | Creates a value of <a>VideoListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlrEtag</a></li>
--   <li><a>vlrTokenPagination</a></li>
--   <li><a>vlrNextPageToken</a></li>
--   <li><a>vlrPageInfo</a></li>
--   <li><a>vlrKind</a></li>
--   <li><a>vlrItems</a></li>
--   <li><a>vlrVisitorId</a></li>
--   <li><a>vlrEventId</a></li>
--   <li><a>vlrPrevPageToken</a></li>
--   </ul>
videoListResponse :: VideoListResponse

-- | Etag of this resource.
vlrEtag :: Lens' VideoListResponse (Maybe Text)
vlrTokenPagination :: Lens' VideoListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
vlrNextPageToken :: Lens' VideoListResponse (Maybe Text)
vlrPageInfo :: Lens' VideoListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoListResponse".
vlrKind :: Lens' VideoListResponse Text

-- | A list of videos that match the request criteria.
vlrItems :: Lens' VideoListResponse [Video]

-- | The visitorId identifies the visitor.
vlrVisitorId :: Lens' VideoListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
vlrEventId :: Lens' VideoListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
vlrPrevPageToken :: Lens' VideoListResponse (Maybe Text)

-- | Details about monetization of a YouTube Video.
--   
--   <i>See:</i> <a>videoMonetizationDetails</a> smart constructor.
data VideoMonetizationDetails

-- | Creates a value of <a>VideoMonetizationDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vmdAccess</a></li>
--   </ul>
videoMonetizationDetails :: VideoMonetizationDetails

-- | The value of access indicates whether the video can be monetized or
--   not.
vmdAccess :: Lens' VideoMonetizationDetails (Maybe AccessPolicy)

-- | Video game rating, if any.
data VideoAgeGatingVideoGameRating

-- | <pre>
--   anyone
--   </pre>
Anyone :: VideoAgeGatingVideoGameRating

-- | <pre>
--   m15Plus
--   </pre>
M15Plus :: VideoAgeGatingVideoGameRating

-- | <pre>
--   m16Plus
--   </pre>
M16Plus :: VideoAgeGatingVideoGameRating

-- | <pre>
--   m17Plus
--   </pre>
M17Plus :: VideoAgeGatingVideoGameRating

-- | The video's rating from Indonesia's Lembaga Sensor Film.
data ContentRatingLsfRating

-- | <pre>
--   lsf13
--   </pre>
LSF13 :: ContentRatingLsfRating

-- | <pre>
--   lsf17
--   </pre>
LSF17 :: ContentRatingLsfRating

-- | <pre>
--   lsf21
--   </pre>
LSF21 :: ContentRatingLsfRating

-- | <pre>
--   lsfA
--   </pre>
LsfA :: ContentRatingLsfRating

-- | <pre>
--   lsfBo
--   </pre>
LsfBo :: ContentRatingLsfRating

-- | <pre>
--   lsfD
--   </pre>
LsfD :: ContentRatingLsfRating

-- | <pre>
--   lsfR
--   </pre>
LsfR :: ContentRatingLsfRating

-- | <pre>
--   lsfSu
--   </pre>
LsfSu :: ContentRatingLsfRating

-- | <pre>
--   lsfUnrated
--   </pre>
LsfUnrated :: ContentRatingLsfRating

-- | A single tag suggestion with it's relevance information.
--   
--   <i>See:</i> <a>videoSuggestionsTagSuggestion</a> smart constructor.
data VideoSuggestionsTagSuggestion

-- | Creates a value of <a>VideoSuggestionsTagSuggestion</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vstsTag</a></li>
--   <li><a>vstsCategoryRestricts</a></li>
--   </ul>
videoSuggestionsTagSuggestion :: VideoSuggestionsTagSuggestion

-- | The keyword tag suggested for the video.
vstsTag :: Lens' VideoSuggestionsTagSuggestion (Maybe Text)

-- | A set of video categories for which the tag is relevant. You can use
--   this information to display appropriate tag suggestions based on the
--   video category that the video uploader associates with the video. By
--   default, tag suggestions are relevant for all categories if there are
--   no restricts defined for the keyword.
vstsCategoryRestricts :: Lens' VideoSuggestionsTagSuggestion [Text]
data LiveChatModeratorListResponse

-- | Creates a value of <a>LiveChatModeratorListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lEtag</a></li>
--   <li><a>lTokenPagination</a></li>
--   <li><a>lNextPageToken</a></li>
--   <li><a>lPageInfo</a></li>
--   <li><a>lKind</a></li>
--   <li><a>lItems</a></li>
--   <li><a>lVisitorId</a></li>
--   <li><a>lEventId</a></li>
--   <li><a>lPrevPageToken</a></li>
--   </ul>
liveChatModeratorListResponse :: LiveChatModeratorListResponse

-- | Etag of this resource.
lEtag :: Lens' LiveChatModeratorListResponse (Maybe Text)
lTokenPagination :: Lens' LiveChatModeratorListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
lNextPageToken :: Lens' LiveChatModeratorListResponse (Maybe Text)
lPageInfo :: Lens' LiveChatModeratorListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatModeratorListResponse".
lKind :: Lens' LiveChatModeratorListResponse Text

-- | A list of moderators that match the request criteria.
lItems :: Lens' LiveChatModeratorListResponse [LiveChatModerator]

-- | The visitorId identifies the visitor.
lVisitorId :: Lens' LiveChatModeratorListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
lEventId :: Lens' LiveChatModeratorListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
lPrevPageToken :: Lens' LiveChatModeratorListResponse (Maybe Text)

-- | Basic details about an activity, including title, description,
--   thumbnails, activity type and group.
--   
--   <i>See:</i> <a>activitySnippet</a> smart constructor.
data ActivitySnippet

-- | Creates a value of <a>ActivitySnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asPublishedAt</a></li>
--   <li><a>asChannelTitle</a></li>
--   <li><a>asChannelId</a></li>
--   <li><a>asThumbnails</a></li>
--   <li><a>asGroupId</a></li>
--   <li><a>asTitle</a></li>
--   <li><a>asType</a></li>
--   <li><a>asDescription</a></li>
--   </ul>
activitySnippet :: ActivitySnippet

-- | The date and time that the video was uploaded. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
asPublishedAt :: Lens' ActivitySnippet (Maybe UTCTime)

-- | Channel title for the channel responsible for this activity
asChannelTitle :: Lens' ActivitySnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the channel associated
--   with the activity.
asChannelId :: Lens' ActivitySnippet (Maybe Text)

-- | A map of thumbnail images associated with the resource that is
--   primarily associated with the activity. For each object in the map,
--   the key is the name of the thumbnail image, and the value is an object
--   that contains other information about the thumbnail.
asThumbnails :: Lens' ActivitySnippet (Maybe ThumbnailDetails)

-- | The group ID associated with the activity. A group ID identifies user
--   events that are associated with the same user and resource. For
--   example, if a user rates a video and marks the same video as a
--   favorite, the entries for those events would have the same group ID in
--   the user's activity feed. In your user interface, you can avoid
--   repetition by grouping events with the same groupId value.
asGroupId :: Lens' ActivitySnippet (Maybe Text)

-- | The title of the resource primarily associated with the activity.
asTitle :: Lens' ActivitySnippet (Maybe Text)

-- | The type of activity that the resource describes.
asType :: Lens' ActivitySnippet (Maybe ActivitySnippetType)

-- | The description of the resource primarily associated with the
--   activity.
asDescription :: Lens' ActivitySnippet (Maybe Text)

-- | Freebase topic information related to the channel.
--   
--   <i>See:</i> <a>channelTopicDetails</a> smart constructor.
data ChannelTopicDetails

-- | Creates a value of <a>ChannelTopicDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctdTopicIds</a></li>
--   </ul>
channelTopicDetails :: ChannelTopicDetails

-- | A list of Freebase topic IDs associated with the channel. You can
--   retrieve information about each topic using the Freebase Topic API.
ctdTopicIds :: Lens' ChannelTopicDetails [Text]

-- | The type of ban.
data LiveChatBanSnippetType

-- | <pre>
--   permanent
--   </pre>
LCBSTPermanent :: LiveChatBanSnippetType

-- | <pre>
--   temporary
--   </pre>
LCBSTTemporary :: LiveChatBanSnippetType

-- | The video's rating from Thailand's Board of Film and Video Censors.
data ContentRatingBfvcRating

-- | <pre>
--   bfvc13
--   </pre>
BFVC13 :: ContentRatingBfvcRating

-- | <pre>
--   bfvc15
--   </pre>
BFVC15 :: ContentRatingBfvcRating

-- | <pre>
--   bfvc18
--   </pre>
BFVC18 :: ContentRatingBfvcRating

-- | <pre>
--   bfvc20
--   </pre>
BFVC20 :: ContentRatingBfvcRating

-- | <pre>
--   bfvcB
--   </pre>
BfvcB :: ContentRatingBfvcRating

-- | <pre>
--   bfvcE
--   </pre>
BfvcE :: ContentRatingBfvcRating

-- | <pre>
--   bfvcG
--   </pre>
BfvcG :: ContentRatingBfvcRating

-- | <pre>
--   bfvcUnrated
--   </pre>
BfvcUnrated :: ContentRatingBfvcRating
data LiveChatPollEditedDetails

-- | Creates a value of <a>LiveChatPollEditedDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpedPrompt</a></li>
--   <li><a>lcpedItems</a></li>
--   <li><a>lcpedId</a></li>
--   </ul>
liveChatPollEditedDetails :: LiveChatPollEditedDetails
lcpedPrompt :: Lens' LiveChatPollEditedDetails (Maybe Text)
lcpedItems :: Lens' LiveChatPollEditedDetails [LiveChatPollItem]
lcpedId :: Lens' LiveChatPollEditedDetails (Maybe Text)

-- | The type of the topic.
data LiveBroadcastTopicType

-- | <pre>
--   videoGame
--   </pre>
VideoGame :: LiveBroadcastTopicType
data VideoCategoryListResponse

-- | Creates a value of <a>VideoCategoryListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vclrEtag</a></li>
--   <li><a>vclrTokenPagination</a></li>
--   <li><a>vclrNextPageToken</a></li>
--   <li><a>vclrPageInfo</a></li>
--   <li><a>vclrKind</a></li>
--   <li><a>vclrItems</a></li>
--   <li><a>vclrVisitorId</a></li>
--   <li><a>vclrEventId</a></li>
--   <li><a>vclrPrevPageToken</a></li>
--   </ul>
videoCategoryListResponse :: VideoCategoryListResponse

-- | Etag of this resource.
vclrEtag :: Lens' VideoCategoryListResponse (Maybe Text)
vclrTokenPagination :: Lens' VideoCategoryListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
vclrNextPageToken :: Lens' VideoCategoryListResponse (Maybe Text)
vclrPageInfo :: Lens' VideoCategoryListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoCategoryListResponse".
vclrKind :: Lens' VideoCategoryListResponse Text

-- | A list of video categories that can be associated with YouTube videos.
--   In this map, the video category ID is the map key, and its value is
--   the corresponding videoCategory resource.
vclrItems :: Lens' VideoCategoryListResponse [VideoCategory]

-- | The visitorId identifies the visitor.
vclrVisitorId :: Lens' VideoCategoryListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
vclrEventId :: Lens' VideoCategoryListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
vclrPrevPageToken :: Lens' VideoCategoryListResponse (Maybe Text)

-- | Describes processing status and progress and availability of some
--   other Video resource parts.
--   
--   <i>See:</i> <a>videoProcessingDetails</a> smart constructor.
data VideoProcessingDetails

-- | Creates a value of <a>VideoProcessingDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpdProcessingFailureReason</a></li>
--   <li><a>vpdProcessingIssuesAvailability</a></li>
--   <li><a>vpdProcessingProgress</a></li>
--   <li><a>vpdThumbnailsAvailability</a></li>
--   <li><a>vpdTagSuggestionsAvailability</a></li>
--   <li><a>vpdProcessingStatus</a></li>
--   <li><a>vpdEditorSuggestionsAvailability</a></li>
--   <li><a>vpdFileDetailsAvailability</a></li>
--   </ul>
videoProcessingDetails :: VideoProcessingDetails

-- | The reason that YouTube failed to process the video. This property
--   will only have a value if the processingStatus property's value is
--   failed.
vpdProcessingFailureReason :: Lens' VideoProcessingDetails (Maybe VideoProcessingDetailsProcessingFailureReason)

-- | This value indicates whether the video processing engine has generated
--   suggestions that might improve YouTube's ability to process the the
--   video, warnings that explain video processing problems, or errors that
--   cause video processing problems. You can retrieve these suggestions by
--   requesting the suggestions part in your videos.list() request.
vpdProcessingIssuesAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | The processingProgress object contains information about the progress
--   YouTube has made in processing the video. The values are really only
--   relevant if the video's processing status is processing.
vpdProcessingProgress :: Lens' VideoProcessingDetails (Maybe VideoProcessingDetailsProcessingProgress)

-- | This value indicates whether thumbnail images have been generated for
--   the video.
vpdThumbnailsAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | This value indicates whether keyword (tag) suggestions are available
--   for the video. Tags can be added to a video's metadata to make it
--   easier for other users to find the video. You can retrieve these
--   suggestions by requesting the suggestions part in your videos.list()
--   request.
vpdTagSuggestionsAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | The video's processing status. This value indicates whether YouTube
--   was able to process the video or if the video is still being
--   processed.
vpdProcessingStatus :: Lens' VideoProcessingDetails (Maybe VideoProcessingDetailsProcessingStatus)

-- | This value indicates whether video editing suggestions, which might
--   improve video quality or the playback experience, are available for
--   the video. You can retrieve these suggestions by requesting the
--   suggestions part in your videos.list() request.
vpdEditorSuggestionsAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | This value indicates whether file details are available for the
--   uploaded video. You can retrieve a video's file details by requesting
--   the fileDetails part in your videos.list() request.
vpdFileDetailsAvailability :: Lens' VideoProcessingDetails (Maybe Text)

-- | Basic details about a comment thread.
--   
--   <i>See:</i> <a>commentThreadSnippet</a> smart constructor.
data CommentThreadSnippet

-- | Creates a value of <a>CommentThreadSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctsIsPublic</a></li>
--   <li><a>ctsChannelId</a></li>
--   <li><a>ctsCanReply</a></li>
--   <li><a>ctsVideoId</a></li>
--   <li><a>ctsTotalReplyCount</a></li>
--   <li><a>ctsTopLevelComment</a></li>
--   </ul>
commentThreadSnippet :: CommentThreadSnippet

-- | Whether the thread (and therefore all its comments) is visible to all
--   YouTube users.
ctsIsPublic :: Lens' CommentThreadSnippet (Maybe Bool)

-- | The YouTube channel the comments in the thread refer to or the channel
--   with the video the comments refer to. If video_id isn't set the
--   comments refer to the channel itself.
ctsChannelId :: Lens' CommentThreadSnippet (Maybe Text)

-- | Whether the current viewer of the thread can reply to it. This is
--   viewer specific - other viewers may see a different value for this
--   field.
ctsCanReply :: Lens' CommentThreadSnippet (Maybe Bool)

-- | The ID of the video the comments refer to, if any. No video_id implies
--   a channel discussion comment.
ctsVideoId :: Lens' CommentThreadSnippet (Maybe Text)

-- | The total number of replies (not including the top level comment).
ctsTotalReplyCount :: Lens' CommentThreadSnippet (Maybe Word32)

-- | The top level comment of this thread.
ctsTopLevelComment :: Lens' CommentThreadSnippet (Maybe Comment)

-- | The videoDuration parameter filters video search results based on
--   their duration. If you specify a value for this parameter, you must
--   also set the type parameter's value to video.
data SearchListVideoDuration

-- | <tt>any</tt> Do not filter video search results based on their
--   duration. This is the default value.
Any :: SearchListVideoDuration

-- | <tt>long</tt> Only include videos longer than 20 minutes.
Long :: SearchListVideoDuration

-- | <tt>medium</tt> Only include videos that are between four and 20
--   minutes long (inclusive).
Medium :: SearchListVideoDuration

-- | <tt>short</tt> Only include videos that are less than four minutes
--   long.
Short :: SearchListVideoDuration

-- | The videoCaption parameter indicates whether the API should filter
--   video search results based on whether they have captions. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
data SearchListVideoCaption

-- | <tt>any</tt> Do not filter results based on caption availability.
SLVCAny :: SearchListVideoCaption

-- | <tt>closedCaption</tt> Only include videos that have captions.
SLVCClosedCaption :: SearchListVideoCaption

-- | <tt>none</tt> Only include videos that do not have captions.
SLVCNone :: SearchListVideoCaption

-- | Set this parameter's value to like or dislike to instruct the API to
--   only return videos liked or disliked by the authenticated user.
data VideosListMyRating

-- | <tt>dislike</tt> Returns only videos disliked by the authenticated
--   user.
Dislike :: VideosListMyRating

-- | <tt>like</tt> Returns only video liked by the authenticated user.
Like :: VideosListMyRating
data ChannelSectionListResponse

-- | Creates a value of <a>ChannelSectionListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cslrEtag</a></li>
--   <li><a>cslrKind</a></li>
--   <li><a>cslrItems</a></li>
--   <li><a>cslrVisitorId</a></li>
--   <li><a>cslrEventId</a></li>
--   </ul>
channelSectionListResponse :: ChannelSectionListResponse

-- | Etag of this resource.
cslrEtag :: Lens' ChannelSectionListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channelSectionListResponse".
cslrKind :: Lens' ChannelSectionListResponse Text

-- | A list of ChannelSections that match the request criteria.
cslrItems :: Lens' ChannelSectionListResponse [ChannelSection]

-- | The visitorId identifies the visitor.
cslrVisitorId :: Lens' ChannelSectionListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
cslrEventId :: Lens' ChannelSectionListResponse (Maybe Text)

-- | The rating the viewer has given to this comment. For the time being
--   this will never return RATE_TYPE_DISLIKE and instead return
--   RATE_TYPE_NONE. This may change in the future.
data CommentSnippetViewerRating

-- | <pre>
--   dislike
--   </pre>
CSVRDislike :: CommentSnippetViewerRating

-- | <pre>
--   like
--   </pre>
CSVRLike :: CommentSnippetViewerRating

-- | <pre>
--   none
--   </pre>
CSVRNone :: CommentSnippetViewerRating

-- | <pre>
--   unspecified
--   </pre>
CSVRUnspecified :: CommentSnippetViewerRating

-- | A videoAbuseReportReason resource identifies a reason that a video
--   could be reported as abusive. Video abuse report reasons are used with
--   video.ReportAbuse.
--   
--   <i>See:</i> <a>videoAbuseReportReason</a> smart constructor.
data VideoAbuseReportReason

-- | Creates a value of <a>VideoAbuseReportReason</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varrEtag</a></li>
--   <li><a>varrSnippet</a></li>
--   <li><a>varrKind</a></li>
--   <li><a>varrId</a></li>
--   </ul>
videoAbuseReportReason :: VideoAbuseReportReason

-- | Etag of this resource.
varrEtag :: Lens' VideoAbuseReportReason (Maybe Text)

-- | The snippet object contains basic details about the abuse report
--   reason.
varrSnippet :: Lens' VideoAbuseReportReason (Maybe VideoAbuseReportReasonSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoAbuseReportReason".
varrKind :: Lens' VideoAbuseReportReason Text

-- | The high-level, or primary, reason that the content is abusive. The
--   value is an abuse report reason ID.
varrId :: Lens' VideoAbuseReportReason (Maybe Text)
data LiveStreamConfigurationIssue

-- | Creates a value of <a>LiveStreamConfigurationIssue</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsciSeverity</a></li>
--   <li><a>lsciReason</a></li>
--   <li><a>lsciType</a></li>
--   <li><a>lsciDescription</a></li>
--   </ul>
liveStreamConfigurationIssue :: LiveStreamConfigurationIssue

-- | How severe this issue is to the stream.
lsciSeverity :: Lens' LiveStreamConfigurationIssue (Maybe LiveStreamConfigurationIssueSeverity)

-- | The short-form reason for this issue.
lsciReason :: Lens' LiveStreamConfigurationIssue (Maybe Text)

-- | The kind of error happening.
lsciType :: Lens' LiveStreamConfigurationIssue (Maybe LiveStreamConfigurationIssueType)

-- | The long-form description of the issue and how to resolve it.
lsciDescription :: Lens' LiveStreamConfigurationIssue (Maybe Text)

-- | A liveChatMessage resource represents a chat message in a YouTube Live
--   Chat.
--   
--   <i>See:</i> <a>liveChatMessage</a> smart constructor.
data LiveChatMessage

-- | Creates a value of <a>LiveChatMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmEtag</a></li>
--   <li><a>lcmSnippet</a></li>
--   <li><a>lcmKind</a></li>
--   <li><a>lcmAuthorDetails</a></li>
--   <li><a>lcmId</a></li>
--   </ul>
liveChatMessage :: LiveChatMessage

-- | Etag of this resource.
lcmEtag :: Lens' LiveChatMessage (Maybe Text)

-- | The snippet object contains basic details about the message.
lcmSnippet :: Lens' LiveChatMessage (Maybe LiveChatMessageSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatMessage".
lcmKind :: Lens' LiveChatMessage Text

-- | The authorDetails object contains basic details about the user that
--   posted this message.
lcmAuthorDetails :: Lens' LiveChatMessage (Maybe LiveChatMessageAuthorDetails)

-- | The ID that YouTube assigns to uniquely identify the message.
lcmId :: Lens' LiveChatMessage (Maybe Text)

-- | A channel resource contains information about a YouTube channel.
--   
--   <i>See:</i> <a>channel</a> smart constructor.
data Channel

-- | Creates a value of <a>Channel</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>chaStatus</a></li>
--   <li><a>chaEtag</a></li>
--   <li><a>chaAuditDetails</a></li>
--   <li><a>chaContentOwnerDetails</a></li>
--   <li><a>chaSnippet</a></li>
--   <li><a>chaKind</a></li>
--   <li><a>chaTopicDetails</a></li>
--   <li><a>chaContentDetails</a></li>
--   <li><a>chaConversionPings</a></li>
--   <li><a>chaBrandingSettings</a></li>
--   <li><a>chaId</a></li>
--   <li><a>chaInvideoPromotion</a></li>
--   <li><a>chaStatistics</a></li>
--   <li><a>chaLocalizations</a></li>
--   </ul>
channel :: Channel

-- | The status object encapsulates information about the privacy status of
--   the channel.
chaStatus :: Lens' Channel (Maybe ChannelStatus)

-- | Etag of this resource.
chaEtag :: Lens' Channel (Maybe Text)

-- | The auditionDetails object encapsulates channel data that is relevant
--   for YouTube Partners during the audition process.
chaAuditDetails :: Lens' Channel (Maybe ChannelAuditDetails)

-- | The contentOwnerDetails object encapsulates channel data that is
--   relevant for YouTube Partners linked with the channel.
chaContentOwnerDetails :: Lens' Channel (Maybe ChannelContentOwnerDetails)

-- | The snippet object contains basic details about the channel, such as
--   its title, description, and thumbnail images.
chaSnippet :: Lens' Channel (Maybe ChannelSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channel".
chaKind :: Lens' Channel Text

-- | The topicDetails object encapsulates information about Freebase topics
--   associated with the channel.
chaTopicDetails :: Lens' Channel (Maybe ChannelTopicDetails)

-- | The contentDetails object encapsulates information about the channel's
--   content.
chaContentDetails :: Lens' Channel (Maybe ChannelContentDetails)

-- | The conversionPings object encapsulates information about conversion
--   pings that need to be respected by the channel.
chaConversionPings :: Lens' Channel (Maybe ChannelConversionPings)

-- | The brandingSettings object encapsulates information about the
--   branding of the channel.
chaBrandingSettings :: Lens' Channel (Maybe ChannelBrandingSettings)

-- | The ID that YouTube uses to uniquely identify the channel.
chaId :: Lens' Channel (Maybe Text)

-- | The invideoPromotion object encapsulates information about promotion
--   campaign associated with the channel.
chaInvideoPromotion :: Lens' Channel (Maybe InvideoPromotion)

-- | The statistics object encapsulates statistics for the channel.
chaStatistics :: Lens' Channel (Maybe ChannelStatistics)

-- | Localizations for different languages
chaLocalizations :: Lens' Channel (Maybe ChannelLocalizations)

-- | ChannelSection targeting setting.
--   
--   <i>See:</i> <a>channelSectionTargeting</a> smart constructor.
data ChannelSectionTargeting

-- | Creates a value of <a>ChannelSectionTargeting</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cstRegions</a></li>
--   <li><a>cstCountries</a></li>
--   <li><a>cstLanguages</a></li>
--   </ul>
channelSectionTargeting :: ChannelSectionTargeting

-- | The region the channel section is targeting.
cstRegions :: Lens' ChannelSectionTargeting [Text]

-- | The country the channel section is targeting.
cstCountries :: Lens' ChannelSectionTargeting [Text]

-- | The language the channel section is targeting.
cstLanguages :: Lens' ChannelSectionTargeting [Text]

-- | The video's rating from Malaysia's Film Censorship Board.
data ContentRatingFcbmRating

-- | <pre>
--   fcbm18
--   </pre>
FCBM18 :: ContentRatingFcbmRating

-- | <pre>
--   fcbm18pa
--   </pre>
Fcbm18pa :: ContentRatingFcbmRating

-- | <pre>
--   fcbm18pl
--   </pre>
Fcbm18pl :: ContentRatingFcbmRating

-- | <pre>
--   fcbm18sg
--   </pre>
Fcbm18sg :: ContentRatingFcbmRating

-- | <pre>
--   fcbm18sx
--   </pre>
Fcbm18sx :: ContentRatingFcbmRating

-- | <pre>
--   fcbmP13
--   </pre>
FCBMP13 :: ContentRatingFcbmRating

-- | <pre>
--   fcbmPg13
--   </pre>
FCBMPG13 :: ContentRatingFcbmRating

-- | <pre>
--   fcbmU
--   </pre>
FcbmU :: ContentRatingFcbmRating

-- | <pre>
--   fcbmUnrated
--   </pre>
FcbmUnrated :: ContentRatingFcbmRating
data LiveStreamListResponse

-- | Creates a value of <a>LiveStreamListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lslrEtag</a></li>
--   <li><a>lslrTokenPagination</a></li>
--   <li><a>lslrNextPageToken</a></li>
--   <li><a>lslrPageInfo</a></li>
--   <li><a>lslrKind</a></li>
--   <li><a>lslrItems</a></li>
--   <li><a>lslrVisitorId</a></li>
--   <li><a>lslrEventId</a></li>
--   <li><a>lslrPrevPageToken</a></li>
--   </ul>
liveStreamListResponse :: LiveStreamListResponse

-- | Etag of this resource.
lslrEtag :: Lens' LiveStreamListResponse (Maybe Text)
lslrTokenPagination :: Lens' LiveStreamListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
lslrNextPageToken :: Lens' LiveStreamListResponse (Maybe Text)
lslrPageInfo :: Lens' LiveStreamListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveStreamListResponse".
lslrKind :: Lens' LiveStreamListResponse Text

-- | A list of live streams that match the request criteria.
lslrItems :: Lens' LiveStreamListResponse [LiveStream]

-- | The visitorId identifies the visitor.
lslrVisitorId :: Lens' LiveStreamListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
lslrEventId :: Lens' LiveStreamListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
lslrPrevPageToken :: Lens' LiveStreamListResponse (Maybe Text)

-- | The broadcastStatus parameter filters the API response to only include
--   broadcasts with the specified status.
data LiveBroadcastsListBroadcastStatus

-- | <tt>active</tt> Return current live broadcasts.
LBLBSActive :: LiveBroadcastsListBroadcastStatus

-- | <tt>all</tt> Return all broadcasts.
LBLBSAll :: LiveBroadcastsListBroadcastStatus

-- | <tt>completed</tt> Return broadcasts that have already ended.
LBLBSCompleted :: LiveBroadcastsListBroadcastStatus

-- | <tt>upcoming</tt> Return broadcasts that have not yet started.
LBLBSUpcoming :: LiveBroadcastsListBroadcastStatus

-- | The video's rating from Taiwan's Ministry of Culture (文化部).
data ContentRatingMoctwRating

-- | <pre>
--   moctwG
--   </pre>
MoctwG :: ContentRatingMoctwRating

-- | <pre>
--   moctwP
--   </pre>
MoctwP :: ContentRatingMoctwRating

-- | <pre>
--   moctwPg
--   </pre>
MoctwPg :: ContentRatingMoctwRating

-- | <pre>
--   moctwR
--   </pre>
MoctwR :: ContentRatingMoctwRating

-- | <pre>
--   moctwR12
--   </pre>
MOCTWR12 :: ContentRatingMoctwRating

-- | <pre>
--   moctwR15
--   </pre>
MOCTWR15 :: ContentRatingMoctwRating

-- | <pre>
--   moctwUnrated
--   </pre>
MoctwUnrated :: ContentRatingMoctwRating

-- | The video's rating from the Austrian Board of Media Classification
--   (Bundesministerium für Unterricht, Kunst und Kultur).
data ContentRatingBmukkRating

-- | <pre>
--   bmukk10
--   </pre>
BMUKK10 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk12
--   </pre>
BMUKK12 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk14
--   </pre>
BMUKK14 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk16
--   </pre>
BMUKK16 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk6
--   </pre>
BMUKK6 :: ContentRatingBmukkRating

-- | <pre>
--   bmukk8
--   </pre>
BMUKK8 :: ContentRatingBmukkRating

-- | <pre>
--   bmukkAa
--   </pre>
BmukkAa :: ContentRatingBmukkRating

-- | <pre>
--   bmukkUnrated
--   </pre>
BmukkUnrated :: ContentRatingBmukkRating

-- | Localizations for different languages
--   
--   <i>See:</i> <a>channelLocalizations</a> smart constructor.
data ChannelLocalizations

-- | Creates a value of <a>ChannelLocalizations</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clAddtional</a></li>
--   </ul>
channelLocalizations :: HashMap Text ChannelLocalization -> ChannelLocalizations

-- | The language tag, using string since map_key require simple types.
clAddtional :: Lens' ChannelLocalizations (HashMap Text ChannelLocalization)

-- | Basic details about a playlist, including title, description and
--   thumbnails.
--   
--   <i>See:</i> <a>playListSnippet</a> smart constructor.
data PlayListSnippet

-- | Creates a value of <a>PlayListSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plsPublishedAt</a></li>
--   <li><a>plsChannelTitle</a></li>
--   <li><a>plsChannelId</a></li>
--   <li><a>plsThumbnails</a></li>
--   <li><a>plsLocalized</a></li>
--   <li><a>plsTitle</a></li>
--   <li><a>plsDescription</a></li>
--   <li><a>plsTags</a></li>
--   <li><a>plsDefaultLanguage</a></li>
--   </ul>
playListSnippet :: PlayListSnippet

-- | The date and time that the playlist was created. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
plsPublishedAt :: Lens' PlayListSnippet (Maybe UTCTime)

-- | The channel title of the channel that the video belongs to.
plsChannelTitle :: Lens' PlayListSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the channel that
--   published the playlist.
plsChannelId :: Lens' PlayListSnippet (Maybe Text)

-- | A map of thumbnail images associated with the playlist. For each
--   object in the map, the key is the name of the thumbnail image, and the
--   value is an object that contains other information about the
--   thumbnail.
plsThumbnails :: Lens' PlayListSnippet (Maybe ThumbnailDetails)

-- | Localized title and description, read-only.
plsLocalized :: Lens' PlayListSnippet (Maybe PlayListLocalization)

-- | The playlist's title.
plsTitle :: Lens' PlayListSnippet (Maybe Text)

-- | The playlist's description.
plsDescription :: Lens' PlayListSnippet (Maybe Text)

-- | Keyword tags associated with the playlist.
plsTags :: Lens' PlayListSnippet [Text]

-- | The language of the playlist's default title and description.
plsDefaultLanguage :: Lens' PlayListSnippet (Maybe Text)

-- | The video's Instituto de la Cinematografía y de las Artes
--   Audiovisuales (ICAA - Spain) rating.
data ContentRatingIcaaRating

-- | <pre>
--   icaa12
--   </pre>
ICAA12 :: ContentRatingIcaaRating

-- | <pre>
--   icaa13
--   </pre>
ICAA13 :: ContentRatingIcaaRating

-- | <pre>
--   icaa16
--   </pre>
ICAA16 :: ContentRatingIcaaRating

-- | <pre>
--   icaa18
--   </pre>
ICAA18 :: ContentRatingIcaaRating

-- | <pre>
--   icaa7
--   </pre>
ICAA7 :: ContentRatingIcaaRating

-- | <pre>
--   icaaApta
--   </pre>
IcaaApta :: ContentRatingIcaaRating

-- | <pre>
--   icaaUnrated
--   </pre>
IcaaUnrated :: ContentRatingIcaaRating

-- | <pre>
--   icaaX
--   </pre>
IcaaX :: ContentRatingIcaaRating
data VideoGetRatingResponse

-- | Creates a value of <a>VideoGetRatingResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vgrrEtag</a></li>
--   <li><a>vgrrKind</a></li>
--   <li><a>vgrrItems</a></li>
--   <li><a>vgrrVisitorId</a></li>
--   <li><a>vgrrEventId</a></li>
--   </ul>
videoGetRatingResponse :: VideoGetRatingResponse

-- | Etag of this resource.
vgrrEtag :: Lens' VideoGetRatingResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoGetRatingResponse".
vgrrKind :: Lens' VideoGetRatingResponse Text

-- | A list of ratings that match the request criteria.
vgrrItems :: Lens' VideoGetRatingResponse [VideoRating]

-- | The visitorId identifies the visitor.
vgrrVisitorId :: Lens' VideoGetRatingResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
vgrrEventId :: Lens' VideoGetRatingResponse (Maybe Text)

-- | Basic details about a video category, such as its localized title.
--   
--   <i>See:</i> <a>videoAbuseReportReasonSnippet</a> smart constructor.
data VideoAbuseReportReasonSnippet

-- | Creates a value of <a>VideoAbuseReportReasonSnippet</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varrsSecondaryReasons</a></li>
--   <li><a>varrsLabel</a></li>
--   </ul>
videoAbuseReportReasonSnippet :: VideoAbuseReportReasonSnippet

-- | The secondary reasons associated with this reason, if any are
--   available. (There might be 0 or more.)
varrsSecondaryReasons :: Lens' VideoAbuseReportReasonSnippet [VideoAbuseReportSecondaryReason]

-- | The localized label belonging to this abuse report reason.
varrsLabel :: Lens' VideoAbuseReportReasonSnippet (Maybe Text)

-- | This value explains why YouTube rejected an uploaded video. This
--   property is only present if the uploadStatus property indicates that
--   the upload was rejected.
data VideoStatusRejectionReason

-- | <pre>
--   claim
--   </pre>
Claim :: VideoStatusRejectionReason

-- | <pre>
--   copyright
--   </pre>
Copyright :: VideoStatusRejectionReason

-- | <pre>
--   duplicate
--   </pre>
Duplicate :: VideoStatusRejectionReason

-- | <pre>
--   inappropriate
--   </pre>
InAppropriate :: VideoStatusRejectionReason

-- | <pre>
--   legal
--   </pre>
Legal :: VideoStatusRejectionReason

-- | <pre>
--   length
--   </pre>
Length :: VideoStatusRejectionReason

-- | <pre>
--   termsOfUse
--   </pre>
TermsOfUse :: VideoStatusRejectionReason

-- | <pre>
--   trademark
--   </pre>
Trademark :: VideoStatusRejectionReason

-- | <pre>
--   uploaderAccountClosed
--   </pre>
UploaderAccountClosed :: VideoStatusRejectionReason

-- | <pre>
--   uploaderAccountSuspended
--   </pre>
UploaderAccountSuspended :: VideoStatusRejectionReason

-- | A caption resource represents a YouTube caption track. A caption track
--   is associated with exactly one YouTube video.
--   
--   <i>See:</i> <a>caption</a> smart constructor.
data Caption

-- | Creates a value of <a>Caption</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>capEtag</a></li>
--   <li><a>capSnippet</a></li>
--   <li><a>capKind</a></li>
--   <li><a>capId</a></li>
--   </ul>
caption :: Caption

-- | Etag of this resource.
capEtag :: Lens' Caption (Maybe Text)

-- | The snippet object contains basic details about the caption.
capSnippet :: Lens' Caption (Maybe CaptionSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#caption".
capKind :: Lens' Caption Text

-- | The ID that YouTube uses to uniquely identify the caption track.
capId :: Lens' Caption (Maybe Text)

-- | DEPRECATED Region restriction of the video.
--   
--   <i>See:</i> <a>videoContentDetailsRegionRestriction</a> smart
--   constructor.
data VideoContentDetailsRegionRestriction

-- | Creates a value of <a>VideoContentDetailsRegionRestriction</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcdrrAllowed</a></li>
--   <li><a>vcdrrBlocked</a></li>
--   </ul>
videoContentDetailsRegionRestriction :: VideoContentDetailsRegionRestriction

-- | A list of region codes that identify countries where the video is
--   viewable. If this property is present and a country is not listed in
--   its value, then the video is blocked from appearing in that country.
--   If this property is present and contains an empty list, the video is
--   blocked in all countries.
vcdrrAllowed :: Lens' VideoContentDetailsRegionRestriction [Text]

-- | A list of region codes that identify countries where the video is
--   blocked. If this property is present and a country is not listed in
--   its value, then the video is viewable in that country. If this
--   property is present and contains an empty list, the video is viewable
--   in all countries.
vcdrrBlocked :: Lens' VideoContentDetailsRegionRestriction [Text]

-- | Describes a temporal position of a visual widget inside a video.
--   
--   <i>See:</i> <a>invideoTiming</a> smart constructor.
data InvideoTiming

-- | Creates a value of <a>InvideoTiming</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itDurationMs</a></li>
--   <li><a>itOffSetMs</a></li>
--   <li><a>itType</a></li>
--   </ul>
invideoTiming :: InvideoTiming

-- | Defines the duration in milliseconds for which the promotion should be
--   displayed. If missing, the client should use the default.
itDurationMs :: Lens' InvideoTiming (Maybe Word64)

-- | Defines the time at which the promotion will appear. Depending on the
--   value of type the value of the offsetMs field will represent a time
--   offset from the start or from the end of the video, expressed in
--   milliseconds.
itOffSetMs :: Lens' InvideoTiming (Maybe Word64)

-- | Describes a timing type. If the value is offsetFromStart, then the
--   offsetMs field represents an offset from the start of the video. If
--   the value is offsetFromEnd, then the offsetMs field represents an
--   offset from the end of the video.
itType :: Lens' InvideoTiming (Maybe InvideoTimingType)

-- | Localizations for different languages
--   
--   <i>See:</i> <a>playListLocalizations</a> smart constructor.
data PlayListLocalizations

-- | Creates a value of <a>PlayListLocalizations</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pllAddtional</a></li>
--   </ul>
playListLocalizations :: HashMap Text PlayListLocalization -> PlayListLocalizations

-- | The language tag, using string since map_key require simple types.
pllAddtional :: Lens' PlayListLocalizations (HashMap Text PlayListLocalization)

-- | The video's rating in the Czech Republic.
data ContentRatingCzfilmRating

-- | <pre>
--   czfilm12
--   </pre>
CZFILM12 :: ContentRatingCzfilmRating

-- | <pre>
--   czfilm14
--   </pre>
CZFILM14 :: ContentRatingCzfilmRating

-- | <pre>
--   czfilm18
--   </pre>
CZFILM18 :: ContentRatingCzfilmRating

-- | <pre>
--   czfilmU
--   </pre>
CzfilmU :: ContentRatingCzfilmRating

-- | <pre>
--   czfilmUnrated
--   </pre>
CzfilmUnrated :: ContentRatingCzfilmRating

-- | Video processing progress and completion time estimate.
--   
--   <i>See:</i> <a>videoProcessingDetailsProcessingProgress</a> smart
--   constructor.
data VideoProcessingDetailsProcessingProgress

-- | Creates a value of <a>VideoProcessingDetailsProcessingProgress</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpdppTimeLeftMs</a></li>
--   <li><a>vpdppPartsTotal</a></li>
--   <li><a>vpdppPartsProcessed</a></li>
--   </ul>
videoProcessingDetailsProcessingProgress :: VideoProcessingDetailsProcessingProgress

-- | An estimate of the amount of time, in millseconds, that YouTube needs
--   to finish processing the video.
vpdppTimeLeftMs :: Lens' VideoProcessingDetailsProcessingProgress (Maybe Word64)

-- | An estimate of the total number of parts that need to be processed for
--   the video. The number may be updated with more precise estimates while
--   YouTube processes the video.
vpdppPartsTotal :: Lens' VideoProcessingDetailsProcessingProgress (Maybe Word64)

-- | The number of parts of the video that YouTube has already processed.
--   You can estimate the percentage of the video that YouTube has already
--   processed by calculating: 100 * parts_processed / parts_total Note
--   that since the estimated number of parts could increase without a
--   corresponding increase in the number of parts that have already been
--   processed, it is possible that the calculated progress could
--   periodically decrease while YouTube processes a video.
vpdppPartsProcessed :: Lens' VideoProcessingDetailsProcessingProgress (Maybe Word64)

-- | Basic details about a channel, including title, description and
--   thumbnails. Next available id: 15.
--   
--   <i>See:</i> <a>channelSnippet</a> smart constructor.
data ChannelSnippet

-- | Creates a value of <a>ChannelSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csPublishedAt</a></li>
--   <li><a>csCountry</a></li>
--   <li><a>csThumbnails</a></li>
--   <li><a>csLocalized</a></li>
--   <li><a>csCustomURL</a></li>
--   <li><a>csTitle</a></li>
--   <li><a>csDescription</a></li>
--   <li><a>csDefaultLanguage</a></li>
--   </ul>
channelSnippet :: ChannelSnippet

-- | The date and time that the channel was created. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
csPublishedAt :: Lens' ChannelSnippet (Maybe UTCTime)

-- | The country of the channel.
csCountry :: Lens' ChannelSnippet (Maybe Text)

-- | A map of thumbnail images associated with the channel. For each object
--   in the map, the key is the name of the thumbnail image, and the value
--   is an object that contains other information about the thumbnail.
csThumbnails :: Lens' ChannelSnippet (Maybe ThumbnailDetails)

-- | Localized title and description, read-only.
csLocalized :: Lens' ChannelSnippet (Maybe ChannelLocalization)

-- | The custom url of the channel.
csCustomURL :: Lens' ChannelSnippet (Maybe Text)

-- | The channel's title.
csTitle :: Lens' ChannelSnippet (Maybe Text)

-- | The description of the channel.
csDescription :: Lens' ChannelSnippet (Maybe Text)

-- | The language of the channel's default title and description.
csDefaultLanguage :: Lens' ChannelSnippet (Maybe Text)

-- | Internal representation of thumbnails for a YouTube resource.
--   
--   <i>See:</i> <a>thumbnailDetails</a> smart constructor.
data ThumbnailDetails

-- | Creates a value of <a>ThumbnailDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdMedium</a></li>
--   <li><a>tdMaxres</a></li>
--   <li><a>tdDefault</a></li>
--   <li><a>tdStandard</a></li>
--   <li><a>tdHigh</a></li>
--   </ul>
thumbnailDetails :: ThumbnailDetails

-- | The medium quality image for this resource.
tdMedium :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | The maximum resolution quality image for this resource.
tdMaxres :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | The default image for this resource.
tdDefault :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | The standard quality image for this resource.
tdStandard :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | The high quality image for this resource.
tdHigh :: Lens' ThumbnailDetails (Maybe Thumbnail)

-- | Settings and Info of the monitor stream
--   
--   <i>See:</i> <a>monitorStreamInfo</a> smart constructor.
data MonitorStreamInfo

-- | Creates a value of <a>MonitorStreamInfo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>msiBroadcastStreamDelayMs</a></li>
--   <li><a>msiEmbedHTML</a></li>
--   <li><a>msiEnableMonitorStream</a></li>
--   </ul>
monitorStreamInfo :: MonitorStreamInfo

-- | If you have set the enableMonitorStream property to true, then this
--   property determines the length of the live broadcast delay.
msiBroadcastStreamDelayMs :: Lens' MonitorStreamInfo (Maybe Word32)

-- | HTML code that embeds a player that plays the monitor stream.
msiEmbedHTML :: Lens' MonitorStreamInfo (Maybe Text)

-- | This value determines whether the monitor stream is enabled for the
--   broadcast. If the monitor stream is enabled, then YouTube will
--   broadcast the event content on a special stream intended only for the
--   broadcaster's consumption. The broadcaster can use the stream to
--   review the event content and also to identify the optimal times to
--   insert cuepoints. You need to set this value to true if you intend to
--   have a broadcast delay for your event. Note: This property cannot be
--   updated once the broadcast is in the testing or live state.
msiEnableMonitorStream :: Lens' MonitorStreamInfo (Maybe Bool)
data LiveChatMessageSnippet

-- | Creates a value of <a>LiveChatMessageSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmsMessageDeletedDetails</a></li>
--   <li><a>lcmsLiveChatId</a></li>
--   <li><a>lcmsPublishedAt</a></li>
--   <li><a>lcmsPollOpenedDetails</a></li>
--   <li><a>lcmsPollVotedDetails</a></li>
--   <li><a>lcmsUserBannedDetails</a></li>
--   <li><a>lcmsTextMessageDetails</a></li>
--   <li><a>lcmsPollClosedDetails</a></li>
--   <li><a>lcmsMessageRetractedDetails</a></li>
--   <li><a>lcmsPollEditedDetails</a></li>
--   <li><a>lcmsType</a></li>
--   <li><a>lcmsAuthorChannelId</a></li>
--   <li><a>lcmsFanFundingEventDetails</a></li>
--   <li><a>lcmsHasDisplayContent</a></li>
--   <li><a>lcmsDisplayMessage</a></li>
--   </ul>
liveChatMessageSnippet :: LiveChatMessageSnippet
lcmsMessageDeletedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatMessageDeletedDetails)
lcmsLiveChatId :: Lens' LiveChatMessageSnippet (Maybe Text)

-- | The date and time when the message was orignally published. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lcmsPublishedAt :: Lens' LiveChatMessageSnippet (Maybe UTCTime)
lcmsPollOpenedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatPollOpenedDetails)
lcmsPollVotedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatPollVotedDetails)
lcmsUserBannedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatUserBannedMessageDetails)

-- | Details about the text message, this is only set if the type is
--   'textMessageEvent'.
lcmsTextMessageDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatTextMessageDetails)
lcmsPollClosedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatPollClosedDetails)
lcmsMessageRetractedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatMessageRetractedDetails)
lcmsPollEditedDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatPollEditedDetails)

-- | The type of message, this will always be present, it determines the
--   contents of the message as well as which fields will be present.
lcmsType :: Lens' LiveChatMessageSnippet (Maybe LiveChatMessageSnippetType)

-- | The ID of the user that authored this message, this field is not
--   always filled. textMessageEvent - the user that wrote the message
--   fanFundingEvent - the user that funded the broadcast newSponsorEvent -
--   the user that just became a sponsor messageDeletedEvent - the
--   moderator that took the action messageRetractedEvent - the author that
--   retracted their message userBannedEvent - the moderator that took the
--   action
lcmsAuthorChannelId :: Lens' LiveChatMessageSnippet (Maybe Text)

-- | Details about the funding event, this is only set if the type is
--   'fanFundingEvent'.
lcmsFanFundingEventDetails :: Lens' LiveChatMessageSnippet (Maybe LiveChatFanFundingEventDetails)

-- | Whether the message has display content that should be displayed to
--   users.
lcmsHasDisplayContent :: Lens' LiveChatMessageSnippet (Maybe Bool)

-- | Contains a string that can be displayed to the user. If this field is
--   not present the message is silent, at the moment only messages of type
--   TOMBSTONE and CHAT_ENDED_EVENT are silent.
lcmsDisplayMessage :: Lens' LiveChatMessageSnippet (Maybe Text)

-- | The video's National Film Registry of the Russian Federation (MKRF -
--   Russia) rating.
data ContentRatingRussiaRating

-- | <pre>
--   russia0
--   </pre>
RUSSIA0 :: ContentRatingRussiaRating

-- | <pre>
--   russia12
--   </pre>
RUSSIA12 :: ContentRatingRussiaRating

-- | <pre>
--   russia16
--   </pre>
RUSSIA16 :: ContentRatingRussiaRating

-- | <pre>
--   russia18
--   </pre>
RUSSIA18 :: ContentRatingRussiaRating

-- | <pre>
--   russia6
--   </pre>
RUSSIA6 :: ContentRatingRussiaRating

-- | <pre>
--   russiaUnrated
--   </pre>
RussiaUnrated :: ContentRatingRussiaRating

-- | The video's rating from the Commission de Contrôle des Films
--   (Belgium).
data ContentRatingCicfRating

-- | <pre>
--   cicfE
--   </pre>
CicfE :: ContentRatingCicfRating

-- | <pre>
--   cicfKntEna
--   </pre>
CicfKntEna :: ContentRatingCicfRating

-- | <pre>
--   cicfKtEa
--   </pre>
CicfKtEa :: ContentRatingCicfRating

-- | <pre>
--   cicfUnrated
--   </pre>
CicfUnrated :: ContentRatingCicfRating

-- | This property has been deprecated. Use the
--   contentDetails.contentRating.cncRating instead.
data ContentRatingFmocRating

-- | <pre>
--   fmoc10
--   </pre>
FMOC10 :: ContentRatingFmocRating

-- | <pre>
--   fmoc12
--   </pre>
FMOC12 :: ContentRatingFmocRating

-- | <pre>
--   fmoc16
--   </pre>
FMOC16 :: ContentRatingFmocRating

-- | <pre>
--   fmoc18
--   </pre>
FMOC18 :: ContentRatingFmocRating

-- | <pre>
--   fmocE
--   </pre>
FmocE :: ContentRatingFmocRating

-- | <pre>
--   fmocU
--   </pre>
FmocU :: ContentRatingFmocRating

-- | <pre>
--   fmocUnrated
--   </pre>
FmocUnrated :: ContentRatingFmocRating

-- | The broadcastStatus parameter identifies the state to which the
--   broadcast is changing. Note that to transition a broadcast to either
--   the testing or live state, the status.streamStatus must be active for
--   the stream that the broadcast is bound to.
data LiveBroadcastsTransitionBroadcastStatus

-- | <tt>complete</tt> The broadcast is over. YouTube stops transmitting
--   video.
LBTBSComplete :: LiveBroadcastsTransitionBroadcastStatus

-- | <tt>live</tt> The broadcast is visible to its audience. YouTube
--   transmits video to the broadcast's monitor stream and its broadcast
--   stream.
LBTBSLive :: LiveBroadcastsTransitionBroadcastStatus

-- | <tt>testing</tt> Start testing the broadcast. YouTube transmits video
--   to the broadcast's monitor stream. Note that you can only transition a
--   broadcast to the testing state if its
--   contentDetails.monitorStream.enableMonitorStream property is set to
--   true.
LBTBSTesting :: LiveBroadcastsTransitionBroadcastStatus

-- | A i18nRegion resource identifies a region where YouTube is available.
--   
--   <i>See:</i> <a>i18nRegion</a> smart constructor.
data I18nRegion

-- | Creates a value of <a>I18nRegion</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irEtag</a></li>
--   <li><a>irSnippet</a></li>
--   <li><a>irKind</a></li>
--   <li><a>irId</a></li>
--   </ul>
i18nRegion :: I18nRegion

-- | Etag of this resource.
irEtag :: Lens' I18nRegion (Maybe Text)

-- | The snippet object contains basic details about the i18n region, such
--   as region code and human-readable name.
irSnippet :: Lens' I18nRegion (Maybe I18nRegionSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#i18nRegion".
irKind :: Lens' I18nRegion Text

-- | The ID that YouTube uses to uniquely identify the i18n region.
irId :: Lens' I18nRegion (Maybe Text)

-- | Statistics about a channel: number of subscribers, number of videos in
--   the channel, etc.
--   
--   <i>See:</i> <a>channelStatistics</a> smart constructor.
data ChannelStatistics

-- | Creates a value of <a>ChannelStatistics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csCommentCount</a></li>
--   <li><a>csSubscriberCount</a></li>
--   <li><a>csVideoCount</a></li>
--   <li><a>csHiddenSubscriberCount</a></li>
--   <li><a>csViewCount</a></li>
--   </ul>
channelStatistics :: ChannelStatistics

-- | The number of comments for the channel.
csCommentCount :: Lens' ChannelStatistics (Maybe Word64)

-- | The number of subscribers that the channel has.
csSubscriberCount :: Lens' ChannelStatistics (Maybe Word64)

-- | The number of videos uploaded to the channel.
csVideoCount :: Lens' ChannelStatistics (Maybe Word64)

-- | Whether or not the number of subscribers is shown for this user.
csHiddenSubscriberCount :: Lens' ChannelStatistics (Maybe Bool)

-- | The number of times the channel has been viewed.
csViewCount :: Lens' ChannelStatistics (Maybe Word64)
data LiveChatFanFundingEventDetails

-- | Creates a value of <a>LiveChatFanFundingEventDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcffedUserComment</a></li>
--   <li><a>lcffedAmountMicros</a></li>
--   <li><a>lcffedAmountDisplayString</a></li>
--   <li><a>lcffedCurrency</a></li>
--   </ul>
liveChatFanFundingEventDetails :: LiveChatFanFundingEventDetails

-- | The comment added by the user to this fan funding event.
lcffedUserComment :: Lens' LiveChatFanFundingEventDetails (Maybe Text)

-- | The amount of the fund.
lcffedAmountMicros :: Lens' LiveChatFanFundingEventDetails (Maybe Word64)

-- | A rendered string that displays the fund amount and currency to the
--   user.
lcffedAmountDisplayString :: Lens' LiveChatFanFundingEventDetails (Maybe Text)

-- | The currency in which the fund was made.
lcffedCurrency :: Lens' LiveChatFanFundingEventDetails (Maybe Text)

-- | The video's rating from the Maldives National Bureau of
--   Classification.
data ContentRatingNbcRating

-- | <pre>
--   nbc12plus
--   </pre>
Nbc12plus :: ContentRatingNbcRating

-- | <pre>
--   nbc15plus
--   </pre>
Nbc15plus :: ContentRatingNbcRating

-- | <pre>
--   nbc18plus
--   </pre>
Nbc18plus :: ContentRatingNbcRating

-- | <pre>
--   nbc18plusr
--   </pre>
Nbc18plusr :: ContentRatingNbcRating

-- | <pre>
--   nbcG
--   </pre>
NbcG :: ContentRatingNbcRating

-- | <pre>
--   nbcPg
--   </pre>
NbcPg :: ContentRatingNbcRating

-- | <pre>
--   nbcPu
--   </pre>
NbcPu :: ContentRatingNbcRating

-- | <pre>
--   nbcUnrated
--   </pre>
NbcUnrated :: ContentRatingNbcRating

-- | Priority of the live broadcast event (internal state).
data LiveBroadcastStatusLiveBroadcastPriority

-- | <pre>
--   high
--   </pre>
High :: LiveBroadcastStatusLiveBroadcastPriority

-- | <pre>
--   low
--   </pre>
Low :: LiveBroadcastStatusLiveBroadcastPriority

-- | <pre>
--   normal
--   </pre>
Normal :: LiveBroadcastStatusLiveBroadcastPriority

-- | The status code of this stream
data LiveStreamHealthStatusStatus

-- | <pre>
--   bad
--   </pre>
Bad :: LiveStreamHealthStatusStatus

-- | <pre>
--   good
--   </pre>
Good :: LiveStreamHealthStatusStatus

-- | <pre>
--   noData
--   </pre>
NoData :: LiveStreamHealthStatusStatus

-- | <pre>
--   ok
--   </pre>
OK :: LiveStreamHealthStatusStatus

-- | <pre>
--   revoked
--   </pre>
Revoked :: LiveStreamHealthStatusStatus

-- | Details about the content of an activity: the video that was shared,
--   the channel that was subscribed to, etc.
--   
--   <i>See:</i> <a>activityContentDetails</a> smart constructor.
data ActivityContentDetails

-- | Creates a value of <a>ActivityContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdPromotedItem</a></li>
--   <li><a>acdChannelItem</a></li>
--   <li><a>acdBulletin</a></li>
--   <li><a>acdFavorite</a></li>
--   <li><a>acdUpload</a></li>
--   <li><a>acdComment</a></li>
--   <li><a>acdSocial</a></li>
--   <li><a>acdSubscription</a></li>
--   <li><a>acdPlayListItem</a></li>
--   <li><a>acdLike</a></li>
--   <li><a>acdRecommendation</a></li>
--   </ul>
activityContentDetails :: ActivityContentDetails

-- | The promotedItem object contains details about a resource which is
--   being promoted. This property is only present if the snippet.type is
--   promotedItem.
acdPromotedItem :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsPromotedItem)

-- | The channelItem object contains details about a resource which was
--   added to a channel. This property is only present if the snippet.type
--   is channelItem.
acdChannelItem :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsChannelItem)

-- | The bulletin object contains details about a channel bulletin post.
--   This object is only present if the snippet.type is bulletin.
acdBulletin :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsBulletin)

-- | The favorite object contains information about a video that was marked
--   as a favorite video. This property is only present if the snippet.type
--   is favorite.
acdFavorite :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsFavorite)

-- | The upload object contains information about the uploaded video. This
--   property is only present if the snippet.type is upload.
acdUpload :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsUpload)

-- | The comment object contains information about a resource that received
--   a comment. This property is only present if the snippet.type is
--   comment.
acdComment :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsComment)

-- | The social object contains details about a social network post. This
--   property is only present if the snippet.type is social.
acdSocial :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsSocial)

-- | The subscription object contains information about a channel that a
--   user subscribed to. This property is only present if the snippet.type
--   is subscription.
acdSubscription :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsSubscription)

-- | The playlistItem object contains information about a new playlist
--   item. This property is only present if the snippet.type is
--   playlistItem.
acdPlayListItem :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsPlayListItem)

-- | The like object contains information about a resource that received a
--   positive (like) rating. This property is only present if the
--   snippet.type is like.
acdLike :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsLike)

-- | The recommendation object contains information about a recommended
--   resource. This property is only present if the snippet.type is
--   recommendation.
acdRecommendation :: Lens' ActivityContentDetails (Maybe ActivityContentDetailsRecommendation)

-- | A videoCategory resource identifies a category that has been or could
--   be associated with uploaded videos.
--   
--   <i>See:</i> <a>videoCategory</a> smart constructor.
data VideoCategory

-- | Creates a value of <a>VideoCategory</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcEtag</a></li>
--   <li><a>vcSnippet</a></li>
--   <li><a>vcKind</a></li>
--   <li><a>vcId</a></li>
--   </ul>
videoCategory :: VideoCategory

-- | Etag of this resource.
vcEtag :: Lens' VideoCategory (Maybe Text)

-- | The snippet object contains basic details about the video category,
--   including its title.
vcSnippet :: Lens' VideoCategory (Maybe VideoCategorySnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#videoCategory".
vcKind :: Lens' VideoCategory Text

-- | The ID that YouTube uses to uniquely identify the video category.
vcId :: Lens' VideoCategory (Maybe Text)
data VideoRatingRating

-- | <pre>
--   dislike
--   </pre>
VRRDislike :: VideoRatingRating

-- | <pre>
--   like
--   </pre>
VRRLike :: VideoRatingRating

-- | <pre>
--   none
--   </pre>
VRRNone :: VideoRatingRating

-- | <pre>
--   unspecified
--   </pre>
VRRUnspecified :: VideoRatingRating
data VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   hasEditlist
--   </pre>
HasEditList :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   inconsistentResolution
--   </pre>
InconsistentResolution :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   problematicAudioCodec
--   </pre>
ProblematicAudioCodec :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   problematicVideoCodec
--   </pre>
ProblematicVideoCodec :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   unknownAudioCodec
--   </pre>
UnknownAudioCodec :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   unknownContainer
--   </pre>
UnknownContainer :: VideoSuggestionsProcessingWarningsItem

-- | <pre>
--   unknownVideoCodec
--   </pre>
UnknownVideoCodec :: VideoSuggestionsProcessingWarningsItem

-- | List with all localizations.
--   
--   <i>See:</i> <a>videoLocalizations</a> smart constructor.
data VideoLocalizations

-- | Creates a value of <a>VideoLocalizations</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlAddtional</a></li>
--   </ul>
videoLocalizations :: HashMap Text VideoLocalization -> VideoLocalizations

-- | The language tag, using string since map_key require simple types.
vlAddtional :: Lens' VideoLocalizations (HashMap Text VideoLocalization)

-- | Details about a channelsection, including playlists and channels.
--   
--   <i>See:</i> <a>channelSectionContentDetails</a> smart constructor.
data ChannelSectionContentDetails

-- | Creates a value of <a>ChannelSectionContentDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cscdChannels</a></li>
--   <li><a>cscdPlayLists</a></li>
--   </ul>
channelSectionContentDetails :: ChannelSectionContentDetails

-- | The channel ids for type multiple_channels.
cscdChannels :: Lens' ChannelSectionContentDetails [Text]

-- | The playlist ids for type single_playlist and multiple_playlists. For
--   singlePlaylist, only one playlistId is allowed.
cscdPlayLists :: Lens' ChannelSectionContentDetails [Text]

-- | Describes in which corner of the video the visual widget will appear.
data InvideoPositionCornerPosition

-- | <pre>
--   bottomLeft
--   </pre>
BottomLeft :: InvideoPositionCornerPosition

-- | <pre>
--   bottomRight
--   </pre>
BottomRight :: InvideoPositionCornerPosition

-- | <pre>
--   topLeft
--   </pre>
TopLeft :: InvideoPositionCornerPosition

-- | <pre>
--   topRight
--   </pre>
TopRight :: InvideoPositionCornerPosition

-- | A video resource represents a YouTube video.
--   
--   <i>See:</i> <a>video</a> smart constructor.
data Video

-- | Creates a value of <a>Video</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vStatus</a></li>
--   <li><a>vEtag</a></li>
--   <li><a>vProjectDetails</a></li>
--   <li><a>vRecordingDetails</a></li>
--   <li><a>vSnippet</a></li>
--   <li><a>vKind</a></li>
--   <li><a>vTopicDetails</a></li>
--   <li><a>vContentDetails</a></li>
--   <li><a>vAgeGating</a></li>
--   <li><a>vFileDetails</a></li>
--   <li><a>vSuggestions</a></li>
--   <li><a>vId</a></li>
--   <li><a>vStatistics</a></li>
--   <li><a>vLocalizations</a></li>
--   <li><a>vLiveStreamingDetails</a></li>
--   <li><a>vPlayer</a></li>
--   <li><a>vProcessingDetails</a></li>
--   <li><a>vMonetizationDetails</a></li>
--   </ul>
video :: Video

-- | The status object contains information about the video's uploading,
--   processing, and privacy statuses.
vStatus :: Lens' Video (Maybe VideoStatus)

-- | Etag of this resource.
vEtag :: Lens' Video (Maybe Text)

-- | The projectDetails object contains information about the project
--   specific video metadata.
vProjectDetails :: Lens' Video (Maybe VideoProjectDetails)

-- | The recordingDetails object encapsulates information about the
--   location, date and address where the video was recorded.
vRecordingDetails :: Lens' Video (Maybe VideoRecordingDetails)

-- | The snippet object contains basic details about the video, such as its
--   title, description, and category.
vSnippet :: Lens' Video (Maybe VideoSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#video".
vKind :: Lens' Video Text

-- | The topicDetails object encapsulates information about Freebase topics
--   associated with the video.
vTopicDetails :: Lens' Video (Maybe VideoTopicDetails)

-- | The contentDetails object contains information about the video
--   content, including the length of the video and its aspect ratio.
vContentDetails :: Lens' Video (Maybe VideoContentDetails)

-- | Age restriction details related to a video. This data can only be
--   retrieved by the video owner.
vAgeGating :: Lens' Video (Maybe VideoAgeGating)

-- | The fileDetails object encapsulates information about the video file
--   that was uploaded to YouTube, including the file's resolution,
--   duration, audio and video codecs, stream bitrates, and more. This data
--   can only be retrieved by the video owner.
vFileDetails :: Lens' Video (Maybe VideoFileDetails)

-- | The suggestions object encapsulates suggestions that identify
--   opportunities to improve the video quality or the metadata for the
--   uploaded video. This data can only be retrieved by the video owner.
vSuggestions :: Lens' Video (Maybe VideoSuggestions)

-- | The ID that YouTube uses to uniquely identify the video.
vId :: Lens' Video (Maybe Text)

-- | The statistics object contains statistics about the video.
vStatistics :: Lens' Video (Maybe VideoStatistics)

-- | List with all localizations.
vLocalizations :: Lens' Video (Maybe VideoLocalizations)

-- | The liveStreamingDetails object contains metadata about a live video
--   broadcast. The object will only be present in a video resource if the
--   video is an upcoming, live, or completed live broadcast.
vLiveStreamingDetails :: Lens' Video (Maybe VideoLiveStreamingDetails)

-- | The player object contains information that you would use to play the
--   video in an embedded player.
vPlayer :: Lens' Video (Maybe VideoPlayer)

-- | The processingProgress object encapsulates information about YouTube's
--   progress in processing the uploaded video file. The properties in the
--   object identify the current processing status and an estimate of the
--   time remaining until YouTube finishes processing the video. This part
--   also indicates whether different types of data or content, such as
--   file details or thumbnail images, are available for the video. The
--   processingProgress object is designed to be polled so that the video
--   uploaded can track the progress that YouTube has made in processing
--   the uploaded video file. This data can only be retrieved by the video
--   owner.
vProcessingDetails :: Lens' Video (Maybe VideoProcessingDetails)

-- | The monetizationDetails object encapsulates information about the
--   monetization status of the video.
vMonetizationDetails :: Lens' Video (Maybe VideoMonetizationDetails)

-- | A liveBroadcast resource represents an event that will be streamed,
--   via live video, on YouTube.
--   
--   <i>See:</i> <a>liveBroadcast</a> smart constructor.
data LiveBroadcast

-- | Creates a value of <a>LiveBroadcast</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbStatus</a></li>
--   <li><a>lbEtag</a></li>
--   <li><a>lbSnippet</a></li>
--   <li><a>lbKind</a></li>
--   <li><a>lbTopicDetails</a></li>
--   <li><a>lbContentDetails</a></li>
--   <li><a>lbId</a></li>
--   <li><a>lbStatistics</a></li>
--   </ul>
liveBroadcast :: LiveBroadcast

-- | The status object contains information about the event's status.
lbStatus :: Lens' LiveBroadcast (Maybe LiveBroadcastStatus)

-- | Etag of this resource.
lbEtag :: Lens' LiveBroadcast (Maybe Text)

-- | The snippet object contains basic details about the event, including
--   its title, description, start time, and end time.
lbSnippet :: Lens' LiveBroadcast (Maybe LiveBroadcastSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveBroadcast".
lbKind :: Lens' LiveBroadcast Text
lbTopicDetails :: Lens' LiveBroadcast (Maybe LiveBroadcastTopicDetails)

-- | The contentDetails object contains information about the event's video
--   content, such as whether the content can be shown in an embedded video
--   player or if it will be archived and therefore available for viewing
--   after the event has concluded.
lbContentDetails :: Lens' LiveBroadcast (Maybe LiveBroadcastContentDetails)

-- | The ID that YouTube assigns to uniquely identify the broadcast.
lbId :: Lens' LiveBroadcast (Maybe Text)

-- | The statistics object contains info about the event's current stats.
--   These include concurrent viewers and total chat count. Statistics can
--   change (in either direction) during the lifetime of an event.
--   Statistics are only returned while the event is live.
lbStatistics :: Lens' LiveBroadcast (Maybe LiveBroadcastStatistics)

-- | The long uploads status of this channel. See
data ChannelStatusLongUploadsStatus

-- | <pre>
--   allowed
--   </pre>
Allowed :: ChannelStatusLongUploadsStatus

-- | <pre>
--   disallowed
--   </pre>
Disallowed :: ChannelStatusLongUploadsStatus

-- | <pre>
--   eligible
--   </pre>
Eligible :: ChannelStatusLongUploadsStatus

-- | <pre>
--   longUploadsUnspecified
--   </pre>
LongUploadsUnspecified :: ChannelStatusLongUploadsStatus

-- | A liveChatModerator resource represents a moderator for a YouTube live
--   chat. A chat moderator has the ability to ban/unban users from a chat,
--   remove message, etc.
--   
--   <i>See:</i> <a>liveChatModerator</a> smart constructor.
data LiveChatModerator

-- | Creates a value of <a>LiveChatModerator</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>livEtag</a></li>
--   <li><a>livSnippet</a></li>
--   <li><a>livKind</a></li>
--   <li><a>livId</a></li>
--   </ul>
liveChatModerator :: LiveChatModerator

-- | Etag of this resource.
livEtag :: Lens' LiveChatModerator (Maybe Text)

-- | The snippet object contains basic details about the moderator.
livSnippet :: Lens' LiveChatModerator (Maybe LiveChatModeratorSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#liveChatModerator".
livKind :: Lens' LiveChatModerator Text

-- | The ID that YouTube assigns to uniquely identify the moderator.
livId :: Lens' LiveChatModerator (Maybe Text)

-- | Detailed settings of a stream.
--   
--   <i>See:</i> <a>liveStreamContentDetails</a> smart constructor.
data LiveStreamContentDetails

-- | Creates a value of <a>LiveStreamContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lscdClosedCaptionsIngestionURL</a></li>
--   <li><a>lscdIsReusable</a></li>
--   </ul>
liveStreamContentDetails :: LiveStreamContentDetails

-- | The ingestion URL where the closed captions of this stream are sent.
lscdClosedCaptionsIngestionURL :: Lens' LiveStreamContentDetails (Maybe Text)

-- | Indicates whether the stream is reusable, which means that it can be
--   bound to multiple broadcasts. It is common for broadcasters to reuse
--   the same stream for many different broadcasts if those broadcasts
--   occur at different times. If you set this value to false, then the
--   stream will not be reusable, which means that it can only be bound to
--   one broadcast. Non-reusable streams differ from reusable streams in
--   the following ways: - A non-reusable stream can only be bound to one
--   broadcast. - A non-reusable stream might be deleted by an automated
--   process after the broadcast ends. - The liveStreams.list method does
--   not list non-reusable streams if you call the method and set the mine
--   parameter to true. The only way to use that method to retrieve the
--   resource for a non-reusable stream is to use the id parameter to
--   identify the stream.
lscdIsReusable :: Lens' LiveStreamContentDetails (Maybe Bool)
data LiveChatModeratorSnippet

-- | Creates a value of <a>LiveChatModeratorSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lLiveChatId</a></li>
--   <li><a>lModeratorDetails</a></li>
--   </ul>
liveChatModeratorSnippet :: LiveChatModeratorSnippet

-- | The ID of the live chat this moderator can act on.
lLiveChatId :: Lens' LiveChatModeratorSnippet (Maybe Text)

-- | Details about the moderator.
lModeratorDetails :: Lens' LiveChatModeratorSnippet (Maybe ChannelProFileDetails)

-- | The video's rating from Luxembourg's Commission de surveillance de la
--   classification des films (CSCF).
data ContentRatingCscfRating

-- | <pre>
--   cscf12
--   </pre>
CSCF12 :: ContentRatingCscfRating

-- | <pre>
--   cscf16
--   </pre>
CSCF16 :: ContentRatingCscfRating

-- | <pre>
--   cscf18
--   </pre>
CSCF18 :: ContentRatingCscfRating

-- | <pre>
--   cscf6
--   </pre>
CSCF6 :: ContentRatingCscfRating

-- | <pre>
--   cscf9
--   </pre>
CSCF9 :: ContentRatingCscfRating

-- | <pre>
--   cscfA
--   </pre>
CscfA :: ContentRatingCscfRating

-- | <pre>
--   cscfAl
--   </pre>
CscfAl :: ContentRatingCscfRating

-- | <pre>
--   cscfUnrated
--   </pre>
CscfUnrated :: ContentRatingCscfRating

-- | The broadcast's recording status.
data LiveBroadcastStatusRecordingStatus

-- | <pre>
--   notRecording
--   </pre>
NotRecording :: LiveBroadcastStatusRecordingStatus

-- | <pre>
--   recorded
--   </pre>
Recorded :: LiveBroadcastStatusRecordingStatus

-- | <pre>
--   recording
--   </pre>
Recording :: LiveBroadcastStatusRecordingStatus

-- | The amount that YouTube needs to rotate the original source content to
--   properly display the video.
data VideoFileDetailsVideoStreamRotation

-- | <pre>
--   clockwise
--   </pre>
VFDVSRClockwise :: VideoFileDetailsVideoStreamRotation

-- | <pre>
--   counterClockwise
--   </pre>
VFDVSRCounterClockwise :: VideoFileDetailsVideoStreamRotation

-- | <pre>
--   none
--   </pre>
VFDVSRNone :: VideoFileDetailsVideoStreamRotation

-- | <pre>
--   other
--   </pre>
VFDVSROther :: VideoFileDetailsVideoStreamRotation

-- | <pre>
--   upsideDown
--   </pre>
VFDVSRUpsideDown :: VideoFileDetailsVideoStreamRotation

-- | A pair Property / Value.
--   
--   <i>See:</i> <a>propertyValue</a> smart constructor.
data PropertyValue

-- | Creates a value of <a>PropertyValue</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvProperty</a></li>
--   <li><a>pvValue</a></li>
--   </ul>
propertyValue :: PropertyValue

-- | A property.
pvProperty :: Lens' PropertyValue (Maybe Text)

-- | The property's value.
pvValue :: Lens' PropertyValue (Maybe Text)

-- | The video's General Directorate of Radio, Television and
--   Cinematography (Mexico) rating.
data ContentRatingRtcRating

-- | <pre>
--   rtcA
--   </pre>
RtcA :: ContentRatingRtcRating

-- | <pre>
--   rtcAa
--   </pre>
RtcAa :: ContentRatingRtcRating

-- | <pre>
--   rtcB
--   </pre>
RtcB :: ContentRatingRtcRating

-- | <pre>
--   rtcB15
--   </pre>
RTCB15 :: ContentRatingRtcRating

-- | <pre>
--   rtcC
--   </pre>
RtcC :: ContentRatingRtcRating

-- | <pre>
--   rtcD
--   </pre>
RtcD :: ContentRatingRtcRating

-- | <pre>
--   rtcUnrated
--   </pre>
RtcUnrated :: ContentRatingRtcRating

-- | Basic details about a video, including title, description, uploader,
--   thumbnails and category.
--   
--   <i>See:</i> <a>videoSnippet</a> smart constructor.
data VideoSnippet

-- | Creates a value of <a>VideoSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vsDefaultAudioLanguage</a></li>
--   <li><a>vsPublishedAt</a></li>
--   <li><a>vsChannelTitle</a></li>
--   <li><a>vsChannelId</a></li>
--   <li><a>vsThumbnails</a></li>
--   <li><a>vsLocalized</a></li>
--   <li><a>vsCategoryId</a></li>
--   <li><a>vsTitle</a></li>
--   <li><a>vsLiveBroadcastContent</a></li>
--   <li><a>vsDescription</a></li>
--   <li><a>vsTags</a></li>
--   <li><a>vsDefaultLanguage</a></li>
--   </ul>
videoSnippet :: VideoSnippet

-- | The default_audio_language property specifies the language spoken in
--   the video's default audio track.
vsDefaultAudioLanguage :: Lens' VideoSnippet (Maybe Text)

-- | The date and time that the video was uploaded. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
vsPublishedAt :: Lens' VideoSnippet (Maybe UTCTime)

-- | Channel title for the channel that the video belongs to.
vsChannelTitle :: Lens' VideoSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the channel that the
--   video was uploaded to.
vsChannelId :: Lens' VideoSnippet (Maybe Text)

-- | A map of thumbnail images associated with the video. For each object
--   in the map, the key is the name of the thumbnail image, and the value
--   is an object that contains other information about the thumbnail.
vsThumbnails :: Lens' VideoSnippet (Maybe ThumbnailDetails)

-- | Localized snippet selected with the hl parameter. If no such
--   localization exists, this field is populated with the default snippet.
--   (Read-only)
vsLocalized :: Lens' VideoSnippet (Maybe VideoLocalization)

-- | The YouTube video category associated with the video.
vsCategoryId :: Lens' VideoSnippet (Maybe Text)

-- | The video's title.
vsTitle :: Lens' VideoSnippet (Maybe Text)

-- | Indicates if the video is an upcoming/active live broadcast. Or it's
--   "none" if the video is not an upcoming/active live broadcast.
vsLiveBroadcastContent :: Lens' VideoSnippet (Maybe VideoSnippetLiveBroadcastContent)

-- | The video's description.
vsDescription :: Lens' VideoSnippet (Maybe Text)

-- | A list of keyword tags associated with the video. Tags may contain
--   spaces.
vsTags :: Lens' VideoSnippet [Text]

-- | The language of the videos's default snippet.
vsDefaultLanguage :: Lens' VideoSnippet (Maybe Text)

-- | A fanFundingEvent resource represents a fan funding event on a YouTube
--   channel. Fan funding events occur when a user gives one-time monetary
--   support to the channel owner.
--   
--   <i>See:</i> <a>fanFundingEvent</a> smart constructor.
data FanFundingEvent

-- | Creates a value of <a>FanFundingEvent</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ffeEtag</a></li>
--   <li><a>ffeSnippet</a></li>
--   <li><a>ffeKind</a></li>
--   <li><a>ffeId</a></li>
--   </ul>
fanFundingEvent :: FanFundingEvent

-- | Etag of this resource.
ffeEtag :: Lens' FanFundingEvent (Maybe Text)

-- | The snippet object contains basic details about the fan funding event.
ffeSnippet :: Lens' FanFundingEvent (Maybe FanFundingEventSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#fanFundingEvent".
ffeKind :: Lens' FanFundingEvent Text

-- | The ID that YouTube assigns to uniquely identify the fan funding
--   event.
ffeId :: Lens' FanFundingEvent (Maybe Text)

-- | Set this parameter to limit the returned comment threads to a
--   particular moderation state. Note: This parameter is not supported for
--   use in conjunction with the id parameter.
data CommentThreadsListModerationStatus

-- | <tt>heldForReview</tt> Retrieve comment threads that are awaiting
--   review by a moderator. A comment thread can be included in the
--   response if the top-level comment or at least one of the replies to
--   that comment are awaiting review.
HeldForReview :: CommentThreadsListModerationStatus

-- | <tt>likelySpam</tt> Retrieve comment threads classified as likely to
--   be spam. A comment thread can be included in the response if the
--   top-level comment or at least one of the replies to that comment is
--   considered likely to be spam.
LikelySpam :: CommentThreadsListModerationStatus

-- | <tt>published</tt> Retrieve threads of published comments. This is the
--   default value. A comment thread can be included in the response if its
--   top-level comment has been published.
Published :: CommentThreadsListModerationStatus
data LiveBroadcastSnippet

-- | Creates a value of <a>LiveBroadcastSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbsActualEndTime</a></li>
--   <li><a>lbsLiveChatId</a></li>
--   <li><a>lbsPublishedAt</a></li>
--   <li><a>lbsScheduledEndTime</a></li>
--   <li><a>lbsChannelId</a></li>
--   <li><a>lbsScheduledStartTime</a></li>
--   <li><a>lbsThumbnails</a></li>
--   <li><a>lbsTitle</a></li>
--   <li><a>lbsActualStartTime</a></li>
--   <li><a>lbsIsDefaultBroadcast</a></li>
--   <li><a>lbsDescription</a></li>
--   </ul>
liveBroadcastSnippet :: LiveBroadcastSnippet

-- | The date and time that the broadcast actually ended. This information
--   is only available once the broadcast's state is complete. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsActualEndTime :: Lens' LiveBroadcastSnippet (Maybe UTCTime)

-- | The id of the live chat for this broadcast.
lbsLiveChatId :: Lens' LiveBroadcastSnippet (Maybe Text)

-- | The date and time that the broadcast was added to YouTube's live
--   broadcast schedule. The value is specified in ISO 8601
--   (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsPublishedAt :: Lens' LiveBroadcastSnippet (Maybe UTCTime)

-- | The date and time that the broadcast is scheduled to end. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsScheduledEndTime :: Lens' LiveBroadcastSnippet (Maybe UTCTime)

-- | The ID that YouTube uses to uniquely identify the channel that is
--   publishing the broadcast.
lbsChannelId :: Lens' LiveBroadcastSnippet (Maybe Text)

-- | The date and time that the broadcast is scheduled to start. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsScheduledStartTime :: Lens' LiveBroadcastSnippet (Maybe UTCTime)

-- | A map of thumbnail images associated with the broadcast. For each
--   nested object in this object, the key is the name of the thumbnail
--   image, and the value is an object that contains other information
--   about the thumbnail.
lbsThumbnails :: Lens' LiveBroadcastSnippet (Maybe ThumbnailDetails)

-- | The broadcast's title. Note that the broadcast represents exactly one
--   YouTube video. You can set this field by modifying the broadcast
--   resource or by setting the title field of the corresponding video
--   resource.
lbsTitle :: Lens' LiveBroadcastSnippet (Maybe Text)

-- | The date and time that the broadcast actually started. This
--   information is only available once the broadcast's state is live. The
--   value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
lbsActualStartTime :: Lens' LiveBroadcastSnippet (Maybe UTCTime)
lbsIsDefaultBroadcast :: Lens' LiveBroadcastSnippet (Maybe Bool)

-- | The broadcast's description. As with the title, you can set this field
--   by modifying the broadcast resource or by setting the description
--   field of the corresponding video resource.
lbsDescription :: Lens' LiveBroadcastSnippet (Maybe Text)

-- | The video's rating in Iceland.
data ContentRatingSmaisRating

-- | <pre>
--   smais12
--   </pre>
SMAIS12 :: ContentRatingSmaisRating

-- | <pre>
--   smais14
--   </pre>
SMAIS14 :: ContentRatingSmaisRating

-- | <pre>
--   smais16
--   </pre>
SMAIS16 :: ContentRatingSmaisRating

-- | <pre>
--   smais18
--   </pre>
SMAIS18 :: ContentRatingSmaisRating

-- | <pre>
--   smais7
--   </pre>
SMAIS7 :: ContentRatingSmaisRating

-- | <pre>
--   smaisL
--   </pre>
SmaisL :: ContentRatingSmaisRating

-- | <pre>
--   smaisUnrated
--   </pre>
SmaisUnrated :: ContentRatingSmaisRating

-- | Rights management policy for YouTube resources.
--   
--   <i>See:</i> <a>accessPolicy</a> smart constructor.
data AccessPolicy

-- | Creates a value of <a>AccessPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apException</a></li>
--   <li><a>apAllowed</a></li>
--   </ul>
accessPolicy :: AccessPolicy

-- | A list of region codes that identify countries where the default
--   policy do not apply.
apException :: Lens' AccessPolicy [Text]

-- | The value of allowed indicates whether the access to the policy is
--   allowed or denied by default.
apAllowed :: Lens' AccessPolicy (Maybe Bool)

-- | A sponsor resource represents a sponsor for a YouTube channel. A
--   sponsor provides recurring monetary support to a creator and receives
--   special benefits.
--   
--   <i>See:</i> <a>sponsor</a> smart constructor.
data Sponsor

-- | Creates a value of <a>Sponsor</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEtag</a></li>
--   <li><a>sSnippet</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sId</a></li>
--   </ul>
sponsor :: Sponsor

-- | Etag of this resource.
sEtag :: Lens' Sponsor (Maybe Text)

-- | The snippet object contains basic details about the sponsor.
sSnippet :: Lens' Sponsor (Maybe SponsorSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#sponsor".
sKind :: Lens' Sponsor Text

-- | The ID that YouTube assigns to uniquely identify the sponsor.
sId :: Lens' Sponsor (Maybe Text)
data LiveChatMessageDeletedDetails

-- | Creates a value of <a>LiveChatMessageDeletedDetails</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcmddDeletedMessageId</a></li>
--   </ul>
liveChatMessageDeletedDetails :: LiveChatMessageDeletedDetails
lcmddDeletedMessageId :: Lens' LiveChatMessageDeletedDetails (Maybe Text)

-- | A rating that YouTube uses to identify age-restricted content.
data ContentRatingYtRating

-- | <pre>
--   ytAgeRestricted
--   </pre>
YtAgeRestricted :: ContentRatingYtRating
data CommentThreadListResponse

-- | Creates a value of <a>CommentThreadListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctlrEtag</a></li>
--   <li><a>ctlrTokenPagination</a></li>
--   <li><a>ctlrNextPageToken</a></li>
--   <li><a>ctlrPageInfo</a></li>
--   <li><a>ctlrKind</a></li>
--   <li><a>ctlrItems</a></li>
--   <li><a>ctlrVisitorId</a></li>
--   <li><a>ctlrEventId</a></li>
--   </ul>
commentThreadListResponse :: CommentThreadListResponse

-- | Etag of this resource.
ctlrEtag :: Lens' CommentThreadListResponse (Maybe Text)
ctlrTokenPagination :: Lens' CommentThreadListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
ctlrNextPageToken :: Lens' CommentThreadListResponse (Maybe Text)
ctlrPageInfo :: Lens' CommentThreadListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#commentThreadListResponse".
ctlrKind :: Lens' CommentThreadListResponse Text

-- | A list of comment threads that match the request criteria.
ctlrItems :: Lens' CommentThreadListResponse [CommentThread]

-- | The visitorId identifies the visitor.
ctlrVisitorId :: Lens' CommentThreadListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
ctlrEventId :: Lens' CommentThreadListResponse (Maybe Text)

-- | Branding properties for the watch. All deprecated.
--   
--   <i>See:</i> <a>watchSettings</a> smart constructor.
data WatchSettings

-- | Creates a value of <a>WatchSettings</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wsFeaturedPlayListId</a></li>
--   <li><a>wsBackgRoundColor</a></li>
--   <li><a>wsTextColor</a></li>
--   </ul>
watchSettings :: WatchSettings

-- | An ID that uniquely identifies a playlist that displays next to the
--   video player.
wsFeaturedPlayListId :: Lens' WatchSettings (Maybe Text)

-- | The text color for the video watch page's branded area.
wsBackgRoundColor :: Lens' WatchSettings (Maybe Text)

-- | The background color for the video watch page's branded area.
wsTextColor :: Lens' WatchSettings (Maybe Text)

-- | Brief description of the live stream cdn settings.
--   
--   <i>See:</i> <a>cdnSettings</a> smart constructor.
data CdnSettings

-- | Creates a value of <a>CdnSettings</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csIngestionInfo</a></li>
--   <li><a>csFrameRate</a></li>
--   <li><a>csFormat</a></li>
--   <li><a>csResolution</a></li>
--   <li><a>csIngestionType</a></li>
--   </ul>
cdnSettings :: CdnSettings

-- | The ingestionInfo object contains information that YouTube provides
--   that you need to transmit your RTMP or HTTP stream to YouTube.
csIngestionInfo :: Lens' CdnSettings (Maybe IngestionInfo)

-- | The frame rate of the inbound video data.
csFrameRate :: Lens' CdnSettings (Maybe CdnSettingsFrameRate)

-- | The format of the video stream that you are sending to Youtube.
csFormat :: Lens' CdnSettings (Maybe Text)

-- | The resolution of the inbound video data.
csResolution :: Lens' CdnSettings (Maybe CdnSettingsResolution)

-- | The method or protocol used to transmit the video stream.
csIngestionType :: Lens' CdnSettings (Maybe CdnSettingsIngestionType)

-- | The value of captions indicates whether the video has captions or not.
data VideoContentDetailsCaption

-- | <pre>
--   false
--   </pre>
False' :: VideoContentDetailsCaption

-- | <pre>
--   true
--   </pre>
True' :: VideoContentDetailsCaption

-- | Statistics about the live broadcast. These represent a snapshot of the
--   values at the time of the request. Statistics are only returned for
--   live broadcasts.
--   
--   <i>See:</i> <a>liveBroadcastStatistics</a> smart constructor.
data LiveBroadcastStatistics

-- | Creates a value of <a>LiveBroadcastStatistics</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbsTotalChatCount</a></li>
--   <li><a>lbsConcurrentViewers</a></li>
--   </ul>
liveBroadcastStatistics :: LiveBroadcastStatistics

-- | The total number of live chat messages currently on the broadcast. The
--   property and its value will be present if the broadcast is public, has
--   the live chat feature enabled, and has at least one message. Note that
--   this field will not be filled after the broadcast ends. So this
--   property would not identify the number of chat messages for an
--   archived video of a completed live broadcast.
lbsTotalChatCount :: Lens' LiveBroadcastStatistics (Maybe Word64)

-- | The number of viewers currently watching the broadcast. The property
--   and its value will be present if the broadcast has current viewers and
--   the broadcast owner has not hidden the viewcount for the video. Note
--   that YouTube stops tracking the number of concurrent viewers for a
--   broadcast when the broadcast ends. So, this property would not
--   identify the number of viewers watching an archived video of a live
--   broadcast that already ended.
lbsConcurrentViewers :: Lens' LiveBroadcastStatistics (Maybe Word64)

-- | The order parameter specifies the method that will be used to sort
--   resources in the API response.
data SubscriptionsListOrder

-- | <tt>alphabetical</tt> Sort alphabetically.
SLOAlphabetical :: SubscriptionsListOrder

-- | <tt>relevance</tt> Sort by relevance.
SLORelevance :: SubscriptionsListOrder

-- | <tt>unread</tt> Sort by order of activity.
SLOUnread :: SubscriptionsListOrder

-- | Basic details about a video category, such as its localized title.
--   
--   <i>See:</i> <a>videoCategorySnippet</a> smart constructor.
data VideoCategorySnippet

-- | Creates a value of <a>VideoCategorySnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcsAssignable</a></li>
--   <li><a>vcsChannelId</a></li>
--   <li><a>vcsTitle</a></li>
--   </ul>
videoCategorySnippet :: VideoCategorySnippet
vcsAssignable :: Lens' VideoCategorySnippet (Maybe Bool)

-- | The YouTube channel that created the video category.
vcsChannelId :: Lens' VideoCategorySnippet Text

-- | The video category's title.
vcsTitle :: Lens' VideoCategorySnippet (Maybe Text)

-- | An i18nLanguage resource identifies a UI language currently supported
--   by YouTube.
--   
--   <i>See:</i> <a>i18nLanguage</a> smart constructor.
data I18nLanguage

-- | Creates a value of <a>I18nLanguage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilEtag</a></li>
--   <li><a>ilSnippet</a></li>
--   <li><a>ilKind</a></li>
--   <li><a>ilId</a></li>
--   </ul>
i18nLanguage :: I18nLanguage

-- | Etag of this resource.
ilEtag :: Lens' I18nLanguage (Maybe Text)

-- | The snippet object contains basic details about the i18n language,
--   such as language code and human-readable name.
ilSnippet :: Lens' I18nLanguage (Maybe I18nLanguageSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#i18nLanguage".
ilKind :: Lens' I18nLanguage Text

-- | The ID that YouTube uses to uniquely identify the i18n language.
ilId :: Lens' I18nLanguage (Maybe Text)

-- | The video's British Board of Film Classification (BBFC) rating.
data ContentRatingBbfcRating

-- | <pre>
--   bbfc12
--   </pre>
BBFC12 :: ContentRatingBbfcRating

-- | <pre>
--   bbfc12a
--   </pre>
Bbfc12a :: ContentRatingBbfcRating

-- | <pre>
--   bbfc15
--   </pre>
BBFC15 :: ContentRatingBbfcRating

-- | <pre>
--   bbfc18
--   </pre>
BBFC18 :: ContentRatingBbfcRating

-- | <pre>
--   bbfcPg
--   </pre>
BbfcPg :: ContentRatingBbfcRating

-- | <pre>
--   bbfcR18
--   </pre>
BBFCR18 :: ContentRatingBbfcRating

-- | <pre>
--   bbfcU
--   </pre>
BbfcU :: ContentRatingBbfcRating

-- | <pre>
--   bbfcUnrated
--   </pre>
BbfcUnrated :: ContentRatingBbfcRating

-- | Statistics about the video, such as the number of times the video was
--   viewed or liked.
--   
--   <i>See:</i> <a>videoStatistics</a> smart constructor.
data VideoStatistics

-- | Creates a value of <a>VideoStatistics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vsLikeCount</a></li>
--   <li><a>vsCommentCount</a></li>
--   <li><a>vsFavoriteCount</a></li>
--   <li><a>vsDislikeCount</a></li>
--   <li><a>vsViewCount</a></li>
--   </ul>
videoStatistics :: VideoStatistics

-- | The number of users who have indicated that they liked the video by
--   giving it a positive rating.
vsLikeCount :: Lens' VideoStatistics (Maybe Word64)

-- | The number of comments for the video.
vsCommentCount :: Lens' VideoStatistics (Maybe Word64)

-- | The number of users who currently have the video marked as a favorite
--   video.
vsFavoriteCount :: Lens' VideoStatistics (Maybe Word64)

-- | The number of users who have indicated that they disliked the video by
--   giving it a negative rating.
vsDislikeCount :: Lens' VideoStatistics (Maybe Word64)

-- | The number of times the video has been viewed.
vsViewCount :: Lens' VideoStatistics (Maybe Word64)
data ActivityListResponse

-- | Creates a value of <a>ActivityListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alrEtag</a></li>
--   <li><a>alrTokenPagination</a></li>
--   <li><a>alrNextPageToken</a></li>
--   <li><a>alrPageInfo</a></li>
--   <li><a>alrKind</a></li>
--   <li><a>alrItems</a></li>
--   <li><a>alrVisitorId</a></li>
--   <li><a>alrEventId</a></li>
--   <li><a>alrPrevPageToken</a></li>
--   </ul>
activityListResponse :: ActivityListResponse

-- | Etag of this resource.
alrEtag :: Lens' ActivityListResponse (Maybe Text)
alrTokenPagination :: Lens' ActivityListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
alrNextPageToken :: Lens' ActivityListResponse (Maybe Text)
alrPageInfo :: Lens' ActivityListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#activityListResponse".
alrKind :: Lens' ActivityListResponse Text

-- | A list of activities, or events, that match the request criteria.
alrItems :: Lens' ActivityListResponse [Activity]

-- | The visitorId identifies the visitor.
alrVisitorId :: Lens' ActivityListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
alrEventId :: Lens' ActivityListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
alrPrevPageToken :: Lens' ActivityListResponse (Maybe Text)

-- | The video's TV Parental Guidelines (TVPG) rating.
data ContentRatingTvpgRating

-- | <pre>
--   pg14
--   </pre>
PG14 :: ContentRatingTvpgRating

-- | <pre>
--   tvpgG
--   </pre>
TvpgG :: ContentRatingTvpgRating

-- | <pre>
--   tvpgMa
--   </pre>
TvpgMa :: ContentRatingTvpgRating

-- | <pre>
--   tvpgPg
--   </pre>
TvpgPg :: ContentRatingTvpgRating

-- | <pre>
--   tvpgUnrated
--   </pre>
TvpgUnrated :: ContentRatingTvpgRating

-- | <pre>
--   tvpgY
--   </pre>
TvpgY :: ContentRatingTvpgRating

-- | <pre>
--   tvpgY7
--   </pre>
TVPGY7 :: ContentRatingTvpgRating

-- | <pre>
--   tvpgY7Fv
--   </pre>
TvpgY7Fv :: ContentRatingTvpgRating

-- | This parameter indicates whether the API should return comments
--   formatted as HTML or as plain text.
data CommentsListTextFormat

-- | <tt>html</tt> Returns the comments in HTML format. This is the default
--   value.
HTML :: CommentsListTextFormat

-- | <tt>plainText</tt> Returns the comments in plain text format.
PlainText :: CommentsListTextFormat

-- | Specifies the rating to record.
data VideosRateRating

-- | <tt>dislike</tt> Records that the authenticated user disliked the
--   video.
VDislike :: VideosRateRating

-- | <tt>like</tt> Records that the authenticated user liked the video.
VLike :: VideosRateRating

-- | <tt>none</tt> Removes any rating that the authenticated user had
--   previously set for the video.
VNone :: VideosRateRating

-- | Details about a channel bulletin post.
--   
--   <i>See:</i> <a>activityContentDetailsBulletin</a> smart constructor.
data ActivityContentDetailsBulletin

-- | Creates a value of <a>ActivityContentDetailsBulletin</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdbResourceId</a></li>
--   </ul>
activityContentDetailsBulletin :: ActivityContentDetailsBulletin

-- | The resourceId object contains information that identifies the
--   resource associated with a bulletin post.
acdbResourceId :: Lens' ActivityContentDetailsBulletin (Maybe ResourceId)

-- | The projection format of this broadcast. This defaults to rectangular.
data LiveBroadcastContentDetailsProjection

-- | <pre>
--   360
--   </pre>
LBCDP360 :: LiveBroadcastContentDetailsProjection

-- | <pre>
--   rectangular
--   </pre>
LBCDPRectangular :: LiveBroadcastContentDetailsProjection

-- | The caption track's status.
data CaptionSnippetStatus

-- | <pre>
--   failed
--   </pre>
Failed :: CaptionSnippetStatus

-- | <pre>
--   serving
--   </pre>
Serving :: CaptionSnippetStatus

-- | <pre>
--   syncing
--   </pre>
Syncing :: CaptionSnippetStatus
data VideoAbuseReport

-- | Creates a value of <a>VideoAbuseReport</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varSecondaryReasonId</a></li>
--   <li><a>varReasonId</a></li>
--   <li><a>varVideoId</a></li>
--   <li><a>varLanguage</a></li>
--   <li><a>varComments</a></li>
--   </ul>
videoAbuseReport :: VideoAbuseReport

-- | The ID of this abuse report secondary reason.
varSecondaryReasonId :: Lens' VideoAbuseReport (Maybe Text)

-- | The high-level, or primary, reason that the content is abusive. The
--   value is an abuse report reason ID.
varReasonId :: Lens' VideoAbuseReport (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the video.
varVideoId :: Lens' VideoAbuseReport (Maybe Text)

-- | The language that the content was viewed in.
varLanguage :: Lens' VideoAbuseReport (Maybe Text)

-- | Additional comments regarding the abuse report.
varComments :: Lens' VideoAbuseReport (Maybe Text)

-- | The video's rating in Slovakia.
data ContentRatingSkfilmRating

-- | <pre>
--   skfilmG
--   </pre>
SkfilmG :: ContentRatingSkfilmRating

-- | <pre>
--   skfilmP2
--   </pre>
SKFILMP2 :: ContentRatingSkfilmRating

-- | <pre>
--   skfilmP5
--   </pre>
SKFILMP5 :: ContentRatingSkfilmRating

-- | <pre>
--   skfilmP8
--   </pre>
SKFILMP8 :: ContentRatingSkfilmRating

-- | <pre>
--   skfilmUnrated
--   </pre>
SkfilmUnrated :: ContentRatingSkfilmRating

-- | The type of the channel section.
data ChannelSectionSnippetType

-- | <pre>
--   allPlaylists
--   </pre>
AllPlayLists :: ChannelSectionSnippetType

-- | <pre>
--   channelsectionTypeUndefined
--   </pre>
ChannelsectionTypeUndefined :: ChannelSectionSnippetType

-- | <pre>
--   completedEvents
--   </pre>
CompletedEvents :: ChannelSectionSnippetType

-- | <pre>
--   likedPlaylists
--   </pre>
LikedPlayLists :: ChannelSectionSnippetType

-- | <pre>
--   likes
--   </pre>
Likes :: ChannelSectionSnippetType

-- | <pre>
--   liveEvents
--   </pre>
LiveEvents :: ChannelSectionSnippetType

-- | <pre>
--   multipleChannels
--   </pre>
MultipleChannels :: ChannelSectionSnippetType

-- | <pre>
--   multiplePlaylists
--   </pre>
MultiplePlayLists :: ChannelSectionSnippetType

-- | <pre>
--   popularUploads
--   </pre>
PopularUploads :: ChannelSectionSnippetType

-- | <pre>
--   postedPlaylists
--   </pre>
PostedPlayLists :: ChannelSectionSnippetType

-- | <pre>
--   postedVideos
--   </pre>
PostedVideos :: ChannelSectionSnippetType

-- | <pre>
--   recentActivity
--   </pre>
RecentActivity :: ChannelSectionSnippetType

-- | <pre>
--   recentPosts
--   </pre>
RecentPosts :: ChannelSectionSnippetType

-- | <pre>
--   recentUploads
--   </pre>
RecentUploads :: ChannelSectionSnippetType

-- | <pre>
--   singlePlaylist
--   </pre>
SinglePlayList :: ChannelSectionSnippetType

-- | <pre>
--   subscriptions
--   </pre>
Subscriptions :: ChannelSectionSnippetType

-- | <pre>
--   upcomingEvents
--   </pre>
UpcomingEvents :: ChannelSectionSnippetType

-- | The broadcastType parameter filters the API response to only include
--   broadcasts with the specified type. This is only compatible with the
--   mine filter for now.
data LiveBroadcastsListBroadcastType

-- | <tt>all</tt> Return all broadcasts.
All :: LiveBroadcastsListBroadcastType

-- | <tt>event</tt> Return only scheduled event broadcasts.
Event :: LiveBroadcastsListBroadcastType

-- | <tt>persistent</tt> Return only persistent broadcasts.
Persistent :: LiveBroadcastsListBroadcastType
data ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbBlasphemy
--   </pre>
FpbBlasphemy :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbCriminalTechniques
--   </pre>
FpbCriminalTechniques :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbDrugs
--   </pre>
FpbDrugs :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbHorror
--   </pre>
FpbHorror :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbImitativeActsTechniques
--   </pre>
FpbImitativeActsTechniques :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbLanguage
--   </pre>
FpbLanguage :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbNudity
--   </pre>
FpbNudity :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbPrejudice
--   </pre>
FpbPrejudice :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbSex
--   </pre>
FpbSex :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbSexualViolence
--   </pre>
FpbSexualViolence :: ContentRatingFpbRatingReasonsItem

-- | <pre>
--   fpbViolence
--   </pre>
FpbViolence :: ContentRatingFpbRatingReasonsItem

-- | The video's processing status. This value indicates whether YouTube
--   was able to process the video or if the video is still being
--   processed.
data VideoProcessingDetailsProcessingStatus

-- | <pre>
--   failed
--   </pre>
VPDPSFailed :: VideoProcessingDetailsProcessingStatus

-- | <pre>
--   processing
--   </pre>
VPDPSProcessing :: VideoProcessingDetailsProcessingStatus

-- | <pre>
--   succeeded
--   </pre>
VPDPSSucceeded :: VideoProcessingDetailsProcessingStatus

-- | <pre>
--   terminated
--   </pre>
VPDPSTerminated :: VideoProcessingDetailsProcessingStatus

-- | The type of call-to-action, a message to the user indicating action
--   that can be taken.
data ActivityContentDetailsPromotedItemCtaType

-- | <pre>
--   unspecified
--   </pre>
Unspecified :: ActivityContentDetailsPromotedItemCtaType

-- | <pre>
--   visitAdvertiserSite
--   </pre>
VisitAdvertiserSite :: ActivityContentDetailsPromotedItemCtaType

-- | Information about an audio stream.
--   
--   <i>See:</i> <a>videoFileDetailsAudioStream</a> smart constructor.
data VideoFileDetailsAudioStream

-- | Creates a value of <a>VideoFileDetailsAudioStream</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vfdasBitrateBps</a></li>
--   <li><a>vfdasVendor</a></li>
--   <li><a>vfdasCodec</a></li>
--   <li><a>vfdasChannelCount</a></li>
--   </ul>
videoFileDetailsAudioStream :: VideoFileDetailsAudioStream

-- | The audio stream's bitrate, in bits per second.
vfdasBitrateBps :: Lens' VideoFileDetailsAudioStream (Maybe Word64)

-- | A value that uniquely identifies a video vendor. Typically, the value
--   is a four-letter vendor code.
vfdasVendor :: Lens' VideoFileDetailsAudioStream (Maybe Text)

-- | The audio codec that the stream uses.
vfdasCodec :: Lens' VideoFileDetailsAudioStream (Maybe Text)

-- | The number of audio channels that the stream contains.
vfdasChannelCount :: Lens' VideoFileDetailsAudioStream (Maybe Word32)
data I18nRegionListResponse

-- | Creates a value of <a>I18nRegionListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irlrEtag</a></li>
--   <li><a>irlrKind</a></li>
--   <li><a>irlrItems</a></li>
--   <li><a>irlrVisitorId</a></li>
--   <li><a>irlrEventId</a></li>
--   </ul>
i18nRegionListResponse :: I18nRegionListResponse

-- | Etag of this resource.
irlrEtag :: Lens' I18nRegionListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#i18nRegionListResponse".
irlrKind :: Lens' I18nRegionListResponse Text

-- | A list of regions where YouTube is available. In this map, the i18n
--   region ID is the map key, and its value is the corresponding
--   i18nRegion resource.
irlrItems :: Lens' I18nRegionListResponse [I18nRegion]

-- | The visitorId identifies the visitor.
irlrVisitorId :: Lens' I18nRegionListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
irlrEventId :: Lens' I18nRegionListResponse (Maybe Text)

-- | The channelType parameter lets you restrict a search to a particular
--   type of channel.
data SearchListChannelType

-- | <tt>any</tt> Return all channels.
SLCTAny :: SearchListChannelType

-- | <tt>show</tt> Only retrieve shows.
SLCTShow :: SearchListChannelType

-- | Basic details about a guide category.
--   
--   <i>See:</i> <a>guideCategorySnippet</a> smart constructor.
data GuideCategorySnippet

-- | Creates a value of <a>GuideCategorySnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gcsChannelId</a></li>
--   <li><a>gcsTitle</a></li>
--   </ul>
guideCategorySnippet :: GuideCategorySnippet
gcsChannelId :: Lens' GuideCategorySnippet Text

-- | Description of the guide category.
gcsTitle :: Lens' GuideCategorySnippet (Maybe Text)

-- | The video's Korea Media Rating Board (영상물등급위원회) rating. The KMRB rates
--   videos in South Korea.
data ContentRatingKmrbRating

-- | <pre>
--   kmrb12plus
--   </pre>
Kmrb12plus :: ContentRatingKmrbRating

-- | <pre>
--   kmrb15plus
--   </pre>
Kmrb15plus :: ContentRatingKmrbRating

-- | <pre>
--   kmrbAll
--   </pre>
KmrbAll :: ContentRatingKmrbRating

-- | <pre>
--   kmrbR
--   </pre>
KmrbR :: ContentRatingKmrbRating

-- | <pre>
--   kmrbTeenr
--   </pre>
KmrbTeenr :: ContentRatingKmrbRating

-- | <pre>
--   kmrbUnrated
--   </pre>
KmrbUnrated :: ContentRatingKmrbRating

-- | The video's Office of Film and Literature Classification (OFLC - New
--   Zealand) rating.
data ContentRatingOflcRating

-- | <pre>
--   oflcG
--   </pre>
OflcG :: ContentRatingOflcRating

-- | <pre>
--   oflcM
--   </pre>
OflcM :: ContentRatingOflcRating

-- | <pre>
--   oflcPg
--   </pre>
OflcPg :: ContentRatingOflcRating

-- | <pre>
--   oflcR13
--   </pre>
OFLCR13 :: ContentRatingOflcRating

-- | <pre>
--   oflcR15
--   </pre>
OFLCR15 :: ContentRatingOflcRating

-- | <pre>
--   oflcR16
--   </pre>
OFLCR16 :: ContentRatingOflcRating

-- | <pre>
--   oflcR18
--   </pre>
OFLCR18 :: ContentRatingOflcRating

-- | <pre>
--   oflcRp13
--   </pre>
OFLCRP13 :: ContentRatingOflcRating

-- | <pre>
--   oflcRp16
--   </pre>
OFLCRP16 :: ContentRatingOflcRating

-- | <pre>
--   oflcUnrated
--   </pre>
OflcUnrated :: ContentRatingOflcRating

-- | Rating system in France - Commission de classification
--   cinematographique
data ContentRatingCNCRating

-- | <pre>
--   cnc10
--   </pre>
CNC10 :: ContentRatingCNCRating

-- | <pre>
--   cnc12
--   </pre>
CNC12 :: ContentRatingCNCRating

-- | <pre>
--   cnc16
--   </pre>
CNC16 :: ContentRatingCNCRating

-- | <pre>
--   cnc18
--   </pre>
CNC18 :: ContentRatingCNCRating

-- | <pre>
--   cncE
--   </pre>
CNCE :: ContentRatingCNCRating

-- | <pre>
--   cncT
--   </pre>
CNCT :: ContentRatingCNCRating

-- | <pre>
--   cncUnrated
--   </pre>
CNCUnrated :: ContentRatingCNCRating
data CaptionListResponse

-- | Creates a value of <a>CaptionListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cEtag</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cItems</a></li>
--   <li><a>cVisitorId</a></li>
--   <li><a>cEventId</a></li>
--   </ul>
captionListResponse :: CaptionListResponse

-- | Etag of this resource.
cEtag :: Lens' CaptionListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#captionListResponse".
cKind :: Lens' CaptionListResponse Text

-- | A list of captions that match the request criteria.
cItems :: Lens' CaptionListResponse [Caption]

-- | The visitorId identifies the visitor.
cVisitorId :: Lens' CaptionListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
cEventId :: Lens' CaptionListResponse (Maybe Text)

-- | Information about the playlist item's privacy status.
--   
--   <i>See:</i> <a>playListItemStatus</a> smart constructor.
data PlayListItemStatus

-- | Creates a value of <a>PlayListItemStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plisPrivacyStatus</a></li>
--   </ul>
playListItemStatus :: PlayListItemStatus

-- | This resource's privacy status.
plisPrivacyStatus :: Lens' PlayListItemStatus (Maybe PlayListItemStatusPrivacyStatus)

-- | Describes the spatial position of a visual widget inside a video. It
--   is a union of various position types, out of which only will be set
--   one.
--   
--   <i>See:</i> <a>invideoPosition</a> smart constructor.
data InvideoPosition

-- | Creates a value of <a>InvideoPosition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipCornerPosition</a></li>
--   <li><a>ipType</a></li>
--   </ul>
invideoPosition :: InvideoPosition

-- | Describes in which corner of the video the visual widget will appear.
ipCornerPosition :: Lens' InvideoPosition (Maybe InvideoPositionCornerPosition)

-- | Defines the position type.
ipType :: Lens' InvideoPosition (Maybe InvideoPositionType)

-- | Rating system in Turkey - Evaluation and Classification Board of the
--   Ministry of Culture and Tourism
data ContentRatingEcbmctRating

-- | <pre>
--   ecbmct13a
--   </pre>
Ecbmct13a :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct13plus
--   </pre>
Ecbmct13plus :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct15a
--   </pre>
Ecbmct15a :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct15plus
--   </pre>
Ecbmct15plus :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct18plus
--   </pre>
Ecbmct18plus :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct7a
--   </pre>
Ecbmct7a :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmct7plus
--   </pre>
Ecbmct7plus :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmctG
--   </pre>
EcbmctG :: ContentRatingEcbmctRating

-- | <pre>
--   ecbmctUnrated
--   </pre>
EcbmctUnrated :: ContentRatingEcbmctRating

-- | Specifies the projection format of the video.
data VideoContentDetailsProjection

-- | <pre>
--   360
--   </pre>
VCDP360 :: VideoContentDetailsProjection

-- | <pre>
--   rectangular
--   </pre>
VCDPRectangular :: VideoContentDetailsProjection

-- | The video's rating in Greece.
data ContentRatingGrfilmRating

-- | <pre>
--   grfilmE
--   </pre>
GrfilmE :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK
--   </pre>
GrfilmK :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK12
--   </pre>
GRFILMK12 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK13
--   </pre>
GRFILMK13 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK15
--   </pre>
GRFILMK15 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK17
--   </pre>
GRFILMK17 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmK18
--   </pre>
GRFILMK18 :: ContentRatingGrfilmRating

-- | <pre>
--   grfilmUnrated
--   </pre>
GrfilmUnrated :: ContentRatingGrfilmRating

-- | The order parameter specifies the order in which the API response
--   should list comment threads. Valid values are: - time - Comment
--   threads are ordered by time. This is the default behavior. - relevance
--   - Comment threads are ordered by relevance.Note: This parameter is not
--   supported for use in conjunction with the id parameter.
data CommentThreadsListOrder

-- | <tt>relevance</tt> Order by relevance.
CTLORelevance :: CommentThreadsListOrder

-- | <tt>time</tt> Order by time.
CTLOTime :: CommentThreadsListOrder
data LiveStreamHealthStatus

-- | Creates a value of <a>LiveStreamHealthStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lshsStatus</a></li>
--   <li><a>lshsConfigurationIssues</a></li>
--   <li><a>lshsLastUpdateTimeSeconds</a></li>
--   </ul>
liveStreamHealthStatus :: LiveStreamHealthStatus

-- | The status code of this stream
lshsStatus :: Lens' LiveStreamHealthStatus (Maybe LiveStreamHealthStatusStatus)

-- | The configurations issues on this stream
lshsConfigurationIssues :: Lens' LiveStreamHealthStatus [LiveStreamConfigurationIssue]

-- | The last time this status was updated (in seconds)
lshsLastUpdateTimeSeconds :: Lens' LiveStreamHealthStatus (Maybe Word64)

-- | Localizations for different languages
--   
--   <i>See:</i> <a>channelSectionLocalizations</a> smart constructor.
data ChannelSectionLocalizations

-- | Creates a value of <a>ChannelSectionLocalizations</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cslAddtional</a></li>
--   </ul>
channelSectionLocalizations :: HashMap Text ChannelSectionLocalization -> ChannelSectionLocalizations

-- | The language tag, using string since map_key require simple types.
cslAddtional :: Lens' ChannelSectionLocalizations (HashMap Text ChannelSectionLocalization)

-- | The video's rating in Israel.
data ContentRatingIlfilmRating

-- | <pre>
--   ilfilm12
--   </pre>
ILFILM12 :: ContentRatingIlfilmRating

-- | <pre>
--   ilfilm16
--   </pre>
ILFILM16 :: ContentRatingIlfilmRating

-- | <pre>
--   ilfilm18
--   </pre>
ILFILM18 :: ContentRatingIlfilmRating

-- | <pre>
--   ilfilmAa
--   </pre>
IlfilmAa :: ContentRatingIlfilmRating

-- | <pre>
--   ilfilmUnrated
--   </pre>
IlfilmUnrated :: ContentRatingIlfilmRating
data SubscriptionListResponse

-- | Creates a value of <a>SubscriptionListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>subEtag</a></li>
--   <li><a>subTokenPagination</a></li>
--   <li><a>subNextPageToken</a></li>
--   <li><a>subPageInfo</a></li>
--   <li><a>subKind</a></li>
--   <li><a>subItems</a></li>
--   <li><a>subVisitorId</a></li>
--   <li><a>subEventId</a></li>
--   <li><a>subPrevPageToken</a></li>
--   </ul>
subscriptionListResponse :: SubscriptionListResponse

-- | Etag of this resource.
subEtag :: Lens' SubscriptionListResponse (Maybe Text)
subTokenPagination :: Lens' SubscriptionListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
subNextPageToken :: Lens' SubscriptionListResponse (Maybe Text)
subPageInfo :: Lens' SubscriptionListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#subscriptionListResponse".
subKind :: Lens' SubscriptionListResponse Text

-- | A list of subscriptions that match the request criteria.
subItems :: Lens' SubscriptionListResponse [Subscription]

-- | The visitorId identifies the visitor.
subVisitorId :: Lens' SubscriptionListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
subEventId :: Lens' SubscriptionListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
subPrevPageToken :: Lens' SubscriptionListResponse (Maybe Text)

-- | The video's rating in Poland.
data ContentRatingNbcplRating

-- | <pre>
--   nbcpl18plus
--   </pre>
Nbcpl18plus :: ContentRatingNbcplRating

-- | <pre>
--   nbcplI
--   </pre>
NbcplI :: ContentRatingNbcplRating

-- | <pre>
--   nbcplIi
--   </pre>
NbcplIi :: ContentRatingNbcplRating

-- | <pre>
--   nbcplIii
--   </pre>
NbcplIii :: ContentRatingNbcplRating

-- | <pre>
--   nbcplIv
--   </pre>
NbcplIv :: ContentRatingNbcplRating

-- | <pre>
--   nbcplUnrated
--   </pre>
NbcplUnrated :: ContentRatingNbcplRating

-- | The status of the uploaded video.
data VideoStatusUploadStatus

-- | <pre>
--   deleted
--   </pre>
VSUSDeleted :: VideoStatusUploadStatus

-- | <pre>
--   failed
--   </pre>
VSUSFailed :: VideoStatusUploadStatus

-- | <pre>
--   processed
--   </pre>
VSUSProcessed :: VideoStatusUploadStatus

-- | <pre>
--   rejected
--   </pre>
VSUSRejected :: VideoStatusUploadStatus

-- | <pre>
--   uploaded
--   </pre>
VSUSUploaded :: VideoStatusUploadStatus

-- | Localized versions of certain video properties (e.g. title).
--   
--   <i>See:</i> <a>videoLocalization</a> smart constructor.
data VideoLocalization

-- | Creates a value of <a>VideoLocalization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlTitle</a></li>
--   <li><a>vlDescription</a></li>
--   </ul>
videoLocalization :: VideoLocalization

-- | Localized version of the video's title.
vlTitle :: Lens' VideoLocalization (Maybe Text)

-- | Localized version of the video's description.
vlDescription :: Lens' VideoLocalization (Maybe Text)

-- | The video's rating from Ireland's Raidió Teilifís Éireann.
data ContentRatingRteRating

-- | <pre>
--   rteCh
--   </pre>
RteCh :: ContentRatingRteRating

-- | <pre>
--   rteGa
--   </pre>
RteGa :: ContentRatingRteRating

-- | <pre>
--   rteMa
--   </pre>
RteMa :: ContentRatingRteRating

-- | <pre>
--   rtePs
--   </pre>
RtePs :: ContentRatingRteRating

-- | <pre>
--   rteUnrated
--   </pre>
RteUnrated :: ContentRatingRteRating
data CommentListResponse

-- | Creates a value of <a>CommentListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>comEtag</a></li>
--   <li><a>comTokenPagination</a></li>
--   <li><a>comNextPageToken</a></li>
--   <li><a>comPageInfo</a></li>
--   <li><a>comKind</a></li>
--   <li><a>comItems</a></li>
--   <li><a>comVisitorId</a></li>
--   <li><a>comEventId</a></li>
--   </ul>
commentListResponse :: CommentListResponse

-- | Etag of this resource.
comEtag :: Lens' CommentListResponse (Maybe Text)
comTokenPagination :: Lens' CommentListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
comNextPageToken :: Lens' CommentListResponse (Maybe Text)
comPageInfo :: Lens' CommentListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#commentListResponse".
comKind :: Lens' CommentListResponse Text

-- | A list of comments that match the request criteria.
comItems :: Lens' CommentListResponse [Comment]

-- | The visitorId identifies the visitor.
comVisitorId :: Lens' CommentListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
comEventId :: Lens' CommentListResponse (Maybe Text)

-- | Player to be used for a video playback.
--   
--   <i>See:</i> <a>videoPlayer</a> smart constructor.
data VideoPlayer

-- | Creates a value of <a>VideoPlayer</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpEmbedHeight</a></li>
--   <li><a>vpEmbedWidth</a></li>
--   <li><a>vpEmbedHTML</a></li>
--   </ul>
videoPlayer :: VideoPlayer
vpEmbedHeight :: Lens' VideoPlayer (Maybe Int64)

-- | The embed width
vpEmbedWidth :: Lens' VideoPlayer (Maybe Int64)

-- | An tag that embeds a player that will play the video.
vpEmbedHTML :: Lens' VideoPlayer (Maybe Text)

-- | Describes a single promoted item id. It is a union of various possible
--   types.
--   
--   <i>See:</i> <a>promotedItemId</a> smart constructor.
data PromotedItemId

-- | Creates a value of <a>PromotedItemId</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piiRecentlyUploadedBy</a></li>
--   <li><a>piiVideoId</a></li>
--   <li><a>piiWebsiteURL</a></li>
--   <li><a>piiType</a></li>
--   </ul>
promotedItemId :: PromotedItemId

-- | If type is recentUpload, this field identifies the channel from which
--   to take the recent upload. If missing, the channel is assumed to be
--   the same channel for which the invideoPromotion is set.
piiRecentlyUploadedBy :: Lens' PromotedItemId (Maybe Text)

-- | If the promoted item represents a video, this field represents the
--   unique YouTube ID identifying it. This field will be present only if
--   type has the value video.
piiVideoId :: Lens' PromotedItemId (Maybe Text)

-- | If the promoted item represents a website, this field represents the
--   url pointing to the website. This field will be present only if type
--   has the value website.
piiWebsiteURL :: Lens' PromotedItemId (Maybe Text)

-- | Describes the type of the promoted item.
piiType :: Lens' PromotedItemId (Maybe PromotedItemIdType)

-- | Set this parameter's value to html or plainText to instruct the API to
--   return the comments left by users in html formatted or in plain text.
data CommentThreadsListTextFormat

-- | <tt>html</tt> Returns the comments in HTML format. This is the default
--   value.
CTLTFHTML :: CommentThreadsListTextFormat

-- | <tt>plainText</tt> Returns the comments in plain text format.
CTLTFPlainText :: CommentThreadsListTextFormat
data LocalizedString

-- | Creates a value of <a>LocalizedString</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsValue</a></li>
--   <li><a>lsLanguage</a></li>
--   </ul>
localizedString :: LocalizedString
lsValue :: Lens' LocalizedString (Maybe Text)
lsLanguage :: Lens' LocalizedString (Maybe Text)

-- | The video's Irish Film Classification Office (IFCO - Ireland) rating.
--   See the IFCO website for more information.
data ContentRatingIfcoRating

-- | <pre>
--   ifco12
--   </pre>
IFCO12 :: ContentRatingIfcoRating

-- | <pre>
--   ifco12a
--   </pre>
Ifco12a :: ContentRatingIfcoRating

-- | <pre>
--   ifco15
--   </pre>
IFCO15 :: ContentRatingIfcoRating

-- | <pre>
--   ifco15a
--   </pre>
Ifco15a :: ContentRatingIfcoRating

-- | <pre>
--   ifco16
--   </pre>
IFCO16 :: ContentRatingIfcoRating

-- | <pre>
--   ifco18
--   </pre>
IFCO18 :: ContentRatingIfcoRating

-- | <pre>
--   ifcoG
--   </pre>
IfcoG :: ContentRatingIfcoRating

-- | <pre>
--   ifcoPg
--   </pre>
IfcoPg :: ContentRatingIfcoRating

-- | <pre>
--   ifcoUnrated
--   </pre>
IfcoUnrated :: ContentRatingIfcoRating
data PlayListItemListResponse

-- | Creates a value of <a>PlayListItemListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plilrEtag</a></li>
--   <li><a>plilrTokenPagination</a></li>
--   <li><a>plilrNextPageToken</a></li>
--   <li><a>plilrPageInfo</a></li>
--   <li><a>plilrKind</a></li>
--   <li><a>plilrItems</a></li>
--   <li><a>plilrVisitorId</a></li>
--   <li><a>plilrEventId</a></li>
--   <li><a>plilrPrevPageToken</a></li>
--   </ul>
playListItemListResponse :: PlayListItemListResponse

-- | Etag of this resource.
plilrEtag :: Lens' PlayListItemListResponse (Maybe Text)
plilrTokenPagination :: Lens' PlayListItemListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
plilrNextPageToken :: Lens' PlayListItemListResponse (Maybe Text)
plilrPageInfo :: Lens' PlayListItemListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#playlistItemListResponse".
plilrKind :: Lens' PlayListItemListResponse Text

-- | A list of playlist items that match the request criteria.
plilrItems :: Lens' PlayListItemListResponse [PlayListItem]

-- | The visitorId identifies the visitor.
plilrVisitorId :: Lens' PlayListItemListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
plilrEventId :: Lens' PlayListItemListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
plilrPrevPageToken :: Lens' PlayListItemListResponse (Maybe Text)

-- | Identifies the new moderation status of the specified comments.
data CommentsSetModerationStatusModerationStatus

-- | <tt>heldForReview</tt> Marks a comment as awaiting review by a
--   moderator.
CSMSMSHeldForReview :: CommentsSetModerationStatusModerationStatus

-- | <tt>published</tt> Clears a comment for public display.
CSMSMSPublished :: CommentsSetModerationStatusModerationStatus

-- | <tt>rejected</tt> Rejects a comment as being unfit for display. This
--   action also effectively hides all replies to the rejected comment.
--   Note: The API does not currently provide a way to list or otherwise
--   discover rejected comments. However, you can change the moderation
--   status of a rejected comment if you still know its ID. If you were to
--   change the moderation status of a rejected comment, the comment
--   replies would subsequently be discoverable again as well.
CSMSMSRejected :: CommentsSetModerationStatusModerationStatus

-- | A guideCategory resource identifies a category that YouTube
--   algorithmically assigns based on a channel's content or other
--   indicators, such as the channel's popularity. The list is similar to
--   video categories, with the difference being that a video's uploader
--   can assign a video category but only YouTube can assign a channel
--   category.
--   
--   <i>See:</i> <a>guideCategory</a> smart constructor.
data GuideCategory

-- | Creates a value of <a>GuideCategory</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gcEtag</a></li>
--   <li><a>gcSnippet</a></li>
--   <li><a>gcKind</a></li>
--   <li><a>gcId</a></li>
--   </ul>
guideCategory :: GuideCategory

-- | Etag of this resource.
gcEtag :: Lens' GuideCategory (Maybe Text)

-- | The snippet object contains basic details about the category, such as
--   its title.
gcSnippet :: Lens' GuideCategory (Maybe GuideCategorySnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#guideCategory".
gcKind :: Lens' GuideCategory Text

-- | The ID that YouTube uses to uniquely identify the guide category.
gcId :: Lens' GuideCategory (Maybe Text)

-- | Basic details about a search result, including title, description and
--   thumbnails of the item referenced by the search result.
--   
--   <i>See:</i> <a>searchResultSnippet</a> smart constructor.
data SearchResultSnippet

-- | Creates a value of <a>SearchResultSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srsPublishedAt</a></li>
--   <li><a>srsChannelTitle</a></li>
--   <li><a>srsChannelId</a></li>
--   <li><a>srsThumbnails</a></li>
--   <li><a>srsTitle</a></li>
--   <li><a>srsLiveBroadcastContent</a></li>
--   <li><a>srsDescription</a></li>
--   </ul>
searchResultSnippet :: SearchResultSnippet

-- | The creation date and time of the resource that the search result
--   identifies. The value is specified in ISO 8601
--   (YYYY-MM-DDThh:mm:ss.sZ) format.
srsPublishedAt :: Lens' SearchResultSnippet (Maybe UTCTime)

-- | The title of the channel that published the resource that the search
--   result identifies.
srsChannelTitle :: Lens' SearchResultSnippet (Maybe Text)

-- | The value that YouTube uses to uniquely identify the channel that
--   published the resource that the search result identifies.
srsChannelId :: Lens' SearchResultSnippet (Maybe Text)

-- | A map of thumbnail images associated with the search result. For each
--   object in the map, the key is the name of the thumbnail image, and the
--   value is an object that contains other information about the
--   thumbnail.
srsThumbnails :: Lens' SearchResultSnippet (Maybe ThumbnailDetails)

-- | The title of the search result.
srsTitle :: Lens' SearchResultSnippet (Maybe Text)

-- | It indicates if the resource (video or channel) has upcoming/active
--   live broadcast content. Or it's "none" if there is not any
--   upcoming/active live broadcasts.
srsLiveBroadcastContent :: Lens' SearchResultSnippet (Maybe SearchResultSnippetLiveBroadcastContent)

-- | A description of the search result.
srsDescription :: Lens' SearchResultSnippet (Maybe Text)
data LiveChatPollItem

-- | Creates a value of <a>LiveChatPollItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpiItemId</a></li>
--   <li><a>lcpiDescription</a></li>
--   </ul>
liveChatPollItem :: LiveChatPollItem
lcpiItemId :: Lens' LiveChatPollItem (Maybe Text)

-- | Plain text description of the item.
lcpiDescription :: Lens' LiveChatPollItem (Maybe Text)

-- | The name of the social network.
data ActivityContentDetailsSocialType

-- | <pre>
--   facebook
--   </pre>
ACDSTFacebook :: ActivityContentDetailsSocialType

-- | <pre>
--   googlePlus
--   </pre>
ACDSTGooglePlus :: ActivityContentDetailsSocialType

-- | <pre>
--   twitter
--   </pre>
ACDSTTwitter :: ActivityContentDetailsSocialType

-- | <pre>
--   unspecified
--   </pre>
ACDSTUnspecified :: ActivityContentDetailsSocialType

-- | The video's rating from Medietilsynet, the Norwegian Media Authority.
data ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet11
--   </pre>
MEDIETILSYNET11 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet12
--   </pre>
MEDIETILSYNET12 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet15
--   </pre>
MEDIETILSYNET15 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet18
--   </pre>
MEDIETILSYNET18 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet6
--   </pre>
MEDIETILSYNET6 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet7
--   </pre>
MEDIETILSYNET7 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynet9
--   </pre>
MEDIETILSYNET9 :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynetA
--   </pre>
MedietilsynetA :: ContentRatingMedietilsynetRating

-- | <pre>
--   medietilsynetUnrated
--   </pre>
MedietilsynetUnrated :: ContentRatingMedietilsynetRating

-- | This resource's privacy status.
data PlayListItemStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
PLISPSPrivate :: PlayListItemStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
PLISPSPublic :: PlayListItemStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
PLISPSUnListed :: PlayListItemStatusPrivacyStatus

-- | The type of activity this subscription is for (only uploads,
--   everything).
data SubscriptionContentDetailsActivityType

-- | <pre>
--   all
--   </pre>
SCDATAll :: SubscriptionContentDetailsActivityType

-- | <pre>
--   uploads
--   </pre>
SCDATUploads :: SubscriptionContentDetailsActivityType

-- | The video's rating from South Africa's Film and Publication Board.
data ContentRatingFpbRating

-- | <pre>
--   fpb10
--   </pre>
FPB10 :: ContentRatingFpbRating

-- | <pre>
--   fpb1012Pg
--   </pre>
Fpb1012Pg :: ContentRatingFpbRating

-- | <pre>
--   fpb13
--   </pre>
FPB13 :: ContentRatingFpbRating

-- | <pre>
--   fpb16
--   </pre>
FPB16 :: ContentRatingFpbRating

-- | <pre>
--   fpb18
--   </pre>
FPB18 :: ContentRatingFpbRating

-- | <pre>
--   fpb79Pg
--   </pre>
Fpb79Pg :: ContentRatingFpbRating

-- | <pre>
--   fpbA
--   </pre>
FpbA :: ContentRatingFpbRating

-- | <pre>
--   fpbPg
--   </pre>
FpbPg :: ContentRatingFpbRating

-- | <pre>
--   fpbUnrated
--   </pre>
FpbUnrated :: ContentRatingFpbRating

-- | <pre>
--   fpbX18
--   </pre>
FPBX18 :: ContentRatingFpbRating

-- | <pre>
--   fpbXx
--   </pre>
FpbXx :: ContentRatingFpbRating
data SponsorListResponse

-- | Creates a value of <a>SponsorListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spoEtag</a></li>
--   <li><a>spoTokenPagination</a></li>
--   <li><a>spoNextPageToken</a></li>
--   <li><a>spoPageInfo</a></li>
--   <li><a>spoKind</a></li>
--   <li><a>spoItems</a></li>
--   <li><a>spoVisitorId</a></li>
--   <li><a>spoEventId</a></li>
--   </ul>
sponsorListResponse :: SponsorListResponse

-- | Etag of this resource.
spoEtag :: Lens' SponsorListResponse (Maybe Text)
spoTokenPagination :: Lens' SponsorListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
spoNextPageToken :: Lens' SponsorListResponse (Maybe Text)
spoPageInfo :: Lens' SponsorListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#sponsorListResponse".
spoKind :: Lens' SponsorListResponse Text

-- | A list of sponsors that match the request criteria.
spoItems :: Lens' SponsorListResponse [Sponsor]

-- | The visitorId identifies the visitor.
spoVisitorId :: Lens' SponsorListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
spoEventId :: Lens' SponsorListResponse (Maybe Text)
data LiveBroadcastContentDetailsClosedCaptionsType

-- | <pre>
--   closedCaptionsDisabled
--   </pre>
ClosedCaptionsDisabled :: LiveBroadcastContentDetailsClosedCaptionsType

-- | <pre>
--   closedCaptionsEmbedded
--   </pre>
ClosedCaptionsEmbedded :: LiveBroadcastContentDetailsClosedCaptionsType

-- | <pre>
--   closedCaptionsHttpPost
--   </pre>
ClosedCaptionsHTTPPost :: LiveBroadcastContentDetailsClosedCaptionsType

-- | The videoDimension parameter lets you restrict a search to only
--   retrieve 2D or 3D videos. If you specify a value for this parameter,
--   you must also set the type parameter's value to video.
data SearchListVideoDimension

-- | <tt>2d</tt> Restrict search results to exclude 3D videos.
S2D :: SearchListVideoDimension

-- | <tt>3d</tt> Restrict search results to only include 3D videos.
S3D :: SearchListVideoDimension

-- | <tt>any</tt> Include both 3D and non-3D videos in returned results.
--   This is the default value.
SAny :: SearchListVideoDimension
data LiveBroadcastTopicSnippet

-- | Creates a value of <a>LiveBroadcastTopicSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbtsName</a></li>
--   <li><a>lbtsReleaseDate</a></li>
--   </ul>
liveBroadcastTopicSnippet :: LiveBroadcastTopicSnippet

-- | The name of the topic.
lbtsName :: Lens' LiveBroadcastTopicSnippet (Maybe Text)

-- | The date at which the topic was released. Filled for types: videoGame
lbtsReleaseDate :: Lens' LiveBroadcastTopicSnippet (Maybe Text)

-- | The video's rating from the Nacionãlais Kino centrs (National Film
--   Centre of Latvia).
data ContentRatingNkclvRating

-- | <pre>
--   nkclv12plus
--   </pre>
Nkclv12plus :: ContentRatingNkclvRating

-- | <pre>
--   nkclv18plus
--   </pre>
Nkclv18plus :: ContentRatingNkclvRating

-- | <pre>
--   nkclv7plus
--   </pre>
Nkclv7plus :: ContentRatingNkclvRating

-- | <pre>
--   nkclvU
--   </pre>
NkclvU :: ContentRatingNkclvRating

-- | <pre>
--   nkclvUnrated
--   </pre>
NkclvUnrated :: ContentRatingNkclvRating

-- | An activity resource contains information about an action that a
--   particular channel, or user, has taken on YouTube.The actions reported
--   in activity feeds include rating a video, sharing a video, marking a
--   video as a favorite, commenting on a video, uploading a video, and so
--   forth. Each activity resource identifies the type of action, the
--   channel associated with the action, and the resource(s) associated
--   with the action, such as the video that was rated or uploaded.
--   
--   <i>See:</i> <a>activity</a> smart constructor.
data Activity

-- | Creates a value of <a>Activity</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aEtag</a></li>
--   <li><a>aSnippet</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aContentDetails</a></li>
--   <li><a>aId</a></li>
--   </ul>
activity :: Activity

-- | Etag of this resource.
aEtag :: Lens' Activity (Maybe Text)

-- | The snippet object contains basic details about the activity,
--   including the activity's type and group ID.
aSnippet :: Lens' Activity (Maybe ActivitySnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#activity".
aKind :: Lens' Activity Text

-- | The contentDetails object contains information about the content
--   associated with the activity. For example, if the snippet.type value
--   is videoRated, then the contentDetails object's content identifies the
--   rated video.
aContentDetails :: Lens' Activity (Maybe ActivityContentDetails)

-- | The ID that YouTube uses to uniquely identify the activity.
aId :: Lens' Activity (Maybe Text)

-- | Describes an invideo promotion campaign consisting of multiple
--   promoted items. A campaign belongs to a single channel_id.
--   
--   <i>See:</i> <a>invideoPromotion</a> smart constructor.
data InvideoPromotion

-- | Creates a value of <a>InvideoPromotion</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipUseSmartTiming</a></li>
--   <li><a>ipItems</a></li>
--   <li><a>ipDefaultTiming</a></li>
--   <li><a>ipPosition</a></li>
--   </ul>
invideoPromotion :: InvideoPromotion

-- | Indicates whether the channel's promotional campaign uses "smart
--   timing." This feature attempts to show promotions at a point in the
--   video when they are more likely to be clicked and less likely to
--   disrupt the viewing experience. This feature also picks up a single
--   promotion to show on each video.
ipUseSmartTiming :: Lens' InvideoPromotion (Maybe Bool)

-- | List of promoted items in decreasing priority.
ipItems :: Lens' InvideoPromotion [PromotedItem]

-- | The default temporal position within the video where the promoted item
--   will be displayed. Can be overriden by more specific timing in the
--   item.
ipDefaultTiming :: Lens' InvideoPromotion (Maybe InvideoTiming)

-- | The spatial position within the video where the promoted item will be
--   displayed.
ipPosition :: Lens' InvideoPromotion (Maybe InvideoPosition)
data InvideoBranding

-- | Creates a value of <a>InvideoBranding</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ibImageURL</a></li>
--   <li><a>ibTargetChannelId</a></li>
--   <li><a>ibTiming</a></li>
--   <li><a>ibImageBytes</a></li>
--   <li><a>ibPosition</a></li>
--   </ul>
invideoBranding :: InvideoBranding
ibImageURL :: Lens' InvideoBranding (Maybe Text)
ibTargetChannelId :: Lens' InvideoBranding (Maybe Text)
ibTiming :: Lens' InvideoBranding (Maybe InvideoTiming)
ibImageBytes :: Lens' InvideoBranding (Maybe ByteString)
ibPosition :: Lens' InvideoBranding (Maybe InvideoPosition)

-- | The filter parameter specifies which channel sponsors to return.
data SponsorsListFilter

-- | <tt>all</tt> Return all sponsors, from newest to oldest.
SLFAll :: SponsorsListFilter

-- | <tt>newest</tt> Return the most recent sponsors, from newest to
--   oldest.
SLFNewest :: SponsorsListFilter

-- | A channel banner returned as the response to a channel_banner.insert
--   call.
--   
--   <i>See:</i> <a>channelBannerResource</a> smart constructor.
data ChannelBannerResource

-- | Creates a value of <a>ChannelBannerResource</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbrEtag</a></li>
--   <li><a>cbrKind</a></li>
--   <li><a>cbrURL</a></li>
--   </ul>
channelBannerResource :: ChannelBannerResource

-- | Etag of this resource.
cbrEtag :: Lens' ChannelBannerResource (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#channelBannerResource".
cbrKind :: Lens' ChannelBannerResource Text

-- | The URL of this banner image.
cbrURL :: Lens' ChannelBannerResource (Maybe Text)

-- | The videoType parameter lets you restrict a search to a particular
--   type of videos. If you specify a value for this parameter, you must
--   also set the type parameter's value to video.
data SearchListVideoType

-- | <tt>any</tt> Return all videos.
SLVTAny :: SearchListVideoType

-- | <tt>episode</tt> Only retrieve episodes of shows.
SLVTEpisode :: SearchListVideoType

-- | <tt>movie</tt> Only retrieve movies.
SLVTMovie :: SearchListVideoType
data I18nLanguageListResponse

-- | Creates a value of <a>I18nLanguageListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>illrEtag</a></li>
--   <li><a>illrKind</a></li>
--   <li><a>illrItems</a></li>
--   <li><a>illrVisitorId</a></li>
--   <li><a>illrEventId</a></li>
--   </ul>
i18nLanguageListResponse :: I18nLanguageListResponse

-- | Etag of this resource.
illrEtag :: Lens' I18nLanguageListResponse (Maybe Text)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#i18nLanguageListResponse".
illrKind :: Lens' I18nLanguageListResponse Text

-- | A list of supported i18n languages. In this map, the i18n language ID
--   is the map key, and its value is the corresponding i18nLanguage
--   resource.
illrItems :: Lens' I18nLanguageListResponse [I18nLanguage]

-- | The visitorId identifies the visitor.
illrVisitorId :: Lens' I18nLanguageListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
illrEventId :: Lens' I18nLanguageListResponse (Maybe Text)
data PlayListPlayer

-- | Creates a value of <a>PlayListPlayer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plpEmbedHTML</a></li>
--   </ul>
playListPlayer :: PlayListPlayer

-- | An tag that embeds a player that will play the playlist.
plpEmbedHTML :: Lens' PlayListPlayer (Maybe Text)

-- | The video's rating from the Ministero dei Beni e delle Attività
--   Culturali e del Turismo (Italy).
data ContentRatingMibacRating

-- | <pre>
--   mibacT
--   </pre>
MibacT :: ContentRatingMibacRating

-- | <pre>
--   mibacUnrated
--   </pre>
MibacUnrated :: ContentRatingMibacRating

-- | <pre>
--   mibacVap
--   </pre>
MibacVap :: ContentRatingMibacRating

-- | <pre>
--   mibacVm12
--   </pre>
MIBACVM12 :: ContentRatingMibacRating

-- | <pre>
--   mibacVm14
--   </pre>
MIBACVM14 :: ContentRatingMibacRating

-- | <pre>
--   mibacVm18
--   </pre>
MIBACVM18 :: ContentRatingMibacRating

-- | The video's rating in Venezuela.
data ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaA
--   </pre>
ResorteviolenciaA :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaB
--   </pre>
ResorteviolenciaB :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaC
--   </pre>
ResorteviolenciaC :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaD
--   </pre>
ResorteviolenciaD :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaE
--   </pre>
ResorteviolenciaE :: ContentRatingResorteviolenciaRating

-- | <pre>
--   resorteviolenciaUnrated
--   </pre>
ResorteviolenciaUnrated :: ContentRatingResorteviolenciaRating

-- | The video's rating in Egypt.
data ContentRatingEgfilmRating

-- | <pre>
--   egfilm18
--   </pre>
EGFILM18 :: ContentRatingEgfilmRating

-- | <pre>
--   egfilmBn
--   </pre>
EgfilmBn :: ContentRatingEgfilmRating

-- | <pre>
--   egfilmGn
--   </pre>
EgfilmGn :: ContentRatingEgfilmRating

-- | <pre>
--   egfilmUnrated
--   </pre>
EgfilmUnrated :: ContentRatingEgfilmRating

-- | Branding properties of a YouTube channel.
--   
--   <i>See:</i> <a>channelBrandingSettings</a> smart constructor.
data ChannelBrandingSettings

-- | Creates a value of <a>ChannelBrandingSettings</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbsImage</a></li>
--   <li><a>cbsHints</a></li>
--   <li><a>cbsChannel</a></li>
--   <li><a>cbsWatch</a></li>
--   </ul>
channelBrandingSettings :: ChannelBrandingSettings

-- | Branding properties for branding images.
cbsImage :: Lens' ChannelBrandingSettings (Maybe ImageSettings)

-- | Additional experimental branding properties.
cbsHints :: Lens' ChannelBrandingSettings [PropertyValue]

-- | Branding properties for the channel view.
cbsChannel :: Lens' ChannelBrandingSettings (Maybe ChannelSettings)

-- | Branding properties for the watch page.
cbsWatch :: Lens' ChannelBrandingSettings (Maybe WatchSettings)

-- | A comment thread represents information that applies to a top level
--   comment and all its replies. It can also include the top level comment
--   itself and some of the replies.
--   
--   <i>See:</i> <a>commentThread</a> smart constructor.
data CommentThread

-- | Creates a value of <a>CommentThread</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctEtag</a></li>
--   <li><a>ctSnippet</a></li>
--   <li><a>ctKind</a></li>
--   <li><a>ctReplies</a></li>
--   <li><a>ctId</a></li>
--   </ul>
commentThread :: CommentThread

-- | Etag of this resource.
ctEtag :: Lens' CommentThread (Maybe Text)

-- | The snippet object contains basic details about the comment thread and
--   also the top level comment.
ctSnippet :: Lens' CommentThread (Maybe CommentThreadSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#commentThread".
ctKind :: Lens' CommentThread Text

-- | The replies object contains a limited number of replies (if any) to
--   the top level comment found in the snippet.
ctReplies :: Lens' CommentThread (Maybe CommentThreadReplies)

-- | The ID that YouTube uses to uniquely identify the comment thread.
ctId :: Lens' CommentThread (Maybe Text)
data FanFundingEventListResponse

-- | Creates a value of <a>FanFundingEventListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ffelrEtag</a></li>
--   <li><a>ffelrTokenPagination</a></li>
--   <li><a>ffelrNextPageToken</a></li>
--   <li><a>ffelrPageInfo</a></li>
--   <li><a>ffelrKind</a></li>
--   <li><a>ffelrItems</a></li>
--   <li><a>ffelrVisitorId</a></li>
--   <li><a>ffelrEventId</a></li>
--   </ul>
fanFundingEventListResponse :: FanFundingEventListResponse

-- | Etag of this resource.
ffelrEtag :: Lens' FanFundingEventListResponse (Maybe Text)
ffelrTokenPagination :: Lens' FanFundingEventListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
ffelrNextPageToken :: Lens' FanFundingEventListResponse (Maybe Text)
ffelrPageInfo :: Lens' FanFundingEventListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#fanFundingEventListResponse".
ffelrKind :: Lens' FanFundingEventListResponse Text

-- | A list of fan funding events that match the request criteria.
ffelrItems :: Lens' FanFundingEventListResponse [FanFundingEvent]

-- | The visitorId identifies the visitor.
ffelrVisitorId :: Lens' FanFundingEventListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
ffelrEventId :: Lens' FanFundingEventListResponse (Maybe Text)

-- | Playlist localization setting
--   
--   <i>See:</i> <a>playListLocalization</a> smart constructor.
data PlayListLocalization

-- | Creates a value of <a>PlayListLocalization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pllTitle</a></li>
--   <li><a>pllDescription</a></li>
--   </ul>
playListLocalization :: PlayListLocalization

-- | The localized strings for playlist's title.
pllTitle :: Lens' PlayListLocalization (Maybe Text)

-- | The localized strings for playlist's description.
pllDescription :: Lens' PlayListLocalization (Maybe Text)

-- | The video's rating from the Danish Film Institute's (Det Danske
--   Filminstitut) Media Council for Children and Young People.
data ContentRatingMccypRating

-- | <pre>
--   mccyp11
--   </pre>
MCCYP11 :: ContentRatingMccypRating

-- | <pre>
--   mccyp15
--   </pre>
MCCYP15 :: ContentRatingMccypRating

-- | <pre>
--   mccyp7
--   </pre>
MCCYP7 :: ContentRatingMccypRating

-- | <pre>
--   mccypA
--   </pre>
MccypA :: ContentRatingMccypRating

-- | <pre>
--   mccypUnrated
--   </pre>
MccypUnrated :: ContentRatingMccypRating
data LiveChatBanSnippet

-- | Creates a value of <a>LiveChatBanSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcbsLiveChatId</a></li>
--   <li><a>lcbsBannedUserDetails</a></li>
--   <li><a>lcbsBanDurationSeconds</a></li>
--   <li><a>lcbsType</a></li>
--   </ul>
liveChatBanSnippet :: LiveChatBanSnippet

-- | The chat this ban is pertinent to.
lcbsLiveChatId :: Lens' LiveChatBanSnippet (Maybe Text)
lcbsBannedUserDetails :: Lens' LiveChatBanSnippet (Maybe ChannelProFileDetails)

-- | The duration of a ban, only filled if the ban has type TEMPORARY.
lcbsBanDurationSeconds :: Lens' LiveChatBanSnippet (Maybe Word64)

-- | The type of ban.
lcbsType :: Lens' LiveChatBanSnippet (Maybe LiveChatBanSnippetType)

-- | The playlist's privacy status.
data PlayListStatusPrivacyStatus

-- | <pre>
--   private
--   </pre>
PLSPSPrivate :: PlayListStatusPrivacyStatus

-- | <pre>
--   public
--   </pre>
PLSPSPublic :: PlayListStatusPrivacyStatus

-- | <pre>
--   unlisted
--   </pre>
PLSPSUnListed :: PlayListStatusPrivacyStatus

-- | Details about the content to witch a subscription refers.
--   
--   <i>See:</i> <a>subscriptionContentDetails</a> smart constructor.
data SubscriptionContentDetails

-- | Creates a value of <a>SubscriptionContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scdActivityType</a></li>
--   <li><a>scdTotalItemCount</a></li>
--   <li><a>scdNewItemCount</a></li>
--   </ul>
subscriptionContentDetails :: SubscriptionContentDetails

-- | The type of activity this subscription is for (only uploads,
--   everything).
scdActivityType :: Lens' SubscriptionContentDetails (Maybe SubscriptionContentDetailsActivityType)

-- | The approximate number of items that the subscription points to.
scdTotalItemCount :: Lens' SubscriptionContentDetails (Maybe Word32)

-- | The number of new items in the subscription since its content was last
--   read.
scdNewItemCount :: Lens' SubscriptionContentDetails (Maybe Word32)
data LiveBroadcastTopic

-- | Creates a value of <a>LiveBroadcastTopic</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbtSnippet</a></li>
--   <li><a>lbtUnmatched</a></li>
--   <li><a>lbtType</a></li>
--   </ul>
liveBroadcastTopic :: LiveBroadcastTopic

-- | Information about the topic matched.
lbtSnippet :: Lens' LiveBroadcastTopic (Maybe LiveBroadcastTopicSnippet)

-- | If this flag is set it means that we have not been able to match the
--   topic title and type provided to a known entity.
lbtUnmatched :: Lens' LiveBroadcastTopic (Maybe Bool)

-- | The type of the topic.
lbtType :: Lens' LiveBroadcastTopic (Maybe LiveBroadcastTopicType)

-- | The video's rating from France's Conseil supérieur de l?audiovisuel,
--   which rates broadcast content.
data ContentRatingCsaRating

-- | <pre>
--   csa10
--   </pre>
CSA10 :: ContentRatingCsaRating

-- | <pre>
--   csa12
--   </pre>
CSA12 :: ContentRatingCsaRating

-- | <pre>
--   csa16
--   </pre>
CSA16 :: ContentRatingCsaRating

-- | <pre>
--   csa18
--   </pre>
CSA18 :: ContentRatingCsaRating

-- | <pre>
--   csaInterdiction
--   </pre>
CsaInterdiction :: ContentRatingCsaRating

-- | <pre>
--   csaT
--   </pre>
CsaT :: ContentRatingCsaRating

-- | <pre>
--   csaUnrated
--   </pre>
CsaUnrated :: ContentRatingCsaRating

-- | The conversionPings object encapsulates information about conversion
--   pings that need to be respected by the channel.
--   
--   <i>See:</i> <a>channelConversionPings</a> smart constructor.
data ChannelConversionPings

-- | Creates a value of <a>ChannelConversionPings</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccpPings</a></li>
--   </ul>
channelConversionPings :: ChannelConversionPings

-- | Pings that the app shall fire (authenticated by biscotti cookie). Each
--   ping has a context, in which the app must fire the ping, and a url
--   identifying the ping.
ccpPings :: Lens' ChannelConversionPings [ChannelConversionPing]
data LocalizedProperty

-- | Creates a value of <a>LocalizedProperty</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lpDefault</a></li>
--   <li><a>lpLocalized</a></li>
--   <li><a>lpDefaultLanguage</a></li>
--   </ul>
localizedProperty :: LocalizedProperty
lpDefault :: Lens' LocalizedProperty (Maybe Text)
lpLocalized :: Lens' LocalizedProperty [LocalizedString]

-- | The language of the default property.
lpDefaultLanguage :: Lens' LocalizedProperty (Maybe LanguageTag)

-- | The style of the channel section.
data ChannelSectionSnippetStyle

-- | <pre>
--   channelsectionStyleUndefined
--   </pre>
ChannelsectionStyleUndefined :: ChannelSectionSnippetStyle

-- | <pre>
--   horizontalRow
--   </pre>
HorizontalRow :: ChannelSectionSnippetStyle

-- | <pre>
--   verticalList
--   </pre>
VerticalList :: ChannelSectionSnippetStyle

-- | Channel localization setting
--   
--   <i>See:</i> <a>channelLocalization</a> smart constructor.
data ChannelLocalization

-- | Creates a value of <a>ChannelLocalization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clTitle</a></li>
--   <li><a>clDescription</a></li>
--   </ul>
channelLocalization :: ChannelLocalization

-- | The localized strings for channel's title.
clTitle :: Lens' ChannelLocalization (Maybe Text)

-- | The localized strings for channel's description.
clDescription :: Lens' ChannelLocalization (Maybe Text)
data PlayListItemContentDetails

-- | Creates a value of <a>PlayListItemContentDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plicdStartAt</a></li>
--   <li><a>plicdNote</a></li>
--   <li><a>plicdVideoPublishedAt</a></li>
--   <li><a>plicdVideoId</a></li>
--   <li><a>plicdEndAt</a></li>
--   </ul>
playListItemContentDetails :: PlayListItemContentDetails

-- | The time, measured in seconds from the start of the video, when the
--   video should start playing. (The playlist owner can specify the times
--   when the video should start and stop playing when the video is played
--   in the context of the playlist.) The default value is 0.
plicdStartAt :: Lens' PlayListItemContentDetails (Maybe Text)

-- | A user-generated note for this item.
plicdNote :: Lens' PlayListItemContentDetails (Maybe Text)

-- | The date and time that the video was published to YouTube. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
plicdVideoPublishedAt :: Lens' PlayListItemContentDetails (Maybe UTCTime)

-- | The ID that YouTube uses to uniquely identify a video. To retrieve the
--   video resource, set the id query parameter to this value in your API
--   request.
plicdVideoId :: Lens' PlayListItemContentDetails (Maybe Text)

-- | The time, measured in seconds from the start of the video, when the
--   video should stop playing. (The playlist owner can specify the times
--   when the video should start and stop playing when the video is played
--   in the context of the playlist.) By default, assume that the
--   video.endTime is the end of the video.
plicdEndAt :: Lens' PlayListItemContentDetails (Maybe Text)

-- | The video's Eirin (映倫) rating. Eirin is the Japanese rating system.
data ContentRatingEirinRating

-- | <pre>
--   eirinG
--   </pre>
EirinG :: ContentRatingEirinRating

-- | <pre>
--   eirinPg12
--   </pre>
EIRINPG12 :: ContentRatingEirinRating

-- | <pre>
--   eirinR15plus
--   </pre>
EirinR15plus :: ContentRatingEirinRating

-- | <pre>
--   eirinR18plus
--   </pre>
EirinR18plus :: ContentRatingEirinRating

-- | <pre>
--   eirinUnrated
--   </pre>
EirinUnrated :: ContentRatingEirinRating
data VideoSuggestionsProcessingHintsItem

-- | <pre>
--   nonStreamableMov
--   </pre>
NonStreamableMov :: VideoSuggestionsProcessingHintsItem

-- | <pre>
--   procsesingHintSpatialAudio
--   </pre>
ProcsesingHintSpatialAudio :: VideoSuggestionsProcessingHintsItem

-- | <pre>
--   procsesingHintSphericalVideo
--   </pre>
ProcsesingHintSphericalVideo :: VideoSuggestionsProcessingHintsItem

-- | <pre>
--   sendBestQualityVideo
--   </pre>
SendBestQualityVideo :: VideoSuggestionsProcessingHintsItem
data VideoAgeGating

-- | Creates a value of <a>VideoAgeGating</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vagAlcoholContent</a></li>
--   <li><a>vagRestricted</a></li>
--   <li><a>vagVideoGameRating</a></li>
--   </ul>
videoAgeGating :: VideoAgeGating

-- | Indicates whether or not the video has alcoholic beverage content.
--   Only users of legal purchasing age in a particular country, as
--   identified by ICAP, can view the content.
vagAlcoholContent :: Lens' VideoAgeGating (Maybe Bool)

-- | Age-restricted trailers. For redband trailers and adult-rated
--   video-games. Only users aged 18+ can view the content. The the field
--   is true the content is restricted to viewers aged 18+. Otherwise The
--   field won't be present.
vagRestricted :: Lens' VideoAgeGating (Maybe Bool)

-- | Video game rating, if any.
vagVideoGameRating :: Lens' VideoAgeGating (Maybe VideoAgeGatingVideoGameRating)

-- | The video's rating from the Bulgarian National Film Center.
data ContentRatingNfrcRating

-- | <pre>
--   nfrcA
--   </pre>
NfrcA :: ContentRatingNfrcRating

-- | <pre>
--   nfrcB
--   </pre>
NfrcB :: ContentRatingNfrcRating

-- | <pre>
--   nfrcC
--   </pre>
NfrcC :: ContentRatingNfrcRating

-- | <pre>
--   nfrcD
--   </pre>
NfrcD :: ContentRatingNfrcRating

-- | <pre>
--   nfrcUnrated
--   </pre>
NfrcUnrated :: ContentRatingNfrcRating

-- | <pre>
--   nfrcX
--   </pre>
NfrcX :: ContentRatingNfrcRating

-- | The type of activity that the resource describes.
data ActivitySnippetType

-- | <pre>
--   bulletin
--   </pre>
ASTBulletin :: ActivitySnippetType

-- | <pre>
--   channelItem
--   </pre>
ASTChannelItem :: ActivitySnippetType

-- | <pre>
--   comment
--   </pre>
ASTComment :: ActivitySnippetType

-- | <pre>
--   favorite
--   </pre>
ASTFavorite :: ActivitySnippetType

-- | <pre>
--   like
--   </pre>
ASTLike :: ActivitySnippetType

-- | <pre>
--   playlistItem
--   </pre>
ASTPlayListItem :: ActivitySnippetType

-- | <pre>
--   promotedItem
--   </pre>
ASTPromotedItem :: ActivitySnippetType

-- | <pre>
--   recommendation
--   </pre>
ASTRecommendation :: ActivitySnippetType

-- | <pre>
--   social
--   </pre>
ASTSocial :: ActivitySnippetType

-- | <pre>
--   subscription
--   </pre>
ASTSubscription :: ActivitySnippetType

-- | <pre>
--   upload
--   </pre>
ASTUpload :: ActivitySnippetType

-- | The video's Ministerio de Cultura (Colombia) rating.
data ContentRatingMocRating

-- | <pre>
--   moc12
--   </pre>
MOC12 :: ContentRatingMocRating

-- | <pre>
--   moc15
--   </pre>
MOC15 :: ContentRatingMocRating

-- | <pre>
--   moc18
--   </pre>
MOC18 :: ContentRatingMocRating

-- | <pre>
--   moc7
--   </pre>
MOC7 :: ContentRatingMocRating

-- | <pre>
--   mocBanned
--   </pre>
MocBanned :: ContentRatingMocRating

-- | <pre>
--   mocE
--   </pre>
MocE :: ContentRatingMocRating

-- | <pre>
--   mocT
--   </pre>
MocT :: ContentRatingMocRating

-- | <pre>
--   mocUnrated
--   </pre>
MocUnrated :: ContentRatingMocRating

-- | <pre>
--   mocX
--   </pre>
MocX :: ContentRatingMocRating

-- | The videoEmbeddable parameter lets you to restrict a search to only
--   videos that can be embedded into a webpage. If you specify a value for
--   this parameter, you must also set the type parameter's value to video.
data SearchListVideoEmbeddable

-- | <tt>any</tt> Return all videos, embeddable or not.
SLVEAny :: SearchListVideoEmbeddable

-- | <tt>true</tt> Only retrieve embeddable videos.
SLVETrue' :: SearchListVideoEmbeddable

-- | The video's rating system for Vietnam - MCST
data ContentRatingMcstRating

-- | <pre>
--   mcst0
--   </pre>
MCST0 :: ContentRatingMcstRating

-- | <pre>
--   mcst16plus
--   </pre>
Mcst16plus :: ContentRatingMcstRating

-- | <pre>
--   mcstC13
--   </pre>
MCSTC13 :: ContentRatingMcstRating

-- | <pre>
--   mcstC16
--   </pre>
MCSTC16 :: ContentRatingMcstRating

-- | <pre>
--   mcstC18
--   </pre>
MCSTC18 :: ContentRatingMcstRating

-- | <pre>
--   mcstGPg
--   </pre>
McstGPg :: ContentRatingMcstRating

-- | <pre>
--   mcstP
--   </pre>
McstP :: ContentRatingMcstRating

-- | <pre>
--   mcstUnrated
--   </pre>
McstUnrated :: ContentRatingMcstRating
data LanguageTag

-- | Creates a value of <a>LanguageTag</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltValue</a></li>
--   </ul>
languageTag :: LanguageTag
ltValue :: Lens' LanguageTag (Maybe Text)
data LiveChatPollOpenedDetails

-- | Creates a value of <a>LiveChatPollOpenedDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpodPrompt</a></li>
--   <li><a>lcpodItems</a></li>
--   <li><a>lcpodId</a></li>
--   </ul>
liveChatPollOpenedDetails :: LiveChatPollOpenedDetails
lcpodPrompt :: Lens' LiveChatPollOpenedDetails (Maybe Text)
lcpodItems :: Lens' LiveChatPollOpenedDetails [LiveChatPollItem]
lcpodId :: Lens' LiveChatPollOpenedDetails (Maybe Text)

-- | The eventType parameter restricts a search to broadcast events. If you
--   specify a value for this parameter, you must also set the type
--   parameter's value to video.
data SearchListEventType

-- | <tt>completed</tt> Only include completed broadcasts.
SLETCompleted :: SearchListEventType

-- | <tt>live</tt> Only include active broadcasts.
SLETLive :: SearchListEventType

-- | <tt>upcoming</tt> Only include upcoming broadcasts.
SLETUpcoming :: SearchListEventType

-- | Information about a video stream.
--   
--   <i>See:</i> <a>videoFileDetailsVideoStream</a> smart constructor.
data VideoFileDetailsVideoStream

-- | Creates a value of <a>VideoFileDetailsVideoStream</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vfdvsHeightPixels</a></li>
--   <li><a>vfdvsBitrateBps</a></li>
--   <li><a>vfdvsVendor</a></li>
--   <li><a>vfdvsRotation</a></li>
--   <li><a>vfdvsFrameRateFps</a></li>
--   <li><a>vfdvsCodec</a></li>
--   <li><a>vfdvsAspectRatio</a></li>
--   <li><a>vfdvsWidthPixels</a></li>
--   </ul>
videoFileDetailsVideoStream :: VideoFileDetailsVideoStream

-- | The encoded video content's height in pixels.
vfdvsHeightPixels :: Lens' VideoFileDetailsVideoStream (Maybe Word32)

-- | The video stream's bitrate, in bits per second.
vfdvsBitrateBps :: Lens' VideoFileDetailsVideoStream (Maybe Word64)

-- | A value that uniquely identifies a video vendor. Typically, the value
--   is a four-letter vendor code.
vfdvsVendor :: Lens' VideoFileDetailsVideoStream (Maybe Text)

-- | The amount that YouTube needs to rotate the original source content to
--   properly display the video.
vfdvsRotation :: Lens' VideoFileDetailsVideoStream (Maybe VideoFileDetailsVideoStreamRotation)

-- | The video stream's frame rate, in frames per second.
vfdvsFrameRateFps :: Lens' VideoFileDetailsVideoStream (Maybe Double)

-- | The video codec that the stream uses.
vfdvsCodec :: Lens' VideoFileDetailsVideoStream (Maybe Text)

-- | The video content's display aspect ratio, which specifies the aspect
--   ratio in which the video should be displayed.
vfdvsAspectRatio :: Lens' VideoFileDetailsVideoStream (Maybe Double)

-- | The encoded video content's width in pixels. You can calculate the
--   video's encoding aspect ratio as width_pixels / height_pixels.
vfdvsWidthPixels :: Lens' VideoFileDetailsVideoStream (Maybe Word32)

-- | Pings that the app shall fire (authenticated by biscotti cookie). Each
--   ping has a context, in which the app must fire the ping, and a url
--   identifying the ping.
--   
--   <i>See:</i> <a>channelConversionPing</a> smart constructor.
data ChannelConversionPing

-- | Creates a value of <a>ChannelConversionPing</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccpContext</a></li>
--   <li><a>ccpConversionURL</a></li>
--   </ul>
channelConversionPing :: ChannelConversionPing

-- | Defines the context of the ping.
ccpContext :: Lens' ChannelConversionPing (Maybe ChannelConversionPingContext)

-- | The url (without the schema) that the player shall send the ping to.
--   It's at caller's descretion to decide which schema to use (http vs
--   https) Example of a returned url:
--   //googleads.g.doubleclick.net/pagead/
--   viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D
--   cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&amp;labe=default The caller
--   must append biscotti authentication (ms param in case of mobile, for
--   example) to this ping.
ccpConversionURL :: Lens' ChannelConversionPing (Maybe Text)

-- | A playlistItem resource identifies another resource, such as a video,
--   that is included in a playlist. In addition, the playlistItem resource
--   contains details about the included resource that pertain specifically
--   to how that resource is used in that playlist. YouTube uses playlists
--   to identify special collections of videos for a channel, such as: -
--   uploaded videos - favorite videos - positively rated (liked) videos -
--   watch history - watch later To be more specific, these lists are
--   associated with a channel, which is a collection of a person, group,
--   or company's videos, playlists, and other YouTube information. You can
--   retrieve the playlist IDs for each of these lists from the channel
--   resource for a given channel. You can then use the playlistItems.list
--   method to retrieve any of those lists. You can also add or remove
--   items from those lists by calling the playlistItems.insert and
--   playlistItems.delete methods. For example, if a user gives a positive
--   rating to a video, you would insert that video into the liked videos
--   playlist for that user's channel.
--   
--   <i>See:</i> <a>playListItem</a> smart constructor.
data PlayListItem

-- | Creates a value of <a>PlayListItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pliStatus</a></li>
--   <li><a>pliEtag</a></li>
--   <li><a>pliSnippet</a></li>
--   <li><a>pliKind</a></li>
--   <li><a>pliContentDetails</a></li>
--   <li><a>pliId</a></li>
--   </ul>
playListItem :: PlayListItem

-- | The status object contains information about the playlist item's
--   privacy status.
pliStatus :: Lens' PlayListItem (Maybe PlayListItemStatus)

-- | Etag of this resource.
pliEtag :: Lens' PlayListItem (Maybe Text)

-- | The snippet object contains basic details about the playlist item,
--   such as its title and position in the playlist.
pliSnippet :: Lens' PlayListItem (Maybe PlayListItemSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#playlistItem".
pliKind :: Lens' PlayListItem Text

-- | The contentDetails object is included in the resource if the included
--   item is a YouTube video. The object contains additional information
--   about the video.
pliContentDetails :: Lens' PlayListItem (Maybe PlayListItemContentDetails)

-- | The ID that YouTube uses to uniquely identify the playlist item.
pliId :: Lens' PlayListItem (Maybe Text)

-- | The reason that the resource is recommended to the user.
data ActivityContentDetailsRecommendationReason

-- | <pre>
--   unspecified
--   </pre>
ACDRRUnspecified :: ActivityContentDetailsRecommendationReason

-- | <pre>
--   videoFavorited
--   </pre>
ACDRRVideoFavorited :: ActivityContentDetailsRecommendationReason

-- | <pre>
--   videoLiked
--   </pre>
ACDRRVideoLiked :: ActivityContentDetailsRecommendationReason

-- | <pre>
--   videoWatched
--   </pre>
ACDRRVideoWatched :: ActivityContentDetailsRecommendationReason

-- | voor de Classificatie van Audiovisuele Media (Netherlands).
data ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer12
--   </pre>
KIJKWIJZER12 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer16
--   </pre>
KIJKWIJZER16 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer18
--   </pre>
KIJKWIJZER18 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer6
--   </pre>
KIJKWIJZER6 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzer9
--   </pre>
KIJKWIJZER9 :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzerAl
--   </pre>
KijkwijzerAl :: ContentRatingKijkwijzerRating

-- | <pre>
--   kijkwijzerUnrated
--   </pre>
KijkwijzerUnrated :: ContentRatingKijkwijzerRating
data VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   archiveFile
--   </pre>
ArchiveFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   audioFile
--   </pre>
AudioFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   docFile
--   </pre>
DocFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   imageFile
--   </pre>
ImageFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   notAVideoFile
--   </pre>
NotAVideoFile :: VideoSuggestionsProcessingErrorsItem

-- | <pre>
--   projectFile
--   </pre>
ProjectFile :: VideoSuggestionsProcessingErrorsItem

-- | The uploaded file's type as detected by YouTube's video processing
--   engine. Currently, YouTube only processes video files, but this field
--   is present whether a video file or another type of file was uploaded.
data VideoFileDetailsFileType

-- | <pre>
--   archive
--   </pre>
VFDFTArchive :: VideoFileDetailsFileType

-- | <pre>
--   audio
--   </pre>
VFDFTAudio :: VideoFileDetailsFileType

-- | <pre>
--   document
--   </pre>
VFDFTDocument :: VideoFileDetailsFileType

-- | <pre>
--   image
--   </pre>
VFDFTImage :: VideoFileDetailsFileType

-- | <pre>
--   other
--   </pre>
VFDFTOther :: VideoFileDetailsFileType

-- | <pre>
--   project
--   </pre>
VFDFTProject :: VideoFileDetailsFileType

-- | <pre>
--   video
--   </pre>
VFDFTVideo :: VideoFileDetailsFileType

-- | The video's rating from the Movie and Television Review and
--   Classification Board (Philippines).
data ContentRatingMtrcbRating

-- | <pre>
--   mtrcbG
--   </pre>
MtrcbG :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbPg
--   </pre>
MtrcbPg :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbR13
--   </pre>
MTRCBR13 :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbR16
--   </pre>
MTRCBR16 :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbR18
--   </pre>
MTRCBR18 :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbUnrated
--   </pre>
MtrcbUnrated :: ContentRatingMtrcbRating

-- | <pre>
--   mtrcbX
--   </pre>
MtrcbX :: ContentRatingMtrcbRating

-- | The video's rating from Hong Kong's Office for Film, Newspaper and
--   Article Administration.
data ContentRatingFcoRating

-- | <pre>
--   fcoI
--   </pre>
FcoI :: ContentRatingFcoRating

-- | <pre>
--   fcoIi
--   </pre>
FcoIi :: ContentRatingFcoRating

-- | <pre>
--   fcoIia
--   </pre>
FcoIia :: ContentRatingFcoRating

-- | <pre>
--   fcoIib
--   </pre>
FcoIib :: ContentRatingFcoRating

-- | <pre>
--   fcoIii
--   </pre>
FcoIii :: ContentRatingFcoRating

-- | <pre>
--   fcoUnrated
--   </pre>
FcoUnrated :: ContentRatingFcoRating
data GuideCategoryListResponse

-- | Creates a value of <a>GuideCategoryListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gclrEtag</a></li>
--   <li><a>gclrTokenPagination</a></li>
--   <li><a>gclrNextPageToken</a></li>
--   <li><a>gclrPageInfo</a></li>
--   <li><a>gclrKind</a></li>
--   <li><a>gclrItems</a></li>
--   <li><a>gclrVisitorId</a></li>
--   <li><a>gclrEventId</a></li>
--   <li><a>gclrPrevPageToken</a></li>
--   </ul>
guideCategoryListResponse :: GuideCategoryListResponse

-- | Etag of this resource.
gclrEtag :: Lens' GuideCategoryListResponse (Maybe Text)
gclrTokenPagination :: Lens' GuideCategoryListResponse (Maybe TokenPagination)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the next page in the result set.
gclrNextPageToken :: Lens' GuideCategoryListResponse (Maybe Text)
gclrPageInfo :: Lens' GuideCategoryListResponse (Maybe PageInfo)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#guideCategoryListResponse".
gclrKind :: Lens' GuideCategoryListResponse Text

-- | A list of categories that can be associated with YouTube channels. In
--   this map, the category ID is the map key, and its value is the
--   corresponding guideCategory resource.
gclrItems :: Lens' GuideCategoryListResponse [GuideCategory]

-- | The visitorId identifies the visitor.
gclrVisitorId :: Lens' GuideCategoryListResponse (Maybe Text)

-- | Serialized EventId of the request which produced this response.
gclrEventId :: Lens' GuideCategoryListResponse (Maybe Text)

-- | The token that can be used as the value of the pageToken parameter to
--   retrieve the previous page in the result set.
gclrPrevPageToken :: Lens' GuideCategoryListResponse (Maybe Text)

-- | Basic details about a caption track, such as its language and name.
--   
--   <i>See:</i> <a>captionSnippet</a> smart constructor.
data CaptionSnippet

-- | Creates a value of <a>CaptionSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csFailureReason</a></li>
--   <li><a>csStatus</a></li>
--   <li><a>csLastUpdated</a></li>
--   <li><a>csTrackKind</a></li>
--   <li><a>csIsDraft</a></li>
--   <li><a>csIsCC</a></li>
--   <li><a>csVideoId</a></li>
--   <li><a>csName</a></li>
--   <li><a>csIsLarge</a></li>
--   <li><a>csLanguage</a></li>
--   <li><a>csIsAutoSynced</a></li>
--   <li><a>csIsEasyReader</a></li>
--   <li><a>csAudioTrackType</a></li>
--   </ul>
captionSnippet :: CaptionSnippet

-- | The reason that YouTube failed to process the caption track. This
--   property is only present if the state property's value is failed.
csFailureReason :: Lens' CaptionSnippet (Maybe CaptionSnippetFailureReason)

-- | The caption track's status.
csStatus :: Lens' CaptionSnippet (Maybe CaptionSnippetStatus)

-- | The date and time when the caption track was last updated. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
csLastUpdated :: Lens' CaptionSnippet (Maybe UTCTime)

-- | The caption track's type.
csTrackKind :: Lens' CaptionSnippet (Maybe CaptionSnippetTrackKind)

-- | Indicates whether the caption track is a draft. If the value is true,
--   then the track is not publicly visible. The default value is false.
csIsDraft :: Lens' CaptionSnippet (Maybe Bool)

-- | Indicates whether the track contains closed captions for the deaf and
--   hard of hearing. The default value is false.
csIsCC :: Lens' CaptionSnippet (Maybe Bool)

-- | The ID that YouTube uses to uniquely identify the video associated
--   with the caption track.
csVideoId :: Lens' CaptionSnippet (Maybe Text)

-- | The name of the caption track. The name is intended to be visible to
--   the user as an option during playback.
csName :: Lens' CaptionSnippet (Maybe Text)

-- | Indicates whether the caption track uses large text for the
--   vision-impaired. The default value is false.
csIsLarge :: Lens' CaptionSnippet (Maybe Bool)

-- | The language of the caption track. The property value is a BCP-47
--   language tag.
csLanguage :: Lens' CaptionSnippet (Maybe Text)

-- | Indicates whether YouTube synchronized the caption track to the audio
--   track in the video. The value will be true if a sync was explicitly
--   requested when the caption track was uploaded. For example, when
--   calling the captions.insert or captions.update methods, you can set
--   the sync parameter to true to instruct YouTube to sync the uploaded
--   track to the video. If the value is false, YouTube uses the time codes
--   in the uploaded caption track to determine when to display captions.
csIsAutoSynced :: Lens' CaptionSnippet (Maybe Bool)

-- | Indicates whether caption track is formatted for "easy reader,"
--   meaning it is at a third-grade level for language learners. The
--   default value is false.
csIsEasyReader :: Lens' CaptionSnippet (Maybe Bool)

-- | The type of audio track associated with the caption track.
csAudioTrackType :: Lens' CaptionSnippet (Maybe CaptionSnippetAudioTrackType)

-- | The frame rate of the inbound video data.
data CdnSettingsFrameRate

-- | <pre>
--   30fps
--   </pre>
CSFR30fps :: CdnSettingsFrameRate

-- | <pre>
--   60fps
--   </pre>
CSFR60fps :: CdnSettingsFrameRate

-- | A comment represents a single YouTube comment.
--   
--   <i>See:</i> <a>comment</a> smart constructor.
data Comment

-- | Creates a value of <a>Comment</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccEtag</a></li>
--   <li><a>ccSnippet</a></li>
--   <li><a>ccKind</a></li>
--   <li><a>ccId</a></li>
--   </ul>
comment :: Comment

-- | Etag of this resource.
ccEtag :: Lens' Comment (Maybe Text)

-- | The snippet object contains basic details about the comment.
ccSnippet :: Lens' Comment (Maybe CommentSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#comment".
ccKind :: Lens' Comment Text

-- | The ID that YouTube uses to uniquely identify the comment.
ccId :: Lens' Comment (Maybe Text)

-- | Basic details about an i18n region, such as region code and
--   human-readable name.
--   
--   <i>See:</i> <a>i18nRegionSnippet</a> smart constructor.
data I18nRegionSnippet

-- | Creates a value of <a>I18nRegionSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irsName</a></li>
--   <li><a>irsGl</a></li>
--   </ul>
i18nRegionSnippet :: I18nRegionSnippet

-- | The human-readable name of the region.
irsName :: Lens' I18nRegionSnippet (Maybe Text)

-- | The region code as a 2-letter ISO country code.
irsGl :: Lens' I18nRegionSnippet (Maybe Text)

-- | The kind of error happening.
data LiveStreamConfigurationIssueType

-- | <pre>
--   audioBitrateHigh
--   </pre>
AudioBitrateHigh :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioBitrateLow
--   </pre>
AudioBitrateLow :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioBitrateMismatch
--   </pre>
AudioBitrateMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioCodec
--   </pre>
AudioCodec :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioCodecMismatch
--   </pre>
AudioCodecMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioSampleRate
--   </pre>
AudioSampleRate :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioSampleRateMismatch
--   </pre>
AudioSampleRateMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioStereoMismatch
--   </pre>
AudioStereoMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   audioTooManyChannels
--   </pre>
AudioTooManyChannels :: LiveStreamConfigurationIssueType

-- | <pre>
--   badContainer
--   </pre>
BadContainer :: LiveStreamConfigurationIssueType

-- | <pre>
--   bitrateHigh
--   </pre>
BitrateHigh :: LiveStreamConfigurationIssueType

-- | <pre>
--   bitrateLow
--   </pre>
BitrateLow :: LiveStreamConfigurationIssueType

-- | <pre>
--   frameRateHigh
--   </pre>
FrameRateHigh :: LiveStreamConfigurationIssueType

-- | <pre>
--   framerateMismatch
--   </pre>
FramerateMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   gopMismatch
--   </pre>
GopMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   gopSizeLong
--   </pre>
GopSizeLong :: LiveStreamConfigurationIssueType

-- | <pre>
--   gopSizeOver
--   </pre>
GopSizeOver :: LiveStreamConfigurationIssueType

-- | <pre>
--   gopSizeShort
--   </pre>
GopSizeShort :: LiveStreamConfigurationIssueType

-- | <pre>
--   interlacedVideo
--   </pre>
InterlacedVideo :: LiveStreamConfigurationIssueType

-- | <pre>
--   multipleAudioStreams
--   </pre>
MultipleAudioStreams :: LiveStreamConfigurationIssueType

-- | <pre>
--   multipleVideoStreams
--   </pre>
MultipleVideoStreams :: LiveStreamConfigurationIssueType

-- | <pre>
--   noAudioStream
--   </pre>
NoAudioStream :: LiveStreamConfigurationIssueType

-- | <pre>
--   noVideoStream
--   </pre>
NoVideoStream :: LiveStreamConfigurationIssueType

-- | <pre>
--   openGop
--   </pre>
OpenGop :: LiveStreamConfigurationIssueType

-- | <pre>
--   resolutionMismatch
--   </pre>
ResolutionMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoBitrateMismatch
--   </pre>
VideoBitrateMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoCodec
--   </pre>
VideoCodec :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoCodecMismatch
--   </pre>
VideoCodecMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoIngestionStarved
--   </pre>
VideoIngestionStarved :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoInterlaceMismatch
--   </pre>
VideoInterlaceMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoProfileMismatch
--   </pre>
VideoProFileMismatch :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoResolutionSuboptimal
--   </pre>
VideoResolutionSuboptimal :: LiveStreamConfigurationIssueType

-- | <pre>
--   videoResolutionUnsupported
--   </pre>
VideoResolutionUnsupported :: LiveStreamConfigurationIssueType

-- | The safeSearch parameter indicates whether the search results should
--   include restricted content as well as standard content.
data SearchListSafeSearch

-- | <tt>moderate</tt> YouTube will filter some content from search results
--   and, at the least, will filter content that is restricted in your
--   locale. Based on their content, search results could be removed from
--   search results or demoted in search results. This is the default
--   parameter value.
SLSSModerate :: SearchListSafeSearch

-- | <tt>none</tt> YouTube will not filter the search result set.
SLSSNone :: SearchListSafeSearch

-- | <tt>strict</tt> YouTube will try to exclude all restricted content
--   from the search result set. Based on their content, search results
--   could be removed from search results or demoted in search results.
SLSSStrict :: SearchListSafeSearch

-- | A subscription resource contains information about a YouTube user
--   subscription. A subscription notifies a user when new videos are added
--   to a channel or when another user takes one of several actions on
--   YouTube, such as uploading a video, rating a video, or commenting on a
--   video.
--   
--   <i>See:</i> <a>subscription</a> smart constructor.
data Subscription

-- | Creates a value of <a>Subscription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssEtag</a></li>
--   <li><a>ssSubscriberSnippet</a></li>
--   <li><a>ssSnippet</a></li>
--   <li><a>ssKind</a></li>
--   <li><a>ssContentDetails</a></li>
--   <li><a>ssId</a></li>
--   </ul>
subscription :: Subscription

-- | Etag of this resource.
ssEtag :: Lens' Subscription (Maybe Text)

-- | The subscriberSnippet object contains basic details about the
--   sbuscriber.
ssSubscriberSnippet :: Lens' Subscription (Maybe SubscriptionSubscriberSnippet)

-- | The snippet object contains basic details about the subscription,
--   including its title and the channel that the user subscribed to.
ssSnippet :: Lens' Subscription (Maybe SubscriptionSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#subscription".
ssKind :: Lens' Subscription Text

-- | The contentDetails object contains basic statistics about the
--   subscription.
ssContentDetails :: Lens' Subscription (Maybe SubscriptionContentDetails)

-- | The ID that YouTube uses to uniquely identify the subscription.
ssId :: Lens' Subscription (Maybe Text)

-- | The videoSyndicated parameter lets you to restrict a search to only
--   videos that can be played outside youtube.com. If you specify a value
--   for this parameter, you must also set the type parameter's value to
--   video.
data SearchListVideoSyndicated

-- | <tt>any</tt> Return all videos, syndicated or not.
SLVSAny :: SearchListVideoSyndicated

-- | <tt>true</tt> Only retrieve syndicated videos.
SLVSTrue' :: SearchListVideoSyndicated
data ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqCriminalActs
--   </pre>
DjctqCriminalActs :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqDrugs
--   </pre>
DjctqDrugs :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqExplicitSex
--   </pre>
DjctqExplicitSex :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqExtremeViolence
--   </pre>
DjctqExtremeViolence :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqIllegalDrugs
--   </pre>
DjctqIllegalDrugs :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqImpactingContent
--   </pre>
DjctqImpactingContent :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqInappropriateLanguage
--   </pre>
DjctqInAppropriateLanguage :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqLegalDrugs
--   </pre>
DjctqLegalDrugs :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqNudity
--   </pre>
DjctqNudity :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqSex
--   </pre>
DjctqSex :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqSexualContent
--   </pre>
DjctqSexualContent :: ContentRatingDjctqRatingReasonsItem

-- | <pre>
--   djctqViolence
--   </pre>
DjctqViolence :: ContentRatingDjctqRatingReasonsItem

-- | Recording information associated with the video.
--   
--   <i>See:</i> <a>videoRecordingDetails</a> smart constructor.
data VideoRecordingDetails

-- | Creates a value of <a>VideoRecordingDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vrdLocation</a></li>
--   <li><a>vrdLocationDescription</a></li>
--   <li><a>vrdRecordingDate</a></li>
--   </ul>
videoRecordingDetails :: VideoRecordingDetails

-- | The geolocation information associated with the video.
vrdLocation :: Lens' VideoRecordingDetails (Maybe GeoPoint)

-- | The text description of the location where the video was recorded.
vrdLocationDescription :: Lens' VideoRecordingDetails (Maybe Text)

-- | The date and time when the video was recorded. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sssZ) format.
vrdRecordingDate :: Lens' VideoRecordingDetails (Maybe UTCTime)

-- | The method or protocol used to transmit the video stream.
data CdnSettingsIngestionType

-- | <pre>
--   dash
--   </pre>
Dash :: CdnSettingsIngestionType

-- | <pre>
--   rtmp
--   </pre>
Rtmp :: CdnSettingsIngestionType

-- | Describes a timing type. If the value is offsetFromStart, then the
--   offsetMs field represents an offset from the start of the video. If
--   the value is offsetFromEnd, then the offsetMs field represents an
--   offset from the end of the video.
data InvideoTimingType

-- | <pre>
--   offsetFromEnd
--   </pre>
OffSetFromEnd :: InvideoTimingType

-- | <pre>
--   offsetFromStart
--   </pre>
OffSetFromStart :: InvideoTimingType
data VideoRating

-- | Creates a value of <a>VideoRating</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vRating</a></li>
--   <li><a>vVideoId</a></li>
--   </ul>
videoRating :: VideoRating
vRating :: Lens' VideoRating (Maybe VideoRatingRating)
vVideoId :: Lens' VideoRating (Maybe Text)

-- | The video's rating from Italy's Autorità per le Garanzie nelle
--   Comunicazioni (AGCOM).
data ContentRatingAgcomRating

-- | <pre>
--   agcomT
--   </pre>
AgcomT :: ContentRatingAgcomRating

-- | <pre>
--   agcomUnrated
--   </pre>
AgcomUnrated :: ContentRatingAgcomRating

-- | <pre>
--   agcomVm14
--   </pre>
AGCOMVM14 :: ContentRatingAgcomRating

-- | <pre>
--   agcomVm18
--   </pre>
AGCOMVM18 :: ContentRatingAgcomRating

-- | Basic details about a comment, such as its author and text.
--   
--   <i>See:</i> <a>commentSnippet</a> smart constructor.
data CommentSnippet

-- | Creates a value of <a>CommentSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cViewerRating</a></li>
--   <li><a>cPublishedAt</a></li>
--   <li><a>cAuthorChannelURL</a></li>
--   <li><a>cModerationStatus</a></li>
--   <li><a>cLikeCount</a></li>
--   <li><a>cChannelId</a></li>
--   <li><a>cTextOriginal</a></li>
--   <li><a>cVideoId</a></li>
--   <li><a>cTextDisplay</a></li>
--   <li><a>cAuthorProFileImageURL</a></li>
--   <li><a>cAuthorDisplayName</a></li>
--   <li><a>cUpdatedAt</a></li>
--   <li><a>cAuthorChannelId</a></li>
--   <li><a>cCanRate</a></li>
--   <li><a>cParentId</a></li>
--   </ul>
commentSnippet :: CommentSnippet

-- | The rating the viewer has given to this comment. For the time being
--   this will never return RATE_TYPE_DISLIKE and instead return
--   RATE_TYPE_NONE. This may change in the future.
cViewerRating :: Lens' CommentSnippet (Maybe CommentSnippetViewerRating)

-- | The date and time when the comment was orignally published. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
cPublishedAt :: Lens' CommentSnippet (Maybe UTCTime)

-- | Link to the author's YouTube channel, if any.
cAuthorChannelURL :: Lens' CommentSnippet (Maybe Text)

-- | The comment's moderation status. Will not be set if the comments were
--   requested through the id filter.
cModerationStatus :: Lens' CommentSnippet (Maybe CommentSnippetModerationStatus)

-- | The total number of likes this comment has received.
cLikeCount :: Lens' CommentSnippet (Maybe Word32)

-- | The id of the corresponding YouTube channel. In case of a channel
--   comment this is the channel the comment refers to. In case of a video
--   comment it's the video's channel.
cChannelId :: Lens' CommentSnippet (Maybe Text)

-- | The comment's original raw text as initially posted or last updated.
--   The original text will only be returned if it is accessible to the
--   viewer, which is only guaranteed if the viewer is the comment's
--   author.
cTextOriginal :: Lens' CommentSnippet (Maybe Text)

-- | The ID of the video the comment refers to, if any.
cVideoId :: Lens' CommentSnippet (Maybe Text)

-- | The comment's text. The format is either plain text or HTML dependent
--   on what has been requested. Even the plain text representation may
--   differ from the text originally posted in that it may replace video
--   links with video titles etc.
cTextDisplay :: Lens' CommentSnippet (Maybe Text)

-- | The URL for the avatar of the user who posted the comment.
cAuthorProFileImageURL :: Lens' CommentSnippet (Maybe Text)

-- | The name of the user who posted the comment.
cAuthorDisplayName :: Lens' CommentSnippet (Maybe Text)

-- | The date and time when was last updated . The value is specified in
--   ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
cUpdatedAt :: Lens' CommentSnippet (Maybe UTCTime)

-- | The id of the author's YouTube channel, if any.
cAuthorChannelId :: Lens' CommentSnippet (Maybe JSONValue)

-- | Whether the current viewer can rate this comment.
cCanRate :: Lens' CommentSnippet (Maybe Bool)

-- | The unique id of the parent comment, only set for replies.
cParentId :: Lens' CommentSnippet (Maybe Text)

-- | Brief description of the live stream status.
--   
--   <i>See:</i> <a>liveStreamStatus</a> smart constructor.
data LiveStreamStatus

-- | Creates a value of <a>LiveStreamStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lssStreamStatus</a></li>
--   <li><a>lssHealthStatus</a></li>
--   </ul>
liveStreamStatus :: LiveStreamStatus
lssStreamStatus :: Lens' LiveStreamStatus (Maybe LiveStreamStatusStreamStatus)

-- | The health status of the stream.
lssHealthStatus :: Lens' LiveStreamStatus (Maybe LiveStreamHealthStatus)

-- | Specifies suggestions on how to improve video content, including
--   encoding hints, tag suggestions, and editor suggestions.
--   
--   <i>See:</i> <a>videoSuggestions</a> smart constructor.
data VideoSuggestions

-- | Creates a value of <a>VideoSuggestions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vsProcessingErrors</a></li>
--   <li><a>vsProcessingHints</a></li>
--   <li><a>vsEditorSuggestions</a></li>
--   <li><a>vsProcessingWarnings</a></li>
--   <li><a>vsTagSuggestions</a></li>
--   </ul>
videoSuggestions :: VideoSuggestions

-- | A list of errors that will prevent YouTube from successfully
--   processing the uploaded video video. These errors indicate that,
--   regardless of the video's current processing status, eventually, that
--   status will almost certainly be failed.
vsProcessingErrors :: Lens' VideoSuggestions [VideoSuggestionsProcessingErrorsItem]

-- | A list of suggestions that may improve YouTube's ability to process
--   the video.
vsProcessingHints :: Lens' VideoSuggestions [VideoSuggestionsProcessingHintsItem]

-- | A list of video editing operations that might improve the video
--   quality or playback experience of the uploaded video.
vsEditorSuggestions :: Lens' VideoSuggestions [VideoSuggestionsEditorSuggestionsItem]

-- | A list of reasons why YouTube may have difficulty transcoding the
--   uploaded video or that might result in an erroneous transcoding. These
--   warnings are generated before YouTube actually processes the uploaded
--   video file. In addition, they identify issues that are unlikely to
--   cause the video processing to fail but that might cause problems such
--   as sync issues, video artifacts, or a missing audio track.
vsProcessingWarnings :: Lens' VideoSuggestions [VideoSuggestionsProcessingWarningsItem]

-- | A list of keyword tags that could be added to the video's metadata to
--   increase the likelihood that users will locate your video when
--   searching or browsing on YouTube.
vsTagSuggestions :: Lens' VideoSuggestions [VideoSuggestionsTagSuggestion]

-- | The comment's moderation status. Will not be set if the comments were
--   requested through the id filter.
data CommentSnippetModerationStatus

-- | <pre>
--   heldForReview
--   </pre>
CSMSHeldForReview :: CommentSnippetModerationStatus

-- | <pre>
--   likelySpam
--   </pre>
CSMSLikelySpam :: CommentSnippetModerationStatus

-- | <pre>
--   published
--   </pre>
CSMSPublished :: CommentSnippetModerationStatus

-- | <pre>
--   rejected
--   </pre>
CSMSRejected :: CommentSnippetModerationStatus

-- | Basic details about a playlist, including title, description and
--   thumbnails.
--   
--   <i>See:</i> <a>playListItemSnippet</a> smart constructor.
data PlayListItemSnippet

-- | Creates a value of <a>PlayListItemSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plisResourceId</a></li>
--   <li><a>plisPublishedAt</a></li>
--   <li><a>plisChannelTitle</a></li>
--   <li><a>plisChannelId</a></li>
--   <li><a>plisThumbnails</a></li>
--   <li><a>plisTitle</a></li>
--   <li><a>plisPlayListId</a></li>
--   <li><a>plisDescription</a></li>
--   <li><a>plisPosition</a></li>
--   </ul>
playListItemSnippet :: PlayListItemSnippet

-- | The id object contains information that can be used to uniquely
--   identify the resource that is included in the playlist as the playlist
--   item.
plisResourceId :: Lens' PlayListItemSnippet (Maybe ResourceId)

-- | The date and time that the item was added to the playlist. The value
--   is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
plisPublishedAt :: Lens' PlayListItemSnippet (Maybe UTCTime)

-- | Channel title for the channel that the playlist item belongs to.
plisChannelTitle :: Lens' PlayListItemSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the user that added the
--   item to the playlist.
plisChannelId :: Lens' PlayListItemSnippet (Maybe Text)

-- | A map of thumbnail images associated with the playlist item. For each
--   object in the map, the key is the name of the thumbnail image, and the
--   value is an object that contains other information about the
--   thumbnail.
plisThumbnails :: Lens' PlayListItemSnippet (Maybe ThumbnailDetails)

-- | The item's title.
plisTitle :: Lens' PlayListItemSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the playlist that the
--   playlist item is in.
plisPlayListId :: Lens' PlayListItemSnippet (Maybe Text)

-- | The item's description.
plisDescription :: Lens' PlayListItemSnippet (Maybe Text)

-- | The order in which the item appears in the playlist. The value uses a
--   zero-based index, so the first item has a position of 0, the second
--   item has a position of 1, and so forth.
plisPosition :: Lens' PlayListItemSnippet (Maybe Word32)

-- | Project specific details about the content of a YouTube Video.
--   
--   <i>See:</i> <a>videoProjectDetails</a> smart constructor.
data VideoProjectDetails

-- | Creates a value of <a>VideoProjectDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vpdTags</a></li>
--   </ul>
videoProjectDetails :: VideoProjectDetails

-- | A list of project tags associated with the video during the upload.
vpdTags :: Lens' VideoProjectDetails [Text]

-- | The videoLicense parameter filters search results to only include
--   videos with a particular license. YouTube lets video uploaders choose
--   to attach either the Creative Commons license or the standard YouTube
--   license to each of their videos. If you specify a value for this
--   parameter, you must also set the type parameter's value to video.
data SearchListVideoLicense

-- | <tt>any</tt> Return all videos, regardless of which license they have,
--   that match the query parameters.
SLVLAny :: SearchListVideoLicense

-- | <tt>creativeCommon</tt> Only return videos that have a Creative
--   Commons license. Users can reuse videos with this license in other
--   videos that they create. Learn more.
SLVLCreativeCommon :: SearchListVideoLicense

-- | <tt>youtube</tt> Only return videos that have the standard YouTube
--   license.
SLVLYouTube :: SearchListVideoLicense

-- | Ratings schemes. The country-specific ratings are mostly for movies
--   and shows. NEXT_ID: 69
--   
--   <i>See:</i> <a>contentRating</a> smart constructor.
data ContentRating

-- | Creates a value of <a>ContentRating</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crFpbRatingReasons</a></li>
--   <li><a>crPefilmRating</a></li>
--   <li><a>crCccRating</a></li>
--   <li><a>crAnatelRating</a></li>
--   <li><a>crMpaaRating</a></li>
--   <li><a>crCceRating</a></li>
--   <li><a>crMccaaRating</a></li>
--   <li><a>crChfilmRating</a></li>
--   <li><a>crIcaaRating</a></li>
--   <li><a>crFcbmRating</a></li>
--   <li><a>crBmukkRating</a></li>
--   <li><a>crMoctwRating</a></li>
--   <li><a>crNfvcbRating</a></li>
--   <li><a>crDjctqRatingReasons</a></li>
--   <li><a>crAgcomRating</a></li>
--   <li><a>crCnaRating</a></li>
--   <li><a>crCatvfrRating</a></li>
--   <li><a>crCbfcRating</a></li>
--   <li><a>crKfcbRating</a></li>
--   <li><a>crSmsaRating</a></li>
--   <li><a>crChvrsRating</a></li>
--   <li><a>crIncaaRating</a></li>
--   <li><a>crMcstRating</a></li>
--   <li><a>crNfrcRating</a></li>
--   <li><a>crCsaRating</a></li>
--   <li><a>crMocRating</a></li>
--   <li><a>crEirinRating</a></li>
--   <li><a>crFskRating</a></li>
--   <li><a>crEefilmRating</a></li>
--   <li><a>crRcnofRating</a></li>
--   <li><a>crMekuRating</a></li>
--   <li><a>crIlfilmRating</a></li>
--   <li><a>crIfcoRating</a></li>
--   <li><a>crNbcplRating</a></li>
--   <li><a>crGrfilmRating</a></li>
--   <li><a>crRteRating</a></li>
--   <li><a>crAcbRating</a></li>
--   <li><a>crCatvRating</a></li>
--   <li><a>crMdaRating</a></li>
--   <li><a>crDjctqRating</a></li>
--   <li><a>crSmaisRating</a></li>
--   <li><a>crCscfRating</a></li>
--   <li><a>crTvpgRating</a></li>
--   <li><a>crRtcRating</a></li>
--   <li><a>crYtRating</a></li>
--   <li><a>crBbfcRating</a></li>
--   <li><a>crKijkwijzerRating</a></li>
--   <li><a>crMtrcbRating</a></li>
--   <li><a>crFcoRating</a></li>
--   <li><a>crCicfRating</a></li>
--   <li><a>crCzfilmRating</a></li>
--   <li><a>crNbcRating</a></li>
--   <li><a>crFmocRating</a></li>
--   <li><a>crRussiaRating</a></li>
--   <li><a>crEgfilmRating</a></li>
--   <li><a>crResorteviolenciaRating</a></li>
--   <li><a>crMibacRating</a></li>
--   <li><a>crMedietilsynetRating</a></li>
--   <li><a>crMccypRating</a></li>
--   <li><a>crNkclvRating</a></li>
--   <li><a>crFpbRating</a></li>
--   <li><a>crLsfRating</a></li>
--   <li><a>crBfvcRating</a></li>
--   <li><a>crEcbmctRating</a></li>
--   <li><a>crCNCRating</a></li>
--   <li><a>crSkfilmRating</a></li>
--   <li><a>crOflcRating</a></li>
--   <li><a>crKmrbRating</a></li>
--   </ul>
contentRating :: ContentRating

-- | Reasons that explain why the video received its FPB (South Africa)
--   rating.
crFpbRatingReasons :: Lens' ContentRating [ContentRatingFpbRatingReasonsItem]

-- | The video's rating in Peru.
crPefilmRating :: Lens' ContentRating (Maybe ContentRatingPefilmRating)

-- | The video's Consejo de Calificación Cinematográfica (Chile) rating.
crCccRating :: Lens' ContentRating (Maybe ContentRatingCccRating)

-- | The video's Anatel (Asociación Nacional de Televisión) rating for
--   Chilean television.
crAnatelRating :: Lens' ContentRating (Maybe ContentRatingAnatelRating)

-- | The video's Motion Picture Association of America (MPAA) rating.
crMpaaRating :: Lens' ContentRating (Maybe ContentRatingMpaaRating)

-- | The video's rating from Portugal's Comissão de Classificação de
--   Espect´culos.
crCceRating :: Lens' ContentRating (Maybe ContentRatingCceRating)

-- | The video's rating from Malta's Film Age-Classification Board.
crMccaaRating :: Lens' ContentRating (Maybe ContentRatingMccaaRating)

-- | The video's rating in Switzerland.
crChfilmRating :: Lens' ContentRating (Maybe ContentRatingChfilmRating)

-- | The video's Instituto de la Cinematografía y de las Artes
--   Audiovisuales (ICAA - Spain) rating.
crIcaaRating :: Lens' ContentRating (Maybe ContentRatingIcaaRating)

-- | The video's rating from Malaysia's Film Censorship Board.
crFcbmRating :: Lens' ContentRating (Maybe ContentRatingFcbmRating)

-- | The video's rating from the Austrian Board of Media Classification
--   (Bundesministerium für Unterricht, Kunst und Kultur).
crBmukkRating :: Lens' ContentRating (Maybe ContentRatingBmukkRating)

-- | The video's rating from Taiwan's Ministry of Culture (文化部).
crMoctwRating :: Lens' ContentRating (Maybe ContentRatingMoctwRating)

-- | The video's rating from Nigeria's National Film and Video Censors
--   Board.
crNfvcbRating :: Lens' ContentRating (Maybe ContentRatingNfvcbRating)

-- | Reasons that explain why the video received its DJCQT (Brazil) rating.
crDjctqRatingReasons :: Lens' ContentRating [ContentRatingDjctqRatingReasonsItem]

-- | The video's rating from Italy's Autorità per le Garanzie nelle
--   Comunicazioni (AGCOM).
crAgcomRating :: Lens' ContentRating (Maybe ContentRatingAgcomRating)

-- | The video's rating from Romania's CONSILIUL NATIONAL AL
--   AUDIOVIZUALULUI (CNA).
crCnaRating :: Lens' ContentRating (Maybe ContentRatingCnaRating)

-- | The video's rating from the Canadian Radio-Television and
--   Telecommunications Commission (CRTC) for Canadian French-language
--   broadcasts. For more information, see the Canadian Broadcast Standards
--   Council website.
crCatvfrRating :: Lens' ContentRating (Maybe ContentRatingCatvfrRating)

-- | The video's Central Board of Film Certification (CBFC - India) rating.
crCbfcRating :: Lens' ContentRating (Maybe ContentRatingCbfcRating)

-- | The video's rating from the Kenya Film Classification Board.
crKfcbRating :: Lens' ContentRating (Maybe ContentRatingKfcbRating)

-- | The video's rating from Statens medieråd (Sweden's National Media
--   Council).
crSmsaRating :: Lens' ContentRating (Maybe ContentRatingSmsaRating)

-- | The video's Canadian Home Video Rating System (CHVRS) rating.
crChvrsRating :: Lens' ContentRating (Maybe ContentRatingChvrsRating)

-- | The video's INCAA (Instituto Nacional de Cine y Artes Audiovisuales -
--   Argentina) rating.
crIncaaRating :: Lens' ContentRating (Maybe ContentRatingIncaaRating)

-- | The video's rating system for Vietnam - MCST
crMcstRating :: Lens' ContentRating (Maybe ContentRatingMcstRating)

-- | The video's rating from the Bulgarian National Film Center.
crNfrcRating :: Lens' ContentRating (Maybe ContentRatingNfrcRating)

-- | The video's rating from France's Conseil supérieur de l?audiovisuel,
--   which rates broadcast content.
crCsaRating :: Lens' ContentRating (Maybe ContentRatingCsaRating)

-- | The video's Ministerio de Cultura (Colombia) rating.
crMocRating :: Lens' ContentRating (Maybe ContentRatingMocRating)

-- | The video's Eirin (映倫) rating. Eirin is the Japanese rating system.
crEirinRating :: Lens' ContentRating (Maybe ContentRatingEirinRating)

-- | The video's Freiwillige Selbstkontrolle der Filmwirtschaft (FSK -
--   Germany) rating.
crFskRating :: Lens' ContentRating (Maybe ContentRatingFskRating)

-- | The video's rating in Estonia.
crEefilmRating :: Lens' ContentRating (Maybe ContentRatingEefilmRating)

-- | The video's rating from the Hungarian Nemzeti Filmiroda, the Rating
--   Committee of the National Office of Film.
crRcnofRating :: Lens' ContentRating (Maybe ContentRatingRcnofRating)

-- | The video's rating from Finland's Kansallinen Audiovisuaalinen
--   Instituutti (National Audiovisual Institute).
crMekuRating :: Lens' ContentRating (Maybe ContentRatingMekuRating)

-- | The video's rating in Israel.
crIlfilmRating :: Lens' ContentRating (Maybe ContentRatingIlfilmRating)

-- | The video's Irish Film Classification Office (IFCO - Ireland) rating.
--   See the IFCO website for more information.
crIfcoRating :: Lens' ContentRating (Maybe ContentRatingIfcoRating)

-- | The video's rating in Poland.
crNbcplRating :: Lens' ContentRating (Maybe ContentRatingNbcplRating)

-- | The video's rating in Greece.
crGrfilmRating :: Lens' ContentRating (Maybe ContentRatingGrfilmRating)

-- | The video's rating from Ireland's Raidió Teilifís Éireann.
crRteRating :: Lens' ContentRating (Maybe ContentRatingRteRating)

-- | The video's Australian Classification Board (ACB) or Australian
--   Communications and Media Authority (ACMA) rating. ACMA ratings are
--   used to classify children's television programming.
crAcbRating :: Lens' ContentRating (Maybe ContentRatingAcbRating)

-- | Rating system for Canadian TV - Canadian TV Classification System The
--   video's rating from the Canadian Radio-Television and
--   Telecommunications Commission (CRTC) for Canadian English-language
--   broadcasts. For more information, see the Canadian Broadcast Standards
--   Council website.
crCatvRating :: Lens' ContentRating (Maybe ContentRatingCatvRating)

-- | The video's rating from Singapore's Media Development Authority (MDA)
--   and, specifically, it's Board of Film Censors (BFC).
crMdaRating :: Lens' ContentRating (Maybe ContentRatingMdaRating)

-- | The video's Departamento de Justiça, Classificação, Qualificação e
--   Títulos (DJCQT - Brazil) rating.
crDjctqRating :: Lens' ContentRating (Maybe ContentRatingDjctqRating)

-- | The video's rating in Iceland.
crSmaisRating :: Lens' ContentRating (Maybe ContentRatingSmaisRating)

-- | The video's rating from Luxembourg's Commission de surveillance de la
--   classification des films (CSCF).
crCscfRating :: Lens' ContentRating (Maybe ContentRatingCscfRating)

-- | The video's TV Parental Guidelines (TVPG) rating.
crTvpgRating :: Lens' ContentRating (Maybe ContentRatingTvpgRating)

-- | The video's General Directorate of Radio, Television and
--   Cinematography (Mexico) rating.
crRtcRating :: Lens' ContentRating (Maybe ContentRatingRtcRating)

-- | A rating that YouTube uses to identify age-restricted content.
crYtRating :: Lens' ContentRating (Maybe ContentRatingYtRating)

-- | The video's British Board of Film Classification (BBFC) rating.
crBbfcRating :: Lens' ContentRating (Maybe ContentRatingBbfcRating)

-- | voor de Classificatie van Audiovisuele Media (Netherlands).
crKijkwijzerRating :: Lens' ContentRating (Maybe ContentRatingKijkwijzerRating)

-- | The video's rating from the Movie and Television Review and
--   Classification Board (Philippines).
crMtrcbRating :: Lens' ContentRating (Maybe ContentRatingMtrcbRating)

-- | The video's rating from Hong Kong's Office for Film, Newspaper and
--   Article Administration.
crFcoRating :: Lens' ContentRating (Maybe ContentRatingFcoRating)

-- | The video's rating from the Commission de Contrôle des Films
--   (Belgium).
crCicfRating :: Lens' ContentRating (Maybe ContentRatingCicfRating)

-- | The video's rating in the Czech Republic.
crCzfilmRating :: Lens' ContentRating (Maybe ContentRatingCzfilmRating)

-- | The video's rating from the Maldives National Bureau of
--   Classification.
crNbcRating :: Lens' ContentRating (Maybe ContentRatingNbcRating)

-- | This property has been deprecated. Use the
--   contentDetails.contentRating.cncRating instead.
crFmocRating :: Lens' ContentRating (Maybe ContentRatingFmocRating)

-- | The video's National Film Registry of the Russian Federation (MKRF -
--   Russia) rating.
crRussiaRating :: Lens' ContentRating (Maybe ContentRatingRussiaRating)

-- | The video's rating in Egypt.
crEgfilmRating :: Lens' ContentRating (Maybe ContentRatingEgfilmRating)

-- | The video's rating in Venezuela.
crResorteviolenciaRating :: Lens' ContentRating (Maybe ContentRatingResorteviolenciaRating)

-- | The video's rating from the Ministero dei Beni e delle Attività
--   Culturali e del Turismo (Italy).
crMibacRating :: Lens' ContentRating (Maybe ContentRatingMibacRating)

-- | The video's rating from Medietilsynet, the Norwegian Media Authority.
crMedietilsynetRating :: Lens' ContentRating (Maybe ContentRatingMedietilsynetRating)

-- | The video's rating from the Danish Film Institute's (Det Danske
--   Filminstitut) Media Council for Children and Young People.
crMccypRating :: Lens' ContentRating (Maybe ContentRatingMccypRating)

-- | The video's rating from the Nacionãlais Kino centrs (National Film
--   Centre of Latvia).
crNkclvRating :: Lens' ContentRating (Maybe ContentRatingNkclvRating)

-- | The video's rating from South Africa's Film and Publication Board.
crFpbRating :: Lens' ContentRating (Maybe ContentRatingFpbRating)

-- | The video's rating from Indonesia's Lembaga Sensor Film.
crLsfRating :: Lens' ContentRating (Maybe ContentRatingLsfRating)

-- | The video's rating from Thailand's Board of Film and Video Censors.
crBfvcRating :: Lens' ContentRating (Maybe ContentRatingBfvcRating)

-- | Rating system in Turkey - Evaluation and Classification Board of the
--   Ministry of Culture and Tourism
crEcbmctRating :: Lens' ContentRating (Maybe ContentRatingEcbmctRating)

-- | Rating system in France - Commission de classification
--   cinematographique
crCNCRating :: Lens' ContentRating (Maybe ContentRatingCNCRating)

-- | The video's rating in Slovakia.
crSkfilmRating :: Lens' ContentRating (Maybe ContentRatingSkfilmRating)

-- | The video's Office of Film and Literature Classification (OFLC - New
--   Zealand) rating.
crOflcRating :: Lens' ContentRating (Maybe ContentRatingOflcRating)

-- | The video's Korea Media Rating Board (영상물등급위원회) rating. The KMRB rates
--   videos in South Korea.
crKmrbRating :: Lens' ContentRating (Maybe ContentRatingKmrbRating)

-- | A playlist resource represents a YouTube playlist. A playlist is a
--   collection of videos that can be viewed sequentially and shared with
--   other users. A playlist can contain up to 200 videos, and YouTube does
--   not limit the number of playlists that each user creates. By default,
--   playlists are publicly visible to other users, but playlists can be
--   public or private. YouTube also uses playlists to identify special
--   collections of videos for a channel, such as: - uploaded videos -
--   favorite videos - positively rated (liked) videos - watch history -
--   watch later To be more specific, these lists are associated with a
--   channel, which is a collection of a person, group, or company's
--   videos, playlists, and other YouTube information. You can retrieve the
--   playlist IDs for each of these lists from the channel resource for a
--   given channel. You can then use the playlistItems.list method to
--   retrieve any of those lists. You can also add or remove items from
--   those lists by calling the playlistItems.insert and
--   playlistItems.delete methods.
--   
--   <i>See:</i> <a>playList</a> smart constructor.
data PlayList

-- | Creates a value of <a>PlayList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plStatus</a></li>
--   <li><a>plEtag</a></li>
--   <li><a>plSnippet</a></li>
--   <li><a>plKind</a></li>
--   <li><a>plContentDetails</a></li>
--   <li><a>plId</a></li>
--   <li><a>plLocalizations</a></li>
--   <li><a>plPlayer</a></li>
--   </ul>
playList :: PlayList

-- | The status object contains status information for the playlist.
plStatus :: Lens' PlayList (Maybe PlayListStatus)

-- | Etag of this resource.
plEtag :: Lens' PlayList (Maybe Text)

-- | The snippet object contains basic details about the playlist, such as
--   its title and description.
plSnippet :: Lens' PlayList (Maybe PlayListSnippet)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "youtube#playlist".
plKind :: Lens' PlayList Text

-- | The contentDetails object contains information like video count.
plContentDetails :: Lens' PlayList (Maybe PlayListContentDetails)

-- | The ID that YouTube uses to uniquely identify the playlist.
plId :: Lens' PlayList (Maybe Text)

-- | Localizations for different languages
plLocalizations :: Lens' PlayList (Maybe PlayListLocalizations)

-- | The player object contains information that you would use to play the
--   playlist in an embedded player.
plPlayer :: Lens' PlayList (Maybe PlayListPlayer)

-- | The type of message, this will always be present, it determines the
--   contents of the message as well as which fields will be present.
data LiveChatMessageSnippetType

-- | <pre>
--   chatEndedEvent
--   </pre>
LCMSTChatEndedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   fanFundingEvent
--   </pre>
LCMSTFanFundingEvent :: LiveChatMessageSnippetType

-- | <pre>
--   messageDeletedEvent
--   </pre>
LCMSTMessageDeletedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   messageRetractedEvent
--   </pre>
LCMSTMessageRetractedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   newSponsorEvent
--   </pre>
LCMSTNewSponsorEvent :: LiveChatMessageSnippetType

-- | <pre>
--   pollClosedEvent
--   </pre>
LCMSTPollClosedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   pollEditedEvent
--   </pre>
LCMSTPollEditedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   pollOpenedEvent
--   </pre>
LCMSTPollOpenedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   pollVotedEvent
--   </pre>
LCMSTPollVotedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   sponsorOnlyModeEndedEvent
--   </pre>
LCMSTSponsorOnlyModeEndedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   sponsorOnlyModeStartedEvent
--   </pre>
LCMSTSponsorOnlyModeStartedEvent :: LiveChatMessageSnippetType

-- | <pre>
--   textMessageEvent
--   </pre>
LCMSTTextMessageEvent :: LiveChatMessageSnippetType

-- | <pre>
--   tombstone
--   </pre>
LCMSTTombstone :: LiveChatMessageSnippetType

-- | <pre>
--   userBannedEvent
--   </pre>
LCMSTUserBannedEvent :: LiveChatMessageSnippetType
data LiveStreamStatusStreamStatus

-- | <pre>
--   active
--   </pre>
LSSSSActive :: LiveStreamStatusStreamStatus

-- | <pre>
--   created
--   </pre>
LSSSSCreated :: LiveStreamStatusStreamStatus

-- | <pre>
--   error
--   </pre>
LSSSSError' :: LiveStreamStatusStreamStatus

-- | <pre>
--   inactive
--   </pre>
LSSSSInactive :: LiveStreamStatusStreamStatus

-- | <pre>
--   ready
--   </pre>
LSSSSReady :: LiveStreamStatusStreamStatus

-- | The video's license.
data VideoStatusLicense

-- | <pre>
--   creativeCommon
--   </pre>
CreativeCommon :: VideoStatusLicense

-- | <pre>
--   youtube
--   </pre>
YouTube :: VideoStatusLicense

-- | The video's rating from Nigeria's National Film and Video Censors
--   Board.
data ContentRatingNfvcbRating

-- | <pre>
--   nfvcb12
--   </pre>
NFVCB12 :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcb12a
--   </pre>
Nfvcb12a :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcb15
--   </pre>
NFVCB15 :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcb18
--   </pre>
NFVCB18 :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcbG
--   </pre>
NfvcbG :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcbPg
--   </pre>
NfvcbPg :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcbRe
--   </pre>
NfvcbRe :: ContentRatingNfvcbRating

-- | <pre>
--   nfvcbUnrated
--   </pre>
NfvcbUnrated :: ContentRatingNfvcbRating

-- | Branding properties for the channel view.
--   
--   <i>See:</i> <a>channelSettings</a> smart constructor.
data ChannelSettings

-- | Creates a value of <a>ChannelSettings</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cShowRelatedChannels</a></li>
--   <li><a>cDefaultTab</a></li>
--   <li><a>cFeaturedChannelsTitle</a></li>
--   <li><a>cCountry</a></li>
--   <li><a>cProFileColor</a></li>
--   <li><a>cModerateComments</a></li>
--   <li><a>cKeywords</a></li>
--   <li><a>cUnsubscribedTrailer</a></li>
--   <li><a>cTrackingAnalyticsAccountId</a></li>
--   <li><a>cFeaturedChannelsURLs</a></li>
--   <li><a>cShowBrowseView</a></li>
--   <li><a>cTitle</a></li>
--   <li><a>cDescription</a></li>
--   <li><a>cDefaultLanguage</a></li>
--   </ul>
channelSettings :: ChannelSettings

-- | Whether related channels should be proposed.
cShowRelatedChannels :: Lens' ChannelSettings (Maybe Bool)

-- | Which content tab users should see when viewing the channel.
cDefaultTab :: Lens' ChannelSettings (Maybe Text)

-- | Title for the featured channels tab.
cFeaturedChannelsTitle :: Lens' ChannelSettings (Maybe Text)

-- | The country of the channel.
cCountry :: Lens' ChannelSettings (Maybe Text)

-- | A prominent color that can be rendered on this channel page.
cProFileColor :: Lens' ChannelSettings (Maybe Text)

-- | Whether user-submitted comments left on the channel page need to be
--   approved by the channel owner to be publicly visible.
cModerateComments :: Lens' ChannelSettings (Maybe Bool)

-- | Lists keywords associated with the channel, comma-separated.
cKeywords :: Lens' ChannelSettings (Maybe Text)

-- | The trailer of the channel, for users that are not subscribers.
cUnsubscribedTrailer :: Lens' ChannelSettings (Maybe Text)

-- | The ID for a Google Analytics account to track and measure traffic to
--   the channels.
cTrackingAnalyticsAccountId :: Lens' ChannelSettings (Maybe Text)

-- | The list of featured channels.
cFeaturedChannelsURLs :: Lens' ChannelSettings [Text]

-- | Whether the tab to browse the videos should be displayed.
cShowBrowseView :: Lens' ChannelSettings (Maybe Bool)

-- | Specifies the channel title.
cTitle :: Lens' ChannelSettings (Maybe Text)

-- | Specifies the channel description.
cDescription :: Lens' ChannelSettings (Maybe Text)
cDefaultLanguage :: Lens' ChannelSettings (Maybe Text)

-- | Basic details about a subscription, including title, description and
--   thumbnails of the subscribed item.
--   
--   <i>See:</i> <a>subscriptionSnippet</a> smart constructor.
data SubscriptionSnippet

-- | Creates a value of <a>SubscriptionSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssResourceId</a></li>
--   <li><a>ssPublishedAt</a></li>
--   <li><a>ssChannelTitle</a></li>
--   <li><a>ssChannelId</a></li>
--   <li><a>ssThumbnails</a></li>
--   <li><a>ssTitle</a></li>
--   <li><a>ssDescription</a></li>
--   </ul>
subscriptionSnippet :: SubscriptionSnippet

-- | The id object contains information about the channel that the user
--   subscribed to.
ssResourceId :: Lens' SubscriptionSnippet (Maybe ResourceId)

-- | The date and time that the subscription was created. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
ssPublishedAt :: Lens' SubscriptionSnippet (Maybe UTCTime)

-- | Channel title for the channel that the subscription belongs to.
ssChannelTitle :: Lens' SubscriptionSnippet (Maybe Text)

-- | The ID that YouTube uses to uniquely identify the subscriber's
--   channel.
ssChannelId :: Lens' SubscriptionSnippet (Maybe Text)

-- | A map of thumbnail images associated with the video. For each object
--   in the map, the key is the name of the thumbnail image, and the value
--   is an object that contains other information about the thumbnail.
ssThumbnails :: Lens' SubscriptionSnippet (Maybe ThumbnailDetails)

-- | The subscription's title.
ssTitle :: Lens' SubscriptionSnippet (Maybe Text)

-- | The subscription's details.
ssDescription :: Lens' SubscriptionSnippet (Maybe Text)

-- | Details about the live streaming metadata.
--   
--   <i>See:</i> <a>videoLiveStreamingDetails</a> smart constructor.
data VideoLiveStreamingDetails

-- | Creates a value of <a>VideoLiveStreamingDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vlsdActualEndTime</a></li>
--   <li><a>vlsdConcurrentViewers</a></li>
--   <li><a>vlsdScheduledEndTime</a></li>
--   <li><a>vlsdScheduledStartTime</a></li>
--   <li><a>vlsdActualStartTime</a></li>
--   <li><a>vlsdActiveLiveChatId</a></li>
--   </ul>
videoLiveStreamingDetails :: VideoLiveStreamingDetails

-- | The time that the broadcast actually ended. The value is specified in
--   ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. This value will not be
--   available until the broadcast is over.
vlsdActualEndTime :: Lens' VideoLiveStreamingDetails (Maybe UTCTime)

-- | The number of viewers currently watching the broadcast. The property
--   and its value will be present if the broadcast has current viewers and
--   the broadcast owner has not hidden the viewcount for the video. Note
--   that YouTube stops tracking the number of concurrent viewers for a
--   broadcast when the broadcast ends. So, this property would not
--   identify the number of viewers watching an archived video of a live
--   broadcast that already ended.
vlsdConcurrentViewers :: Lens' VideoLiveStreamingDetails (Maybe Word64)

-- | The time that the broadcast is scheduled to end. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. If the value is
--   empty or the property is not present, then the broadcast is scheduled
--   to continue indefinitely.
vlsdScheduledEndTime :: Lens' VideoLiveStreamingDetails (Maybe UTCTime)

-- | The time that the broadcast is scheduled to begin. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
vlsdScheduledStartTime :: Lens' VideoLiveStreamingDetails (Maybe UTCTime)

-- | The time that the broadcast actually started. The value is specified
--   in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. This value will not be
--   available until the broadcast begins.
vlsdActualStartTime :: Lens' VideoLiveStreamingDetails (Maybe UTCTime)

-- | The ID of the currently active live chat attached to this video. This
--   field is filled only if the video is a currently live broadcast that
--   has live chat. Once the broadcast transitions to complete this field
--   will be removed and the live chat closed down. For persistent
--   broadcasts that live chat id will no longer be tied to this video but
--   rather to the new video being displayed at the persistent page.
vlsdActiveLiveChatId :: Lens' VideoLiveStreamingDetails (Maybe Text)
data FanFundingEventSnippet

-- | Creates a value of <a>FanFundingEventSnippet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ffesDisplayString</a></li>
--   <li><a>ffesSupporterDetails</a></li>
--   <li><a>ffesCreatedAt</a></li>
--   <li><a>ffesAmountMicros</a></li>
--   <li><a>ffesChannelId</a></li>
--   <li><a>ffesCommentText</a></li>
--   <li><a>ffesCurrency</a></li>
--   </ul>
fanFundingEventSnippet :: FanFundingEventSnippet

-- | A rendered string that displays the fund amount and currency (e.g.,
--   "$1.00"). The string is rendered for the given language.
ffesDisplayString :: Lens' FanFundingEventSnippet (Maybe Text)

-- | Details about the supporter. Only filled if the event was made public
--   by the user.
ffesSupporterDetails :: Lens' FanFundingEventSnippet (Maybe ChannelProFileDetails)

-- | The date and time when the funding occurred. The value is specified in
--   ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
ffesCreatedAt :: Lens' FanFundingEventSnippet (Maybe UTCTime)

-- | The amount of funding in micros of fund_currency. e.g., 1 is
--   represented
ffesAmountMicros :: Lens' FanFundingEventSnippet (Maybe Word64)

-- | Channel id where the funding event occurred.
ffesChannelId :: Lens' FanFundingEventSnippet (Maybe Text)

-- | The text contents of the comment left by the user.
ffesCommentText :: Lens' FanFundingEventSnippet (Maybe Text)

-- | The currency in which the fund was made. ISO 4217.
ffesCurrency :: Lens' FanFundingEventSnippet (Maybe Text)

-- | The video's rating from Singapore's Media Development Authority (MDA)
--   and, specifically, it's Board of Film Censors (BFC).
data ContentRatingMdaRating

-- | <pre>
--   mdaG
--   </pre>
MdaG :: ContentRatingMdaRating

-- | <pre>
--   mdaM18
--   </pre>
MDAM18 :: ContentRatingMdaRating

-- | <pre>
--   mdaNc16
--   </pre>
MDANC16 :: ContentRatingMdaRating

-- | <pre>
--   mdaPg
--   </pre>
MdaPg :: ContentRatingMdaRating

-- | <pre>
--   mdaPg13
--   </pre>
MDAPG13 :: ContentRatingMdaRating

-- | <pre>
--   mdaR21
--   </pre>
MDAR21 :: ContentRatingMdaRating

-- | <pre>
--   mdaUnrated
--   </pre>
MdaUnrated :: ContentRatingMdaRating

-- | Details about a resource which is being promoted.
--   
--   <i>See:</i> <a>activityContentDetailsPromotedItem</a> smart
--   constructor.
data ActivityContentDetailsPromotedItem

-- | Creates a value of <a>ActivityContentDetailsPromotedItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acdpiDestinationURL</a></li>
--   <li><a>acdpiClickTrackingURL</a></li>
--   <li><a>acdpiForecastingURL</a></li>
--   <li><a>acdpiDescriptionText</a></li>
--   <li><a>acdpiCtaType</a></li>
--   <li><a>acdpiVideoId</a></li>
--   <li><a>acdpiAdTag</a></li>
--   <li><a>acdpiCreativeViewURL</a></li>
--   <li><a>acdpiImpressionURL</a></li>
--   <li><a>acdpiCustomCtaButtonText</a></li>
--   </ul>
activityContentDetailsPromotedItem :: ActivityContentDetailsPromotedItem

-- | The URL the client should direct the user to, if the user chooses to
--   visit the advertiser's website.
acdpiDestinationURL :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The URL the client should ping to indicate that the user clicked
--   through on this promoted item.
acdpiClickTrackingURL :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The list of forecasting URLs. The client should ping all of these URLs
--   when a promoted item is not available, to indicate that a promoted
--   item could have been shown.
acdpiForecastingURL :: Lens' ActivityContentDetailsPromotedItem [Text]

-- | The text description to accompany the promoted item.
acdpiDescriptionText :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The type of call-to-action, a message to the user indicating action
--   that can be taken.
acdpiCtaType :: Lens' ActivityContentDetailsPromotedItem (Maybe ActivityContentDetailsPromotedItemCtaType)

-- | The ID that YouTube uses to uniquely identify the promoted video.
acdpiVideoId :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The URL the client should fetch to request a promoted item.
acdpiAdTag :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The URL the client should ping to indicate that the user was shown
--   this promoted item.
acdpiCreativeViewURL :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The list of impression URLs. The client should ping all of these URLs
--   to indicate that the user was shown this promoted item.
acdpiImpressionURL :: Lens' ActivityContentDetailsPromotedItem [Text]

-- | The custom call-to-action button text. If specified, it will override
--   the default button text for the cta_type.
acdpiCustomCtaButtonText :: Lens' ActivityContentDetailsPromotedItem (Maybe Text)

-- | The video's Australian Classification Board (ACB) or Australian
--   Communications and Media Authority (ACMA) rating. ACMA ratings are
--   used to classify children's television programming.
data ContentRatingAcbRating

-- | <pre>
--   acbC
--   </pre>
AcbC :: ContentRatingAcbRating

-- | <pre>
--   acbE
--   </pre>
AcbE :: ContentRatingAcbRating

-- | <pre>
--   acbG
--   </pre>
AcbG :: ContentRatingAcbRating

-- | <pre>
--   acbM
--   </pre>
AcbM :: ContentRatingAcbRating

-- | <pre>
--   acbMa15plus
--   </pre>
AcbMa15plus :: ContentRatingAcbRating

-- | <pre>
--   acbP
--   </pre>
AcbP :: ContentRatingAcbRating

-- | <pre>
--   acbPg
--   </pre>
AcbPg :: ContentRatingAcbRating

-- | <pre>
--   acbR18plus
--   </pre>
AcbR18plus :: ContentRatingAcbRating

-- | <pre>
--   acbUnrated
--   </pre>
AcbUnrated :: ContentRatingAcbRating
data SponsorSnippet

-- | Creates a value of <a>SponsorSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sChannelId</a></li>
--   <li><a>sSponsorDetails</a></li>
--   <li><a>sSponsorSince</a></li>
--   </ul>
sponsorSnippet :: SponsorSnippet

-- | The id of the channel being sponsored.
sChannelId :: Lens' SponsorSnippet (Maybe Text)

-- | Details about the sponsor.
sSponsorDetails :: Lens' SponsorSnippet (Maybe ChannelProFileDetails)

-- | The date and time when the user became a sponsor. The value is
--   specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
sSponsorSince :: Lens' SponsorSnippet (Maybe UTCTime)

-- | The video's Departamento de Justiça, Classificação, Qualificação e
--   Títulos (DJCQT - Brazil) rating.
data ContentRatingDjctqRating

-- | <pre>
--   djctq10
--   </pre>
DJCTQ10 :: ContentRatingDjctqRating

-- | <pre>
--   djctq12
--   </pre>
DJCTQ12 :: ContentRatingDjctqRating

-- | <pre>
--   djctq14
--   </pre>
DJCTQ14 :: ContentRatingDjctqRating

-- | <pre>
--   djctq16
--   </pre>
DJCTQ16 :: ContentRatingDjctqRating

-- | <pre>
--   djctq18
--   </pre>
DJCTQ18 :: ContentRatingDjctqRating

-- | <pre>
--   djctqL
--   </pre>
DjctqL :: ContentRatingDjctqRating

-- | <pre>
--   djctqUnrated
--   </pre>
DjctqUnrated :: ContentRatingDjctqRating

-- | Geographical coordinates of a point, in WGS84.
--   
--   <i>See:</i> <a>geoPoint</a> smart constructor.
data GeoPoint

-- | Creates a value of <a>GeoPoint</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpLatitude</a></li>
--   <li><a>gpAltitude</a></li>
--   <li><a>gpLongitude</a></li>
--   </ul>
geoPoint :: GeoPoint

-- | Latitude in degrees.
gpLatitude :: Lens' GeoPoint (Maybe Double)

-- | Altitude above the reference ellipsoid, in meters.
gpAltitude :: Lens' GeoPoint (Maybe Double)

-- | Longitude in degrees.
gpLongitude :: Lens' GeoPoint (Maybe Double)

-- | Comments written in (direct or indirect) reply to the top level
--   comment.
--   
--   <i>See:</i> <a>commentThreadReplies</a> smart constructor.
data CommentThreadReplies

-- | Creates a value of <a>CommentThreadReplies</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctrComments</a></li>
--   </ul>
commentThreadReplies :: CommentThreadReplies

-- | A limited number of replies. Unless the number of replies returned
--   equals total_reply_count in the snippet the returned replies are only
--   a subset of the total number of replies.
ctrComments :: Lens' CommentThreadReplies [Comment]

-- | ChannelSection localization setting
--   
--   <i>See:</i> <a>channelSectionLocalization</a> smart constructor.
data ChannelSectionLocalization

-- | Creates a value of <a>ChannelSectionLocalization</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cslTitle</a></li>
--   </ul>
channelSectionLocalization :: ChannelSectionLocalization

-- | The localized strings for channel section's title.
cslTitle :: Lens' ChannelSectionLocalization (Maybe Text)
data VideoAbuseReportSecondaryReason

-- | Creates a value of <a>VideoAbuseReportSecondaryReason</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>varsrId</a></li>
--   <li><a>varsrLabel</a></li>
--   </ul>
videoAbuseReportSecondaryReason :: VideoAbuseReportSecondaryReason

-- | The ID of this abuse report secondary reason.
varsrId :: Lens' VideoAbuseReportSecondaryReason (Maybe Text)

-- | The localized label for this abuse report secondary reason.
varsrLabel :: Lens' VideoAbuseReportSecondaryReason (Maybe Text)

-- | This value explains why a video failed to upload. This property is
--   only present if the uploadStatus property indicates that the upload
--   failed.
data VideoStatusFailureReason

-- | <pre>
--   codec
--   </pre>
Codec :: VideoStatusFailureReason

-- | <pre>
--   conversion
--   </pre>
Conversion :: VideoStatusFailureReason

-- | <pre>
--   emptyFile
--   </pre>
EmptyFile :: VideoStatusFailureReason

-- | <pre>
--   invalidFile
--   </pre>
InvalidFile :: VideoStatusFailureReason

-- | <pre>
--   tooSmall
--   </pre>
TooSmall :: VideoStatusFailureReason

-- | <pre>
--   uploadAborted
--   </pre>
UploadAborted :: VideoStatusFailureReason

-- | The contentOwnerDetails object encapsulates channel data that is
--   relevant for YouTube Partners linked with the channel.
--   
--   <i>See:</i> <a>channelContentOwnerDetails</a> smart constructor.
data ChannelContentOwnerDetails

-- | Creates a value of <a>ChannelContentOwnerDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccodTimeLinked</a></li>
--   <li><a>ccodContentOwner</a></li>
--   </ul>
channelContentOwnerDetails :: ChannelContentOwnerDetails

-- | The date and time of when the channel was linked to the content owner.
--   The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
ccodTimeLinked :: Lens' ChannelContentOwnerDetails (Maybe UTCTime)

-- | The ID of the content owner linked to the channel.
ccodContentOwner :: Lens' ChannelContentOwnerDetails (Maybe Text)

-- | Basic details about an i18n language, such as language code and
--   human-readable name.
--   
--   <i>See:</i> <a>i18nLanguageSnippet</a> smart constructor.
data I18nLanguageSnippet

-- | Creates a value of <a>I18nLanguageSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilsHl</a></li>
--   <li><a>ilsName</a></li>
--   </ul>
i18nLanguageSnippet :: I18nLanguageSnippet

-- | A short BCP-47 code that uniquely identifies a language.
ilsHl :: Lens' I18nLanguageSnippet (Maybe Text)

-- | The human-readable name of the language in the language itself.
ilsName :: Lens' I18nLanguageSnippet (Maybe Text)

-- | Rating system for Canadian TV - Canadian TV Classification System The
--   video's rating from the Canadian Radio-Television and
--   Telecommunications Commission (CRTC) for Canadian English-language
--   broadcasts. For more information, see the Canadian Broadcast Standards
--   Council website.
data ContentRatingCatvRating

-- | <pre>
--   catv14plus
--   </pre>
Catv14plus :: ContentRatingCatvRating

-- | <pre>
--   catv18plus
--   </pre>
Catv18plus :: ContentRatingCatvRating

-- | <pre>
--   catvC
--   </pre>
CatvC :: ContentRatingCatvRating

-- | <pre>
--   catvC8
--   </pre>
CATVC8 :: ContentRatingCatvRating

-- | <pre>
--   catvG
--   </pre>
CatvG :: ContentRatingCatvRating

-- | <pre>
--   catvPg
--   </pre>
CatvPg :: ContentRatingCatvRating

-- | <pre>
--   catvUnrated
--   </pre>
CatvUnrated :: ContentRatingCatvRating
data LiveChatPollVotedDetails

-- | Creates a value of <a>LiveChatPollVotedDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcpvdPollId</a></li>
--   <li><a>lcpvdItemId</a></li>
--   </ul>
liveChatPollVotedDetails :: LiveChatPollVotedDetails

-- | The poll the user voted on.
lcpvdPollId :: Lens' LiveChatPollVotedDetails (Maybe Text)

-- | The poll item the user chose.
lcpvdItemId :: Lens' LiveChatPollVotedDetails (Maybe Text)
