/* Type definitions for non-npm package YouTube Data API v3 v3 0.0 */ // Project: https://developers.google.com/youtube/ // Definitions by: Maxim Mazurok // Nick Amoscato // Declan Vong // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // IMPORTANT // This file was generated by https://github.com/Maxim-Mazurok/google-api-typings-generator. Please do not edit it manually. // In case of any problems please post issue to https://github.com/Maxim-Mazurok/google-api-typings-generator // Generated from: https://youtube.googleapis.com/$discovery/rest?version=v3 // Revision: 20260825 /// declare namespace gapi.client { /** Load YouTube Data API v3 v3 */ function load( urlOrObject: 'https://youtube.googleapis.com/$discovery/rest?version=v3', ): Promise; /** @deprecated Please load APIs with discovery documents. */ function load(name: 'youtube', version: 'v3'): Promise; /** @deprecated Please load APIs with discovery documents. */ function load(name: 'youtube', version: 'v3', callback: () => any): void; namespace youtube { interface AbuseReport { abuseTypes?: AbuseType[]; description?: string; relatedEntities?: RelatedEntity[]; subject?: Entity; } interface AbuseType { id?: string; } interface 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[]; } interface 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; } interface 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`. Deprecated: This property is no longer returned. */ 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`. Deprecated: This property is no longer returned. */ 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`. Deprecated: This property is no longer returned. */ subscription?: ActivityContentDetailsSubscription; /** The `upload` object contains information about the uploaded video. This property is only present if the `snippet.type` is `upload`. */ upload?: ActivityContentDetailsUpload; } interface ActivityContentDetailsBulletin { /** The `resourceId` object contains information that identifies the resource associated with a bulletin post. @mutable youtube.activities.insert */ resourceId?: ResourceId; } interface ActivityContentDetailsChannelItem { /** The `resourceId` object contains information that identifies the resource that was added to the channel. */ resourceId?: ResourceId; } interface ActivityContentDetailsComment { /** The `resourceId` object contains information that identifies the resource associated with the comment. */ resourceId?: ResourceId; } interface ActivityContentDetailsFavorite { /** The `resourceId` object contains information that identifies the resource that was marked as a favorite. */ resourceId?: ResourceId; } interface ActivityContentDetailsLike { /** The `resourceId` object contains information that identifies the rated resource. */ resourceId?: ResourceId; } interface 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; } interface 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?: 'ctaTypeUnspecified' | 'visitAdvertiserSite'; /** 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; } interface ActivityContentDetailsRecommendation { /** The reason that the resource is recommended to the user. */ reason?: 'reasonUnspecified' | 'videoFavorited' | 'videoLiked' | 'videoWatched'; /** 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; } interface 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?: 'unspecified' | 'googlePlus' | 'facebook' | 'twitter'; } interface ActivityContentDetailsSubscription { /** The `resourceId` object contains information that identifies the resource that the user subscribed to. */ resourceId?: ResourceId; } interface ActivityContentDetailsUpload { /** The ID that YouTube uses to uniquely identify the uploaded video. */ videoId?: string; } interface ActivityListResponse { /** Etag of this resource. */ etag?: string; /** Serialized EventId of the request which produced this response. */ eventId?: string; 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; /** General pagination information. */ 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?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface 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. @mutable youtube.activities.insert */ 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 uploads a video and watches the same video, 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. */ 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?: | 'typeUnspecified' | 'upload' | 'like' | 'favorite' | 'comment' | 'subscription' | 'playlistItem' | 'recommendation' | 'bulletin' | 'social' | 'channelItem' | 'promotedItem'; } interface AvailabilityConfig { /** Video is available in all regions except the ones specified in the config. */ globalConfig?: AvailabilityConfigGlobalConfig; /** Video is available in the specified regions only. */ regionsConfig?: AvailabilityConfigRegionsConfig; } interface AvailabilityConfigGlobalConfig { /** Optional. Regions where video is blocked */ excludedRegionCodes?: string[]; /** Default time window where video is available for all non-blocked regions Not supported for upcoming / active live broadcasts. If start time is unspecified, video is already available If end time is unspecified, video is available forever Specified start and end times cannot be more than five years in the future. */ interval?: Interval; } interface AvailabilityConfigRegionsConfig { /** Required. List of regions and time windows where video is available. If a region is specified multiple times, the union of all intervals is used. */ regionIntervals?: AvailabilityConfigRegionsConfigRegionInterval[]; } interface AvailabilityConfigRegionsConfigRegionInterval { /** Time window where video is available for the region. Not supported for upcoming / active live broadcasts. If start time is unspecified, video is already available If end time is unspecified, video is available forever Specified start and end times cannot be more than five years in the future. */ interval?: Interval; /** Required. Region where video is available */ regionCode?: string; } interface BatchGetStatsResponse { /** Etag of this resource. */ etag?: string; /** The videos' stats information. */ items?: VideoStat[]; /** Identifies what kind of resource this is. Value: the fixed string "youtube#batchGetStatsResponse". */ kind?: string; } interface BrandPartner { /** Required. Channel handle, must begin with "@" */ channelHandle?: string; /** Required. External Channel ID, must begin with "UC" */ channelId?: string; } interface 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; } interface 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; } interface CaptionSnippet { /** The type of audio track associated with the caption track. */ audioTrackType?: 'unknown' | 'primary' | 'commentary' | 'descriptive'; /** The reason that YouTube failed to process the caption track. This property is only present if the state property's value is failed. */ failureReason?: 'unknownFormat' | 'unsupportedFormat' | 'processingFailed'; /** 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. @mutable youtube.captions.insert youtube.captions.update */ 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. */ 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?: 'serving' | 'syncing' | 'failed'; /** The caption track's type. */ trackKind?: 'standard' | 'ASR' | 'forced'; /** The ID that YouTube uses to uniquely identify the video associated with the caption track. @mutable youtube.captions.insert */ videoId?: string; } interface CdnSettings { /** The format of the video stream that you are sending to Youtube. */ format?: string; /** The frame rate of the inbound video data. */ frameRate?: '30fps' | '60fps' | 'variable'; /** 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?: 'rtmp' | 'dash' | 'webrtc' | 'hls'; /** The resolution of the inbound video data. */ resolution?: | '240p' | '360p' | '480p' | '720p' | '1080p' | '1440p' | '2160p' | 'variable'; } interface Channel { /** The auditionDetails object encapsulates channel data that is relevant for YouTube Partners during the audition process. */ auditDetails?: ChannelAuditDetails; /** The brandingSettings object encapsulates information about the branding of the channel. */ brandingSettings?: ChannelBrandingSettings; /** The contentDetails object encapsulates information about the channel's content. */ contentDetails?: ChannelContentDetails; /** The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel. */ contentOwnerDetails?: ChannelContentOwnerDetails; /** The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. */ conversionPings?: ChannelConversionPings; /** Etag of this resource. */ etag?: string; /** The ID that YouTube uses to uniquely identify the channel. */ id?: string; /** Identifies what kind of resource this is. Value: the fixed string "youtube#channel". */ kind?: string; /** Localizations for different languages */ localizations?: {[P in string]: ChannelLocalization}; /** The snippet object contains basic details about the channel, such as its title, description, and thumbnail images. */ snippet?: ChannelSnippet; /** The statistics object encapsulates statistics for the channel. */ statistics?: ChannelStatistics; /** The status object encapsulates information about the privacy status of the channel. */ status?: ChannelStatus; /** The topicDetails object encapsulates information about Freebase topics associated with the channel. */ topicDetails?: ChannelTopicDetails; } interface 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; } interface ChannelBannerResource { etag?: string; /** Identifies what kind of resource this is. Value: the fixed string "youtube#channelBannerResource". */ kind?: string; /** The URL of this banner image. */ url?: string; } interface 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; } interface ChannelContentDetails { relatedPlaylists?: { /** The ID of the playlist that contains the channel"s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list. */ favorites?: string; /** The ID of the playlist that contains the channel"s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list. */ likes?: string; /** The ID of the playlist that contains the channel"s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos. */ uploads?: string; /** The ID of the playlist that contains the channel"s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list. */ watchHistory?: string; /** The ID of the playlist that contains the channel"s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list. */ watchLater?: string; }; } interface ChannelContentOwnerDetails { /** The ID of the content owner linked to the channel. */ contentOwner?: string; /** The date and time when the channel was linked to the content owner. */ timeLinked?: string; } interface ChannelConversionPing { /** Defines the context of the ping. */ context?: 'subscribe' | 'unsubscribe' | 'cview'; /** 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; } interface 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[]; } interface ChannelListResponse { /** Etag of this resource. */ etag?: string; /** Serialized EventId of the request which produced this response. */ eventId?: string; 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; /** General pagination information. */ 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?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface ChannelLocalization { /** The localized strings for channel's description. */ description?: string; /** The localized strings for channel's title. */ title?: string; } interface 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; } interface 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; /** Localizations for different languages */ localizations?: {[P in string]: ChannelSectionLocalization}; /** 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; } interface 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[]; } interface 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; } interface ChannelSectionLocalization { /** The localized strings for channel section's title. */ title?: string; } interface 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?: number; /** The style of the channel section. */ style?: 'channelsectionStyleUnspecified' | 'horizontalRow' | 'verticalList'; /** The channel section's title for multiple_playlists and multiple_channels. */ title?: string; /** The type of the channel section. */ type?: | 'channelsectionTypeUndefined' | 'singlePlaylist' | 'multiplePlaylists' | 'popularUploads' | 'recentUploads' | 'likes' | 'allPlaylists' | 'likedPlaylists' | 'recentPosts' | 'recentActivity' | 'liveEvents' | 'upcomingEvents' | 'completedEvents' | 'multipleChannels' | 'postedVideos' | 'postedPlaylists' | 'subscriptions'; } interface 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[]; } interface 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; } interface 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. */ 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. When displaying thumbnails in your application, make sure that your code uses the image URLs exactly as they are returned in API responses. For example, your application should not use the http domain instead of the https domain in a URL returned in an API response. Beginning in July 2018, channel thumbnail URLs will only be available in the https domain, which is how the URLs appear in API responses. After that time, you might see broken images in your application if it tries to load YouTube images from the http domain. Thumbnail images might be empty for newly created channels and might take up to one day to populate. */ thumbnails?: ThumbnailDetails; /** The channel's title. */ title?: string; } interface 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; } interface ChannelStatus { /** Whether the channel is considered ypp monetization enabled. See go/yppornot for more details. */ isChannelMonetizationEnabled?: boolean; /** 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 https://support.google.com/youtube/answer/71673 for more information. */ longUploadsStatus?: 'longUploadsUnspecified' | 'allowed' | 'eligible' | 'disallowed'; madeForKids?: boolean; /** Privacy status of the channel. */ privacyStatus?: 'public' | 'unlisted' | 'private'; selfDeclaredMadeForKids?: boolean; } interface ChannelToAffiliateProgramLinkDetails { /** Required. Google Merchant Center ID of the partner. */ merchantId?: string; /** Required. Affiliate program status. */ programStatus?: 'affiliateProgramStatusUnspecified' | 'active' | 'inactive'; /** Optional. Reason for the last update of the affiliate program status. */ statusUpdateReason?: string; /** Optional. Timestamp when the affiliate program status was last updated. */ statusUpdateTime?: string; } interface 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[]; } interface ChannelToStoreLinkDetails { /** Information specific to billing (read-only). */ billingDetails?: ChannelToStoreLinkDetailsBillingDetails; /** Information specific to merchant affiliate program (read-only). */ merchantAffiliateProgramDetails?: ChannelToStoreLinkDetailsMerchantAffiliateProgramDetails; /** Google Merchant Center id of the store. */ merchantId?: string; /** Name of the store. */ storeName?: string; /** Landing page of the store. */ storeUrl?: string; } interface ChannelToStoreLinkDetailsBillingDetails { /** The current billing profile status. */ billingStatus?: | 'billingStatusUnspecified' | 'billingStatusPending' | 'billingStatusActive' | 'billingStatusInactive'; } interface ChannelToStoreLinkDetailsMerchantAffiliateProgramDetails { /** The current merchant affiliate program status. */ status?: | 'merchantAffiliateProgramStatusUnspecified' | 'merchantAffiliateProgramStatusEligible' | 'merchantAffiliateProgramStatusActive' | 'merchantAffiliateProgramStatusPaused'; } interface 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; } interface 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; /** General pagination information. */ pageInfo?: PageInfo; tokenPagination?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface CommentSnippet { authorChannelId?: CommentSnippetAuthorChannelId; /** 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 or post comment it's the video/post's channel. */ channelId?: string; /** The total number of likes this comment has received. */ likeCount?: number; /** The comment's moderation status. Will not be set if the comments were requested through the id filter. */ moderationStatus?: 'published' | 'heldForReview' | 'likelySpam' | 'rejected'; /** The unique id of the top-level comment, only set for replies. */ parentId?: string; /** The ID of the post the comment refers to, if any. */ postId?: string; /** The date and time when the comment was originally published. */ 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 the comment was last updated. */ 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?: 'none' | 'like' | 'dislike'; } interface CommentSnippetAuthorChannelId { /** The id of the author's YouTube channel. */ value?: string; } interface 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; } interface 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; /** General pagination information. */ pageInfo?: PageInfo; tokenPagination?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface 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[]; } interface 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 neither video_id nor post_id is 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 ID of the post the comments refer to, if any. */ postId?: string; /** The top level comment of this thread. */ topLevelComment?: Comment; /** The total number of replies (not including the top level comment). */ totalReplyCount?: number; /** The ID of the video the comments refer to, if any. */ videoId?: string; } interface 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?: | 'acbUnspecified' | 'acbE' | 'acbP' | 'acbC' | 'acbG' | 'acbPg' | 'acbM' | 'acbMa15plus' | 'acbR18plus' | 'acbUnrated'; /** The video's rating from Italy's Autorità per le Garanzie nelle Comunicazioni (AGCOM). */ agcomRating?: | 'agcomUnspecified' | 'agcomT' | 'agcomVm14' | 'agcomVm18' | 'agcomUnrated'; /** The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television. */ anatelRating?: | 'anatelUnspecified' | 'anatelF' | 'anatelI' | 'anatelI7' | 'anatelI10' | 'anatelI12' | 'anatelR' | 'anatelA' | 'anatelUnrated'; /** The video's British Board of Film Classification (BBFC) rating. */ bbfcRating?: | 'bbfcUnspecified' | 'bbfcU' | 'bbfcPg' | 'bbfc12a' | 'bbfc12' | 'bbfc15' | 'bbfc18' | 'bbfcR18' | 'bbfcUnrated'; /** The video's rating from Thailand's Board of Film and Video Censors. */ bfvcRating?: | 'bfvcUnspecified' | 'bfvcG' | 'bfvcE' | 'bfvc13' | 'bfvc15' | 'bfvc18' | 'bfvc20' | 'bfvcB' | 'bfvcUnrated'; /** The video's rating from the Austrian Board of Media Classification (Bundesministerium für Unterricht, Kunst und Kultur). */ bmukkRating?: | 'bmukkUnspecified' | 'bmukkAa' | 'bmukk6' | 'bmukk8' | 'bmukk10' | 'bmukk12' | 'bmukk14' | 'bmukk16' | 'bmukkUnrated'; /** 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?: | 'catvfrUnspecified' | 'catvfrG' | 'catvfr8plus' | 'catvfr13plus' | 'catvfr16plus' | 'catvfr18plus' | 'catvfrUnrated' | 'catvfrE'; /** 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?: | 'catvUnspecified' | 'catvC' | 'catvC8' | 'catvG' | 'catvPg' | 'catv14plus' | 'catv18plus' | 'catvUnrated' | 'catvE'; /** The video's Central Board of Film Certification (CBFC - India) rating. */ cbfcRating?: | 'cbfcUnspecified' | 'cbfcU' | 'cbfcUA' | 'cbfcUA7plus' | 'cbfcUA13plus' | 'cbfcUA16plus' | 'cbfcA' | 'cbfcS' | 'cbfcUnrated'; /** The video's Consejo de Calificación Cinematográfica (Chile) rating. */ cccRating?: | 'cccUnspecified' | 'cccTe' | 'ccc6' | 'ccc14' | 'ccc18' | 'ccc18v' | 'ccc18s' | 'cccUnrated'; /** The video's rating from Portugal's Comissão de Classificação de Espect´culos. */ cceRating?: | 'cceUnspecified' | 'cceM4' | 'cceM6' | 'cceM12' | 'cceM16' | 'cceM18' | 'cceUnrated' | 'cceM14'; /** The video's rating in Switzerland. */ chfilmRating?: | 'chfilmUnspecified' | 'chfilm0' | 'chfilm6' | 'chfilm12' | 'chfilm16' | 'chfilm18' | 'chfilmUnrated'; /** The video's Canadian Home Video Rating System (CHVRS) rating. */ chvrsRating?: | 'chvrsUnspecified' | 'chvrsG' | 'chvrsPg' | 'chvrs14a' | 'chvrs18a' | 'chvrsR' | 'chvrsE' | 'chvrsUnrated'; /** The video's rating from the Commission de Contrôle des Films (Belgium). */ cicfRating?: 'cicfUnspecified' | 'cicfE' | 'cicfKtEa' | 'cicfKntEna' | 'cicfUnrated'; /** The video's rating from Romania's CONSILIUL NATIONAL AL AUDIOVIZUALULUI (CNA). */ cnaRating?: | 'cnaUnspecified' | 'cnaAp' | 'cna12' | 'cna15' | 'cna18' | 'cna18plus' | 'cnaUnrated'; /** Rating system in France - Commission de classification cinematographique */ cncRating?: | 'cncUnspecified' | 'cncT' | 'cnc10' | 'cnc12' | 'cnc16' | 'cnc18' | 'cncE' | 'cncInterdiction' | 'cncUnrated'; /** The video's rating from France's Conseil supérieur de l’audiovisuel, which rates broadcast content. */ csaRating?: | 'csaUnspecified' | 'csaT' | 'csa10' | 'csa12' | 'csa16' | 'csa18' | 'csaInterdiction' | 'csaUnrated'; /** The video's rating from Luxembourg's Commission de surveillance de la classification des films (CSCF). */ cscfRating?: | 'cscfUnspecified' | 'cscfAl' | 'cscfA' | 'cscf6' | 'cscf9' | 'cscf12' | 'cscf16' | 'cscf18' | 'cscfUnrated'; /** The video's rating in the Czech Republic. */ czfilmRating?: | 'czfilmUnspecified' | 'czfilmU' | 'czfilm12' | 'czfilm14' | 'czfilm18' | 'czfilmUnrated'; /** The video's Departamento de Justiça, Classificação, Qualificação e Títulos (DJCQT - Brazil) rating. */ djctqRating?: | 'djctqUnspecified' | 'djctqL' | 'djctq10' | 'djctq12' | 'djctq14' | 'djctq16' | 'djctq18' | 'djctqEr' | 'djctqL10' | 'djctqL12' | 'djctqL14' | 'djctqL16' | 'djctqL18' | 'djctq1012' | 'djctq1014' | 'djctq1016' | 'djctq1018' | 'djctq1214' | 'djctq1216' | 'djctq1218' | 'djctq1416' | 'djctq1418' | 'djctq1618' | 'djctqUnrated'; /** Reasons that explain why the video received its DJCQT (Brazil) rating. */ djctqRatingReasons?: | 'djctqRatingReasonUnspecified' | 'djctqViolence' | 'djctqExtremeViolence' | 'djctqSexualContent' | 'djctqNudity' | 'djctqSex' | 'djctqExplicitSex' | 'djctqDrugs' | 'djctqLegalDrugs' | 'djctqIllegalDrugs' | 'djctqInappropriateLanguage' | 'djctqCriminalActs' | 'djctqImpactingContent' | 'djctqFear' | 'djctqMedicalProcedures' | 'djctqSensitiveTopics' | 'djctqFantasyViolence'[]; /** Rating system in Turkey - Evaluation and Classification Board of the Ministry of Culture and Tourism */ ecbmctRating?: | 'ecbmctUnspecified' | 'ecbmctG' | 'ecbmct7a' | 'ecbmct7plus' | 'ecbmct13a' | 'ecbmct13plus' | 'ecbmct15a' | 'ecbmct15plus' | 'ecbmct18plus' | 'ecbmctUnrated'; /** The video's rating in Estonia. */ eefilmRating?: | 'eefilmUnspecified' | 'eefilmPere' | 'eefilmL' | 'eefilmMs6' | 'eefilmK6' | 'eefilmMs12' | 'eefilmK12' | 'eefilmK14' | 'eefilmK16' | 'eefilmUnrated'; /** The video's rating in Egypt. */ egfilmRating?: | 'egfilmUnspecified' | 'egfilmGn' | 'egfilm18' | 'egfilmBn' | 'egfilmUnrated'; /** The video's Eirin (映倫) rating. Eirin is the Japanese rating system. */ eirinRating?: | 'eirinUnspecified' | 'eirinG' | 'eirinPg12' | 'eirinR15plus' | 'eirinR18plus' | 'eirinUnrated'; /** The video's rating from Malaysia's Film Censorship Board. */ fcbmRating?: | 'fcbmUnspecified' | 'fcbmU' | 'fcbmPg13' | 'fcbmP13' | 'fcbm18' | 'fcbm18sx' | 'fcbm18pa' | 'fcbm18sg' | 'fcbm18pl' | 'fcbmUnrated'; /** The video's rating from Hong Kong's Office for Film, Newspaper and Article Administration. */ fcoRating?: | 'fcoUnspecified' | 'fcoI' | 'fcoIia' | 'fcoIib' | 'fcoIi' | 'fcoIii' | 'fcoUnrated'; /** This property has been deprecated. Use the contentDetails.contentRating.cncRating instead. */ fmocRating?: | 'fmocUnspecified' | 'fmocU' | 'fmoc10' | 'fmoc12' | 'fmoc16' | 'fmoc18' | 'fmocE' | 'fmocUnrated'; /** The video's rating from South Africa's Film and Publication Board. */ fpbRating?: | 'fpbUnspecified' | 'fpbA' | 'fpbPg' | 'fpb79Pg' | 'fpb1012Pg' | 'fpb13' | 'fpb16' | 'fpb18' | 'fpbX18' | 'fpbXx' | 'fpbUnrated' | 'fpb10'; /** Reasons that explain why the video received its FPB (South Africa) rating. */ fpbRatingReasons?: | 'fpbRatingReasonUnspecified' | 'fpbBlasphemy' | 'fpbLanguage' | 'fpbNudity' | 'fpbPrejudice' | 'fpbSex' | 'fpbViolence' | 'fpbDrugs' | 'fpbSexualViolence' | 'fpbHorror' | 'fpbCriminalTechniques' | 'fpbImitativeActsTechniques'[]; /** The video's Freiwillige Selbstkontrolle der Filmwirtschaft (FSK - Germany) rating. */ fskRating?: | 'fskUnspecified' | 'fsk0' | 'fsk6' | 'fsk12' | 'fsk16' | 'fsk18' | 'fskUnrated'; /** The video's rating in Greece. */ grfilmRating?: | 'grfilmUnspecified' | 'grfilmK' | 'grfilmE' | 'grfilmK12' | 'grfilmK13' | 'grfilmK15' | 'grfilmK17' | 'grfilmK18' | 'grfilmUnrated'; /** The video's Instituto de la Cinematografía y de las Artes Audiovisuales (ICAA - Spain) rating. */ icaaRating?: | 'icaaUnspecified' | 'icaaApta' | 'icaa7' | 'icaa12' | 'icaa13' | 'icaa16' | 'icaa18' | 'icaaX' | 'icaaUnrated'; /** The video's Irish Film Classification Office (IFCO - Ireland) rating. See the IFCO website for more information. */ ifcoRating?: | 'ifcoUnspecified' | 'ifcoG' | 'ifcoPg' | 'ifco12' | 'ifco12a' | 'ifco15' | 'ifco15a' | 'ifco16' | 'ifco18' | 'ifcoUnrated'; /** The video's rating in Israel. */ ilfilmRating?: | 'ilfilmUnspecified' | 'ilfilmAa' | 'ilfilm12' | 'ilfilm14' | 'ilfilm16' | 'ilfilm18' | 'ilfilmUnrated'; /** The video's INCAA (Instituto Nacional de Cine y Artes Audiovisuales - Argentina) rating. */ incaaRating?: | 'incaaUnspecified' | 'incaaAtp' | 'incaaSam13' | 'incaaSam16' | 'incaaSam18' | 'incaaC' | 'incaaUnrated'; /** The video's rating from the Kenya Film Classification Board. */ kfcbRating?: | 'kfcbUnspecified' | 'kfcbG' | 'kfcbPg' | 'kfcb16plus' | 'kfcbR' | 'kfcbUnrated'; /** The video's NICAM/Kijkwijzer rating from the Nederlands Instituut voor de Classificatie van Audiovisuele Media (Netherlands). */ kijkwijzerRating?: | 'kijkwijzerUnspecified' | 'kijkwijzerAl' | 'kijkwijzer6' | 'kijkwijzer9' | 'kijkwijzer12' | 'kijkwijzer16' | 'kijkwijzer18' | 'kijkwijzerUnrated'; /** The video's Korea Media Rating Board (영상물등급위원회) rating. The KMRB rates videos in South Korea. */ kmrbRating?: | 'kmrbUnspecified' | 'kmrbAll' | 'kmrb12plus' | 'kmrb15plus' | 'kmrbTeenr' | 'kmrbR' | 'kmrbUnrated'; /** The video's rating from Indonesia's Lembaga Sensor Film. */ lsfRating?: | 'lsfUnspecified' | 'lsfSu' | 'lsfA' | 'lsfBo' | 'lsf13' | 'lsfR' | 'lsf17' | 'lsfD' | 'lsf21' | 'lsfUnrated'; /** The video's rating from Malta's Film Age-Classification Board. */ mccaaRating?: | 'mccaaUnspecified' | 'mccaaU' | 'mccaaPg' | 'mccaa12a' | 'mccaa12' | 'mccaa14' | 'mccaa15' | 'mccaa16' | 'mccaa18' | 'mccaaUnrated'; /** The video's rating from the Danish Film Institute's (Det Danske Filminstitut) Media Council for Children and Young People. */ mccypRating?: | 'mccypUnspecified' | 'mccypA' | 'mccyp7' | 'mccyp11' | 'mccyp15' | 'mccypUnrated'; /** The video's rating system for Vietnam - MCST */ mcstRating?: | 'mcstUnspecified' | 'mcstP' | 'mcst0' | 'mcstC13' | 'mcstC16' | 'mcst16plus' | 'mcstC18' | 'mcstGPg' | 'mcstUnrated'; /** The video's rating from Singapore's Media Development Authority (MDA) and, specifically, it's Board of Film Censors (BFC). */ mdaRating?: | 'mdaUnspecified' | 'mdaG' | 'mdaPg' | 'mdaPg13' | 'mdaNc16' | 'mdaM18' | 'mdaR21' | 'mdaUnrated'; /** The video's rating from Medietilsynet, the Norwegian Media Authority. */ medietilsynetRating?: | 'medietilsynetUnspecified' | 'medietilsynetA' | 'medietilsynet6' | 'medietilsynet7' | 'medietilsynet9' | 'medietilsynet11' | 'medietilsynet12' | 'medietilsynet15' | 'medietilsynet18' | 'medietilsynetUnrated'; /** The video's rating from Finland's Kansallinen Audiovisuaalinen Instituutti (National Audiovisual Institute). */ mekuRating?: | 'mekuUnspecified' | 'mekuS' | 'meku7' | 'meku12' | 'meku16' | 'meku18' | 'mekuUnrated'; /** The rating system for MENA countries, a clone of MPAA. It is needed to prevent titles go live w/o additional QC check, since some of them can be inappropriate for the countries at all. See b/33408548 for more details. */ menaMpaaRating?: | 'menaMpaaUnspecified' | 'menaMpaaG' | 'menaMpaaPg' | 'menaMpaaPg13' | 'menaMpaaR' | 'menaMpaaUnrated'; /** The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy). */ mibacRating?: | 'mibacUnspecified' | 'mibacT' | 'mibacVap' | 'mibacVm6' | 'mibacVm12' | 'mibacVm14' | 'mibacVm16' | 'mibacVm18' | 'mibacUnrated'; /** The video's Ministerio de Cultura (Colombia) rating. */ mocRating?: | 'mocUnspecified' | 'mocE' | 'mocT' | 'moc7' | 'moc12' | 'moc15' | 'moc18' | 'mocX' | 'mocBanned' | 'mocUnrated'; /** The video's rating from Taiwan's Ministry of Culture (文化部). */ moctwRating?: | 'moctwUnspecified' | 'moctwG' | 'moctwP' | 'moctwPg' | 'moctwR' | 'moctwUnrated' | 'moctwR12' | 'moctwR15'; /** The video's Motion Picture Association of America (MPAA) rating. */ mpaaRating?: | 'mpaaUnspecified' | 'mpaaG' | 'mpaaPg' | 'mpaaPg13' | 'mpaaR' | 'mpaaNc17' | 'mpaaX' | 'mpaaUnrated'; /** 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?: 'mpaatUnspecified' | 'mpaatGb' | 'mpaatRb'; /** The video's rating from the Movie and Television Review and Classification Board (Philippines). */ mtrcbRating?: | 'mtrcbUnspecified' | 'mtrcbG' | 'mtrcbPg' | 'mtrcbR13' | 'mtrcbR16' | 'mtrcbR18' | 'mtrcbX' | 'mtrcbUnrated'; /** The video's rating in Poland. */ nbcplRating?: | 'nbcplUnspecified' | 'nbcplI' | 'nbcplIi' | 'nbcplIii' | 'nbcplIv' | 'nbcpl18plus' | 'nbcplUnrated'; /** The video's rating from the Maldives National Bureau of Classification. */ nbcRating?: | 'nbcUnspecified' | 'nbcG' | 'nbcPg' | 'nbc12plus' | 'nbc15plus' | 'nbc18plus' | 'nbc18plusr' | 'nbcPu' | 'nbcUnrated'; /** The video's rating from the Bulgarian National Film Center. */ nfrcRating?: | 'nfrcUnspecified' | 'nfrcA' | 'nfrcB' | 'nfrcC' | 'nfrcD' | 'nfrcX' | 'nfrcUnrated'; /** The video's rating from Nigeria's National Film and Video Censors Board. */ nfvcbRating?: | 'nfvcbUnspecified' | 'nfvcbG' | 'nfvcbPg' | 'nfvcb12' | 'nfvcb12a' | 'nfvcb15' | 'nfvcb18' | 'nfvcbRe' | 'nfvcbUnrated'; /** The video's rating from the Nacionãlais Kino centrs (National Film Centre of Latvia). */ nkclvRating?: | 'nkclvUnspecified' | 'nkclvU' | 'nkclv7plus' | 'nkclv12plus' | 'nkclv16plus' | 'nkclv18plus' | 'nkclvUnrated'; /** The National Media Council ratings system for United Arab Emirates. */ nmcRating?: | 'nmcUnspecified' | 'nmcG' | 'nmcPg' | 'nmcPg13' | 'nmcPg15' | 'nmc15plus' | 'nmc18plus' | 'nmc18tc' | 'nmcUnrated'; /** The video's Office of Film and Literature Classification (OFLC - New Zealand) rating. */ oflcRating?: | 'oflcUnspecified' | 'oflcG' | 'oflcPg' | 'oflcM' | 'oflcR13' | 'oflcR15' | 'oflcR16' | 'oflcR18' | 'oflcUnrated' | 'oflcRp13' | 'oflcRp16' | 'oflcRp18'; /** The video's rating in Peru. */ pefilmRating?: | 'pefilmUnspecified' | 'pefilmPt' | 'pefilmPg' | 'pefilm14' | 'pefilm18' | 'pefilmUnrated'; /** The video's rating from the Hungarian Nemzeti Filmiroda, the Rating Committee of the National Office of Film. */ rcnofRating?: | 'rcnofUnspecified' | 'rcnofI' | 'rcnofIi' | 'rcnofIii' | 'rcnofIv' | 'rcnofV' | 'rcnofVi' | 'rcnofUnrated'; /** The video's rating in Venezuela. */ resorteviolenciaRating?: | 'resorteviolenciaUnspecified' | 'resorteviolenciaA' | 'resorteviolenciaB' | 'resorteviolenciaC' | 'resorteviolenciaD' | 'resorteviolenciaE' | 'resorteviolenciaUnrated'; /** The video's General Directorate of Radio, Television and Cinematography (Mexico) rating. */ rtcRating?: | 'rtcUnspecified' | 'rtcAa' | 'rtcA' | 'rtcB' | 'rtcB15' | 'rtcC' | 'rtcD' | 'rtcUnrated'; /** The video's rating from Ireland's Raidió Teilifís Éireann. */ rteRating?: 'rteUnspecified' | 'rteGa' | 'rteCh' | 'rtePs' | 'rteMa' | 'rteUnrated'; /** The video's National Film Registry of the Russian Federation (MKRF - Russia) rating. */ russiaRating?: | 'russiaUnspecified' | 'russia0' | 'russia6' | 'russia12' | 'russia16' | 'russia18' | 'russiaUnrated'; /** The video's rating in Slovakia. */ skfilmRating?: | 'skfilmUnspecified' | 'skfilmG' | 'skfilmP2' | 'skfilmP5' | 'skfilmP8' | 'skfilmUnrated'; /** The video's rating in Iceland. */ smaisRating?: | 'smaisUnspecified' | 'smaisL' | 'smais7' | 'smais12' | 'smais14' | 'smais16' | 'smais18' | 'smaisUnrated'; /** The video's rating from Statens medieråd (Sweden's National Media Council). */ smsaRating?: | 'smsaUnspecified' | 'smsaA' | 'smsa7' | 'smsa11' | 'smsa15' | 'smsaUnrated'; /** The video's TV Parental Guidelines (TVPG) rating. */ tvpgRating?: | 'tvpgUnspecified' | 'tvpgY' | 'tvpgY7' | 'tvpgY7Fv' | 'tvpgG' | 'tvpgPg' | 'pg14' | 'tvpgMa' | 'tvpgUnrated'; /** A rating that YouTube uses to identify age-restricted content. */ ytRating?: 'ytUnspecified' | 'ytAgeRestricted'; } interface Cuepoint { cueType?: 'cueTypeUnspecified' | 'cueTypeAd'; /** The duration of this cuepoint. */ durationSecs?: number; etag?: string; /** The identifier for cuepoint resource. */ id?: string; /** The time when the cuepoint should be inserted by offset to the broadcast actual start time. */ insertionOffsetTimeMs?: string; /** The wall clock time at which the cuepoint should be inserted. Only one of insertion_offset_time_ms and walltime_ms may be set at a time. */ walltimeMs?: string; } interface CuepointSchedule { /** This field is semantically required. If it is set false or not set, other fields in this message will be ignored. */ enabled?: boolean; /** If set, automatic cuepoint insertion is paused until this timestamp ("No Ad Zone"). The value is specified in ISO 8601 format. */ pauseAdsUntil?: string; /** Interval frequency in seconds that api uses to insert cuepoints automatically. */ repeatIntervalSecs?: number; /** The strategy to use when scheduling cuepoints. */ scheduleStrategy?: 'scheduleStrategyUnspecified' | 'concurrent' | 'nonConcurrent'; } interface Entity { id?: string; typeId?: string; url?: string; } interface GeoPoint { /** Altitude above the reference ellipsoid, in meters. */ altitude?: number; /** Latitude in degrees. */ latitude?: number; /** Longitude in degrees. */ longitude?: number; } interface 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; } interface 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; } interface 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; } interface 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; } interface 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; } interface I18nRegionSnippet { /** The region code as a 2-letter ISO country code. */ gl?: string; /** The human-readable name of the region. */ name?: string; } interface 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 generated when a ChannelBanner.Insert request has succeeded for the given channel. */ 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. 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. */ 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; watchIconImageUrl?: string; } interface 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; /** This ingestion url may be used instead of backupIngestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams. */ rtmpsBackupIngestionAddress?: string; /** This ingestion url may be used instead of ingestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams. */ rtmpsIngestionAddress?: string; /** The stream name that YouTube assigns to the video stream. */ streamName?: string; } interface Interval { /** Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end. */ endTime?: string; /** Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start. */ startTime?: string; } interface InvideoBranding { /** The bytes the uploaded image. Only used in api to youtube communication. */ imageBytes?: string; /** The url of the uploaded image. Only used in apiary to api communication. */ imageUrl?: string; /** The spatial position within the video where the branding watermark will be displayed. */ position?: InvideoPosition; /** The channel to which this branding links. If not present it defaults to the current channel. */ targetChannelId?: string; /** The temporal position within the video where watermark will be displayed. */ timing?: InvideoTiming; } interface InvideoPosition { /** Describes in which corner of the video the visual widget will appear. */ cornerPosition?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'; /** Defines the position type. */ type?: 'corner'; } interface 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?: 'offsetFromStart' | 'offsetFromEnd'; } interface LanguageTag { value?: string; } interface LevelDetails { /** The name that should be used when referring to this level. */ displayName?: string; } interface 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 monetizationDetails object contains information about the event's monetization details. */ monetizationDetails?: LiveBroadcastMonetizationDetails; /** 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; } interface LiveBroadcastContentDetails { /** Optional. The broadcast's availability config. Used to set specific region availability or block specific regions It is optional - if not set, it is not enforced. */ availabilityConfig?: AvailabilityConfig; /** 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?: | 'closedCaptionsTypeUnspecified' | 'closedCaptionsDisabled' | 'closedCaptionsHttpPost' | 'closedCaptionsEmbedded'; /** This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events. */ enableAutoStart?: boolean; /** This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events. */ enableAutoStop?: 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?: 'latencyPreferenceUnspecified' | 'normal' | 'low' | 'ultraLow'; /** The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags. */ 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?: 'projectionUnspecified' | 'rectangular' | '360' | 'mesh'; /** 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; /** The 3D stereo layout of this broadcast. This defaults to mono. */ stereoLayout?: 'stereoLayoutUnspecified' | 'mono' | 'leftRight' | 'topBottom'; } interface 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; /** General pagination information. */ 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?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface LiveBroadcastMonetizationDetails { cuepointSchedule?: CuepointSchedule; } interface LiveBroadcastSnippet { /** The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. */ actualEndTime?: string; /** The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. */ actualStartTime?: string; /** The YouTube video category associated with the video broadcast. */ categoryId?: 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; /** Indicates whether this broadcast is the default broadcast. Internal only. */ 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. */ publishedAt?: string; /** The date and time that the broadcast is scheduled to end. */ scheduledEndTime?: string; /** The date and time that the broadcast is scheduled to start. */ 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; } interface 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; } interface LiveBroadcastStatus { /** The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method. */ lifeCycleStatus?: | 'lifeCycleStatusUnspecified' | 'created' | 'ready' | 'testing' | 'live' | 'complete' | 'revoked' | 'testStarting' | 'liveStarting'; /** Priority of the live broadcast event (internal state). */ liveBroadcastPriority?: 'liveBroadcastPriorityUnspecified' | 'low' | 'normal' | 'high'; /** Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only. */ madeForKids?: boolean; /** 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?: 'public' | 'unlisted' | 'private'; /** The broadcast's recording status. */ recordingStatus?: | 'liveBroadcastRecordingStatusUnspecified' | 'notRecording' | 'recording' | 'recorded'; /** This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work. */ selfDeclaredMadeForKids?: boolean; } interface LiveChatBan { /** Etag of this resource. */ etag?: string; /** The ID that YouTube assigns to uniquely identify the ban. */ id?: string; /** Identifies what kind of resource this is. Value: the fixed string `"youtube#liveChatBan"`. */ kind?: string; /** The `snippet` object contains basic details about the ban. */ snippet?: LiveChatBanSnippet; } interface LiveChatBanSnippet { /** The duration of a ban, only filled if the ban has type TEMPORARY. */ banDurationSeconds?: string; bannedUserDetails?: ChannelProfileDetails; /** The chat this ban is pertinent to. */ liveChatId?: string; /** The type of ban. */ type?: 'liveChatBanTypeUnspecified' | 'permanent' | 'temporary'; } interface 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; } interface LiveChatGiftDetails { /** The alternative text to be used for accessibility. */ altText?: string; /** The number of times the gift has been sent in a row. */ comboCount?: number; /** The duration of the gift. */ giftDuration?: string; /** The name of the gift. */ giftName?: string; /** The URL of the gift image. */ giftUrl?: string; /** Whether the gift involves a visual effect. */ hasVisualEffect?: boolean; /** The value of the gift in jewels. */ jewelsAmount?: number; /** The BCP-47 language code of the gift. */ language?: string; } interface LiveChatGiftMembershipReceivedDetails { /** The ID of the membership gifting message that is related to this gift membership. This ID will always refer to a message whose type is 'membershipGiftingEvent'. */ associatedMembershipGiftingMessageId?: string; /** The ID of the user that made the membership gifting purchase. This matches the `snippet.authorChannelId` of the associated membership gifting message. */ gifterChannelId?: string; /** The name of the Level at which the viewer is a member. This matches the `snippet.membershipGiftingDetails.giftMembershipsLevelName` of the associated membership gifting message. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled. */ memberLevelName?: string; } interface LiveChatMemberMilestoneChatDetails { /** The name of the Level at which the viever is a member. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled. */ memberLevelName?: string; /** The total amount of months (rounded up) the viewer has been a member that granted them this Member Milestone Chat. This is the same number of months as is being displayed to YouTube users. */ memberMonth?: number; /** The comment added by the member to this Member Milestone Chat. This field is empty for messages without a comment from the member. */ userComment?: string; } interface LiveChatMembershipGiftingDetails { /** The number of gift memberships purchased by the user. */ giftMembershipsCount?: number; /** The name of the level of the gift memberships purchased by the user. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled. */ giftMembershipsLevelName?: string; } interface 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; } interface 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; } interface LiveChatMessageDeletedDetails { deletedMessageId?: string; } interface LiveChatMessageListResponse { /** Set when there is an active poll. */ activePollItem?: LiveChatMessage; /** Etag of this resource. */ etag?: string; /** Serialized EventId of the request which produced this response. */ eventId?: string; items?: LiveChatMessage[]; /** Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatMessageListResponse". */ kind?: string; nextPageToken?: string; /** The date and time when the underlying stream went offline. */ offlineAt?: string; /** General pagination information. */ pageInfo?: PageInfo; /** The amount of time the client should wait before polling again. */ pollingIntervalMillis?: number; tokenPagination?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface LiveChatMessageRetractedDetails { retractedMessageId?: string; } interface 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 memberMilestoneChatEvent - the member that sent the message membershipGiftingEvent - the user that made the purchase giftMembershipReceivedEvent - the user that received the gift membership messageDeletedEvent - the moderator that took the action. Unused. messageRetractedEvent - the author that retracted their message. Unused. userBannedEvent - the moderator that took the action superChatEvent - the user that made the purchase superStickerEvent - the user that made the purchase pollEvent - the user that created the poll */ 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; /** Details about the gift event, this is only set if the type is 'giftEvent'. */ giftDetails?: LiveChatGiftDetails; /** Details about the Gift Membership Received event, this is only set if the type is 'giftMembershipReceivedEvent'. */ giftMembershipReceivedDetails?: LiveChatGiftMembershipReceivedDetails; /** Whether the message has display content that should be displayed to users. */ hasDisplayContent?: boolean; liveChatId?: string; /** Details about the Member Milestone Chat event, this is only set if the type is 'memberMilestoneChatEvent'. */ memberMilestoneChatDetails?: LiveChatMemberMilestoneChatDetails; /** Details about the Membership Gifting event, this is only set if the type is 'membershipGiftingEvent'. */ membershipGiftingDetails?: LiveChatMembershipGiftingDetails; messageDeletedDetails?: LiveChatMessageDeletedDetails; messageRetractedDetails?: LiveChatMessageRetractedDetails; /** Details about the New Member Announcement event, this is only set if the type is 'newSponsorEvent'. Please note that "member" is the new term for "sponsor". */ newSponsorDetails?: LiveChatNewSponsorDetails; /** Details about the poll event, this is only set if the type is 'pollEvent'. */ pollDetails?: LiveChatPollDetails; /** The date and time when the message was orignally published. */ publishedAt?: string; /** Details about the Super Chat event, this is only set if the type is 'superChatEvent'. */ superChatDetails?: LiveChatSuperChatDetails; /** Details about the Super Sticker event, this is only set if the type is 'superStickerEvent'. */ superStickerDetails?: LiveChatSuperStickerDetails; /** 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?: | 'invalidType' | 'textMessageEvent' | 'tombstone' | 'fanFundingEvent' | 'chatEndedEvent' | 'sponsorOnlyModeStartedEvent' | 'sponsorOnlyModeEndedEvent' | 'newSponsorEvent' | 'memberMilestoneChatEvent' | 'membershipGiftingEvent' | 'giftMembershipReceivedEvent' | 'messageDeletedEvent' | 'messageRetractedEvent' | 'userBannedEvent' | 'superChatEvent' | 'superStickerEvent' | 'pollEvent' | 'giftEvent'; userBannedDetails?: LiveChatUserBannedMessageDetails; } interface 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; } interface 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; /** General pagination information. */ 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?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface LiveChatModeratorSnippet { /** The ID of the live chat this moderator can act on. */ liveChatId?: string; /** Details about the moderator. */ moderatorDetails?: ChannelProfileDetails; } interface LiveChatNewSponsorDetails { /** If the viewer just had upgraded from a lower level. For viewers that were not members at the time of purchase, this field is false. */ isUpgrade?: boolean; /** The name of the Level that the viewer just had joined. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled. */ memberLevelName?: string; } interface LiveChatPollDetails { metadata?: LiveChatPollDetailsPollMetadata; status?: 'unknown' | 'active' | 'closed'; } interface LiveChatPollDetailsPollMetadata { /** The options will be returned in the order that is displayed in 1P */ options?: LiveChatPollDetailsPollMetadataPollOption[]; questionText?: string; } interface LiveChatPollDetailsPollMetadataPollOption { optionText?: string; tally?: string; } interface 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. Lower amounts belong to lower tiers. The lowest tier is 1. */ tier?: number; /** The comment added by the user to this Super Chat event. */ userComment?: string; } interface LiveChatSuperStickerDetails { /** 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; /** Information about the Super Sticker. */ superStickerMetadata?: SuperStickerMetadata; /** The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1. */ tier?: number; } interface LiveChatTextMessageDetails { /** The user's message. */ messageText?: string; } interface LiveChatUserBannedMessageDetails { /** The duration of the ban. This property is only present if the banType is temporary. */ banDurationSeconds?: string; /** The details of the user that was banned. */ bannedUserDetails?: ChannelProfileDetails; /** The type of ban. */ banType?: 'permanent' | 'temporary'; } interface 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; } interface 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?: 'info' | 'warning' | 'error'; /** The kind of error happening. */ type?: | 'gopSizeOver' | 'gopSizeLong' | 'gopSizeShort' | 'openGop' | 'badContainer' | 'audioBitrateHigh' | 'audioBitrateLow' | 'audioSampleRate' | 'bitrateHigh' | 'bitrateLow' | 'audioCodec' | 'videoCodec' | 'noAudioStream' | 'noVideoStream' | 'multipleVideoStreams' | 'multipleAudioStreams' | 'audioTooManyChannels' | 'interlacedVideo' | 'frameRateHigh' | 'resolutionMismatch' | 'videoCodecMismatch' | 'videoInterlaceMismatch' | 'videoProfileMismatch' | 'videoBitrateMismatch' | 'framerateMismatch' | 'gopMismatch' | 'audioSampleRateMismatch' | 'audioStereoMismatch' | 'audioCodecMismatch' | 'audioBitrateMismatch' | 'videoResolutionSuboptimal' | 'videoResolutionUnsupported' | 'videoIngestionStarved' | 'videoIngestionFasterThanRealtime'; } interface 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; } interface 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?: 'good' | 'ok' | 'bad' | 'noData' | 'revoked'; } interface 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?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface 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. */ publishedAt?: string; /** The stream's title. The value must be between 1 and 128 characters long. */ title?: string; } interface LiveStreamStatus { /** The health status of the stream. */ healthStatus?: LiveStreamHealthStatus; streamStatus?: 'created' | 'ready' | 'active' | 'inactive' | 'error'; } interface LocalizedProperty { default?: string; /** The language of the default property. */ defaultLanguage?: LanguageTag; localized?: LocalizedString[]; } interface LocalizedString { language?: string; value?: string; } interface Member { /** Etag of this resource. */ etag?: string; /** Identifies what kind of resource this is. Value: the fixed string "youtube#member". */ kind?: string; /** The snippet object contains basic details about the member. */ snippet?: MemberSnippet; } interface MemberListResponse { /** Etag of this resource. */ etag?: string; /** Serialized EventId of the request which produced this response. */ eventId?: string; /** A list of members that match the request criteria. */ items?: Member[]; /** Identifies what kind of resource this is. Value: the fixed string "youtube#memberListResponse". */ 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?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface MembershipsDetails { /** Ids of all levels that the user has access to. This includes the currently active level and all other levels that are included because of a higher purchase. */ accessibleLevels?: string[]; /** Id of the highest level that the user has access to at the moment. */ highestAccessibleLevel?: string; /** Display name for the highest level that the user has access to at the moment. */ highestAccessibleLevelDisplayName?: string; /** Data about memberships duration without taking into consideration pricing levels. */ membershipsDuration?: MembershipsDuration; /** Data about memberships duration on particular pricing levels. */ membershipsDurationAtLevels?: MembershipsDurationAtLevel[]; } interface MembershipsDuration { /** The date and time when the user became a continuous member across all levels. */ memberSince?: string; /** The cumulative time the user has been a member across all levels in complete months (the time is rounded down to the nearest integer). */ memberTotalDurationMonths?: number; } interface MembershipsDurationAtLevel { /** Pricing level ID. */ level?: string; /** The date and time when the user became a continuous member for the given level. */ memberSince?: string; /** The cumulative time the user has been a member for the given level in complete months (the time is rounded down to the nearest integer). */ memberTotalDurationMonths?: number; } interface MembershipsLevel { /** Etag of this resource. */ etag?: string; /** The ID that YouTube assigns to uniquely identify the memberships level. */ id?: string; /** Identifies what kind of resource this is. Value: the fixed string "youtube#membershipsLevelListResponse". */ kind?: string; /** The snippet object contains basic details about the level. */ snippet?: MembershipsLevelSnippet; } interface MembershipsLevelListResponse { /** Etag of this resource. */ etag?: string; /** Serialized EventId of the request which produced this response. */ eventId?: string; /** A list of pricing levels offered by a creator to the fans. */ items?: MembershipsLevel[]; /** Identifies what kind of resource this is. Value: the fixed string "youtube#membershipsLevelListResponse". */ kind?: string; /** The visitorId identifies the visitor. */ visitorId?: string; } interface MembershipsLevelSnippet { /** The id of the channel that's offering channel memberships. */ creatorChannelId?: string; /** Details about the pricing level. */ levelDetails?: LevelDetails; } interface MemberSnippet { /** The id of the channel that's offering memberships. */ creatorChannelId?: string; /** Details about the member. */ memberDetails?: ChannelProfileDetails; /** Details about the user's membership. */ membershipsDetails?: MembershipsDetails; } interface MonitorStreamInfo { /** If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay. */ broadcastStreamDelayMs?: number; /** 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; } interface PageInfo { /** The number of results included in the API response. */ resultsPerPage?: number; /** The total number of results in the result set. */ totalResults?: number; } interface 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; /** Localizations for different languages */ localizations?: {[P in string]: PlaylistLocalization}; /** 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; } interface PlaylistContentDetails { /** The number of videos in the playlist. */ itemCount?: number; } interface PlaylistImage { /** Identifies this resource (playlist id and image type). */ id?: string; /** Identifies what kind of resource this is. Value: the fixed string "youtube#playlistImages". */ kind?: string; snippet?: PlaylistImageSnippet; } interface PlaylistImageListResponse { items?: PlaylistImage[]; /** Identifies what kind of resource this is. Value: the fixed string "youtube#playlistImageListResponse". */ 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; /** General pagination information. */ 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; } interface PlaylistImageSnippet { /** The image height. */ height?: number; /** The Playlist ID of the playlist this image is associated with. */ playlistId?: string; /** The image type. */ type?: 'hero'; /** The image width. */ width?: number; } interface 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; } interface 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. */ videoPublishedAt?: string; } interface PlaylistItemListResponse { 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; /** General pagination information. */ 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?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface 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 thGe 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?: number; /** The date and time that the item was added to the playlist. */ 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; /** Channel id for the channel this video belongs to. */ videoOwnerChannelId?: string; /** Channel title for the channel this video belongs to. */ videoOwnerChannelTitle?: string; } interface PlaylistItemStatus { /** This resource's privacy status. */ privacyStatus?: 'public' | 'unlisted' | 'private'; } interface 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; /** General pagination information. */ 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?: any; /** The visitorId identifies the visitor. */ visitorId?: string; } interface PlaylistLocalization { /** The localized strings for playlist's description. */ description?: string; /** The localized strings for playlist's title. */ title?: string; } interface PlaylistPlayer { /** An