"""
Rights management policy for YouTube resources.
"""
type AccessPolicy {
  """
  The value of allowed indicates whether the access to the policy is allowed or denied by default.
  """
  allowed: Boolean

  """
  A list of region codes that identify countries where the default policy do not apply.
  """
  exception: [String]
}

type Activities_ {
  """
  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.
  """
  list(
    """
    The channelId parameter specifies a unique YouTube channel ID. The API will
    then return a list of that channel's activities.
    """
    channelId: String

    """
    Set this parameter's value to true to retrieve the activity feed that
    displays on the YouTube home page for the currently authenticated user.
    """
    home: Boolean

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    Set this parameter's value to true to retrieve a feed of the authenticated user's activities.
    """
    mine: Boolean

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!

    """
    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.
    """
    publishedAfter: String

    """
    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.
    """
    publishedBefore: String

    """
    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.
    """
    regionCode: String
  ): ActivityListResponse
}

"""
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.
"""
type Activity {
  """
  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.
  """
  contentDetails: ActivityContentDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the activity.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#activity".
  """
  kind: String

  """
  The snippet object contains basic details about the activity, including the activity's type and group ID.
  """
  snippet: ActivitySnippet
}

"""
Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc.
"""
type ActivityContentDetails {
  """
  The bulletin object contains details about a channel bulletin post. This
  object is only present if the snippet.type is bulletin.
  """
  bulletin: ActivityContentDetailsBulletin

  """
  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.
  """
  channelItem: ActivityContentDetailsChannelItem

  """
  The comment object contains information about a resource that received a
  comment. This property is only present if the snippet.type is comment.
  """
  comment: ActivityContentDetailsComment

  """
  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.
  """
  favorite: ActivityContentDetailsFavorite

  """
  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.
  """
  like: ActivityContentDetailsLike

  """
  The playlistItem object contains information about a new playlist item. This
  property is only present if the snippet.type is playlistItem.
  """
  playlistItem: ActivityContentDetailsPlaylistItem

  """
  The promotedItem object contains details about a resource which is being
  promoted. This property is only present if the snippet.type is promotedItem.
  """
  promotedItem: ActivityContentDetailsPromotedItem

  """
  The recommendation object contains information about a recommended resource.
  This property is only present if the snippet.type is recommendation.
  """
  recommendation: ActivityContentDetailsRecommendation

  """
  The social object contains details about a social network post. This property
  is only present if the snippet.type is social.
  """
  social: 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.
  """
  subscription: ActivityContentDetailsSubscription

  """
  The upload object contains information about the uploaded video. This property
  is only present if the snippet.type is upload.
  """
  upload: ActivityContentDetailsUpload
}

"""
Details about a channel bulletin post.
"""
type ActivityContentDetailsBulletin {
  """
  The resourceId object contains information that identifies the resource associated with a bulletin post.
  """
  resourceId: ResourceId
}

"""
Details about a resource which was added to a channel.
"""
type ActivityContentDetailsChannelItem {
  """
  The resourceId object contains information that identifies the resource that was added to the channel.
  """
  resourceId: ResourceId
}

"""
Information about a resource that received a comment.
"""
type ActivityContentDetailsComment {
  """
  The resourceId object contains information that identifies the resource associated with the comment.
  """
  resourceId: ResourceId
}

"""
Information about a video that was marked as a favorite video.
"""
type ActivityContentDetailsFavorite {
  """
  The resourceId object contains information that identifies the resource that was marked as a favorite.
  """
  resourceId: ResourceId
}

"""
Information about a resource that received a positive (like) rating.
"""
type ActivityContentDetailsLike {
  """
  The resourceId object contains information that identifies the rated resource.
  """
  resourceId: ResourceId
}

"""
Information about a new playlist item.
"""
type ActivityContentDetailsPlaylistItem {
  """
  The value that YouTube uses to uniquely identify the playlist.
  """
  playlistId: String

  """
  ID of the item within the playlist.
  """
  playlistItemId: String

  """
  The resourceId object contains information about the resource that was added to the playlist.
  """
  resourceId: ResourceId
}

"""
Details about a resource which is being promoted.
"""
type ActivityContentDetailsPromotedItem {
  """
  The URL the client should fetch to request a promoted item.
  """
  adTag: String

  """
  The URL the client should ping to indicate that the user clicked through on this promoted item.
  """
  clickTrackingUrl: String

  """
  The URL the client should ping to indicate that the user was shown this promoted item.
  """
  creativeViewUrl: String

  """
  The type of call-to-action, a message to the user indicating action that can be taken.
  """
  ctaType: String

  """
  The custom call-to-action button text. If specified, it will override the default button text for the cta_type.
  """
  customCtaButtonText: String

  """
  The text description to accompany the promoted item.
  """
  descriptionText: String

  """
  The URL the client should direct the user to, if the user chooses to visit the advertiser's website.
  """
  destinationUrl: String

  """
  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.
  """
  forecastingUrl: [String]

  """
  The list of impression URLs. The client should ping all of these URLs to
  indicate that the user was shown this promoted item.
  """
  impressionUrl: [String]

  """
  The ID that YouTube uses to uniquely identify the promoted video.
  """
  videoId: String
}

"""
Information that identifies the recommended resource.
"""
type ActivityContentDetailsRecommendation {
  """
  The reason that the resource is recommended to the user.
  """
  reason: String

  """
  The resourceId object contains information that identifies the recommended resource.
  """
  resourceId: ResourceId

  """
  The seedResourceId object contains information about the resource that caused the recommendation.
  """
  seedResourceId: ResourceId
}

"""
Details about a social network post.
"""
type ActivityContentDetailsSocial {
  """
  The author of the social network post.
  """
  author: String

  """
  An image of the post's author.
  """
  imageUrl: String

  """
  The URL of the social network post.
  """
  referenceUrl: String

  """
  The resourceId object encapsulates information that identifies the resource associated with a social network post.
  """
  resourceId: ResourceId

  """
  The name of the social network.
  """
  type: String
}

"""
Information about a channel that a user subscribed to.
"""
type ActivityContentDetailsSubscription {
  """
  The resourceId object contains information that identifies the resource that the user subscribed to.
  """
  resourceId: ResourceId
}

"""
Information about the uploaded video.
"""
type ActivityContentDetailsUpload {
  """
  The ID that YouTube uses to uniquely identify the uploaded video.
  """
  videoId: String
}

type ActivityListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of activities, or events, that match the request criteria.
  """
  items: [Activity]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#activityListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
Basic details about an activity, including title, description, thumbnails, activity type and group.
"""
type ActivitySnippet {
  """
  The ID that YouTube uses to uniquely identify the channel associated with the activity.
  """
  channelId: String

  """
  Channel title for the channel responsible for this activity
  """
  channelTitle: String

  """
  The description of the resource primarily associated with the activity.
  """
  description: String

  """
  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.
  """
  groupId: String

  """
  The date and time that the video was uploaded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  publishedAt: String

  """
  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.
  """
  thumbnails: ThumbnailDetails

  """
  The title of the resource primarily associated with the activity.
  """
  title: String

  """
  The type of activity that the resource describes.
  """
  type: String
}

enum AltRootEnumParam {
  """
  Responses with Content-Type of application/json
  """
  json
}

enum BroadcastStatusLiveBroadcastsEnumParam {
  """
  Return current live broadcasts.
  """
  active

  """
  Return all broadcasts.
  """
  all

  """
  Return broadcasts that have already ended.
  """
  completed

  """
  Return broadcasts that have not yet started.
  """
  upcoming
}

enum BroadcastTypeLiveBroadcastsEnumParam {
  """
  Return all broadcasts.
  """
  all

  """
  Return only scheduled event broadcasts.
  """
  event

  """
  Return only persistent broadcasts.
  """
  persistent
}

"""
A caption resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
"""
type Caption {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the caption track.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#caption".
  """
  kind: String

  """
  The snippet object contains basic details about the caption.
  """
  snippet: CaptionSnippet
}

type CaptionListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of captions that match the request criteria.
  """
  items: [Caption]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#captionListResponse".
  """
  kind: String

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type Captions_ {
  """
  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.
  """
  download(
    """
    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.
    """
    id: String!

    """
    ID of the Google+ Page for the channel that the request is be on behalf of
    """
    onBehalfOf: String

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    tfmt: TfmtCaptionsEnumParam

    """
    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.
    """
    tlang: String
  ): String

  """
  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.
  """
  list(
    """
    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.
    """
    id: String

    """
    ID of the Google+ Page for the channel that the request is on behalf of.
    """
    onBehalfOf: String

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    part: String!

    """
    The videoId parameter specifies the YouTube video ID of the video for which the API should return caption tracks.
    """
    videoId: String!
  ): CaptionListResponse
}

"""
Basic details about a caption track, such as its language and name.
"""
type CaptionSnippet {
  """
  The type of audio track associated with the caption track.
  """
  audioTrackType: String

  """
  The reason that YouTube failed to process the caption track. This property is
  only present if the state property's value is failed.
  """
  failureReason: String

  """
  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.
  """
  isAutoSynced: Boolean

  """
  Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
  """
  isCC: Boolean

  """
  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.
  """
  isDraft: Boolean

  """
  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.
  """
  isEasyReader: Boolean

  """
  Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
  """
  isLarge: Boolean

  """
  The language of the caption track. The property value is a BCP-47 language tag.
  """
  language: String

  """
  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.
  """
  lastUpdated: String

  """
  The name of the caption track. The name is intended to be visible to the user as an option during playback.
  """
  name: String

  """
  The caption track's status.
  """
  status: String

  """
  The caption track's type.
  """
  trackKind: String

  """
  The ID that YouTube uses to uniquely identify the video associated with the caption track.
  """
  videoId: String
}

"""
Brief description of the live stream cdn settings.
"""
type CdnSettings {
  """
  The format of the video stream that you are sending to Youtube.
  """
  format: String

  """
  The frame rate of the inbound video data.
  """
  frameRate: String

  """
  The ingestionInfo object contains information that YouTube provides that you
  need to transmit your RTMP or HTTP stream to YouTube.
  """
  ingestionInfo: IngestionInfo

  """
  The method or protocol used to transmit the video stream.
  """
  ingestionType: String

  """
  The resolution of the inbound video data.
  """
  resolution: String
}

type Channel {
  id: ID
  createdOn: String
  track: Track
  name: String
  owner: User
  tracks(first: Int, after: ID, played: Boolean): Tracks
  nowPlaying: Track
}

"""
The auditDetails object encapsulates channel data that is relevant for YouTube Partners during the audit process.
"""
type ChannelAuditDetails {
  """
  Whether or not the channel respects the community guidelines.
  """
  communityGuidelinesGoodStanding: Boolean

  """
  Whether or not the channel has any unresolved claims.
  """
  contentIdClaimsGoodStanding: Boolean

  """
  Whether or not the channel has any copyright strikes.
  """
  copyrightStrikesGoodStanding: Boolean

  """
  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.
  """
  overallGoodStanding: Boolean
}

"""
Branding properties of a YouTube channel.
"""
type ChannelBrandingSettings {
  """
  Branding properties for the channel view.
  """
  channel: ChannelSettings

  """
  Additional experimental branding properties.
  """
  hints: [PropertyValue]

  """
  Branding properties for branding images.
  """
  image: ImageSettings

  """
  Branding properties for the watch page.
  """
  watch: WatchSettings
}

"""
Details about the content of a channel.
"""
type ChannelContentDetails {
  relatedPlaylists: relatedPlaylists
}

"""
The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel.
"""
type ChannelContentOwnerDetails {
  """
  The ID of the content owner linked to the channel.
  """
  contentOwner: String

  """
  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.
  """
  timeLinked: String
}

"""
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.
"""
type ChannelConversionPing {
  """
  Defines the context of the ping.
  """
  context: String

  """
  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&labe=default The caller must append
  biscotti authentication (ms param in case of mobile, for example) to this ping.
  """
  conversionUrl: String
}

"""
The conversionPings object encapsulates information about conversion pings that need to be respected by the channel.
"""
type 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.
  """
  pings: [ChannelConversionPing]
}

input ChannelCreateInput {
  channelName: String
}

input ChannelJoinInput {
  channelId: ID!
}

type ChannelListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of channels that match the request criteria.
  """
  items: [Channel]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#channelListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
Channel localization setting
"""
type ChannelLocalization {
  """
  The localized strings for channel's description.
  """
  description: String

  """
  The localized strings for channel's title.
  """
  title: String
}

type ChannelProfileDetails {
  """
  The YouTube channel ID.
  """
  channelId: String

  """
  The channel's URL.
  """
  channelUrl: String

  """
  The channel's display name.
  """
  displayName: String

  """
  The channels's avatar URL.
  """
  profileImageUrl: String
}

type Channels_ {
  """
  Returns a collection of zero or more channel resources that match the request criteria.
  """
  list(
    """
    The categoryId parameter specifies a YouTube guide category, thereby
    requesting YouTube channels associated with that category.
    """
    categoryId: String

    """
    The forUsername parameter specifies a YouTube username, thereby requesting the channel associated with that username.
    """
    forUsername: String

    """
    The hl parameter should be used for filter out the properties that are not
    in the given language. Used for the brandingSettings part.
    """
    hl: String

    """
    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.
    """
    id: String

    """
    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.
    """
    managedByMe: Boolean

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    Set this parameter's value to true to instruct the API to only return channels owned by the authenticated user.
    """
    mine: Boolean

    """
    Use the subscriptions.list method and its mySubscribers parameter to
    retrieve a list of subscribers to the authenticated user's channel.
    """
    mySubscribers: Boolean

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!
  ): ChannelListResponse
}

type ChannelSection {
  """
  The contentDetails object contains details about the channel section content,
  such as a list of playlists or channels featured in the section.
  """
  contentDetails: ChannelSectionContentDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the channel section.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#channelSection".
  """
  kind: String

  """
  The snippet object contains basic details about the channel section, such as its type, style and title.
  """
  snippet: ChannelSectionSnippet

  """
  The targeting object contains basic targeting settings about the channel section.
  """
  targeting: ChannelSectionTargeting
}

"""
Details about a channelsection, including playlists and channels.
"""
type ChannelSectionContentDetails {
  """
  The channel ids for type multiple_channels.
  """
  channels: [String]

  """
  The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.
  """
  playlists: [String]
}

type ChannelSectionListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of ChannelSections that match the request criteria.
  """
  items: [ChannelSection]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#channelSectionListResponse".
  """
  kind: String

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
ChannelSection localization setting
"""
type ChannelSectionLocalization {
  """
  The localized strings for channel section's title.
  """
  title: String
}

type ChannelSections_ {
  """
  Returns channelSection resources that match the API request criteria.
  """
  list(
    """
    The channelId parameter specifies a YouTube channel ID. The API will only return that channel's channelSections.
    """
    channelId: String

    """
    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.
    """
    hl: String

    """
    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.
    """
    id: String

    """
    Set this parameter's value to true to retrieve a feed of the authenticated user's channelSections.
    """
    mine: Boolean

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    part: String!
  ): ChannelSectionListResponse
}

"""
Basic details about a channel section, including title, style and position.
"""
type ChannelSectionSnippet {
  """
  The ID that YouTube uses to uniquely identify the channel that published the channel section.
  """
  channelId: String

  """
  The language of the channel section's default title and description.
  """
  defaultLanguage: String

  """
  Localized title, read-only.
  """
  localized: ChannelSectionLocalization

  """
  The position of the channel section in the channel.
  """
  position: Int

  """
  The style of the channel section.
  """
  style: String

  """
  The channel section's title for multiple_playlists and multiple_channels.
  """
  title: String

  """
  The type of the channel section.
  """
  type: String
}

"""
ChannelSection targeting setting.
"""
type ChannelSectionTargeting {
  """
  The country the channel section is targeting.
  """
  countries: [String]

  """
  The language the channel section is targeting.
  """
  languages: [String]

  """
  The region the channel section is targeting.
  """
  regions: [String]
}

"""
Branding properties for the channel view.
"""
type ChannelSettings {
  """
  The country of the channel.
  """
  country: String
  defaultLanguage: String

  """
  Which content tab users should see when viewing the channel.
  """
  defaultTab: String

  """
  Specifies the channel description.
  """
  description: String

  """
  Title for the featured channels tab.
  """
  featuredChannelsTitle: String

  """
  The list of featured channels.
  """
  featuredChannelsUrls: [String]

  """
  Lists keywords associated with the channel, comma-separated.
  """
  keywords: String

  """
  Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible.
  """
  moderateComments: Boolean

  """
  A prominent color that can be rendered on this channel page.
  """
  profileColor: String

  """
  Whether the tab to browse the videos should be displayed.
  """
  showBrowseView: Boolean

  """
  Whether related channels should be proposed.
  """
  showRelatedChannels: Boolean

  """
  Specifies the channel title.
  """
  title: String

  """
  The ID for a Google Analytics account to track and measure traffic to the channels.
  """
  trackingAnalyticsAccountId: String

  """
  The trailer of the channel, for users that are not subscribers.
  """
  unsubscribedTrailer: String
}

"""
Basic details about a channel, including title, description and thumbnails.
"""
type ChannelSnippet {
  """
  The country of the channel.
  """
  country: String

  """
  The custom url of the channel.
  """
  customUrl: String

  """
  The language of the channel's default title and description.
  """
  defaultLanguage: String

  """
  The description of the channel.
  """
  description: String

  """
  Localized title and description, read-only.
  """
  localized: ChannelLocalization

  """
  The date and time that the channel was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  publishedAt: String

  """
  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.
  """
  thumbnails: ThumbnailDetails

  """
  The channel's title.
  """
  title: String
}

"""
Statistics about a channel: number of subscribers, number of videos in the channel, etc.
"""
type ChannelStatistics {
  """
  The number of comments for the channel.
  """
  commentCount: String

  """
  Whether or not the number of subscribers is shown for this user.
  """
  hiddenSubscriberCount: Boolean

  """
  The number of subscribers that the channel has.
  """
  subscriberCount: String

  """
  The number of videos uploaded to the channel.
  """
  videoCount: String

  """
  The number of times the channel has been viewed.
  """
  viewCount: String
}

"""
JSON template for the status part of a channel.
"""
type 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.
  """
  isLinked: Boolean

  """
  The long uploads status of this channel. See
  """
  longUploadsStatus: String

  """
  Privacy status of the channel.
  """
  privacyStatus: String
}

"""
Freebase topic information related to the channel.
"""
type ChannelTopicDetails {
  """
  A list of Wikipedia URLs that describe the channel's content.
  """
  topicCategories: [String]

  """
  A list of Freebase topic IDs associated with the channel. You can retrieve
  information about each topic using the Freebase Topic API.
  """
  topicIds: [String]
}

enum ChannelTypeSearchEnumParam {
  """
  Return all channels.
  """
  any

  """
  Only retrieve shows.
  """
  show
}

enum ChartVideosEnumParam {
  """
  Return the most popular videos for the specified content region and video category.
  """
  mostPopular
}

"""
A comment represents a single YouTube comment.
"""
type Comment {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the comment.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
  """
  kind: String

  """
  The snippet object contains basic details about the comment.
  """
  snippet: CommentSnippet
}

type CommentListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of comments that match the request criteria.
  """
  items: [Comment]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#commentListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type Comments_ {
  """
  Returns a list of comments that match the API request parameters.
  """
  list(
    """
    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.
    """
    id: String

    """
    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.
    """
    maxResults: Int

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    parentId: String

    """
    The part parameter specifies a comma-separated list of one or more comment
    resource properties that the API response will include.
    """
    part: String!

    """
    This parameter indicates whether the API should return comments formatted as HTML or as plain text.
    """
    textFormat: TextFormatCommentsEnumParam
  ): CommentListResponse
}

"""
Basic details about a comment, such as its author and text.
"""
type CommentSnippet {
  """
  The id of the author's YouTube channel, if any.
  """
  authorChannelId: String

  """
  Link to the author's YouTube channel, if any.
  """
  authorChannelUrl: String

  """
  The name of the user who posted the comment.
  """
  authorDisplayName: String

  """
  The URL for the avatar of the user who posted the comment.
  """
  authorProfileImageUrl: String

  """
  Whether the current viewer can rate this comment.
  """
  canRate: Boolean

  """
  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.
  """
  channelId: String

  """
  The total number of likes this comment has received.
  """
  likeCount: Int

  """
  The comment's moderation status. Will not be set if the comments were requested through the id filter.
  """
  moderationStatus: String

  """
  The unique id of the parent comment, only set for replies.
  """
  parentId: String

  """
  The date and time when the comment was orignally published. The value is
  specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  publishedAt: String

  """
  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.
  """
  textDisplay: String

  """
  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.
  """
  textOriginal: String

  """
  The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  updatedAt: String

  """
  The ID of the video the comment refers to, if any.
  """
  videoId: String

  """
  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.
  """
  viewerRating: String
}

"""
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.
"""
type CommentThread {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the comment thread.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#commentThread".
  """
  kind: String

  """
  The replies object contains a limited number of replies (if any) to the top level comment found in the snippet.
  """
  replies: CommentThreadReplies

  """
  The snippet object contains basic details about the comment thread and also the top level comment.
  """
  snippet: CommentThreadSnippet
}

type CommentThreadListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of comment threads that match the request criteria.
  """
  items: [CommentThread]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#commentThreadListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
Comments written in (direct or indirect) reply to the top level comment.
"""
type 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.
  """
  comments: [Comment]
}

type CommentThreads_ {
  """
  Returns a list of comment threads that match the API request parameters.
  """
  list(
    """
    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.
    """
    allThreadsRelatedToChannelId: String

    """
    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.)
    """
    channelId: String

    """
    The id parameter specifies a comma-separated list of comment thread IDs for the resources that should be retrieved.
    """
    id: String

    """
    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.
    """
    maxResults: Int

    """
    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.
    """
    moderationStatus: ModerationStatusCommentThreadsEnumParam

    """
    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.
    """
    order: OrderCommentThreadsEnumParam

    """
    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.
    """
    pageToken: String

    """
    The part parameter specifies a comma-separated list of one or more
    commentThread resource properties that the API response will include.
    """
    part: String!

    """
    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.
    """
    searchTerms: String

    """
    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.
    """
    textFormat: TextFormatCommentThreadsEnumParam

    """
    The videoId parameter instructs the API to return comment threads associated with the specified video ID.
    """
    videoId: String
  ): CommentThreadListResponse
}

"""
Basic details about a comment thread.
"""
type CommentThreadSnippet {
  """
  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.
  """
  canReply: Boolean

  """
  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.
  """
  channelId: String

  """
  Whether the thread (and therefore all its comments) is visible to all YouTube users.
  """
  isPublic: Boolean

  """
  The top level comment of this thread.
  """
  topLevelComment: Comment

  """
  The total number of replies (not including the top level comment).
  """
  totalReplyCount: Int

  """
  The ID of the video the comments refer to, if any. No video_id implies a channel discussion comment.
  """
  videoId: String
}

"""
Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 71
"""
type ContentRating {
  """
  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.
  """
  acbRating: String

  """
  The video's rating from Italy's Autorità per le Garanzie nelle Comunicazioni (AGCOM).
  """
  agcomRating: String

  """
  The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television.
  """
  anatelRating: String

  """
  The video's British Board of Film Classification (BBFC) rating.
  """
  bbfcRating: String

  """
  The video's rating from Thailand's Board of Film and Video Censors.
  """
  bfvcRating: String

  """
  The video's rating from the Austrian Board of Media Classification (Bundesministerium für Unterricht, Kunst und Kultur).
  """
  bmukkRating: String

  """
  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.
  """
  catvRating: String

  """
  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.
  """
  catvfrRating: String

  """
  The video's Central Board of Film Certification (CBFC - India) rating.
  """
  cbfcRating: String

  """
  The video's Consejo de Calificación Cinematográfica (Chile) rating.
  """
  cccRating: String

  """
  The video's rating from Portugal's Comissão de Classificação de Espect´culos.
  """
  cceRating: String

  """
  The video's rating in Switzerland.
  """
  chfilmRating: String

  """
  The video's Canadian Home Video Rating System (CHVRS) rating.
  """
  chvrsRating: String

  """
  The video's rating from the Commission de Contrôle des Films (Belgium).
  """
  cicfRating: String

  """
  The video's rating from Romania's CONSILIUL NATIONAL AL AUDIOVIZUALULUI (CNA).
  """
  cnaRating: String

  """
  Rating system in France - Commission de classification cinematographique
  """
  cncRating: String

  """
  The video's rating from France's Conseil supérieur de l?audiovisuel, which rates broadcast content.
  """
  csaRating: String

  """
  The video's rating from Luxembourg's Commission de surveillance de la classification des films (CSCF).
  """
  cscfRating: String

  """
  The video's rating in the Czech Republic.
  """
  czfilmRating: String

  """
  The video's Departamento de Justiça, Classificação, Qualificação e Títulos (DJCQT - Brazil) rating.
  """
  djctqRating: String

  """
  Reasons that explain why the video received its DJCQT (Brazil) rating.
  """
  djctqRatingReasons: djctqRatingReasons

  """
  Rating system in Turkey - Evaluation and Classification Board of the Ministry of Culture and Tourism
  """
  ecbmctRating: String

  """
  The video's rating in Estonia.
  """
  eefilmRating: String

  """
  The video's rating in Egypt.
  """
  egfilmRating: String

  """
  The video's Eirin (映倫) rating. Eirin is the Japanese rating system.
  """
  eirinRating: String

  """
  The video's rating from Malaysia's Film Censorship Board.
  """
  fcbmRating: String

  """
  The video's rating from Hong Kong's Office for Film, Newspaper and Article Administration.
  """
  fcoRating: String

  """
  This property has been deprecated. Use the contentDetails.contentRating.cncRating instead.
  """
  fmocRating: String

  """
  The video's rating from South Africa's Film and Publication Board.
  """
  fpbRating: String

  """
  Reasons that explain why the video received its FPB (South Africa) rating.
  """
  fpbRatingReasons: fpbRatingReasons

  """
  The video's Freiwillige Selbstkontrolle der Filmwirtschaft (FSK - Germany) rating.
  """
  fskRating: String

  """
  The video's rating in Greece.
  """
  grfilmRating: String

  """
  The video's Instituto de la Cinematografía y de las Artes Audiovisuales (ICAA - Spain) rating.
  """
  icaaRating: String

  """
  The video's Irish Film Classification Office (IFCO - Ireland) rating. See the IFCO website for more information.
  """
  ifcoRating: String

  """
  The video's rating in Israel.
  """
  ilfilmRating: String

  """
  The video's INCAA (Instituto Nacional de Cine y Artes Audiovisuales - Argentina) rating.
  """
  incaaRating: String

  """
  The video's rating from the Kenya Film Classification Board.
  """
  kfcbRating: String

  """
  voor de Classificatie van Audiovisuele Media (Netherlands).
  """
  kijkwijzerRating: String

  """
  The video's Korea Media Rating Board (영상물등급위원회) rating. The KMRB rates videos in South Korea.
  """
  kmrbRating: String

  """
  The video's rating from Indonesia's Lembaga Sensor Film.
  """
  lsfRating: String

  """
  The video's rating from Malta's Film Age-Classification Board.
  """
  mccaaRating: String

  """
  The video's rating from the Danish Film Institute's (Det Danske Filminstitut) Media Council for Children and Young People.
  """
  mccypRating: String

  """
  The video's rating system for Vietnam - MCST
  """
  mcstRating: String

  """
  The video's rating from Singapore's Media Development Authority (MDA) and, specifically, it's Board of Film Censors (BFC).
  """
  mdaRating: String

  """
  The video's rating from Medietilsynet, the Norwegian Media Authority.
  """
  medietilsynetRating: String

  """
  The video's rating from Finland's Kansallinen Audiovisuaalinen Instituutti (National Audiovisual Institute).
  """
  mekuRating: String

  """
  The rating system for MENA countries, a clone of MPAA. It is needed to
  """
  menaMpaaRating: String

  """
  The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy).
  """
  mibacRating: String

  """
  The video's Ministerio de Cultura (Colombia) rating.
  """
  mocRating: String

  """
  The video's rating from Taiwan's Ministry of Culture (文化部).
  """
  moctwRating: String

  """
  The video's Motion Picture Association of America (MPAA) rating.
  """
  mpaaRating: String

  """
  The rating system for trailer, DVD, and Ad in the US. See http://movielabs.com/md/ratings/v2.3/html/US_MPAAT_Ratings.html.
  """
  mpaatRating: String

  """
  The video's rating from the Movie and Television Review and Classification Board (Philippines).
  """
  mtrcbRating: String

  """
  The video's rating from the Maldives National Bureau of Classification.
  """
  nbcRating: String

  """
  The video's rating in Poland.
  """
  nbcplRating: String

  """
  The video's rating from the Bulgarian National Film Center.
  """
  nfrcRating: String

  """
  The video's rating from Nigeria's National Film and Video Censors Board.
  """
  nfvcbRating: String

  """
  The video's rating from the Nacionãlais Kino centrs (National Film Centre of Latvia).
  """
  nkclvRating: String

  """
  The video's Office of Film and Literature Classification (OFLC - New Zealand) rating.
  """
  oflcRating: String

  """
  The video's rating in Peru.
  """
  pefilmRating: String

  """
  The video's rating from the Hungarian Nemzeti Filmiroda, the Rating Committee of the National Office of Film.
  """
  rcnofRating: String

  """
  The video's rating in Venezuela.
  """
  resorteviolenciaRating: String

  """
  The video's General Directorate of Radio, Television and Cinematography (Mexico) rating.
  """
  rtcRating: String

  """
  The video's rating from Ireland's Raidió Teilifís Éireann.
  """
  rteRating: String

  """
  The video's National Film Registry of the Russian Federation (MKRF - Russia) rating.
  """
  russiaRating: String

  """
  The video's rating in Slovakia.
  """
  skfilmRating: String

  """
  The video's rating in Iceland.
  """
  smaisRating: String

  """
  The video's rating from Statens medieråd (Sweden's National Media Council).
  """
  smsaRating: String

  """
  The video's TV Parental Guidelines (TVPG) rating.
  """
  tvpgRating: String

  """
  A rating that YouTube uses to identify age-restricted content.
  """
  ytRating: String
}

enum djctqRatingReasons {
  djctqCriminalActs
  djctqDrugs
  djctqExplicitSex
  djctqExtremeViolence
  djctqIllegalDrugs
  djctqImpactingContent
  djctqInappropriateLanguage
  djctqLegalDrugs
  djctqNudity
  djctqSex
  djctqSexualContent
  djctqViolence
}

enum editorSuggestions {
  audioQuietAudioSwap
  videoAutoLevels
  videoCrop
  videoStabilize
}

enum EventTypeSearchEnumParam {
  """
  Only include completed broadcasts.
  """
  completed

  """
  Only include active broadcasts.
  """
  live

  """
  Only include upcoming broadcasts.
  """
  upcoming
}

enum FilterSponsorsEnumParam {
  """
  Return all sponsors, from newest to oldest.
  """
  all

  """
  Return the most recent sponsors, from newest to oldest.
  """
  newest
}

enum fpbRatingReasons {
  fpbBlasphemy
  fpbCriminalTechniques
  fpbDrugs
  fpbHorror
  fpbImitativeActsTechniques
  fpbLanguage
  fpbNudity
  fpbPrejudice
  fpbSex
  fpbSexualViolence
  fpbViolence
}

"""
Geographical coordinates of a point, in WGS84.
"""
type GeoPoint {
  """
  Altitude above the reference ellipsoid, in meters.
  """
  altitude: Int

  """
  Latitude in degrees.
  """
  latitude: Int

  """
  Longitude in degrees.
  """
  longitude: Int
}

type GuideCategories_ {
  """
  Returns a list of categories that can be associated with YouTube channels.
  """
  list(
    """
    The hl parameter specifies the language that will be used for text values in the API response.
    """
    hl: String

    """
    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.
    """
    id: String

    """
    The part parameter specifies the guideCategory resource properties that the
    API response will include. Set the parameter value to snippet.
    """
    part: String!

    """
    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.
    """
    regionCode: String
  ): GuideCategoryListResponse
}

"""
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.
"""
type GuideCategory {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the guide category.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#guideCategory".
  """
  kind: String

  """
  The snippet object contains basic details about the category, such as its title.
  """
  snippet: GuideCategorySnippet
}

type GuideCategoryListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  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.
  """
  items: [GuideCategory]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#guideCategoryListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
Basic details about a guide category.
"""
type GuideCategorySnippet {
  channelId: String

  """
  Description of the guide category.
  """
  title: String
}

input HostControlInput {
  channel: ID
  action: PlayerControlAction
}

"""
An i18nLanguage resource identifies a UI language currently supported by YouTube.
"""
type I18nLanguage {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the i18n language.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#i18nLanguage".
  """
  kind: String

  """
  The snippet object contains basic details about the i18n language, such as language code and human-readable name.
  """
  snippet: I18nLanguageSnippet
}

type I18nLanguageListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  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.
  """
  items: [I18nLanguage]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#i18nLanguageListResponse".
  """
  kind: String

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type I18nLanguages_ {
  """
  Returns a list of application languages that the YouTube website supports.
  """
  list(
    """
    The hl parameter specifies the language that should be used for text values in the API response.
    """
    hl: String

    """
    The part parameter specifies the i18nLanguage resource properties that the
    API response will include. Set the parameter value to snippet.
    """
    part: String!
  ): I18nLanguageListResponse
}

"""
Basic details about an i18n language, such as language code and human-readable name.
"""
type I18nLanguageSnippet {
  """
  A short BCP-47 code that uniquely identifies a language.
  """
  hl: String

  """
  The human-readable name of the language in the language itself.
  """
  name: String
}

"""
A i18nRegion resource identifies a region where YouTube is available.
"""
type I18nRegion {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the i18n region.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#i18nRegion".
  """
  kind: String

  """
  The snippet object contains basic details about the i18n region, such as region code and human-readable name.
  """
  snippet: I18nRegionSnippet
}

type I18nRegionListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  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.
  """
  items: [I18nRegion]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#i18nRegionListResponse".
  """
  kind: String

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type I18nRegions_ {
  """
  Returns a list of content regions that the YouTube website supports.
  """
  list(
    """
    The hl parameter specifies the language that should be used for text values in the API response.
    """
    hl: String

    """
    The part parameter specifies the i18nRegion resource properties that the API
    response will include. Set the parameter value to snippet.
    """
    part: String!
  ): I18nRegionListResponse
}

"""
Basic details about an i18n region, such as region code and human-readable name.
"""
type I18nRegionSnippet {
  """
  The region code as a 2-letter ISO country code.
  """
  gl: String

  """
  The human-readable name of the region.
  """
  name: String
}

"""
Branding properties for images associated with the channel.
"""
type ImageSettings {
  """
  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.
  """
  backgroundImageUrl: LocalizedProperty

  """
  This is used only in update requests; if it's set, we use this URL to generate all of the above banner URLs.
  """
  bannerExternalUrl: String

  """
  Banner image. Desktop size (1060x175).
  """
  bannerImageUrl: String

  """
  Banner image. Mobile size high resolution (1440x395).
  """
  bannerMobileExtraHdImageUrl: String

  """
  Banner image. Mobile size high resolution (1280x360).
  """
  bannerMobileHdImageUrl: String

  """
  Banner image. Mobile size (640x175).
  """
  bannerMobileImageUrl: String

  """
  Banner image. Mobile size low resolution (320x88).
  """
  bannerMobileLowImageUrl: String

  """
  Banner image. Mobile size medium/high resolution (960x263).
  """
  bannerMobileMediumHdImageUrl: String

  """
  Banner image. Tablet size extra high resolution (2560x424).
  """
  bannerTabletExtraHdImageUrl: String

  """
  Banner image. Tablet size high resolution (2276x377).
  """
  bannerTabletHdImageUrl: String

  """
  Banner image. Tablet size (1707x283).
  """
  bannerTabletImageUrl: String

  """
  Banner image. Tablet size low resolution (1138x188).
  """
  bannerTabletLowImageUrl: String

  """
  Banner image. TV size high resolution (1920x1080).
  """
  bannerTvHighImageUrl: String

  """
  Banner image. TV size extra high resolution (2120x1192).
  """
  bannerTvImageUrl: String

  """
  Banner image. TV size low resolution (854x480).
  """
  bannerTvLowImageUrl: String

  """
  Banner image. TV size medium resolution (1280x720).
  """
  bannerTvMediumImageUrl: String

  """
  The image map script for the large banner image.
  """
  largeBrandedBannerImageImapScript: LocalizedProperty

  """
  The URL for the 854px by 70px image that appears below the video player in the
  expanded video view of the video watch page.
  """
  largeBrandedBannerImageUrl: LocalizedProperty

  """
  The image map script for the small banner image.
  """
  smallBrandedBannerImageImapScript: 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.
  """
  smallBrandedBannerImageUrl: LocalizedProperty

  """
  The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages.
  """
  trackingImageUrl: String

  """
  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.
  """
  watchIconImageUrl: String
}

"""
Describes information necessary for ingesting an RTMP or an HTTP stream.
"""
type 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.
  """
  backupIngestionAddress: String

  """
  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
  """
  ingestionAddress: String

  """
  The HTTP or RTMP stream name that YouTube assigns to the video stream.
  """
  streamName: String
}

"""
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.
"""
type InvideoPosition {
  """
  Describes in which corner of the video the visual widget will appear.
  """
  cornerPosition: String

  """
  Defines the position type.
  """
  type: String
}

"""
Describes an invideo promotion campaign consisting of multiple promoted items. A campaign belongs to a single channel_id.
"""
type InvideoPromotion {
  """
  The default temporal position within the video where the promoted item will be
  displayed. Can be overriden by more specific timing in the item.
  """
  defaultTiming: InvideoTiming

  """
  List of promoted items in decreasing priority.
  """
  items: [PromotedItem]

  """
  The spatial position within the video where the promoted item will be displayed.
  """
  position: InvideoPosition

  """
  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.
  """
  useSmartTiming: Boolean
}

"""
Describes a temporal position of a visual widget inside a video.
"""
type InvideoTiming {
  """
  Defines the duration in milliseconds for which the promotion should be
  displayed. If missing, the client should use the default.
  """
  durationMs: String

  """
  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.
  """
  offsetMs: String

  """
  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.
  """
  type: String
}

type LanguageTag {
  value: String
}

"""
A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
"""
type LiveBroadcast {
  """
  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.
  """
  contentDetails: LiveBroadcastContentDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube assigns to uniquely identify the broadcast.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#liveBroadcast".
  """
  kind: String

  """
  The snippet object contains basic details about the event, including its title, description, start time, and end time.
  """
  snippet: LiveBroadcastSnippet

  """
  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.
  """
  statistics: LiveBroadcastStatistics

  """
  The status object contains information about the event's status.
  """
  status: LiveBroadcastStatus
}

"""
Detailed settings of a broadcast.
"""
type LiveBroadcastContentDetails {
  """
  This value uniquely identifies the live stream bound to the broadcast.
  """
  boundStreamId: String

  """
  The date and time that the live stream referenced by boundStreamId was last updated.
  """
  boundStreamLastUpdateTimeMs: String
  closedCaptionsType: String

  """
  This setting indicates whether auto start is enabled for this broadcast.
  """
  enableAutoStart: Boolean

  """
  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.
  """
  enableClosedCaptions: Boolean

  """
  This setting indicates whether YouTube should enable content encryption for the broadcast.
  """
  enableContentEncryption: Boolean

  """
  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.
  """
  enableDvr: Boolean

  """
  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.
  """
  enableEmbed: Boolean

  """
  Indicates whether this broadcast has low latency enabled.
  """
  enableLowLatency: Boolean

  """
  If both this and enable_low_latency are set, they must match. LATENCY_NORMAL
  should match enable_low_latency=false LATENCY_LOW should match
  enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted.
  """
  latencyPreference: String
  mesh: String

  """
  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.
  """
  monitorStream: MonitorStreamInfo

  """
  The projection format of this broadcast. This defaults to rectangular.
  """
  projection: String

  """
  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.
  """
  recordFromStart: Boolean

  """
  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.
  """
  startWithSlate: Boolean
  stereoLayout: String
}

type LiveBroadcastListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of broadcasts that match the request criteria.
  """
  items: [LiveBroadcast]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#liveBroadcastListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type LiveBroadcasts_ {
  """
  Returns a list of YouTube broadcasts that match the API request parameters.
  """
  list(
    """
    The broadcastStatus parameter filters the API response to only include broadcasts with the specified status.
    """
    broadcastStatus: BroadcastStatusLiveBroadcastsEnumParam

    """
    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.
    """
    broadcastType: BroadcastTypeLiveBroadcastsEnumParam

    """
    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.
    """
    id: String

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    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.
    """
    mine: Boolean

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    onBehalfOfContentOwnerChannel: String

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!
  ): LiveBroadcastListResponse
}

type 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.
  """
  actualEndTime: String

  """
  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.
  """
  actualStartTime: String

  """
  The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
  """
  channelId: String

  """
  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.
  """
  description: String
  isDefaultBroadcast: Boolean

  """
  The id of the live chat for this broadcast.
  """
  liveChatId: String

  """
  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.
  """
  publishedAt: String

  """
  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.
  """
  scheduledEndTime: String

  """
  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.
  """
  scheduledStartTime: String

  """
  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.
  """
  thumbnails: 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.
  """
  title: String
}

"""
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.
"""
type LiveBroadcastStatistics {
  """
  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.
  """
  concurrentViewers: String

  """
  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.
  """
  totalChatCount: String
}

type LiveBroadcastStatus {
  """
  The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
  """
  lifeCycleStatus: String

  """
  Priority of the live broadcast event (internal state).
  """
  liveBroadcastPriority: String

  """
  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.
  """
  privacyStatus: String

  """
  The broadcast's recording status.
  """
  recordingStatus: String
}

type LiveChatFanFundingEventDetails {
  """
  A rendered string that displays the fund amount and currency to the user.
  """
  amountDisplayString: String

  """
  The amount of the fund.
  """
  amountMicros: String

  """
  The currency in which the fund was made.
  """
  currency: String

  """
  The comment added by the user to this fan funding event.
  """
  userComment: String
}

"""
A liveChatMessage resource represents a chat message in a YouTube Live Chat.
"""
type LiveChatMessage {
  """
  The authorDetails object contains basic details about the user that posted this message.
  """
  authorDetails: LiveChatMessageAuthorDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube assigns to uniquely identify the message.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatMessage".
  """
  kind: String

  """
  The snippet object contains basic details about the message.
  """
  snippet: LiveChatMessageSnippet
}

type LiveChatMessageAuthorDetails {
  """
  The YouTube channel ID.
  """
  channelId: String

  """
  The channel's URL.
  """
  channelUrl: String

  """
  The channel's display name.
  """
  displayName: String

  """
  Whether the author is a moderator of the live chat.
  """
  isChatModerator: Boolean

  """
  Whether the author is the owner of the live chat.
  """
  isChatOwner: Boolean

  """
  Whether the author is a sponsor of the live chat.
  """
  isChatSponsor: Boolean

  """
  Whether the author's identity has been verified by YouTube.
  """
  isVerified: Boolean

  """
  The channels's avatar URL.
  """
  profileImageUrl: String
}

type LiveChatMessageDeletedDetails {
  deletedMessageId: String
}

type LiveChatMessageListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of live chat messages.
  """
  items: [LiveChatMessage]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatMessageListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String

  """
  The date and time when the underlying stream went offline. The value is
  specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  offlineAt: String
  pageInfo: PageInfo

  """
  The amount of time the client should wait before polling again.
  """
  pollingIntervalMillis: Int
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type LiveChatMessageRetractedDetails {
  retractedMessageId: String
}

type LiveChatMessages_ {
  """
  Lists live chat messages for a specific chat.
  """
  list(
    """
    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.
    """
    hl: String

    """
    The liveChatId parameter specifies the ID of the chat whose messages will be returned.
    """
    liveChatId: String!

    """
    The maxResults parameter specifies the maximum number of messages that should be returned in the result set.
    """
    maxResults: Int

    """
    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.
    """
    pageToken: String

    """
    The part parameter specifies the liveChatComment resource parts that the API
    response will include. Supported values are id and snippet.
    """
    part: String!

    """
    The profileImageSize parameter specifies the size of the user profile
    pictures that should be returned in the result set. Default: 88.
    """
    profileImageSize: Int
  ): LiveChatMessageListResponse
}

type LiveChatMessageSnippet {
  """
  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 superChatEvent - the user
  that made the purchase
  """
  authorChannelId: String

  """
  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.
  """
  displayMessage: String

  """
  Details about the funding event, this is only set if the type is 'fanFundingEvent'.
  """
  fanFundingEventDetails: LiveChatFanFundingEventDetails

  """
  Whether the message has display content that should be displayed to users.
  """
  hasDisplayContent: Boolean
  liveChatId: String
  messageDeletedDetails: LiveChatMessageDeletedDetails
  messageRetractedDetails: LiveChatMessageRetractedDetails
  pollClosedDetails: LiveChatPollClosedDetails
  pollEditedDetails: LiveChatPollEditedDetails
  pollOpenedDetails: LiveChatPollOpenedDetails
  pollVotedDetails: LiveChatPollVotedDetails

  """
  The date and time when the message was orignally published. The value is
  specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  publishedAt: String

  """
  Details about the Super Chat event, this is only set if the type is 'superChatEvent'.
  """
  superChatDetails: LiveChatSuperChatDetails

  """
  Details about the text message, this is only set if the type is 'textMessageEvent'.
  """
  textMessageDetails: LiveChatTextMessageDetails

  """
  The type of message, this will always be present, it determines the contents
  of the message as well as which fields will be present.
  """
  type: String
  userBannedDetails: LiveChatUserBannedMessageDetails
}

"""
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.
"""
type LiveChatModerator {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube assigns to uniquely identify the moderator.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatModerator".
  """
  kind: String

  """
  The snippet object contains basic details about the moderator.
  """
  snippet: LiveChatModeratorSnippet
}

type LiveChatModeratorListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of moderators that match the request criteria.
  """
  items: [LiveChatModerator]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatModeratorListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type LiveChatModerators_ {
  """
  Lists moderators for a live chat.
  """
  list(
    """
    The liveChatId parameter specifies the YouTube live chat for which the API should return moderators.
    """
    liveChatId: String!

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    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.
    """
    pageToken: String

    """
    The part parameter specifies the liveChatModerator resource parts that the
    API response will include. Supported values are id and snippet.
    """
    part: String!
  ): LiveChatModeratorListResponse
}

type LiveChatModeratorSnippet {
  """
  The ID of the live chat this moderator can act on.
  """
  liveChatId: String

  """
  Details about the moderator.
  """
  moderatorDetails: ChannelProfileDetails
}

type LiveChatPollClosedDetails {
  """
  The id of the poll that was closed.
  """
  pollId: String
}

type LiveChatPollEditedDetails {
  id: String
  items: [LiveChatPollItem]
  prompt: String
}

type LiveChatPollItem {
  """
  Plain text description of the item.
  """
  description: String
  itemId: String
}

type LiveChatPollOpenedDetails {
  id: String
  items: [LiveChatPollItem]
  prompt: String
}

type LiveChatPollVotedDetails {
  """
  The poll item the user chose.
  """
  itemId: String

  """
  The poll the user voted on.
  """
  pollId: String
}

type LiveChatSuperChatDetails {
  """
  A rendered string that displays the fund amount and currency to the user.
  """
  amountDisplayString: String

  """
  The amount purchased by the user, in micros (1,750,000 micros = 1.75).
  """
  amountMicros: String

  """
  The currency in which the purchase was made.
  """
  currency: String

  """
  The tier in which the amount belongs to. Lower amounts belong to lower tiers. Starts at 1.
  """
  tier: Int

  """
  The comment added by the user to this Super Chat event.
  """
  userComment: String
}

type LiveChatTextMessageDetails {
  """
  The user's message.
  """
  messageText: String
}

type LiveChatUserBannedMessageDetails {
  """
  The duration of the ban. This property is only present if the banType is temporary.
  """
  banDurationSeconds: String

  """
  The type of ban.
  """
  banType: String

  """
  The details of the user that was banned.
  """
  bannedUserDetails: ChannelProfileDetails
}

"""
A live stream describes a live ingestion point.
"""
type LiveStream {
  """
  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.
  """
  cdn: CdnSettings

  """
  The content_details object contains information about the stream, including the closed captions ingestion URL.
  """
  contentDetails: LiveStreamContentDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube assigns to uniquely identify the stream.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#liveStream".
  """
  kind: String

  """
  The snippet object contains basic details about the stream, including its channel, title, and description.
  """
  snippet: LiveStreamSnippet

  """
  The status object contains information about live stream's status.
  """
  status: LiveStreamStatus
}

type LiveStreamConfigurationIssue {
  """
  The long-form description of the issue and how to resolve it.
  """
  description: String

  """
  The short-form reason for this issue.
  """
  reason: String

  """
  How severe this issue is to the stream.
  """
  severity: String

  """
  The kind of error happening.
  """
  type: String
}

"""
Detailed settings of a stream.
"""
type LiveStreamContentDetails {
  """
  The ingestion URL where the closed captions of this stream are sent.
  """
  closedCaptionsIngestionUrl: String

  """
  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.
  """
  isReusable: Boolean
}

type LiveStreamHealthStatus {
  """
  The configurations issues on this stream
  """
  configurationIssues: [LiveStreamConfigurationIssue]

  """
  The last time this status was updated (in seconds)
  """
  lastUpdateTimeSeconds: String

  """
  The status code of this stream
  """
  status: String
}

type LiveStreamListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of live streams that match the request criteria.
  """
  items: [LiveStream]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#liveStreamListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type LiveStreams_ {
  """
  Returns a list of video streams that match the API request parameters.
  """
  list(
    """
    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.
    """
    id: String

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    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.
    """
    mine: Boolean

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    onBehalfOfContentOwnerChannel: String

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!
  ): LiveStreamListResponse
}

type LiveStreamSnippet {
  """
  The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
  """
  channelId: String

  """
  The stream's description. The value cannot be longer than 10000 characters.
  """
  description: String
  isDefaultStream: Boolean

  """
  The date and time that the stream was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  publishedAt: String

  """
  The stream's title. The value must be between 1 and 128 characters long.
  """
  title: String
}

"""
Brief description of the live stream status.
"""
type LiveStreamStatus {
  """
  The health status of the stream.
  """
  healthStatus: LiveStreamHealthStatus
  streamStatus: String
}

type LocalizedProperty {
  default: String

  """
  The language of the default property.
  """
  defaultLanguage: LanguageTag
  localized: [LocalizedString]
}

type LocalizedString {
  language: String
  value: String
}

input MarkTrakAsPlayedInput {
  track: ID!
  nextTrack: ID
}

enum ModerationStatusCommentThreadsEnumParam {
  """
  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

  """
  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

  """
  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
}

"""
Settings and Info of the monitor stream
"""
type MonitorStreamInfo {
  """
  If you have set the enableMonitorStream property to true, then this property
  determines the length of the live broadcast delay.
  """
  broadcastStreamDelayMs: Int

  """
  HTML code that embeds a player that plays the monitor stream.
  """
  embedHtml: String

  """
  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.
  """
  enableMonitorStream: Boolean
}

type Mutation {
  channelCreate(input: ChannelCreateInput!): ID
  videoPush(input: VideoPushInput!): Track
  authenticate: User
  removeTrack(input: RemoveTrackInput!): ID
  markTrackAsPlayed(input: MarkTrakAsPlayedInput!): ID
  channelJoin(input: ChannelJoinInput!): Channel
  hostControl(input: HostControlInput!): Boolean
}

enum MyRatingVideosEnumParam {
  """
  Returns only videos disliked by the authenticated user.
  """
  dislike

  """
  Returns only video liked by the authenticated user.
  """
  like
}

"""
Nonprofit information.
"""
type Nonprofit {
  """
  Id of the nonprofit.
  """
  nonprofitId: NonprofitId

  """
  Legal name of the nonprofit.
  """
  nonprofitLegalName: String
}

type NonprofitId {
  value: String
}

enum OrderCommentThreadsEnumParam {
  """
  Order by relevance.
  """
  relevance

  """
  Order by time.
  """
  time
}

enum OrderSearchEnumParam {
  """
  Resources are sorted in reverse chronological order based on the date they were created.
  """
  date

  """
  Resources are sorted from highest to lowest rating.
  """
  rating

  """
  Resources are sorted based on their relevance to the search query. This is the default value for this parameter.
  """
  relevance

  """
  Resources are sorted alphabetically by title.
  """
  title

  """
  Channels are sorted in descending order of their number of uploaded videos.
  """
  videoCount

  """
  Resources are sorted from highest to lowest number of views.
  """
  viewCount
}

enum OrderSubscriptionsEnumParam {
  """
  Sort alphabetically.
  """
  alphabetical

  """
  Sort by relevance.
  """
  relevance

  """
  Sort by order of activity.
  """
  unread
}

"""
Paging details for lists of resources, including total number of items available
and number of resources returned in a single page.
"""
type PageInfo {
  """
  The number of results included in the API response.
  """
  resultsPerPage: Int

  """
  The total number of results in the result set.
  """
  totalResults: Int
}

type PlayerControl {
  action: PlayerControlAction
}

enum PlayerControlAction {
  PAUSE
  PLAY
  SKIP
  FULLSCREEN
  EXIT_FULLSCREEN
}

input PlayerControlInput {
  channel: ID
}

"""
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.
"""
type Playlist {
  """
  The contentDetails object contains information like video count.
  """
  contentDetails: PlaylistContentDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the playlist.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#playlist".
  """
  kind: String

  """
  The player object contains information that you would use to play the playlist in an embedded player.
  """
  player: PlaylistPlayer

  """
  The snippet object contains basic details about the playlist, such as its title and description.
  """
  snippet: PlaylistSnippet

  """
  The status object contains status information for the playlist.
  """
  status: PlaylistStatus
}

type PlaylistContentDetails {
  """
  The number of videos in the playlist.
  """
  itemCount: Int
}

"""
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.
"""
type PlaylistItem {
  """
  The contentDetails object is included in the resource if the included item is
  a YouTube video. The object contains additional information about the video.
  """
  contentDetails: PlaylistItemContentDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the playlist item.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItem".
  """
  kind: String

  """
  The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
  """
  snippet: PlaylistItemSnippet

  """
  The status object contains information about the playlist item's privacy status.
  """
  status: PlaylistItemStatus
}

type PlaylistItemContentDetails {
  """
  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.
  """
  endAt: String

  """
  A user-generated note for this item.
  """
  note: String

  """
  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.
  """
  startAt: String

  """
  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.
  """
  videoId: String

  """
  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.
  """
  videoPublishedAt: String
}

type PlaylistItemListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of playlist items that match the request criteria.
  """
  items: [PlaylistItem]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItemListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type PlaylistItems_ {
  """
  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.
  """
  list(
    """
    The id parameter specifies a comma-separated list of one or more unique playlist item IDs.
    """
    id: String

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!

    """
    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.
    """
    playlistId: String

    """
    The videoId parameter specifies that the request should return only the playlist items that contain the specified video.
    """
    videoId: String
  ): PlaylistItemListResponse
}

"""
Basic details about a playlist, including title, description and thumbnails.
"""
type PlaylistItemSnippet {
  """
  The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
  """
  channelId: String

  """
  Channel title for the channel that the playlist item belongs to.
  """
  channelTitle: String

  """
  The item's description.
  """
  description: String

  """
  The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
  """
  playlistId: String

  """
  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.
  """
  position: Int

  """
  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.
  """
  publishedAt: String

  """
  The id object contains information that can be used to uniquely identify the
  resource that is included in the playlist as the playlist item.
  """
  resourceId: ResourceId

  """
  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.
  """
  thumbnails: ThumbnailDetails

  """
  The item's title.
  """
  title: String
}

"""
Information about the playlist item's privacy status.
"""
type PlaylistItemStatus {
  """
  This resource's privacy status.
  """
  privacyStatus: String
}

type PlaylistListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of playlists that match the request criteria.
  """
  items: [Playlist]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#playlistListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
Playlist localization setting
"""
type PlaylistLocalization {
  """
  The localized strings for playlist's description.
  """
  description: String

  """
  The localized strings for playlist's title.
  """
  title: String
}

type PlaylistPlayer {
  """
  An <iframe> tag that embeds a player that will play the playlist.
  """
  embedHtml: String
}

type Playlists_ {
  """
  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.
  """
  list(
    """
    This value indicates that the API should only return the specified channel's playlists.
    """
    channelId: String

    """
    The hl parameter should be used for filter out the properties that are not
    in the given language. Used for the snippet part.
    """
    hl: String

    """
    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.
    """
    id: String

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    Set this parameter's value to true to instruct the API to only return playlists owned by the authenticated user.
    """
    mine: Boolean

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    onBehalfOfContentOwnerChannel: String

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!
  ): PlaylistListResponse
}

"""
Basic details about a playlist, including title, description and thumbnails.
"""
type PlaylistSnippet {
  """
  The ID that YouTube uses to uniquely identify the channel that published the playlist.
  """
  channelId: String

  """
  The channel title of the channel that the video belongs to.
  """
  channelTitle: String

  """
  The language of the playlist's default title and description.
  """
  defaultLanguage: String

  """
  The playlist's description.
  """
  description: String

  """
  Localized title and description, read-only.
  """
  localized: PlaylistLocalization

  """
  The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  publishedAt: String

  """
  Keyword tags associated with the playlist.
  """
  tags: [String]

  """
  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.
  """
  thumbnails: ThumbnailDetails

  """
  The playlist's title.
  """
  title: String
}

type PlaylistStatus {
  """
  The playlist's privacy status.
  """
  privacyStatus: String
}

enum processingErrors {
  archiveFile
  audioFile
  docFile
  imageFile
  notAVideoFile
  projectFile
  unsupportedSpatialAudioLayout
}

enum processingHints {
  hdrVideo
  nonStreamableMov
  sendBestQualityVideo
  spatialAudio
  sphericalVideo
  vrVideo
}

enum processingWarnings {
  hasEditlist
  inconsistentResolution
  problematicAudioCodec
  problematicHdrLookupTable
  problematicVideoCodec
  unknownAudioCodec
  unknownContainer
  unknownVideoCodec
  unsupportedHdrColorMetadata
  unsupportedHdrPixelFormat
  unsupportedSphericalProjectionType
  unsupportedVrStereoMode
}

"""
Describes a single promoted item.
"""
type PromotedItem {
  """
  A custom message to display for this promotion. This field is currently ignored unless the promoted item is a website.
  """
  customMessage: String

  """
  Identifies the promoted item.
  """
  id: PromotedItemId

  """
  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.
  """
  promotedByContentOwner: Boolean

  """
  The temporal position within the video where the promoted item will be
  displayed. If present, it overrides the default timing.
  """
  timing: InvideoTiming
}

"""
Describes a single promoted item id. It is a union of various possible types.
"""
type 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.
  """
  recentlyUploadedBy: String

  """
  Describes the type of the promoted item.
  """
  type: String

  """
  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.
  """
  videoId: String

  """
  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.
  """
  websiteUrl: String
}

"""
A pair Property / Value.
"""
type PropertyValue {
  """
  A property.
  """
  property: String

  """
  The property's value.
  """
  value: String
}

type Query {
  YoutubeApi(
    """
    Data format for the response.
    """
    alt: AltRootEnumParam

    """
    Selector specifying which fields to include in a partial response.
    """
    fields: String

    """
    API key. Your API key identifies your project and provides you with API
    access, quota, and reports. Required unless you provide an OAuth 2.0 token.
    """
    key: String

    """
    OAuth 2.0 token for the current user.
    """
    oauth_token: String

    """
    Returns response with indentations and line breaks.
    """
    prettyPrint: Boolean

    """
    An opaque string that represents a user for quota purposes. Must not exceed 40 characters.
    """
    quotaUser: String

    """
    Deprecated. Please use quotaUser instead.
    """
    userIp: String
  ): YoutubeResources
  channel(id: ID!): Channel
  loggedInUser: User
}

type relatedPlaylists {
  thisTypeHasNoFieldsAndGraphQLDontLikeThat: Boolean
}

input RemoveTrackInput {
  track: ID!
}

"""
A resource id is a generic reference that points to another YouTube resource.
"""
type ResourceId {
  """
  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.
  """
  channelId: String

  """
  The type of the API resource.
  """
  kind: String

  """
  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.
  """
  playlistId: String

  """
  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.
  """
  videoId: String
}

enum SafeSearchSearchEnumParam {
  """
  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.
  """
  moderate

  """
  YouTube will not filter the search result set.
  """
  none

  """
  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.
  """
  strict
}

type Search_ {
  """
  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.
  """
  list(
    """
    The channelId parameter indicates that the API response should only contain resources created by the channel
    """
    channelId: String

    """
    The channelType parameter lets you restrict a search to a particular type of channel.
    """
    channelType: ChannelTypeSearchEnumParam

    """
    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.
    """
    eventType: EventTypeSearchEnumParam

    """
    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.
    """
    forContentOwner: Boolean

    """
    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.
    """
    forDeveloper: Boolean

    """
    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.
    """
    forMine: Boolean

    """
    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.
    """
    location: String

    """
    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.
    """
    locationRadius: String

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    The order parameter specifies the method that will be used to order resources in the API response.
    """
    order: OrderSearchEnumParam

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!

    """
    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).
    """
    publishedAfter: String

    """
    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).
    """
    publishedBefore: String

    """
    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.
    """
    q: String

    """
    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.
    """
    regionCode: String

    """
    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.
    """
    relatedToVideoId: String

    """
    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.
    """
    relevanceLanguage: String

    """
    The safeSearch parameter indicates whether the search results should include
    restricted content as well as standard content.
    """
    safeSearch: SafeSearchSearchEnumParam

    """
    The topicId parameter indicates that the API response should only contain
    resources associated with the specified topic. The value identifies a
    Freebase topic ID.
    """
    topicId: String

    """
    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.
    """
    type: String

    """
    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.
    """
    videoCaption: VideoCaptionSearchEnumParam

    """
    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.
    """
    videoCategoryId: String

    """
    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.
    """
    videoDefinition: VideoDefinitionSearchEnumParam

    """
    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.
    """
    videoDimension: VideoDimensionSearchEnumParam

    """
    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.
    """
    videoDuration: VideoDurationSearchEnumParam

    """
    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.
    """
    videoEmbeddable: VideoEmbeddableSearchEnumParam

    """
    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.
    """
    videoLicense: VideoLicenseSearchEnumParam

    """
    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.
    """
    videoSyndicated: VideoSyndicatedSearchEnumParam

    """
    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.
    """
    videoType: VideoTypeSearchEnumParam
  ): SearchListResponse
}

type SearchListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of results that match the search criteria.
  """
  items: [SearchResult]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#searchListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  regionCode: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
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.
"""
type SearchResult {
  """
  Etag of this resource.
  """
  etag: String

  """
  The id object contains information that can be used to uniquely identify the resource that matches the search request.
  """
  id: ResourceId

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#searchResult".
  """
  kind: String

  """
  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.
  """
  snippet: SearchResultSnippet
}

"""
Basic details about a search result, including title, description and thumbnails
of the item referenced by the search result.
"""
type SearchResultSnippet {
  """
  The value that YouTube uses to uniquely identify the channel that published
  the resource that the search result identifies.
  """
  channelId: String

  """
  The title of the channel that published the resource that the search result identifies.
  """
  channelTitle: String

  """
  A description of the search result.
  """
  description: String

  """
  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.
  """
  liveBroadcastContent: String

  """
  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.
  """
  publishedAt: String

  """
  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.
  """
  thumbnails: ThumbnailDetails

  """
  The title of the search result.
  """
  title: String
}

"""
A sponsor resource represents a sponsor for a YouTube channel. A sponsor
provides recurring monetary support to a creator and receives special benefits.
"""
type Sponsor {
  """
  Etag of this resource.
  """
  etag: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#sponsor".
  """
  kind: String

  """
  The snippet object contains basic details about the sponsor.
  """
  snippet: SponsorSnippet
}

type SponsorListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of sponsors that match the request criteria.
  """
  items: [Sponsor]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#sponsorListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type Sponsors_ {
  """
  Lists sponsors for a channel.
  """
  list(
    """
    The filter parameter specifies which channel sponsors to return.
    """
    filter: FilterSponsorsEnumParam

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    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.
    """
    pageToken: String

    """
    The part parameter specifies the sponsor resource parts that the API
    response will include. Supported values are id and snippet.
    """
    part: String!
  ): SponsorListResponse
}

type SponsorSnippet {
  """
  The id of the channel being sponsored.
  """
  channelId: String

  """
  The cumulative time a user has been a sponsor in months.
  """
  cumulativeDurationMonths: Int

  """
  Details about the sponsor.
  """
  sponsorDetails: 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.
  """
  sponsorSince: String
}

type Subscription {
  """
  The contentDetails object contains basic statistics about the subscription.
  """
  contentDetails: SubscriptionContentDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the subscription.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#subscription".
  """
  kind: String

  """
  The snippet object contains basic details about the subscription, including
  its title and the channel that the user subscribed to.
  """
  snippet: SubscriptionSnippet

  """
  The subscriberSnippet object contains basic details about the sbuscriber.
  """
  subscriberSnippet: SubscriptionSubscriberSnippet
  trackUpdated(input: TrackUpdatedInput!): Track
  playerControl(input: PlayerControlInput!): PlayerControl
}

"""
Details about the content to witch a subscription refers.
"""
type SubscriptionContentDetails {
  """
  The type of activity this subscription is for (only uploads, everything).
  """
  activityType: String

  """
  The number of new items in the subscription since its content was last read.
  """
  newItemCount: Int

  """
  The approximate number of items that the subscription points to.
  """
  totalItemCount: Int
}

type SubscriptionListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of subscriptions that match the request criteria.
  """
  items: [Subscription]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#subscriptionListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type Subscriptions_ {
  """
  Returns subscription resources that match the API request criteria.
  """
  list(
    """
    The channelId parameter specifies a YouTube channel ID. The API will only return that channel's subscriptions.
    """
    channelId: String

    """
    The forChannelId parameter specifies a comma-separated list of channel IDs.
    The API response will then only contain subscriptions matching those channels.
    """
    forChannelId: String

    """
    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.
    """
    id: String

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    Set this parameter's value to true to retrieve a feed of the authenticated user's subscriptions.
    """
    mine: Boolean

    """
    Set this parameter's value to true to retrieve a feed of the subscribers of
    the authenticated user in reverse chronological order (newest first).
    """
    myRecentSubscribers: Boolean

    """
    Set this parameter's value to true to retrieve a feed of the subscribers of
    the authenticated user in no particular order.
    """
    mySubscribers: Boolean

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    onBehalfOfContentOwnerChannel: String

    """
    The order parameter specifies the method that will be used to sort resources in the API response.
    """
    order: OrderSubscriptionsEnumParam

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!
  ): SubscriptionListResponse
}

"""
Basic details about a subscription, including title, description and thumbnails of the subscribed item.
"""
type SubscriptionSnippet {
  """
  The ID that YouTube uses to uniquely identify the subscriber's channel.
  """
  channelId: String

  """
  Channel title for the channel that the subscription belongs to.
  """
  channelTitle: String

  """
  The subscription's details.
  """
  description: String

  """
  The date and time that the subscription was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  publishedAt: String

  """
  The id object contains information about the channel that the user subscribed to.
  """
  resourceId: ResourceId

  """
  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.
  """
  thumbnails: ThumbnailDetails

  """
  The subscription's title.
  """
  title: String
}

"""
Basic details about a subscription's subscriber including title, description, channel ID and thumbnails.
"""
type SubscriptionSubscriberSnippet {
  """
  The channel ID of the subscriber.
  """
  channelId: String

  """
  The description of the subscriber.
  """
  description: String

  """
  Thumbnails for this subscriber.
  """
  thumbnails: ThumbnailDetails

  """
  The title of the subscriber.
  """
  title: String
}

"""
A superChatEvent resource represents a Super Chat purchase on a YouTube channel.
"""
type SuperChatEvent {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube assigns to uniquely identify the Super Chat event.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#superChatEvent".
  """
  kind: String

  """
  The snippet object contains basic details about the Super Chat event.
  """
  snippet: SuperChatEventSnippet
}

type SuperChatEventListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of Super Chat purchases that match the request criteria.
  """
  items: [SuperChatEvent]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#superChatEventListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type SuperChatEvents_ {
  """
  Lists Super Chat events for a channel.
  """
  list(
    """
    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.
    """
    hl: String

    """
    The maxResults parameter specifies the maximum number of items that should be returned in the result set.
    """
    maxResults: Int

    """
    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.
    """
    pageToken: String

    """
    The part parameter specifies the superChatEvent resource parts that the API
    response will include. Supported values are id and snippet.
    """
    part: String!
  ): SuperChatEventListResponse
}

type SuperChatEventSnippet {
  """
  The purchase amount, in micros of the purchase currency. e.g., 1 is represented as 1000000.
  """
  amountMicros: String

  """
  Channel id where the event occurred.
  """
  channelId: String

  """
  The text contents of the comment left by the user.
  """
  commentText: String

  """
  The date and time when the event occurred. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  createdAt: String

  """
  The currency in which the purchase was made. ISO 4217.
  """
  currency: String

  """
  A rendered string that displays the purchase amount and currency (e.g.,
  "$1.00"). The string is rendered for the given language.
  """
  displayString: String

  """
  True if this event is a Super Chat for Good purchase.
  """
  isSuperChatForGood: Boolean

  """
  The tier for the paid message, which is based on the amount of money spent to purchase the message.
  """
  messageType: Int

  """
  If this event is a Super Chat for Good purchase, this field will contain
  information about the charity the purchase is donated to.
  """
  nonprofit: Nonprofit

  """
  Details about the supporter.
  """
  supporterDetails: ChannelProfileDetails
}

enum TextFormatCommentsEnumParam {
  """
  Returns the comments in HTML format. This is the default value.
  """
  html

  """
  Returns the comments in plain text format.
  """
  plainText
}

enum TextFormatCommentThreadsEnumParam {
  """
  Returns the comments in HTML format. This is the default value.
  """
  html

  """
  Returns the comments in plain text format.
  """
  plainText
}

enum TfmtCaptionsEnumParam {
  """
  SubViewer subtitle.
  """
  sbv

  """
  Scenarist Closed Caption format.
  """
  scc

  """
  SubRip subtitle.
  """
  srt

  """
  Timed Text Markup Language caption.
  """
  ttml

  """
  Web Video Text Tracks caption.
  """
  vtt
}

"""
A thumbnail is an image representing a YouTube resource.
"""
type Thumbnail {
  """
  (Optional) Height of the thumbnail image.
  """
  height: Int

  """
  The thumbnail image's URL.
  """
  url: String

  """
  (Optional) Width of the thumbnail image.
  """
  width: Int
}

"""
Internal representation of thumbnails for a YouTube resource.
"""
type ThumbnailDetails {
  """
  The default image for this resource.
  """
  default: Thumbnail

  """
  The high quality image for this resource.
  """
  high: Thumbnail

  """
  The maximum resolution quality image for this resource.
  """
  maxres: Thumbnail

  """
  The medium quality image for this resource.
  """
  medium: Thumbnail

  """
  The standard quality image for this resource.
  """
  standard: Thumbnail
}

"""
Stub token pagination template to suppress results.
"""
type TokenPagination {
  thisTypeHasNoFieldsAndGraphQLDontLikeThat: Boolean
}

type Track {
  id: ID
  videoId: ID
  title: String
  owner: User
  addedOn: String
  state: TrackState
  thumb: String
}

type TrackPageInfo {
  endCursor: ID
  hasNextPage: Boolean
}

type Tracks {
  totalCount: Int
  edges: [TracksEdge]
  pageInfo: TrackPageInfo
}

type TracksEdge {
  node: Track
  cursor: ID
}

enum TrackState {
  playing
  played
  upcoming
  remove
}

input TrackUpdatedInput {
  channel: ID
}

type User {
  id: ID
  googleId: ID
  email: String
  emailVerified: Boolean
  picture: String
  fullName: String
  firstName: String
  lastName: String
  locale: String
  createdOn: String
}

"""
A video resource represents a YouTube video.
"""
type Video {
  """
  Age restriction details related to a video. This data can only be retrieved by the video owner.
  """
  ageGating: VideoAgeGating

  """
  The contentDetails object contains information about the video content,
  including the length of the video and its aspect ratio.
  """
  contentDetails: VideoContentDetails

  """
  Etag of this resource.
  """
  etag: String

  """
  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.
  """
  fileDetails: VideoFileDetails

  """
  The ID that YouTube uses to uniquely identify the video.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#video".
  """
  kind: String

  """
  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.
  """
  liveStreamingDetails: VideoLiveStreamingDetails

  """
  The monetizationDetails object encapsulates information about the monetization status of the video.
  """
  monetizationDetails: VideoMonetizationDetails

  """
  The player object contains information that you would use to play the video in an embedded player.
  """
  player: VideoPlayer

  """
  The processingDetails 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.
  """
  processingDetails: VideoProcessingDetails

  """
  The projectDetails object contains information about the project specific video metadata.
  """
  projectDetails: VideoProjectDetails

  """
  The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
  """
  recordingDetails: VideoRecordingDetails

  """
  The snippet object contains basic details about the video, such as its title, description, and category.
  """
  snippet: VideoSnippet

  """
  The statistics object contains statistics about the video.
  """
  statistics: VideoStatistics

  """
  The status object contains information about the video's uploading, processing, and privacy statuses.
  """
  status: VideoStatus

  """
  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.
  """
  suggestions: VideoSuggestions

  """
  The topicDetails object encapsulates information about Freebase topics associated with the video.
  """
  topicDetails: VideoTopicDetails
}

"""
A videoAbuseReportReason resource identifies a reason that a video could be
reported as abusive. Video abuse report reasons are used with video.ReportAbuse.
"""
type VideoAbuseReportReason {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID of this abuse report reason.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#videoAbuseReportReason".
  """
  kind: String

  """
  The snippet object contains basic details about the abuse report reason.
  """
  snippet: VideoAbuseReportReasonSnippet
}

type VideoAbuseReportReasonListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of valid abuse reasons that are used with video.ReportAbuse.
  """
  items: [VideoAbuseReportReason]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#videoAbuseReportReasonListResponse".
  """
  kind: String

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

type VideoAbuseReportReasons_ {
  """
  Returns a list of abuse reasons that can be used for reporting abusive videos.
  """
  list(
    """
    The hl parameter specifies the language that should be used for text values in the API response.
    """
    hl: String

    """
    The part parameter specifies the videoCategory resource parts that the API
    response will include. Supported values are id and snippet.
    """
    part: String!
  ): VideoAbuseReportReasonListResponse
}

"""
Basic details about a video category, such as its localized title.
"""
type VideoAbuseReportReasonSnippet {
  """
  The localized label belonging to this abuse report reason.
  """
  label: String

  """
  The secondary reasons associated with this reason, if any are available. (There might be 0 or more.)
  """
  secondaryReasons: [VideoAbuseReportSecondaryReason]
}

type VideoAbuseReportSecondaryReason {
  """
  The ID of this abuse report secondary reason.
  """
  id: String

  """
  The localized label for this abuse report secondary reason.
  """
  label: String
}

type 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.
  """
  alcoholContent: Boolean

  """
  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.
  """
  restricted: Boolean

  """
  Video game rating, if any.
  """
  videoGameRating: String
}

enum VideoCaptionSearchEnumParam {
  """
  Do not filter results based on caption availability.
  """
  any

  """
  Only include videos that have captions.
  """
  closedCaption

  """
  Only include videos that do not have captions.
  """
  none
}

type VideoCategories_ {
  """
  Returns a list of categories that can be associated with YouTube videos.
  """
  list(
    """
    The hl parameter specifies the language that should be used for text values in the API response.
    """
    hl: String

    """
    The id parameter specifies a comma-separated list of video category IDs for the resources that you are retrieving.
    """
    id: String

    """
    The part parameter specifies the videoCategory resource properties that the
    API response will include. Set the parameter value to snippet.
    """
    part: String!

    """
    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.
    """
    regionCode: String
  ): VideoCategoryListResponse
}

"""
A videoCategory resource identifies a category that has been or could be associated with uploaded videos.
"""
type VideoCategory {
  """
  Etag of this resource.
  """
  etag: String

  """
  The ID that YouTube uses to uniquely identify the video category.
  """
  id: String

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#videoCategory".
  """
  kind: String

  """
  The snippet object contains basic details about the video category, including its title.
  """
  snippet: VideoCategorySnippet
}

type VideoCategoryListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  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.
  """
  items: [VideoCategory]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#videoCategoryListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
Basic details about a video category, such as its localized title.
"""
type VideoCategorySnippet {
  assignable: Boolean

  """
  The YouTube channel that created the video category.
  """
  channelId: String

  """
  The video category's title.
  """
  title: String
}

"""
Details about the content of a YouTube Video.
"""
type VideoContentDetails {
  """
  The value of captions indicates whether the video has captions or not.
  """
  caption: String

  """
  Specifies the ratings that the video received under various rating schemes.
  """
  contentRating: ContentRating

  """
  The countryRestriction object contains information about the countries where a video is (or is not) viewable.
  """
  countryRestriction: AccessPolicy

  """
  The value of definition indicates whether the video is available in high definition or only in standard definition.
  """
  definition: String

  """
  The value of dimension indicates whether the video is available in 3D or in 2D.
  """
  dimension: String

  """
  The length of the video. The tag value is an ISO 8601 duration in the format
  PT#M#S, 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.
  """
  duration: String

  """
  Indicates whether the video uploader has provided a custom thumbnail image for
  the video. This property is only visible to the video uploader.
  """
  hasCustomThumbnail: Boolean

  """
  The value of is_license_content indicates whether the video is licensed content.
  """
  licensedContent: Boolean

  """
  Specifies the projection format of the video.
  """
  projection: String

  """
  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.
  """
  regionRestriction: VideoContentDetailsRegionRestriction
}

"""
DEPRECATED Region restriction of the video.
"""
type 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.
  """
  allowed: [String]

  """
  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.
  """
  blocked: [String]
}

enum VideoDefinitionSearchEnumParam {
  """
  Return all videos, regardless of their resolution.
  """
  any

  """
  Only retrieve HD videos.
  """
  high

  """
  Only retrieve videos in standard definition.
  """
  standard
}

enum VideoDimensionSearchEnumParam {
  """
  Restrict search results to exclude 3D videos.
  """
  _2d

  """
  Restrict search results to only include 3D videos.
  """
  _3d

  """
  Include both 3D and non-3D videos in returned results. This is the default value.
  """
  any
}

enum VideoDurationSearchEnumParam {
  """
  Do not filter video search results based on their duration. This is the default value.
  """
  any

  """
  Only include videos longer than 20 minutes.
  """
  long

  """
  Only include videos that are between four and 20 minutes long (inclusive).
  """
  medium

  """
  Only include videos that are less than four minutes long.
  """
  short
}

enum VideoEmbeddableSearchEnumParam {
  """
  Return all videos, embeddable or not.
  """
  any

  """
  Only retrieve embeddable videos.
  """
  TRUE
}

"""
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.
"""
type VideoFileDetails {
  """
  A list of audio streams contained in the uploaded video file. Each item in the
  list contains detailed metadata about an audio stream.
  """
  audioStreams: [VideoFileDetailsAudioStream]

  """
  The uploaded video file's combined (video and audio) bitrate in bits per second.
  """
  bitrateBps: String

  """
  The uploaded video file's container format.
  """
  container: String

  """
  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
  """
  creationTime: String

  """
  The length of the uploaded video in milliseconds.
  """
  durationMs: String

  """
  The uploaded file's name. This field is present whether a video file or another type of file was uploaded.
  """
  fileName: String

  """
  The uploaded file's size in bytes. This field is present whether a video file or another type of file was uploaded.
  """
  fileSize: String

  """
  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.
  """
  fileType: String

  """
  A list of video streams contained in the uploaded video file. Each item in the
  list contains detailed metadata about a video stream.
  """
  videoStreams: [VideoFileDetailsVideoStream]
}

"""
Information about an audio stream.
"""
type VideoFileDetailsAudioStream {
  """
  The audio stream's bitrate, in bits per second.
  """
  bitrateBps: String

  """
  The number of audio channels that the stream contains.
  """
  channelCount: Int

  """
  The audio codec that the stream uses.
  """
  codec: String

  """
  A value that uniquely identifies a video vendor. Typically, the value is a four-letter vendor code.
  """
  vendor: String
}

"""
Information about a video stream.
"""
type VideoFileDetailsVideoStream {
  """
  The video content's display aspect ratio, which specifies the aspect ratio in which the video should be displayed.
  """
  aspectRatio: Int

  """
  The video stream's bitrate, in bits per second.
  """
  bitrateBps: String

  """
  The video codec that the stream uses.
  """
  codec: String

  """
  The video stream's frame rate, in frames per second.
  """
  frameRateFps: Int

  """
  The encoded video content's height in pixels.
  """
  heightPixels: Int

  """
  The amount that YouTube needs to rotate the original source content to properly display the video.
  """
  rotation: String

  """
  A value that uniquely identifies a video vendor. Typically, the value is a four-letter vendor code.
  """
  vendor: String

  """
  The encoded video content's width in pixels. You can calculate the video's
  encoding aspect ratio as width_pixels / height_pixels.
  """
  widthPixels: Int
}

type VideoGetRatingResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of ratings that match the request criteria.
  """
  items: [VideoRating]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#videoGetRatingResponse".
  """
  kind: String

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

enum VideoLicenseSearchEnumParam {
  """
  Return all videos, regardless of which license they have, that match the query parameters.
  """
  any

  """
  Only return videos that have a Creative Commons license. Users can reuse
  videos with this license in other videos that they create. Learn more.
  """
  creativeCommon

  """
  Only return videos that have the standard YouTube license.
  """
  youtube
}

type VideoListResponse {
  """
  Etag of this resource.
  """
  etag: String

  """
  Serialized EventId of the request which produced this response.
  """
  eventId: String

  """
  A list of videos that match the request criteria.
  """
  items: [Video]

  """
  Identifies what kind of resource this is. Value: the fixed string "youtube#videoListResponse".
  """
  kind: String

  """
  The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
  """
  nextPageToken: String
  pageInfo: PageInfo

  """
  The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
  """
  prevPageToken: String
  tokenPagination: TokenPagination

  """
  The visitorId identifies the visitor.
  """
  visitorId: String
}

"""
Details about the live streaming metadata.
"""
type VideoLiveStreamingDetails {
  """
  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.
  """
  activeLiveChatId: String

  """
  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.
  """
  actualEndTime: String

  """
  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.
  """
  actualStartTime: String

  """
  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.
  """
  concurrentViewers: String

  """
  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.
  """
  scheduledEndTime: String

  """
  The time that the broadcast is scheduled to begin. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  scheduledStartTime: String
}

"""
Localized versions of certain video properties (e.g. title).
"""
type VideoLocalization {
  """
  Localized version of the video's description.
  """
  description: String

  """
  Localized version of the video's title.
  """
  title: String
}

"""
Details about monetization of a YouTube Video.
"""
type VideoMonetizationDetails {
  """
  The value of access indicates whether the video can be monetized or not.
  """
  access: AccessPolicy
}

"""
Player to be used for a video playback.
"""
type VideoPlayer {
  embedHeight: String

  """
  An <iframe> tag that embeds a player that will play the video.
  """
  embedHtml: String

  """
  The embed width
  """
  embedWidth: String
}

"""
Describes processing status and progress and availability of some other Video resource parts.
"""
type VideoProcessingDetails {
  """
  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.
  """
  editorSuggestionsAvailability: String

  """
  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.
  """
  fileDetailsAvailability: String

  """
  The reason that YouTube failed to process the video. This property will only
  have a value if the processingStatus property's value is failed.
  """
  processingFailureReason: String

  """
  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.
  """
  processingIssuesAvailability: String

  """
  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.
  """
  processingProgress: VideoProcessingDetailsProcessingProgress

  """
  The video's processing status. This value indicates whether YouTube was able
  to process the video or if the video is still being processed.
  """
  processingStatus: String

  """
  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.
  """
  tagSuggestionsAvailability: String

  """
  This value indicates whether thumbnail images have been generated for the video.
  """
  thumbnailsAvailability: String
}

"""
Video processing progress and completion time estimate.
"""
type VideoProcessingDetailsProcessingProgress {
  """
  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.
  """
  partsProcessed: String

  """
  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.
  """
  partsTotal: String

  """
  An estimate of the amount of time, in millseconds, that YouTube needs to finish processing the video.
  """
  timeLeftMs: String
}

"""
Project specific details about the content of a YouTube Video.
"""
type VideoProjectDetails {
  """
  A list of project tags associated with the video during the upload.
  """
  tags: [String]
}

input VideoPushInput {
  videoId: ID!
  channel: ID!
  title: String
  time: Int
}

type VideoRating {
  rating: String
  videoId: String
}

"""
Recording information associated with the video.
"""
type VideoRecordingDetails {
  """
  The geolocation information associated with the video.
  """
  location: GeoPoint

  """
  The text description of the location where the video was recorded.
  """
  locationDescription: String

  """
  The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sssZ) format.
  """
  recordingDate: String
}

type Videos_ {
  """
  Retrieves the ratings that the authorized user gave to a list of specified videos.
  """
  getRating(
    """
    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.
    """
    id: String!

    """
    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.
    """
    onBehalfOfContentOwner: String
  ): VideoGetRatingResponse

  """
  Returns a list of videos that match the API request parameters.
  """
  list(
    """
    The chart parameter identifies the chart that you want to retrieve.
    """
    chart: ChartVideosEnumParam

    """
    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.
    """
    hl: String

    """
    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.
    """
    id: String

    """
    DEPRECATED
    """
    locale: String

    """
    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.
    """
    maxHeight: Int

    """
    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.
    """
    maxResults: Int

    """
    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.
    """
    maxWidth: Int

    """
    Set this parameter's value to like or dislike to instruct the API to only
    return videos liked or disliked by the authenticated user.
    """
    myRating: MyRatingVideosEnumParam

    """
    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.
    """
    onBehalfOfContentOwner: String

    """
    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.
    """
    pageToken: String

    """
    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.
    """
    part: String!

    """
    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.
    """
    regionCode: String

    """
    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.
    """
    videoCategoryId: String
  ): VideoListResponse
}

"""
Basic details about a video, including title, description, uploader, thumbnails and category.
"""
type VideoSnippet {
  """
  The YouTube video category associated with the video.
  """
  categoryId: String

  """
  The ID that YouTube uses to uniquely identify the channel that the video was uploaded to.
  """
  channelId: String

  """
  Channel title for the channel that the video belongs to.
  """
  channelTitle: String

  """
  The default_audio_language property specifies the language spoken in the video's default audio track.
  """
  defaultAudioLanguage: String

  """
  The language of the videos's default snippet.
  """
  defaultLanguage: String

  """
  The video's description.
  """
  description: String

  """
  Indicates if the video is an upcoming/active live broadcast. Or it's "none" if
  the video is not an upcoming/active live broadcast.
  """
  liveBroadcastContent: String

  """
  Localized snippet selected with the hl parameter. If no such localization
  exists, this field is populated with the default snippet. (Read-only)
  """
  localized: VideoLocalization

  """
  The date and time that the video was uploaded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
  """
  publishedAt: String

  """
  A list of keyword tags associated with the video. Tags may contain spaces.
  """
  tags: [String]

  """
  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.
  """
  thumbnails: ThumbnailDetails

  """
  The video's title.
  """
  title: String
}

"""
Statistics about the video, such as the number of times the video was viewed or liked.
"""
type VideoStatistics {
  """
  The number of comments for the video.
  """
  commentCount: String

  """
  The number of users who have indicated that they disliked the video by giving it a negative rating.
  """
  dislikeCount: String

  """
  The number of users who currently have the video marked as a favorite video.
  """
  favoriteCount: String

  """
  The number of users who have indicated that they liked the video by giving it a positive rating.
  """
  likeCount: String

  """
  The number of times the video has been viewed.
  """
  viewCount: String
}

"""
Basic details about a video category, such as its localized title.
"""
type VideoStatus {
  """
  This value indicates if the video can be embedded on another website.
  """
  embeddable: Boolean

  """
  This value explains why a video failed to upload. This property is only
  present if the uploadStatus property indicates that the upload failed.
  """
  failureReason: String

  """
  The video's license.
  """
  license: String

  """
  The video's privacy status.
  """
  privacyStatus: String

  """
  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.
  """
  publicStatsViewable: Boolean

  """
  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.
  """
  publishAt: String

  """
  This value explains why YouTube rejected an uploaded video. This property is
  only present if the uploadStatus property indicates that the upload was rejected.
  """
  rejectionReason: String

  """
  The status of the uploaded video.
  """
  uploadStatus: String
}

"""
Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions.
"""
type VideoSuggestions {
  """
  A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
  """
  editorSuggestions: editorSuggestions

  """
  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.
  """
  processingErrors: processingErrors

  """
  A list of suggestions that may improve YouTube's ability to process the video.
  """
  processingHints: processingHints

  """
  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.
  """
  processingWarnings: processingWarnings

  """
  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.
  """
  tagSuggestions: [VideoSuggestionsTagSuggestion]
}

"""
A single tag suggestion with it's relevance information.
"""
type VideoSuggestionsTagSuggestion {
  """
  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.
  """
  categoryRestricts: [String]

  """
  The keyword tag suggested for the video.
  """
  tag: String
}

enum VideoSyndicatedSearchEnumParam {
  """
  Return all videos, syndicated or not.
  """
  any

  """
  Only retrieve syndicated videos.
  """
  TRUE
}

"""
Freebase topic information related to the video.
"""
type VideoTopicDetails {
  """
  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.
  """
  relevantTopicIds: [String]

  """
  A list of Wikipedia URLs that provide a high-level description of the video's content.
  """
  topicCategories: [String]

  """
  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.
  """
  topicIds: [String]
}

enum VideoTypeSearchEnumParam {
  """
  Return all videos.
  """
  any

  """
  Only retrieve episodes of shows.
  """
  episode

  """
  Only retrieve movies.
  """
  movie
}

"""
Branding properties for the watch. All deprecated.
"""
type WatchSettings {
  """
  The text color for the video watch page's branded area.
  """
  backgroundColor: String

  """
  An ID that uniquely identifies a playlist that displays next to the video player.
  """
  featuredPlaylistId: String

  """
  The background color for the video watch page's branded area.
  """
  textColor: String
}

type YoutubeResources {
  activities: Activities_
  captions: Captions_
  channelSections: ChannelSections_
  channels: Channels_
  commentThreads: CommentThreads_
  comments: Comments_
  guideCategories: GuideCategories_
  i18nLanguages: I18nLanguages_
  i18nRegions: I18nRegions_
  liveBroadcasts: LiveBroadcasts_
  liveChatMessages: LiveChatMessages_
  liveChatModerators: LiveChatModerators_
  liveStreams: LiveStreams_
  playlistItems: PlaylistItems_
  playlists: Playlists_
  search: Search_
  sponsors: Sponsors_
  subscriptions: Subscriptions_
  superChatEvents: SuperChatEvents_
  videoAbuseReportReasons: VideoAbuseReportReasons_
  videoCategories: VideoCategories_
  videos: Videos_
}
