export interface GetState { castStatus: CastStatus; entities: Entities; download: Download; likeStatus: LikeStatus; multiSelect: MultiSelect; navigation: Navigation; player: Player; playerPage: PlayerPage; queue: Queue; subscribeStatus: SubscribeStatus; toggleStates: ToggleStates; ui: UI; uploads: Uploads; } export interface CastStatus { castAvailable: boolean; castConnectionData: CastConnectionData; remoteWatchEndpoint: null; } export interface CastConnectionData { castConnectionState: string; castReceiverName: string; } export interface Download { isLeaderTab: boolean; } export interface Entities { } export interface LikeStatus { videos: Videos; playlists: Entities; } export interface Videos { tNVTuUEeWP0: Kqp1PyPRBzA; KQP1PyPrBzA: Kqp1PyPRBzA; 'o1iz4L-5zkQ': Kqp1PyPRBzA; } export enum Kqp1PyPRBzA { Dislike = 'DISLIKE', Indifferent = 'INDIFFERENT', Like = 'LIKE', } export interface MultiSelect { multiSelectedItems: Entities; latestMultiSelectIndex: number; multiSelectParams: string; } export interface Navigation { artistDiscographyBrowseCommand: null; isLoadingIndicatorShowing: boolean; libraryTabBrowseCommand: null; mainContent: MainContent; playerUiState: string; playerPageInfo: PlayerPageInfo; } export interface MainContent { endpoint: MainContentEndpoint; response: Response; } export interface MainContentEndpoint { data: Data; clickTrackingVe: TriggerElement; createScreenConfig: null; JSC$8515_innertubePath: string; } export interface TriggerElement { veData: VeData; csn: string; } export interface VeData { veType: number; veCounter: number; } export interface Data { query: string; suggestStats: SuggestStats; } export interface SuggestStats { validationStatus: string; parameterValidationStatus: string; clientName: string; searchMethod: string; inputMethods: string[]; originalQuery: string; availableSuggestions: unknown[]; zeroPrefixEnabled: boolean; firstEditTimeMsec: number; lastEditTimeMsec: number; } export interface Response { responseContext: ResponseResponseContext; contents: ResponseContents; trackingParams: string; } export interface ResponseContents { tabbedSearchResultsRenderer: TabbedSearchResultsRenderer; } export interface TabbedSearchResultsRenderer { tabs: TabbedSearchResultsRendererTab[]; } export interface TabbedSearchResultsRendererTab { tabRenderer: PurpleTabRenderer; } export interface PurpleTabRenderer { title: string; selected?: boolean; content: PurpleContent; tabIdentifier: string; trackingParams: string; endpoint?: BottomEndpointClass; } export interface PurpleContent { sectionListRenderer: SectionListRenderer; } export interface SectionListRenderer { contents?: SectionListRendererContent[]; trackingParams: string; header?: SectionListRendererHeader; continuations?: Continuation[]; } export interface SectionListRendererContent { musicCardShelfRenderer?: MusicCardShelfRenderer; musicShelfRenderer?: MusicShelfRenderer; } export interface MusicCardShelfRenderer { trackingParams: string; thumbnail: MusicResponsiveListItemRendererThumbnail; title: Title; subtitle: LongBylineText; contents: MusicCardShelfRendererContent[]; buttons: MusicCardShelfRendererButton[]; menu: MusicCardShelfRendererMenu; onTap: OnTap; header: MusicCardShelfRendererHeader; thumbnailOverlay: ThumbnailOverlayClass; } export interface MusicCardShelfRendererButton { buttonRenderer: ButtonButtonRenderer; } export interface ButtonButtonRenderer { style: string; size?: string; isDisabled?: boolean; text: Subtitle; icon: DefaultIconClass; accessibility: AccessibilityDataAccessibility; trackingParams: string; accessibilityData: AccessibilityPauseDataClass; command: ButtonRendererCommand; } export interface AccessibilityDataAccessibility { label: string; } export interface AccessibilityPauseDataClass { accessibilityData: AccessibilityDataAccessibility; } export interface ButtonRendererCommand { clickTrackingParams: string; watchEndpoint?: CommandWatchEndpoint; addToPlaylistEndpoint?: Target; } export interface Target { videoId: string; } export interface CommandWatchEndpoint { videoId: string; params: PurpleParams; watchEndpointMusicSupportedConfigs: PurpleWatchEndpointMusicSupportedConfigs; } export enum PurpleParams { WAEB = 'wAEB', } export interface PurpleWatchEndpointMusicSupportedConfigs { watchEndpointMusicConfig: PurpleWatchEndpointMusicConfig; } export interface PurpleWatchEndpointMusicConfig { musicVideoType: MusicVideoType; } export enum MusicVideoType { MusicVideoTypeAtv = 'MUSIC_VIDEO_TYPE_ATV', MusicVideoTypeOmv = 'MUSIC_VIDEO_TYPE_OMV', MusicVideoTypeUgc = 'MUSIC_VIDEO_TYPE_UGC', } export interface DefaultIconClass { iconType: IconType; } export enum IconType { AddToPlaylist = 'ADD_TO_PLAYLIST', AddToRemoteQueue = 'ADD_TO_REMOTE_QUEUE', Album = 'ALBUM', Artist = 'ARTIST', Favorite = 'FAVORITE', Flag = 'FLAG', LibraryAdd = 'LIBRARY_ADD', LibrarySaved = 'LIBRARY_SAVED', Mix = 'MIX', MusicShuffle = 'MUSIC_SHUFFLE', Pause = 'PAUSE', PlayArrow = 'PLAY_ARROW', PlaylistAdd = 'PLAYLIST_ADD', QueuePlayNext = 'QUEUE_PLAY_NEXT', Remove = 'REMOVE', Share = 'SHARE', Unfavorite = 'UNFAVORITE', VolumeUp = 'VOLUME_UP', } export interface Subtitle { runs: ShortBylineTextRun[]; } export interface ShortBylineTextRun { text: string; } export interface MusicCardShelfRendererContent { messageRenderer?: MessageRenderer; musicResponsiveListItemRenderer?: PurpleMusicResponsiveListItemRenderer; } export interface MessageRenderer { text: Subtitle; trackingParams: string; style: MessageRendererStyle; } export interface MessageRendererStyle { value: string; } export interface PurpleMusicResponsiveListItemRenderer { trackingParams: string; thumbnail: MusicResponsiveListItemRendererThumbnail; overlay: ThumbnailOverlayClass; flexColumns: FlexColumn[]; menu: PurpleMenu; playlistItemData: Target; flexColumnDisplayStyle: string; itemHeight: string; } export interface FlexColumn { musicResponsiveListItemFlexColumnRenderer: MusicResponsiveListItemFlexColumnRenderer; } export interface MusicResponsiveListItemFlexColumnRenderer { text: Text; displayPriority: DisplayPriority; } export enum DisplayPriority { MusicResponsiveListItemColumnDisplayPriorityHigh = 'MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH', } export interface Text { runs: PurpleRun[]; } export interface PurpleRun { text: string; navigationEndpoint?: PurpleNavigationEndpoint; } export interface PurpleNavigationEndpoint { clickTrackingParams: string; watchEndpoint?: OnTapWatchEndpoint; browseEndpoint?: PurpleBrowseEndpoint; } export interface PurpleBrowseEndpoint { browseId: string; browseEndpointContextSupportedConfigs: BrowseEndpointContextSupportedConfigs; } export interface BrowseEndpointContextSupportedConfigs { browseEndpointContextMusicConfig: BrowseEndpointContextMusicConfig; } export interface BrowseEndpointContextMusicConfig { pageType: PageType; } export enum PageType { MusicPageTypeAlbum = 'MUSIC_PAGE_TYPE_ALBUM', MusicPageTypeArtist = 'MUSIC_PAGE_TYPE_ARTIST', MusicPageTypePlaylist = 'MUSIC_PAGE_TYPE_PLAYLIST', MusicPageTypeTrackLyrics = 'MUSIC_PAGE_TYPE_TRACK_LYRICS', MusicPageTypeTrackRelated = 'MUSIC_PAGE_TYPE_TRACK_RELATED', MusicPageTypeUserChannel = 'MUSIC_PAGE_TYPE_USER_CHANNEL', } export interface OnTapWatchEndpoint { videoId: string; watchEndpointMusicSupportedConfigs: PurpleWatchEndpointMusicSupportedConfigs; } export interface PurpleMenu { menuRenderer: PurpleMenuRenderer; } export interface PurpleMenuRenderer { items: PurpleItem[]; trackingParams: string; accessibility: AccessibilityPauseDataClass; } export interface PurpleItem { menuNavigationItemRenderer?: MenuItemRenderer; menuServiceItemRenderer?: MenuItemRenderer; toggleMenuServiceItemRenderer?: PurpleToggleMenuServiceItemRenderer; } export interface MenuItemRenderer { text: Subtitle; icon: DefaultIconClass; navigationEndpoint?: MenuNavigationItemRendererNavigationEndpoint; trackingParams: string; serviceEndpoint?: MenuNavigationItemRendererServiceEndpoint; } export interface MenuNavigationItemRendererNavigationEndpoint { clickTrackingParams: string; watchEndpoint?: PurpleWatchEndpoint; addToPlaylistEndpoint?: AddToPlaylistEndpoint; browseEndpoint?: PurpleBrowseEndpoint; shareEntityEndpoint?: ShareEntityEndpoint; watchPlaylistEndpoint?: WatchPlaylistEndpoint; } export interface AddToPlaylistEndpoint { videoId?: string; playlistId?: string; } export interface ShareEntityEndpoint { serializedShareEntity: string; sharePanelType: SharePanelType; } export enum SharePanelType { SharePanelTypeUnifiedSharePanel = 'SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL', } export interface PurpleWatchEndpoint { videoId: string; playlistId: string; params: PurpleParams; loggingContext: LoggingContext; watchEndpointMusicSupportedConfigs: PurpleWatchEndpointMusicSupportedConfigs; } export interface LoggingContext { vssLoggingContext: VssLoggingContext; } export interface VssLoggingContext { serializedContextData: string; } export interface WatchPlaylistEndpoint { playlistId: string; params: string; } export interface MenuNavigationItemRendererServiceEndpoint { clickTrackingParams: string; queueAddEndpoint?: QueueAddEndpoint; removeFromQueueEndpoint?: RemoveFromQueueEndpoint; getReportFormEndpoint?: GetReportFormEndpoint; } export interface GetReportFormEndpoint { params: string; } export interface QueueAddEndpoint { queueTarget: AddToPlaylistEndpoint; queueInsertPosition: QueueInsertPosition; commands: CommandElement[]; } export interface CommandElement { clickTrackingParams: string; addToToastAction: AddToToastAction; } export interface AddToToastAction { item: AddToToastActionItem; } export interface AddToToastActionItem { notificationTextRenderer: NotificationTextRenderer; } export interface NotificationTextRenderer { successResponseText: Subtitle; trackingParams: string; } export enum QueueInsertPosition { InsertAfterCurrentVideo = 'INSERT_AFTER_CURRENT_VIDEO', InsertAtEnd = 'INSERT_AT_END', } export interface RemoveFromQueueEndpoint { videoId: string; commands: CommandElement[]; itemId: string; } export interface PurpleToggleMenuServiceItemRenderer { defaultText: Subtitle; defaultIcon: DefaultIconClass; defaultServiceEndpoint: PurpleDefaultServiceEndpoint; toggledText: Subtitle; toggledIcon: DefaultIconClass; toggledServiceEndpoint: PurpleToggledServiceEndpoint; trackingParams: string; } export interface PurpleDefaultServiceEndpoint { clickTrackingParams: string; feedbackEndpoint?: FeedbackEndpoint; likeEndpoint?: PurpleLikeEndpoint; } export interface FeedbackEndpoint { feedbackToken: string; } export interface PurpleLikeEndpoint { status: Kqp1PyPRBzA; target: Target; actions?: LikeEndpointAction[]; } export interface LikeEndpointAction { clickTrackingParams: string; musicLibraryStatusUpdateCommand: MusicLibraryStatusUpdateCommand; } export interface MusicLibraryStatusUpdateCommand { libraryStatus: string; addToLibraryFeedbackToken: string; } export interface PurpleToggledServiceEndpoint { clickTrackingParams: string; feedbackEndpoint?: FeedbackEndpoint; likeEndpoint?: FluffyLikeEndpoint; } export interface FluffyLikeEndpoint { status: Kqp1PyPRBzA; target: Target; } export interface ThumbnailOverlayClass { musicItemThumbnailOverlayRenderer: ThumbnailOverlayMusicItemThumbnailOverlayRenderer; } export interface ThumbnailOverlayMusicItemThumbnailOverlayRenderer { background: Background; content: FluffyContent; contentPosition: string; displayStyle: string; } export interface Background { verticalGradient: VerticalGradient; } export interface VerticalGradient { gradientLayerColors: string[]; } export interface FluffyContent { musicPlayButtonRenderer: PurpleMusicPlayButtonRenderer; } export interface PurpleMusicPlayButtonRenderer { playNavigationEndpoint: OnTap; trackingParams: string; playIcon: DefaultIconClass; pauseIcon: DefaultIconClass; iconColor: number; backgroundColor: number; activeBackgroundColor: number; loadingIndicatorColor: number; playingIcon: DefaultIconClass; iconLoadingColor: number; activeScaleFactor: number; buttonSize: string; rippleTarget: string; accessibilityPlayData: AccessibilityPauseDataClass; accessibilityPauseData: AccessibilityPauseDataClass; } export interface OnTap { clickTrackingParams: string; watchEndpoint: OnTapWatchEndpoint; } export interface MusicResponsiveListItemRendererThumbnail { musicThumbnailRenderer: MusicThumbnailRenderer; } export interface MusicThumbnailRenderer { thumbnail: ThumbnailDetailsClass; thumbnailCrop: string; thumbnailScale: string; trackingParams: string; } export interface ThumbnailDetailsClass { thumbnails: ThumbnailElement[]; } export interface ThumbnailElement { url: string; width: number; height: number; } export interface MusicCardShelfRendererHeader { musicCardShelfHeaderBasicRenderer: MusicCardShelfHeaderBasicRenderer; } export interface MusicCardShelfHeaderBasicRenderer { title: Subtitle; trackingParams: string; } export interface MusicCardShelfRendererMenu { menuRenderer: FluffyMenuRenderer; } export interface FluffyMenuRenderer { items: FluffyItem[]; trackingParams: string; accessibility: AccessibilityPauseDataClass; } export interface FluffyItem { menuNavigationItemRenderer?: MenuItemRenderer; menuServiceItemRenderer?: MenuItemRenderer; toggleMenuServiceItemRenderer?: FluffyToggleMenuServiceItemRenderer; } export interface FluffyToggleMenuServiceItemRenderer { defaultText: Subtitle; defaultIcon: DefaultIconClass; defaultServiceEndpoint: PurpleServiceEndpoint; toggledText: Subtitle; toggledIcon: DefaultIconClass; toggledServiceEndpoint: PurpleServiceEndpoint; trackingParams: string; } export interface PurpleServiceEndpoint { clickTrackingParams: string; likeEndpoint: FluffyLikeEndpoint; } export interface LongBylineText { runs: LongBylineTextRun[]; } export interface LongBylineTextRun { text: string; navigationEndpoint?: RunEndpoint; } export interface RunEndpoint { clickTrackingParams: string; browseEndpoint: PurpleBrowseEndpoint; } export interface Title { runs: FluffyRun[]; } export interface FluffyRun { text: string; navigationEndpoint: OnTap; } export interface MusicShelfRenderer { title: Subtitle; contents: MusicShelfRendererContent[]; trackingParams: string; bottomText: Subtitle; bottomEndpoint: BottomEndpointClass; shelfDivider: ShelfDivider; } export interface BottomEndpointClass { clickTrackingParams: string; searchEndpoint: SearchEndpoint; } export interface SearchEndpoint { query: string; params: string; } export interface MusicShelfRendererContent { musicResponsiveListItemRenderer: FluffyMusicResponsiveListItemRenderer; } export interface FluffyMusicResponsiveListItemRenderer { trackingParams: string; thumbnail: MusicResponsiveListItemRendererThumbnail; overlay: PurpleOverlay; flexColumns: FlexColumn[]; menu: FluffyMenu; playlistItemData?: Target; flexColumnDisplayStyle: string; itemHeight: string; navigationEndpoint?: RunEndpoint; } export interface FluffyMenu { menuRenderer: TentacledMenuRenderer; } export interface TentacledMenuRenderer { items: TentacledItem[]; trackingParams: string; accessibility: AccessibilityPauseDataClass; } export interface TentacledItem { menuNavigationItemRenderer?: MenuItemRenderer; menuServiceItemRenderer?: MenuItemRenderer; toggleMenuServiceItemRenderer?: TentacledToggleMenuServiceItemRenderer; } export interface TentacledToggleMenuServiceItemRenderer { defaultText: Subtitle; defaultIcon: DefaultIconClass; defaultServiceEndpoint: FluffyDefaultServiceEndpoint; toggledText: Subtitle; toggledIcon: DefaultIconClass; toggledServiceEndpoint: FluffyToggledServiceEndpoint; trackingParams: string; } export interface FluffyDefaultServiceEndpoint { clickTrackingParams: string; feedbackEndpoint?: FeedbackEndpoint; likeEndpoint?: TentacledLikeEndpoint; } export interface TentacledLikeEndpoint { status: Kqp1PyPRBzA; target: AddToPlaylistEndpoint; actions?: LikeEndpointAction[]; } export interface FluffyToggledServiceEndpoint { clickTrackingParams: string; feedbackEndpoint?: FeedbackEndpoint; likeEndpoint?: StickyLikeEndpoint; } export interface StickyLikeEndpoint { status: Kqp1PyPRBzA; target: AddToPlaylistEndpoint; } export interface PurpleOverlay { musicItemThumbnailOverlayRenderer: PurpleMusicItemThumbnailOverlayRenderer; } export interface PurpleMusicItemThumbnailOverlayRenderer { background: Background; content: TentacledContent; contentPosition: string; displayStyle: string; } export interface TentacledContent { musicPlayButtonRenderer: FluffyMusicPlayButtonRenderer; } export interface FluffyMusicPlayButtonRenderer { playNavigationEndpoint: PlayNavigationEndpoint; trackingParams: string; playIcon: DefaultIconClass; pauseIcon: DefaultIconClass; iconColor: number; backgroundColor: number; activeBackgroundColor: number; loadingIndicatorColor: number; playingIcon: DefaultIconClass; iconLoadingColor: number; activeScaleFactor: number; buttonSize: string; rippleTarget: string; accessibilityPlayData: AccessibilityPauseDataClass; accessibilityPauseData: AccessibilityPauseDataClass; } export interface PlayNavigationEndpoint { clickTrackingParams: string; watchEndpoint?: OnTapWatchEndpoint; watchPlaylistEndpoint?: WatchPlaylistEndpoint; } export interface ShelfDivider { musicShelfDividerRenderer: MusicShelfDividerRenderer; } export interface MusicShelfDividerRenderer { hidden: boolean; } export interface Continuation { reloadContinuationData: ReloadContinuationData; } export interface ReloadContinuationData { continuation: string; clickTrackingParams: string; } export interface SectionListRendererHeader { chipCloudRenderer: ChipCloudRenderer; } export interface ChipCloudRenderer { chips: ChipCloudRendererChip[]; collapsedRowCount: number; trackingParams: string; horizontalScrollable: boolean; } export interface ChipCloudRendererChip { chipCloudChipRenderer: PurpleChipCloudChipRenderer; } export interface PurpleChipCloudChipRenderer { style: ChipCloudChipRendererStyle; text: Subtitle; navigationEndpoint: BottomEndpointClass; trackingParams: string; accessibilityData: AccessibilityPauseDataClass; isSelected: boolean; uniqueId: string; } export interface ChipCloudChipRendererStyle { styleType: string; } export interface ResponseResponseContext { serviceTrackingParams: ServiceTrackingParam[]; maxAgeSeconds: number; } export interface ServiceTrackingParam { service: string; params: Param[]; } export interface Param { key: string; value: string; } export interface PlayerPageInfo { open: boolean; triggerElement: TriggerElement; } export interface Player { adPlaying: boolean; captionsAvailable: boolean; captionsVisible: boolean; fullscreened: boolean; miniPlayerEnabled: boolean; muted: boolean; nerdStatsVisible: boolean; playerResponse: PlayerResponse; playerTriggerInfo: PlayerTriggerInfo; preloadedEndpoint_: null; volume: number; playbackRate: number; } export interface PlayerResponse { responseContext: ResponseResponseContext; playabilityStatus: PlayabilityStatus; streamingData: StreamingData; heartbeatParams: HeartbeatParams; playbackTracking: PlaybackTracking; captions: Captions; videoDetails: PlayerResponseVideoDetails; annotations: Annotation[]; playerConfig: PlayerConfig; storyboards: Storyboards; microformat: Microformat; trackingParams: string; attestation: Attestation; endscreen: Endscreen; adBreakHeartbeatParams: string; } export interface Annotation { playerAnnotationsExpandedRenderer: PlayerAnnotationsExpandedRenderer; } export interface PlayerAnnotationsExpandedRenderer { featuredChannel: FeaturedChannel; allowSwipeDismiss: boolean; } export interface FeaturedChannel { startTimeMs: string; endTimeMs: string; watermark: ThumbnailDetailsClass; trackingParams: string; navigationEndpoint: FeaturedChannelNavigationEndpoint; channelName: string; subscribeButton: SubscribeButtonClass; } export interface FeaturedChannelNavigationEndpoint { clickTrackingParams: string; browseEndpoint: FluffyBrowseEndpoint; } export interface FluffyBrowseEndpoint { browseId: string; } export interface SubscribeButtonClass { subscribeButtonRenderer: SubscribeButtonRenderer; } export interface SubscribeButtonRenderer { buttonText: Subtitle; subscribed: boolean; enabled: boolean; type: string; channelId: string; showPreferences: boolean; subscribedButtonText: Subtitle; unsubscribedButtonText: Subtitle; trackingParams: string; unsubscribeButtonText: Subtitle; serviceEndpoints: SubscribeButtonRendererServiceEndpoint[]; } export interface SubscribeButtonRendererServiceEndpoint { clickTrackingParams: string; subscribeEndpoint?: SubscribeEndpoint; signalServiceEndpoint?: SignalServiceEndpoint; } export interface SignalServiceEndpoint { signal: string; actions: SignalServiceEndpointAction[]; } export interface SignalServiceEndpointAction { clickTrackingParams: string; openPopupAction: OpenPopupAction; } export interface OpenPopupAction { popup: Popup; popupType: string; } export interface Popup { confirmDialogRenderer: ConfirmDialogRenderer; } export interface ConfirmDialogRenderer { trackingParams: string; dialogMessages: Subtitle[]; confirmButton: CancelButtonClass; cancelButton: CancelButtonClass; } export interface CancelButtonClass { buttonRenderer: CancelButtonButtonRenderer; } export interface CancelButtonButtonRenderer { style: string; isDisabled: boolean; text: Subtitle; accessibility?: AccessibilityDataAccessibility; trackingParams: string; serviceEndpoint?: UnsubscribeCommand; } export interface UnsubscribeCommand { clickTrackingParams: string; unsubscribeEndpoint: SubscribeEndpoint; } export interface SubscribeEndpoint { channelIds: string[]; params: string; } export interface Attestation { playerAttestationRenderer: PlayerAttestationRenderer; } export interface PlayerAttestationRenderer { challenge: string; botguardData: BotguardData; } export interface BotguardData { program: string; interpreterSafeUrl: InterpreterSafeURL; serverEnvironment: number; } export interface InterpreterSafeURL { privateDoNotAccessOrElseTrustedResourceUrlWrappedValue: string; } export interface Captions { playerCaptionsTracklistRenderer: PlayerCaptionsTracklistRenderer; } export interface PlayerCaptionsTracklistRenderer { captionTracks: CaptionTrack[]; audioTracks: AudioTrack[]; translationLanguages: TranslationLanguage[]; defaultAudioTrackIndex: number; } export interface AudioTrack { captionTrackIndices: number[]; defaultCaptionTrackIndex: number; visibility: string; hasDefaultTrack: boolean; captionsInitialState: string; } export interface CaptionTrack { baseUrl: string; name: Subtitle; vssId: string; languageCode: string; kind?: string; isTranslatable: boolean; } export interface TranslationLanguage { languageCode: string; languageName: Subtitle; } export interface Endscreen { endscreenRenderer: EndscreenRenderer; } export interface EndscreenRenderer { elements: Element[]; startMs: string; trackingParams: string; } export interface Element { endscreenElementRenderer: EndscreenElementRenderer; } export interface EndscreenElementRenderer { style: string; image: ThumbnailDetailsClass; icon?: EndscreenElementRendererIcon; left: number; width: number; top: number; aspectRatio: number; startMs: string; endMs: string; title: LengthText; metadata: Subtitle; callToAction?: Subtitle; dismiss?: Subtitle; endpoint: EndscreenElementRendererEndpoint; hovercardButton?: SubscribeButtonClass; trackingParams: string; isSubscribe?: boolean; useClassicSubscribeButton?: boolean; id: string; thumbnailOverlays?: ThumbnailOverlay[]; } export interface EndscreenElementRendererEndpoint { clickTrackingParams: string; browseEndpoint?: FluffyBrowseEndpoint; commandMetadata?: Entities; watchEndpoint?: Target; } export interface EndscreenElementRendererIcon { thumbnails: URLEndpoint[]; } export interface URLEndpoint { url: string; } export interface ThumbnailOverlay { thumbnailOverlayTimeStatusRenderer: ThumbnailOverlayTimeStatusRenderer; } export interface ThumbnailOverlayTimeStatusRenderer { text: LengthText; style: string; } export interface LengthText { runs: ShortBylineTextRun[]; accessibility: AccessibilityPauseDataClass; } export interface HeartbeatParams { heartbeatToken: string; intervalMilliseconds: string; maxRetries: string; drmSessionId: string; softFailOnError: boolean; heartbeatServerData: string; } export interface Microformat { microformatDataRenderer: MicroformatDataRenderer; } export interface MicroformatDataRenderer { urlCanonical: string; title: string; description: string; thumbnail: ThumbnailDetailsClass; siteName: string; appName: string; androidPackage: string; iosAppStoreId: string; iosAppArguments: string; ogType: string; urlApplinksIos: string; urlApplinksAndroid: string; urlTwitterIos: string; urlTwitterAndroid: string; twitterCardType: string; twitterSiteHandle: string; schemaDotOrgType: string; noindex: boolean; unlisted: boolean; paid: boolean; familySafe: boolean; tags: string[]; availableCountries: string[]; pageOwnerDetails: PageOwnerDetails; videoDetails: MicroformatDataRendererVideoDetails; linkAlternates: LinkAlternate[]; viewCount: string; publishDate: Date; category: string; uploadDate: Date; } export interface LinkAlternate { hrefUrl: string; title?: string; alternateType?: string; } export interface PageOwnerDetails { name: string; externalChannelId: string; youtubeProfileUrl: string; } export interface MicroformatDataRendererVideoDetails { externalVideoId: string; durationSeconds: string; durationIso8601: string; } export interface PlayabilityStatus { status: string; playableInEmbed: boolean; audioOnlyPlayability: AudioOnlyPlayability; miniplayer: Miniplayer; contextParams: string; } export interface AudioOnlyPlayability { audioOnlyPlayabilityRenderer: AudioOnlyPlayabilityRenderer; } export interface AudioOnlyPlayabilityRenderer { trackingParams: string; audioOnlyAvailability: string; } export interface Miniplayer { miniplayerRenderer: MiniplayerRenderer; } export interface MiniplayerRenderer { playbackMode: string; } export interface PlaybackTracking { videostatsPlaybackUrl: PtrackingURLClass; videostatsDelayplayUrl: AtrURLClass; videostatsWatchtimeUrl: PtrackingURLClass; ptrackingUrl: PtrackingURLClass; qoeUrl: PtrackingURLClass; atrUrl: AtrURLClass; videostatsScheduledFlushWalltimeSeconds: number[]; videostatsDefaultFlushIntervalSeconds: number; googleRemarketingUrl: AtrURLClass; } export interface AtrURLClass { baseUrl: string; elapsedMediaTimeSeconds: number; headers: HeaderElement[]; } export interface HeaderElement { headerType: HeaderType; } export enum HeaderType { PlusPageID = 'PLUS_PAGE_ID', UserAuth = 'USER_AUTH', VisitorID = 'VISITOR_ID', } export interface PtrackingURLClass { baseUrl: string; headers: HeaderElement[]; } export interface PlayerConfig { audioConfig: AudioConfig; streamSelectionConfig: StreamSelectionConfig; mediaCommonConfig: MediaCommonConfig; webPlayerConfig: WebPlayerConfig; } export interface AudioConfig { loudnessDb: number; perceptualLoudnessDb: number; enablePerFormatLoudness: boolean; } export interface MediaCommonConfig { dynamicReadaheadConfig: DynamicReadaheadConfig; } export interface DynamicReadaheadConfig { maxReadAheadMediaTimeMs: number; minReadAheadMediaTimeMs: number; readAheadGrowthRateMs: number; } export interface StreamSelectionConfig { maxBitrate: string; } export interface WebPlayerConfig { useCobaltTvosDash: boolean; webPlayerActionsPorting: WebPlayerActionsPorting; gatewayExperimentGroup: string; } export interface WebPlayerActionsPorting { subscribeCommand: SubscribeCommand; unsubscribeCommand: UnsubscribeCommand; addToWatchLaterCommand: AddToWatchLaterCommand; removeFromWatchLaterCommand: RemoveFromWatchLaterCommand; } export interface AddToWatchLaterCommand { clickTrackingParams: string; playlistEditEndpoint: AddToWatchLaterCommandPlaylistEditEndpoint; } export interface AddToWatchLaterCommandPlaylistEditEndpoint { playlistId: string; actions: PurpleAction[]; } export interface PurpleAction { addedVideoId: string; action: string; } export interface RemoveFromWatchLaterCommand { clickTrackingParams: string; playlistEditEndpoint: RemoveFromWatchLaterCommandPlaylistEditEndpoint; } export interface RemoveFromWatchLaterCommandPlaylistEditEndpoint { playlistId: string; actions: FluffyAction[]; } export interface FluffyAction { action: string; removedVideoId: string; } export interface SubscribeCommand { clickTrackingParams: string; subscribeEndpoint: SubscribeEndpoint; } export interface Storyboards { playerStoryboardSpecRenderer: PlayerStoryboardSpecRenderer; } export interface PlayerStoryboardSpecRenderer { spec: string; recommendedLevel: number; } export interface StreamingData { expiresInSeconds: string; formats: Format[]; adaptiveFormats: AdaptiveFormat[]; probeUrl: string; } export interface AdaptiveFormat { itag: number; mimeType: string; bitrate: number; width?: number; height?: number; initRange: Range; indexRange: Range; lastModified: string; contentLength: string; quality: string; fps?: number; qualityLabel?: string; projectionType: ProjectionType; averageBitrate: number; approxDurationMs: string; signatureCipher: string; colorInfo?: ColorInfo; highReplication?: boolean; audioQuality?: string; audioSampleRate?: string; audioChannels?: number; loudnessDb?: number; } export interface ColorInfo { primaries: string; transferCharacteristics: string; matrixCoefficients: string; } export interface Range { start: string; end: string; } export enum ProjectionType { Rectangular = 'RECTANGULAR', } export interface Format { itag: number; mimeType: string; bitrate: number; width: number; height: number; lastModified: string; quality: string; fps: number; qualityLabel: string; projectionType: ProjectionType; audioQuality: string; approxDurationMs: string; audioSampleRate: string; audioChannels: number; signatureCipher: string; } export interface PlayerResponseVideoDetails { videoId: string; title: string; lengthSeconds: string; channelId: string; isOwnerViewing: boolean; isCrawlable: boolean; thumbnail: ThumbnailDetailsClass; allowRatings: boolean; viewCount: string; author: string; isPrivate: boolean; isUnpluggedCorpus: boolean; musicVideoType: MusicVideoType; isLiveContent: boolean; elapsedSeconds: number; isPaused: boolean; } export interface PlayerTriggerInfo { screenLayer: number; } export interface PlayerPage { playerOverlay: PlayerOverlay; playerPageTabs: PlayerPageTabElement[]; playerPageTabsContent: Entities; playerPageTabSelectedIndex: number; playerPageWatchNextAutomixParams: string; playerPageWatchNextContinuationParams: string; playerPageWatchNextMetadata: null; playerPageWatchNextResponse: PlayerPageWatchNextResponse; watchNextOverlay: null; } export interface PlayerOverlay { playerOverlayRenderer: PlayerOverlayRenderer; } export interface PlayerOverlayRenderer { actions: PlayerOverlayRendererAction[]; browserMediaSession: BrowserMediaSession; } export interface PlayerOverlayRendererAction { likeButtonRenderer: LikeButtonRenderer; } export interface LikeButtonRenderer { target: Target; likeStatus: Kqp1PyPRBzA; trackingParams: string; likesAllowed: boolean; serviceEndpoints: ServiceEndpoint[]; } export interface ServiceEndpoint { clickTrackingParams: string; likeEndpoint: ServiceEndpointLikeEndpoint; } export interface ServiceEndpointLikeEndpoint { status: Kqp1PyPRBzA; target: Target; likeParams?: LikeParams; dislikeParams?: LikeParams; removeLikeParams?: LikeParams; } export enum LikeParams { Oai3D = 'OAI%3D', } export interface BrowserMediaSession { browserMediaSessionRenderer: BrowserMediaSessionRenderer; } export interface BrowserMediaSessionRenderer { thumbnailDetails: ThumbnailDetailsClass; } export interface PlayerPageTabElement { tabRenderer: PlayerPageTabTabRenderer; } export interface PlayerPageTabTabRenderer { title: string; content?: StickyContent; trackingParams: string; endpoint?: RunEndpoint; unselectable?: boolean; } export interface StickyContent { musicQueueRenderer: MusicQueueRenderer; } export interface MusicQueueRenderer { hack: boolean; } export interface PlayerPageWatchNextResponse { responseContext: PlayerPageWatchNextResponseResponseContext; contents: PlayerPageWatchNextResponseContents; currentVideoEndpoint: CurrentVideoEndpoint; trackingParams: string; playerOverlays: PlayerOverlay; videoReporting: VideoReporting; } export interface PlayerPageWatchNextResponseContents { singleColumnMusicWatchNextResultsRenderer: SingleColumnMusicWatchNextResultsRenderer; } export interface SingleColumnMusicWatchNextResultsRenderer { tabbedRenderer: TabbedRenderer; } export interface TabbedRenderer { watchNextTabbedResultsRenderer: WatchNextTabbedResultsRenderer; } export interface WatchNextTabbedResultsRenderer { tabs: PlayerPageTabElement[]; } export interface CurrentVideoEndpoint { clickTrackingParams: string; watchEndpoint: CurrentVideoEndpointWatchEndpoint; } export interface CurrentVideoEndpointWatchEndpoint { videoId: string; playlistId: PlaylistID; index: number; playlistSetVideoId: string; loggingContext: LoggingContext; } export enum PlaylistID { RDAMVMrkaNKAvksDE = 'RDAMVMrkaNKAvksDE', } export interface PlayerPageWatchNextResponseResponseContext { serviceTrackingParams: ServiceTrackingParam[]; } export interface VideoReporting { reportFormModalRenderer: ReportFormModalRenderer; } export interface ReportFormModalRenderer { optionsSupportedRenderers: OptionsSupportedRenderers; trackingParams: string; title: Subtitle; submitButton: CancelButtonClass; cancelButton: CancelButtonClass; footer: Footer; } export interface Footer { runs: FooterRun[]; } export interface FooterRun { text: string; navigationEndpoint?: FluffyNavigationEndpoint; } export interface FluffyNavigationEndpoint { clickTrackingParams: string; urlEndpoint: URLEndpoint; } export interface OptionsSupportedRenderers { optionsRenderer: OptionsRenderer; } export interface OptionsRenderer { items: OptionsRendererItem[]; trackingParams: string; } export interface OptionsRendererItem { optionSelectableItemRenderer: OptionSelectableItemRenderer; } export interface OptionSelectableItemRenderer { text: Subtitle; trackingParams: string; submitEndpoint: SubmitEndpoint; } export interface SubmitEndpoint { clickTrackingParams: string; flagEndpoint: FlagEndpoint; } export interface FlagEndpoint { flagAction: string; } export interface Queue { automixItems: unknown[]; autoplay: boolean; hasShownAutoplay: boolean; hasUserChangedDefaultAutoplayMode: boolean; header: QueueHeader; impressedVideoIds: Entities; isFetchingChipSteer: boolean; isGenerating: boolean; isInfinite: boolean; isPrefetchingContinuations: boolean; isRaarEnabled: boolean; isRaarSkip: boolean; items: QueueItem[]; nextQueueItemId: number; playbackContentMode: string; queueContextParams: string; repeatMode: string; responsiveSignals: ResponsiveSignals; selectedItemIndex: number; shuffleEnabled: boolean; shuffleEndpoints: null; steeringChips: SteeringChips; watchNextType: null; } export interface QueueHeader { title: Subtitle; subtitle: Subtitle; buttons: HeaderButton[]; trackingParams: string; } export interface HeaderButton { chipCloudChipRenderer: ButtonChipCloudChipRenderer; } export interface ButtonChipCloudChipRenderer { style: ChipCloudChipRendererStyle; text: Subtitle; navigationEndpoint: TentacledNavigationEndpoint; trackingParams: string; icon: DefaultIconClass; accessibilityData: AccessibilityPauseDataClass; isSelected: boolean; uniqueId: string; } export interface TentacledNavigationEndpoint { clickTrackingParams: string; saveQueueToPlaylistCommand: Entities; } export interface QueueItem { playlistPanelVideoWrapperRenderer?: PlaylistPanelVideoWrapperRenderer; playlistPanelVideoRenderer?: ItemPlaylistPanelVideoRenderer; } export interface ItemPlaylistPanelVideoRenderer { title: Subtitle; longBylineText: LongBylineText; thumbnail: ThumbnailDetailsClass; lengthText: LengthText; selected: boolean; navigationEndpoint: PlaylistPanelVideoRendererNavigationEndpoint; videoId: string; shortBylineText: Subtitle; trackingParams: string; menu: TentacledMenu; playlistSetVideoId?: string; canReorder: boolean; } export interface TentacledMenu { menuRenderer: StickyMenuRenderer; } export interface StickyMenuRenderer { items: StickyItem[]; trackingParams: string; accessibility: AccessibilityPauseDataClass; } export interface StickyItem { menuNavigationItemRenderer?: MenuItemRenderer; menuServiceItemRenderer?: MenuItemRenderer; toggleMenuServiceItemRenderer?: StickyToggleMenuServiceItemRenderer; } export interface StickyToggleMenuServiceItemRenderer { defaultText: Subtitle; defaultIcon: DefaultIconClass; defaultServiceEndpoint: ServiceEndpoint; toggledText: Subtitle; toggledIcon: DefaultIconClass; toggledServiceEndpoint: ServiceEndpoint; trackingParams: string; } export interface PlaylistPanelVideoRendererNavigationEndpoint { clickTrackingParams: string; watchEndpoint: FluffyWatchEndpoint; } export interface FluffyWatchEndpoint { videoId: string; playlistId?: PlaylistID; index: number; params: FluffyParams; playerParams?: PlayerParams; playlistSetVideoId?: string; loggingContext?: LoggingContext; watchEndpointMusicSupportedConfigs: FluffyWatchEndpointMusicSupportedConfigs; } export enum FluffyParams { OAHyAQIIAQ3D3D = 'OAHyAQIIAQ%3D%3D', } export enum PlayerParams { The8Aub = '8AUB', } export interface FluffyWatchEndpointMusicSupportedConfigs { watchEndpointMusicConfig: FluffyWatchEndpointMusicConfig; } export interface FluffyWatchEndpointMusicConfig { hasPersistentPlaylistPanel: boolean; musicVideoType: MusicVideoType; } export interface PlaylistPanelVideoWrapperRenderer { primaryRenderer: PrimaryRenderer; counterpart: Counterpart[]; } export interface Counterpart { counterpartRenderer: CounterpartRenderer; segmentMap: SegmentMap; } export interface CounterpartRenderer { playlistPanelVideoRenderer: CounterpartRendererPlaylistPanelVideoRenderer; } export interface CounterpartRendererPlaylistPanelVideoRenderer { title: Subtitle; longBylineText: LongBylineText; thumbnail: ThumbnailDetailsClass; lengthText: LengthText; selected: boolean; navigationEndpoint: PlaylistPanelVideoRendererNavigationEndpoint; videoId: string; shortBylineText: Subtitle; trackingParams: string; menu: StickyMenu; playlistSetVideoId?: string; canReorder: boolean; } export interface StickyMenu { menuRenderer: IndigoMenuRenderer; } export interface IndigoMenuRenderer { items: IndigoItem[]; trackingParams: string; accessibility: AccessibilityPauseDataClass; } export interface IndigoItem { menuNavigationItemRenderer?: MenuItemRenderer; menuServiceItemRenderer?: MenuItemRenderer; toggleMenuServiceItemRenderer?: IndigoToggleMenuServiceItemRenderer; } export interface IndigoToggleMenuServiceItemRenderer { defaultText: Subtitle; defaultIcon: DefaultIconClass; defaultServiceEndpoint: FluffyServiceEndpoint; toggledText: Subtitle; toggledIcon: DefaultIconClass; toggledServiceEndpoint: FluffyServiceEndpoint; trackingParams: string; } export interface FluffyServiceEndpoint { clickTrackingParams: string; likeEndpoint?: ServiceEndpointLikeEndpoint; feedbackEndpoint?: FeedbackEndpoint; } export interface SegmentMap { segment: Segment[]; } export interface Segment { primaryVideoStartTimeMilliseconds: string; counterpartVideoStartTimeMilliseconds: string; durationMilliseconds: string; } export interface PrimaryRenderer { playlistPanelVideoRenderer: ItemPlaylistPanelVideoRenderer; } export interface ResponsiveSignals { videoInteraction: VideoInteraction[]; } export interface VideoInteraction { queueImpress?: Entities; videoId: string; queueIndex: number; playbackSkip?: Entities; } export interface SteeringChips { chips: SteeringChipsChip[]; trackingParams: string; } export interface SteeringChipsChip { chipCloudChipRenderer: FluffyChipCloudChipRenderer; } export interface FluffyChipCloudChipRenderer { text: Subtitle; navigationEndpoint: StickyNavigationEndpoint; trackingParams: string; accessibilityData: AccessibilityPauseDataClass; isSelected: boolean; uniqueId: string; } export interface StickyNavigationEndpoint { clickTrackingParams: string; queueUpdateCommand: QueueUpdateCommand; } export interface QueueUpdateCommand { queueUpdateSection: QueueUpdateSection; fetchContentsCommand: FetchContentsCommand; dedupeAgainstLocalQueue: boolean; } export interface FetchContentsCommand { clickTrackingParams: string; watchEndpoint: FetchContentsCommandWatchEndpoint; } export interface FetchContentsCommandWatchEndpoint { playlistId: string; params: string; loggingContext: LoggingContext; index: number; } export enum QueueUpdateSection { QueueUpdateSectionQueue = 'QUEUE_UPDATE_SECTION_QUEUE', } export interface SubscribeStatus { subscribeStatusByChannelId: Entities; } export interface ToggleStates { feedbackToggleStates: Entities; } export interface UI { viewportInfo: ViewportInfo; isGuideCollapsed: boolean; } export interface ViewportInfo { size: number; fluid: boolean; } export interface Uploads { fileUploads: unknown[]; }