youtube.abuseReports.insert

valid {
    input.Body.abuseTypes[_].id == STRING
    input.Body.description == STRING
    input.Body.relatedEntities[_].entity.id == STRING
    input.Body.relatedEntities[_].entity.typeId == STRING
    input.Body.relatedEntities[_].entity.url == STRING
    input.Body.subject.id == STRING
    input.Body.subject.typeId == STRING
    input.Body.subject.url == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.activities.list

valid {
    input.Qs.channelId == STRING
    input.Qs.home == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.mine == BOOLEAN
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.Qs.publishedAfter == STRING
    input.Qs.publishedBefore == STRING
    input.Qs.regionCode == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.captions.delete

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOf == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.captions.download

valid {
    input.ReqMap.id == STRING
    input.Qs.onBehalfOf == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.tfmt == STRING
    input.Qs.tlang == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.captions.insert

enum_CaptionSnippetAudioTrackType := [ "unknown", "primary", "commentary", "descriptive" ]
enum_CaptionSnippetFailureReason := [ "unknownFormat", "unsupportedFormat", "processingFailed" ]
enum_CaptionSnippetStatus := [ "serving", "syncing", "failed" ]
enum_CaptionSnippetTrackKind := [ "standard", "ASR", "forced" ]

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.audioTrackType == enum_CaptionSnippetAudioTrackType[_]
    input.Body.snippet.failureReason == enum_CaptionSnippetFailureReason[_]
    input.Body.snippet.isAutoSynced == BOOLEAN
    input.Body.snippet.isCC == BOOLEAN
    input.Body.snippet.isDraft == BOOLEAN
    input.Body.snippet.isEasyReader == BOOLEAN
    input.Body.snippet.isLarge == BOOLEAN
    input.Body.snippet.language == STRING
    input.Body.snippet.lastUpdated == STRING
    input.Body.snippet.name == STRING
    input.Body.snippet.status == enum_CaptionSnippetStatus[_]
    input.Body.snippet.trackKind == enum_CaptionSnippetTrackKind[_]
    input.Body.snippet.videoId == STRING
    input.Qs.onBehalfOf == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.Qs.sync == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

youtube.captions.list

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOf == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.Qs.videoId == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.captions.update

enum_CaptionSnippetAudioTrackType := [ "unknown", "primary", "commentary", "descriptive" ]
enum_CaptionSnippetFailureReason := [ "unknownFormat", "unsupportedFormat", "processingFailed" ]
enum_CaptionSnippetStatus := [ "serving", "syncing", "failed" ]
enum_CaptionSnippetTrackKind := [ "standard", "ASR", "forced" ]

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.audioTrackType == enum_CaptionSnippetAudioTrackType[_]
    input.Body.snippet.failureReason == enum_CaptionSnippetFailureReason[_]
    input.Body.snippet.isAutoSynced == BOOLEAN
    input.Body.snippet.isCC == BOOLEAN
    input.Body.snippet.isDraft == BOOLEAN
    input.Body.snippet.isEasyReader == BOOLEAN
    input.Body.snippet.isLarge == BOOLEAN
    input.Body.snippet.language == STRING
    input.Body.snippet.lastUpdated == STRING
    input.Body.snippet.name == STRING
    input.Body.snippet.status == enum_CaptionSnippetStatus[_]
    input.Body.snippet.trackKind == enum_CaptionSnippetTrackKind[_]
    input.Body.snippet.videoId == STRING
    input.Qs.onBehalfOf == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.Qs.sync == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

youtube.channelBanners.insert

valid {
    input.Body.etag == STRING
    input.Body.kind == STRING
    input.Body.url == STRING
    input.Qs.channelId == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.channelSections.delete

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.channelSections.insert

enum_ChannelSectionSnippetStyle := [ "channelsectionStyleUnspecified", "horizontalRow", "verticalList" ]
enum_ChannelSectionSnippetType := [ "channelsectionTypeUndefined", "singlePlaylist", "multiplePlaylists", "popularUploads", "recentUploads", "likes", "allPlaylists", "likedPlaylists", "recentPosts", "recentActivity", "liveEvents", "upcomingEvents", "completedEvents", "multipleChannels", "postedVideos", "postedPlaylists", "subscriptions" ]

valid {
    input.Body.contentDetails.channels[_] == STRING
    input.Body.contentDetails.playlists[_] == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.localizations.STRING.title == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.defaultLanguage == STRING
    input.Body.snippet.localized.title == STRING
    input.Body.snippet.position == INTEGER
    input.Body.snippet.style == enum_ChannelSectionSnippetStyle[_]
    input.Body.snippet.title == STRING
    input.Body.snippet.type == enum_ChannelSectionSnippetType[_]
    input.Body.targeting.countries[_] == STRING
    input.Body.targeting.languages[_] == STRING
    input.Body.targeting.regions[_] == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.channelSections.list

valid {
    input.Qs.channelId == STRING
    input.Qs.hl == STRING
    input.Qs.id == STRING
    input.Qs.mine == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.channelSections.update

enum_ChannelSectionSnippetStyle := [ "channelsectionStyleUnspecified", "horizontalRow", "verticalList" ]
enum_ChannelSectionSnippetType := [ "channelsectionTypeUndefined", "singlePlaylist", "multiplePlaylists", "popularUploads", "recentUploads", "likes", "allPlaylists", "likedPlaylists", "recentPosts", "recentActivity", "liveEvents", "upcomingEvents", "completedEvents", "multipleChannels", "postedVideos", "postedPlaylists", "subscriptions" ]

valid {
    input.Body.contentDetails.channels[_] == STRING
    input.Body.contentDetails.playlists[_] == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.localizations.STRING.title == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.defaultLanguage == STRING
    input.Body.snippet.localized.title == STRING
    input.Body.snippet.position == INTEGER
    input.Body.snippet.style == enum_ChannelSectionSnippetStyle[_]
    input.Body.snippet.title == STRING
    input.Body.snippet.type == enum_ChannelSectionSnippetType[_]
    input.Body.targeting.countries[_] == STRING
    input.Body.targeting.languages[_] == STRING
    input.Body.targeting.regions[_] == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.channels.list

valid {
    input.Qs.categoryId == STRING
    input.Qs.forHandle == STRING
    input.Qs.forUsername == STRING
    input.Qs.hl == STRING
    input.Qs.id == STRING
    input.Qs.managedByMe == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.mine == BOOLEAN
    input.Qs.mySubscribers == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.channels.update

enum_ChannelConversionPingContext := [ "subscribe", "unsubscribe", "cview" ]
enum_ChannelStatusLongUploadsStatus := [ "longUploadsUnspecified", "allowed", "eligible", "disallowed" ]
enum_ChannelStatusPrivacyStatus := [ "public", "unlisted", "private" ]

valid {
    input.Body.auditDetails.communityGuidelinesGoodStanding == BOOLEAN
    input.Body.auditDetails.contentIdClaimsGoodStanding == BOOLEAN
    input.Body.auditDetails.copyrightStrikesGoodStanding == BOOLEAN
    input.Body.brandingSettings.channel.country == STRING
    input.Body.brandingSettings.channel.defaultLanguage == STRING
    input.Body.brandingSettings.channel.defaultTab == STRING
    input.Body.brandingSettings.channel.description == STRING
    input.Body.brandingSettings.channel.featuredChannelsTitle == STRING
    input.Body.brandingSettings.channel.featuredChannelsUrls[_] == STRING
    input.Body.brandingSettings.channel.keywords == STRING
    input.Body.brandingSettings.channel.moderateComments == BOOLEAN
    input.Body.brandingSettings.channel.profileColor == STRING
    input.Body.brandingSettings.channel.showBrowseView == BOOLEAN
    input.Body.brandingSettings.channel.showRelatedChannels == BOOLEAN
    input.Body.brandingSettings.channel.title == STRING
    input.Body.brandingSettings.channel.trackingAnalyticsAccountId == STRING
    input.Body.brandingSettings.channel.unsubscribedTrailer == STRING
    input.Body.brandingSettings.hints[_].property == STRING
    input.Body.brandingSettings.hints[_].value == STRING
    input.Body.brandingSettings.image.backgroundImageUrl.default == STRING
    input.Body.brandingSettings.image.backgroundImageUrl.defaultLanguage.value == STRING
    input.Body.brandingSettings.image.backgroundImageUrl.localized[_].language == STRING
    input.Body.brandingSettings.image.backgroundImageUrl.localized[_].value == STRING
    input.Body.brandingSettings.image.bannerExternalUrl == STRING
    input.Body.brandingSettings.image.bannerImageUrl == STRING
    input.Body.brandingSettings.image.bannerMobileExtraHdImageUrl == STRING
    input.Body.brandingSettings.image.bannerMobileHdImageUrl == STRING
    input.Body.brandingSettings.image.bannerMobileImageUrl == STRING
    input.Body.brandingSettings.image.bannerMobileLowImageUrl == STRING
    input.Body.brandingSettings.image.bannerMobileMediumHdImageUrl == STRING
    input.Body.brandingSettings.image.bannerTabletExtraHdImageUrl == STRING
    input.Body.brandingSettings.image.bannerTabletHdImageUrl == STRING
    input.Body.brandingSettings.image.bannerTabletImageUrl == STRING
    input.Body.brandingSettings.image.bannerTabletLowImageUrl == STRING
    input.Body.brandingSettings.image.bannerTvHighImageUrl == STRING
    input.Body.brandingSettings.image.bannerTvImageUrl == STRING
    input.Body.brandingSettings.image.bannerTvLowImageUrl == STRING
    input.Body.brandingSettings.image.bannerTvMediumImageUrl == STRING
    input.Body.brandingSettings.image.largeBrandedBannerImageImapScript.default == STRING
    input.Body.brandingSettings.image.largeBrandedBannerImageImapScript.defaultLanguage.value == STRING
    input.Body.brandingSettings.image.largeBrandedBannerImageImapScript.localized[_].language == STRING
    input.Body.brandingSettings.image.largeBrandedBannerImageImapScript.localized[_].value == STRING
    input.Body.brandingSettings.image.largeBrandedBannerImageUrl.default == STRING
    input.Body.brandingSettings.image.largeBrandedBannerImageUrl.defaultLanguage.value == STRING
    input.Body.brandingSettings.image.largeBrandedBannerImageUrl.localized[_].language == STRING
    input.Body.brandingSettings.image.largeBrandedBannerImageUrl.localized[_].value == STRING
    input.Body.brandingSettings.image.smallBrandedBannerImageImapScript.default == STRING
    input.Body.brandingSettings.image.smallBrandedBannerImageImapScript.defaultLanguage.value == STRING
    input.Body.brandingSettings.image.smallBrandedBannerImageImapScript.localized[_].language == STRING
    input.Body.brandingSettings.image.smallBrandedBannerImageImapScript.localized[_].value == STRING
    input.Body.brandingSettings.image.smallBrandedBannerImageUrl.default == STRING
    input.Body.brandingSettings.image.smallBrandedBannerImageUrl.defaultLanguage.value == STRING
    input.Body.brandingSettings.image.smallBrandedBannerImageUrl.localized[_].language == STRING
    input.Body.brandingSettings.image.smallBrandedBannerImageUrl.localized[_].value == STRING
    input.Body.brandingSettings.image.trackingImageUrl == STRING
    input.Body.brandingSettings.image.watchIconImageUrl == STRING
    input.Body.brandingSettings.watch.backgroundColor == STRING
    input.Body.brandingSettings.watch.featuredPlaylistId == STRING
    input.Body.brandingSettings.watch.textColor == STRING
    input.Body.contentDetails.relatedPlaylists.favorites == STRING
    input.Body.contentDetails.relatedPlaylists.likes == STRING
    input.Body.contentDetails.relatedPlaylists.uploads == STRING
    input.Body.contentDetails.relatedPlaylists.watchHistory == STRING
    input.Body.contentDetails.relatedPlaylists.watchLater == STRING
    input.Body.contentOwnerDetails.contentOwner == STRING
    input.Body.contentOwnerDetails.timeLinked == STRING
    input.Body.conversionPings.pings[_].context == enum_ChannelConversionPingContext[_]
    input.Body.conversionPings.pings[_].conversionUrl == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.localizations.STRING.description == STRING
    input.Body.localizations.STRING.title == STRING
    input.Body.snippet.country == STRING
    input.Body.snippet.customUrl == STRING
    input.Body.snippet.defaultLanguage == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.localized.description == STRING
    input.Body.snippet.localized.title == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.statistics.commentCount == STRING
    input.Body.statistics.hiddenSubscriberCount == BOOLEAN
    input.Body.statistics.subscriberCount == STRING
    input.Body.statistics.videoCount == STRING
    input.Body.statistics.viewCount == STRING
    input.Body.status.isLinked == BOOLEAN
    input.Body.status.longUploadsStatus == enum_ChannelStatusLongUploadsStatus[_]
    input.Body.status.madeForKids == BOOLEAN
    input.Body.status.privacyStatus == enum_ChannelStatusPrivacyStatus[_]
    input.Body.status.selfDeclaredMadeForKids == BOOLEAN
    input.Body.topicDetails.topicCategories[_] == STRING
    input.Body.topicDetails.topicIds[_] == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.commentThreads.insert

enum_CommentSnippetModerationStatus := [ "published", "heldForReview", "likelySpam", "rejected" ]
enum_CommentSnippetViewerRating := [ "none", "like", "dislike" ]

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.replies.comments[_].etag == STRING
    input.Body.replies.comments[_].id == STRING
    input.Body.replies.comments[_].kind == STRING
    input.Body.replies.comments[_].snippet.authorChannelId.value == STRING
    input.Body.replies.comments[_].snippet.authorChannelUrl == STRING
    input.Body.replies.comments[_].snippet.authorDisplayName == STRING
    input.Body.replies.comments[_].snippet.authorProfileImageUrl == STRING
    input.Body.replies.comments[_].snippet.canRate == BOOLEAN
    input.Body.replies.comments[_].snippet.channelId == STRING
    input.Body.replies.comments[_].snippet.likeCount == INTEGER
    input.Body.replies.comments[_].snippet.moderationStatus == enum_CommentSnippetModerationStatus[_]
    input.Body.replies.comments[_].snippet.parentId == STRING
    input.Body.replies.comments[_].snippet.publishedAt == STRING
    input.Body.replies.comments[_].snippet.textDisplay == STRING
    input.Body.replies.comments[_].snippet.textOriginal == STRING
    input.Body.replies.comments[_].snippet.updatedAt == STRING
    input.Body.replies.comments[_].snippet.videoId == STRING
    input.Body.replies.comments[_].snippet.viewerRating == enum_CommentSnippetViewerRating[_]
    input.Body.snippet.canReply == BOOLEAN
    input.Body.snippet.channelId == STRING
    input.Body.snippet.isPublic == BOOLEAN
    input.Body.snippet.topLevelComment.etag == STRING
    input.Body.snippet.topLevelComment.id == STRING
    input.Body.snippet.topLevelComment.kind == STRING
    input.Body.snippet.topLevelComment.snippet.authorChannelId.value == STRING
    input.Body.snippet.topLevelComment.snippet.authorChannelUrl == STRING
    input.Body.snippet.topLevelComment.snippet.authorDisplayName == STRING
    input.Body.snippet.topLevelComment.snippet.authorProfileImageUrl == STRING
    input.Body.snippet.topLevelComment.snippet.canRate == BOOLEAN
    input.Body.snippet.topLevelComment.snippet.channelId == STRING
    input.Body.snippet.topLevelComment.snippet.likeCount == INTEGER
    input.Body.snippet.topLevelComment.snippet.moderationStatus == enum_CommentSnippetModerationStatus[_]
    input.Body.snippet.topLevelComment.snippet.parentId == STRING
    input.Body.snippet.topLevelComment.snippet.publishedAt == STRING
    input.Body.snippet.topLevelComment.snippet.textDisplay == STRING
    input.Body.snippet.topLevelComment.snippet.textOriginal == STRING
    input.Body.snippet.topLevelComment.snippet.updatedAt == STRING
    input.Body.snippet.topLevelComment.snippet.videoId == STRING
    input.Body.snippet.topLevelComment.snippet.viewerRating == enum_CommentSnippetViewerRating[_]
    input.Body.snippet.totalReplyCount == INTEGER
    input.Body.snippet.videoId == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.commentThreads.list

enum_ModerationStatusParameter := [ "published", "heldForReview", "likelySpam", "rejected" ]
enum_OrderParameter := [ "orderUnspecified", "time", "relevance" ]
enum_TextFormatParameter := [ "textFormatUnspecified", "html", "plainText" ]

valid {
    input.Qs.allThreadsRelatedToChannelId == STRING
    input.Qs.channelId == STRING
    input.Qs.id == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.moderationStatus == enum_ModerationStatusParameter[_]
    input.Qs.order == enum_OrderParameter[_]
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.Qs.searchTerms == STRING
    input.Qs.textFormat == enum_TextFormatParameter[_]
    input.Qs.videoId == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.comments.delete

valid {
    input.Qs.id == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.comments.insert

enum_CommentSnippetModerationStatus := [ "published", "heldForReview", "likelySpam", "rejected" ]
enum_CommentSnippetViewerRating := [ "none", "like", "dislike" ]

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.authorChannelId.value == STRING
    input.Body.snippet.authorChannelUrl == STRING
    input.Body.snippet.authorDisplayName == STRING
    input.Body.snippet.authorProfileImageUrl == STRING
    input.Body.snippet.canRate == BOOLEAN
    input.Body.snippet.channelId == STRING
    input.Body.snippet.likeCount == INTEGER
    input.Body.snippet.moderationStatus == enum_CommentSnippetModerationStatus[_]
    input.Body.snippet.parentId == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.textDisplay == STRING
    input.Body.snippet.textOriginal == STRING
    input.Body.snippet.updatedAt == STRING
    input.Body.snippet.videoId == STRING
    input.Body.snippet.viewerRating == enum_CommentSnippetViewerRating[_]
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.comments.list

enum_TextFormatParameter := [ "textFormatUnspecified", "html", "plainText" ]

valid {
    input.Qs.id == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.parentId == STRING
    input.Qs.part == STRING
    input.Qs.textFormat == enum_TextFormatParameter[_]
    input.ProviderMetadata.Region == STRING
}

youtube.comments.markAsSpam

valid {
    input.Qs.id == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.comments.setModerationStatus

enum_ModerationStatusParameter := [ "published", "heldForReview", "likelySpam", "rejected" ]

valid {
    input.Qs.banAuthor == BOOLEAN
    input.Qs.id == STRING
    input.Qs.moderationStatus == enum_ModerationStatusParameter[_]
    input.ProviderMetadata.Region == STRING
}

youtube.comments.update

enum_CommentSnippetModerationStatus := [ "published", "heldForReview", "likelySpam", "rejected" ]
enum_CommentSnippetViewerRating := [ "none", "like", "dislike" ]

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.authorChannelId.value == STRING
    input.Body.snippet.authorChannelUrl == STRING
    input.Body.snippet.authorDisplayName == STRING
    input.Body.snippet.authorProfileImageUrl == STRING
    input.Body.snippet.canRate == BOOLEAN
    input.Body.snippet.channelId == STRING
    input.Body.snippet.likeCount == INTEGER
    input.Body.snippet.moderationStatus == enum_CommentSnippetModerationStatus[_]
    input.Body.snippet.parentId == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.textDisplay == STRING
    input.Body.snippet.textOriginal == STRING
    input.Body.snippet.updatedAt == STRING
    input.Body.snippet.videoId == STRING
    input.Body.snippet.viewerRating == enum_CommentSnippetViewerRating[_]
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.i18nLanguages.list

valid {
    input.Qs.hl == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.i18nRegions.list

valid {
    input.Qs.hl == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveBroadcasts.bind

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.Qs.streamId == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveBroadcasts.delete

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveBroadcasts.insert

enum_CuepointScheduleScheduleStrategy := [ "scheduleStrategyUnspecified", "concurrent", "nonConcurrent" ]
enum_LiveBroadcastContentDetailsClosedCaptionsType := [ "closedCaptionsTypeUnspecified", "closedCaptionsDisabled", "closedCaptionsHttpPost", "closedCaptionsEmbedded" ]
enum_LiveBroadcastContentDetailsLatencyPreference := [ "latencyPreferenceUnspecified", "normal", "low", "ultraLow" ]
enum_LiveBroadcastContentDetailsProjection := [ "projectionUnspecified", "rectangular", "360", "mesh" ]
enum_LiveBroadcastContentDetailsStereoLayout := [ "stereoLayoutUnspecified", "mono", "leftRight", "topBottom" ]
enum_LiveBroadcastStatusLifeCycleStatus := [ "lifeCycleStatusUnspecified", "created", "ready", "testing", "live", "complete", "revoked", "testStarting", "liveStarting" ]
enum_LiveBroadcastStatusLiveBroadcastPriority := [ "liveBroadcastPriorityUnspecified", "low", "normal", "high" ]
enum_LiveBroadcastStatusPrivacyStatus := [ "public", "unlisted", "private" ]
enum_LiveBroadcastStatusRecordingStatus := [ "liveBroadcastRecordingStatusUnspecified", "notRecording", "recording", "recorded" ]

valid {
    input.Body.contentDetails.boundStreamId == STRING
    input.Body.contentDetails.boundStreamLastUpdateTimeMs == STRING
    input.Body.contentDetails.closedCaptionsType == enum_LiveBroadcastContentDetailsClosedCaptionsType[_]
    input.Body.contentDetails.enableAutoStart == BOOLEAN
    input.Body.contentDetails.enableAutoStop == BOOLEAN
    input.Body.contentDetails.enableClosedCaptions == BOOLEAN
    input.Body.contentDetails.enableContentEncryption == BOOLEAN
    input.Body.contentDetails.enableDvr == BOOLEAN
    input.Body.contentDetails.enableEmbed == BOOLEAN
    input.Body.contentDetails.enableLowLatency == BOOLEAN
    input.Body.contentDetails.latencyPreference == enum_LiveBroadcastContentDetailsLatencyPreference[_]
    input.Body.contentDetails.mesh == STRING
    input.Body.contentDetails.monitorStream.broadcastStreamDelayMs == INTEGER
    input.Body.contentDetails.monitorStream.embedHtml == STRING
    input.Body.contentDetails.monitorStream.enableMonitorStream == BOOLEAN
    input.Body.contentDetails.projection == enum_LiveBroadcastContentDetailsProjection[_]
    input.Body.contentDetails.recordFromStart == BOOLEAN
    input.Body.contentDetails.startWithSlate == BOOLEAN
    input.Body.contentDetails.stereoLayout == enum_LiveBroadcastContentDetailsStereoLayout[_]
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.monetizationDetails.cuepointSchedule.enabled == BOOLEAN
    input.Body.monetizationDetails.cuepointSchedule.pauseAdsUntil == STRING
    input.Body.monetizationDetails.cuepointSchedule.repeatIntervalSecs == INTEGER
    input.Body.monetizationDetails.cuepointSchedule.scheduleStrategy == enum_CuepointScheduleScheduleStrategy[_]
    input.Body.snippet.actualEndTime == STRING
    input.Body.snippet.actualStartTime == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.isDefaultBroadcast == BOOLEAN
    input.Body.snippet.liveChatId == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.scheduledEndTime == STRING
    input.Body.snippet.scheduledStartTime == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.statistics.concurrentViewers == STRING
    input.Body.status.lifeCycleStatus == enum_LiveBroadcastStatusLifeCycleStatus[_]
    input.Body.status.liveBroadcastPriority == enum_LiveBroadcastStatusLiveBroadcastPriority[_]
    input.Body.status.madeForKids == BOOLEAN
    input.Body.status.privacyStatus == enum_LiveBroadcastStatusPrivacyStatus[_]
    input.Body.status.recordingStatus == enum_LiveBroadcastStatusRecordingStatus[_]
    input.Body.status.selfDeclaredMadeForKids == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveBroadcasts.insertCuepoint

enum_CuepointCueType := [ "cueTypeUnspecified", "cueTypeAd" ]

valid {
    input.Body.cueType == enum_CuepointCueType[_]
    input.Body.durationSecs == INTEGER
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.insertionOffsetTimeMs == STRING
    input.Body.walltimeMs == STRING
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveBroadcasts.list

enum_BroadcastStatusParameter := [ "broadcastStatusFilterUnspecified", "all", "active", "upcoming", "completed" ]
enum_BroadcastTypeParameter := [ "broadcastTypeFilterUnspecified", "all", "event", "persistent" ]

valid {
    input.Qs.broadcastStatus == enum_BroadcastStatusParameter[_]
    input.Qs.broadcastType == enum_BroadcastTypeParameter[_]
    input.Qs.id == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.mine == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveBroadcasts.transition

enum_BroadcastStatusParameter := [ "statusUnspecified", "testing", "live", "complete" ]

valid {
    input.Qs.broadcastStatus == enum_BroadcastStatusParameter[_]
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveBroadcasts.update

enum_CuepointScheduleScheduleStrategy := [ "scheduleStrategyUnspecified", "concurrent", "nonConcurrent" ]
enum_LiveBroadcastContentDetailsClosedCaptionsType := [ "closedCaptionsTypeUnspecified", "closedCaptionsDisabled", "closedCaptionsHttpPost", "closedCaptionsEmbedded" ]
enum_LiveBroadcastContentDetailsLatencyPreference := [ "latencyPreferenceUnspecified", "normal", "low", "ultraLow" ]
enum_LiveBroadcastContentDetailsProjection := [ "projectionUnspecified", "rectangular", "360", "mesh" ]
enum_LiveBroadcastContentDetailsStereoLayout := [ "stereoLayoutUnspecified", "mono", "leftRight", "topBottom" ]
enum_LiveBroadcastStatusLifeCycleStatus := [ "lifeCycleStatusUnspecified", "created", "ready", "testing", "live", "complete", "revoked", "testStarting", "liveStarting" ]
enum_LiveBroadcastStatusLiveBroadcastPriority := [ "liveBroadcastPriorityUnspecified", "low", "normal", "high" ]
enum_LiveBroadcastStatusPrivacyStatus := [ "public", "unlisted", "private" ]
enum_LiveBroadcastStatusRecordingStatus := [ "liveBroadcastRecordingStatusUnspecified", "notRecording", "recording", "recorded" ]

valid {
    input.Body.contentDetails.boundStreamId == STRING
    input.Body.contentDetails.boundStreamLastUpdateTimeMs == STRING
    input.Body.contentDetails.closedCaptionsType == enum_LiveBroadcastContentDetailsClosedCaptionsType[_]
    input.Body.contentDetails.enableAutoStart == BOOLEAN
    input.Body.contentDetails.enableAutoStop == BOOLEAN
    input.Body.contentDetails.enableClosedCaptions == BOOLEAN
    input.Body.contentDetails.enableContentEncryption == BOOLEAN
    input.Body.contentDetails.enableDvr == BOOLEAN
    input.Body.contentDetails.enableEmbed == BOOLEAN
    input.Body.contentDetails.enableLowLatency == BOOLEAN
    input.Body.contentDetails.latencyPreference == enum_LiveBroadcastContentDetailsLatencyPreference[_]
    input.Body.contentDetails.mesh == STRING
    input.Body.contentDetails.monitorStream.broadcastStreamDelayMs == INTEGER
    input.Body.contentDetails.monitorStream.embedHtml == STRING
    input.Body.contentDetails.monitorStream.enableMonitorStream == BOOLEAN
    input.Body.contentDetails.projection == enum_LiveBroadcastContentDetailsProjection[_]
    input.Body.contentDetails.recordFromStart == BOOLEAN
    input.Body.contentDetails.startWithSlate == BOOLEAN
    input.Body.contentDetails.stereoLayout == enum_LiveBroadcastContentDetailsStereoLayout[_]
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.monetizationDetails.cuepointSchedule.enabled == BOOLEAN
    input.Body.monetizationDetails.cuepointSchedule.pauseAdsUntil == STRING
    input.Body.monetizationDetails.cuepointSchedule.repeatIntervalSecs == INTEGER
    input.Body.monetizationDetails.cuepointSchedule.scheduleStrategy == enum_CuepointScheduleScheduleStrategy[_]
    input.Body.snippet.actualEndTime == STRING
    input.Body.snippet.actualStartTime == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.isDefaultBroadcast == BOOLEAN
    input.Body.snippet.liveChatId == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.scheduledEndTime == STRING
    input.Body.snippet.scheduledStartTime == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.statistics.concurrentViewers == STRING
    input.Body.status.lifeCycleStatus == enum_LiveBroadcastStatusLifeCycleStatus[_]
    input.Body.status.liveBroadcastPriority == enum_LiveBroadcastStatusLiveBroadcastPriority[_]
    input.Body.status.madeForKids == BOOLEAN
    input.Body.status.privacyStatus == enum_LiveBroadcastStatusPrivacyStatus[_]
    input.Body.status.recordingStatus == enum_LiveBroadcastStatusRecordingStatus[_]
    input.Body.status.selfDeclaredMadeForKids == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveChatBans.delete

valid {
    input.Qs.id == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveChatBans.insert

enum_LiveChatBanSnippetType := [ "liveChatBanTypeUnspecified", "permanent", "temporary" ]

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.banDurationSeconds == STRING
    input.Body.snippet.bannedUserDetails.channelId == STRING
    input.Body.snippet.bannedUserDetails.channelUrl == STRING
    input.Body.snippet.bannedUserDetails.displayName == STRING
    input.Body.snippet.bannedUserDetails.profileImageUrl == STRING
    input.Body.snippet.liveChatId == STRING
    input.Body.snippet.type == enum_LiveChatBanSnippetType[_]
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveChatMessages.delete

valid {
    input.Qs.id == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveChatMessages.insert

enum_LiveChatMessageSnippetType := [ "invalidType", "textMessageEvent", "tombstone", "fanFundingEvent", "chatEndedEvent", "sponsorOnlyModeStartedEvent", "sponsorOnlyModeEndedEvent", "newSponsorEvent", "memberMilestoneChatEvent", "membershipGiftingEvent", "giftMembershipReceivedEvent", "messageDeletedEvent", "messageRetractedEvent", "userBannedEvent", "superChatEvent", "superStickerEvent", "pollEvent" ]
enum_LiveChatPollDetailsStatus := [ "unknown", "active", "closed" ]
enum_LiveChatUserBannedMessageDetailsBanType := [ "permanent", "temporary" ]

valid {
    input.Body.authorDetails.channelId == STRING
    input.Body.authorDetails.channelUrl == STRING
    input.Body.authorDetails.displayName == STRING
    input.Body.authorDetails.isChatModerator == BOOLEAN
    input.Body.authorDetails.isChatOwner == BOOLEAN
    input.Body.authorDetails.isChatSponsor == BOOLEAN
    input.Body.authorDetails.isVerified == BOOLEAN
    input.Body.authorDetails.profileImageUrl == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.authorChannelId == STRING
    input.Body.snippet.displayMessage == STRING
    input.Body.snippet.fanFundingEventDetails.amountDisplayString == STRING
    input.Body.snippet.fanFundingEventDetails.amountMicros == STRING
    input.Body.snippet.fanFundingEventDetails.currency == STRING
    input.Body.snippet.fanFundingEventDetails.userComment == STRING
    input.Body.snippet.giftMembershipReceivedDetails.associatedMembershipGiftingMessageId == STRING
    input.Body.snippet.giftMembershipReceivedDetails.gifterChannelId == STRING
    input.Body.snippet.giftMembershipReceivedDetails.memberLevelName == STRING
    input.Body.snippet.hasDisplayContent == BOOLEAN
    input.Body.snippet.liveChatId == STRING
    input.Body.snippet.memberMilestoneChatDetails.memberLevelName == STRING
    input.Body.snippet.memberMilestoneChatDetails.memberMonth == INTEGER
    input.Body.snippet.memberMilestoneChatDetails.userComment == STRING
    input.Body.snippet.membershipGiftingDetails.giftMembershipsCount == INTEGER
    input.Body.snippet.membershipGiftingDetails.giftMembershipsLevelName == STRING
    input.Body.snippet.messageDeletedDetails.deletedMessageId == STRING
    input.Body.snippet.messageRetractedDetails.retractedMessageId == STRING
    input.Body.snippet.newSponsorDetails.isUpgrade == BOOLEAN
    input.Body.snippet.newSponsorDetails.memberLevelName == STRING
    input.Body.snippet.pollDetails.metadata.options[_].optionText == STRING
    input.Body.snippet.pollDetails.metadata.options[_].tally == STRING
    input.Body.snippet.pollDetails.metadata.questionText == STRING
    input.Body.snippet.pollDetails.status == enum_LiveChatPollDetailsStatus[_]
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.superChatDetails.amountDisplayString == STRING
    input.Body.snippet.superChatDetails.amountMicros == STRING
    input.Body.snippet.superChatDetails.currency == STRING
    input.Body.snippet.superChatDetails.tier == INTEGER
    input.Body.snippet.superChatDetails.userComment == STRING
    input.Body.snippet.superStickerDetails.amountDisplayString == STRING
    input.Body.snippet.superStickerDetails.amountMicros == STRING
    input.Body.snippet.superStickerDetails.currency == STRING
    input.Body.snippet.superStickerDetails.superStickerMetadata.altText == STRING
    input.Body.snippet.superStickerDetails.superStickerMetadata.altTextLanguage == STRING
    input.Body.snippet.superStickerDetails.superStickerMetadata.stickerId == STRING
    input.Body.snippet.superStickerDetails.tier == INTEGER
    input.Body.snippet.textMessageDetails.messageText == STRING
    input.Body.snippet.type == enum_LiveChatMessageSnippetType[_]
    input.Body.snippet.userBannedDetails.banDurationSeconds == STRING
    input.Body.snippet.userBannedDetails.banType == enum_LiveChatUserBannedMessageDetailsBanType[_]
    input.Body.snippet.userBannedDetails.bannedUserDetails.channelId == STRING
    input.Body.snippet.userBannedDetails.bannedUserDetails.channelUrl == STRING
    input.Body.snippet.userBannedDetails.bannedUserDetails.displayName == STRING
    input.Body.snippet.userBannedDetails.bannedUserDetails.profileImageUrl == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveChatMessages.list

valid {
    input.Qs.hl == STRING
    input.Qs.liveChatId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.Qs.profileImageSize == INTEGER
    input.ProviderMetadata.Region == STRING
}

youtube.liveChatModerators.delete

valid {
    input.Qs.id == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveChatModerators.insert

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.liveChatId == STRING
    input.Body.snippet.moderatorDetails.channelId == STRING
    input.Body.snippet.moderatorDetails.channelUrl == STRING
    input.Body.snippet.moderatorDetails.displayName == STRING
    input.Body.snippet.moderatorDetails.profileImageUrl == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveChatModerators.list

valid {
    input.Qs.liveChatId == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveStreams.delete

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveStreams.insert

enum_CdnSettingsFrameRate := [ "30fps", "60fps", "variable" ]
enum_CdnSettingsIngestionType := [ "rtmp", "dash", "webrtc", "hls" ]
enum_CdnSettingsResolution := [ "240p", "360p", "480p", "720p", "1080p", "1440p", "2160p", "variable" ]
enum_LiveStreamConfigurationIssueSeverity := [ "info", "warning", "error" ]
enum_LiveStreamConfigurationIssueType := [ "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" ]
enum_LiveStreamHealthStatusStatus := [ "good", "ok", "bad", "noData", "revoked" ]
enum_LiveStreamStatusStreamStatus := [ "created", "ready", "active", "inactive", "error" ]

valid {
    input.Body.cdn.format == STRING
    input.Body.cdn.frameRate == enum_CdnSettingsFrameRate[_]
    input.Body.cdn.ingestionInfo.backupIngestionAddress == STRING
    input.Body.cdn.ingestionInfo.ingestionAddress == STRING
    input.Body.cdn.ingestionInfo.rtmpsBackupIngestionAddress == STRING
    input.Body.cdn.ingestionInfo.rtmpsIngestionAddress == STRING
    input.Body.cdn.ingestionInfo.streamName == STRING
    input.Body.cdn.ingestionType == enum_CdnSettingsIngestionType[_]
    input.Body.cdn.resolution == enum_CdnSettingsResolution[_]
    input.Body.contentDetails.closedCaptionsIngestionUrl == STRING
    input.Body.contentDetails.isReusable == BOOLEAN
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.isDefaultStream == BOOLEAN
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.title == STRING
    input.Body.status.healthStatus.configurationIssues[_].description == STRING
    input.Body.status.healthStatus.configurationIssues[_].reason == STRING
    input.Body.status.healthStatus.configurationIssues[_].severity == enum_LiveStreamConfigurationIssueSeverity[_]
    input.Body.status.healthStatus.configurationIssues[_].type == enum_LiveStreamConfigurationIssueType[_]
    input.Body.status.healthStatus.lastUpdateTimeSeconds == STRING
    input.Body.status.healthStatus.status == enum_LiveStreamHealthStatusStatus[_]
    input.Body.status.streamStatus == enum_LiveStreamStatusStreamStatus[_]
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveStreams.list

valid {
    input.Qs.id == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.mine == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.liveStreams.update

enum_CdnSettingsFrameRate := [ "30fps", "60fps", "variable" ]
enum_CdnSettingsIngestionType := [ "rtmp", "dash", "webrtc", "hls" ]
enum_CdnSettingsResolution := [ "240p", "360p", "480p", "720p", "1080p", "1440p", "2160p", "variable" ]
enum_LiveStreamConfigurationIssueSeverity := [ "info", "warning", "error" ]
enum_LiveStreamConfigurationIssueType := [ "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" ]
enum_LiveStreamHealthStatusStatus := [ "good", "ok", "bad", "noData", "revoked" ]
enum_LiveStreamStatusStreamStatus := [ "created", "ready", "active", "inactive", "error" ]

valid {
    input.Body.cdn.format == STRING
    input.Body.cdn.frameRate == enum_CdnSettingsFrameRate[_]
    input.Body.cdn.ingestionInfo.backupIngestionAddress == STRING
    input.Body.cdn.ingestionInfo.ingestionAddress == STRING
    input.Body.cdn.ingestionInfo.rtmpsBackupIngestionAddress == STRING
    input.Body.cdn.ingestionInfo.rtmpsIngestionAddress == STRING
    input.Body.cdn.ingestionInfo.streamName == STRING
    input.Body.cdn.ingestionType == enum_CdnSettingsIngestionType[_]
    input.Body.cdn.resolution == enum_CdnSettingsResolution[_]
    input.Body.contentDetails.closedCaptionsIngestionUrl == STRING
    input.Body.contentDetails.isReusable == BOOLEAN
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.isDefaultStream == BOOLEAN
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.title == STRING
    input.Body.status.healthStatus.configurationIssues[_].description == STRING
    input.Body.status.healthStatus.configurationIssues[_].reason == STRING
    input.Body.status.healthStatus.configurationIssues[_].severity == enum_LiveStreamConfigurationIssueSeverity[_]
    input.Body.status.healthStatus.configurationIssues[_].type == enum_LiveStreamConfigurationIssueType[_]
    input.Body.status.healthStatus.lastUpdateTimeSeconds == STRING
    input.Body.status.healthStatus.status == enum_LiveStreamHealthStatusStatus[_]
    input.Body.status.streamStatus == enum_LiveStreamStatusStreamStatus[_]
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.members.list

enum_ModeParameter := [ "listMembersModeUnknown", "updates", "all_current" ]

valid {
    input.Qs.filterByMemberChannelId == STRING
    input.Qs.hasAccessToLevel == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.mode == enum_ModeParameter[_]
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.membershipsLevels.list

valid {
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlistImages.delete

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlistImages.insert

enum_PlaylistImageSnippetType := [ "hero" ]

valid {
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.height == INTEGER
    input.Body.snippet.playlistId == STRING
    input.Body.snippet.type == enum_PlaylistImageSnippetType[_]
    input.Body.snippet.width == INTEGER
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlistImages.list

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.pageToken == STRING
    input.Qs.parent == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlistImages.update

enum_PlaylistImageSnippetType := [ "hero" ]

valid {
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.height == INTEGER
    input.Body.snippet.playlistId == STRING
    input.Body.snippet.type == enum_PlaylistImageSnippetType[_]
    input.Body.snippet.width == INTEGER
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlistItems.delete

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlistItems.insert

enum_PlaylistItemStatusPrivacyStatus := [ "public", "unlisted", "private" ]

valid {
    input.Body.contentDetails.endAt == STRING
    input.Body.contentDetails.note == STRING
    input.Body.contentDetails.startAt == STRING
    input.Body.contentDetails.videoId == STRING
    input.Body.contentDetails.videoPublishedAt == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.channelTitle == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.playlistId == STRING
    input.Body.snippet.position == INTEGER
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.resourceId.channelId == STRING
    input.Body.snippet.resourceId.kind == STRING
    input.Body.snippet.resourceId.playlistId == STRING
    input.Body.snippet.resourceId.videoId == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.snippet.videoOwnerChannelId == STRING
    input.Body.snippet.videoOwnerChannelTitle == STRING
    input.Body.status.privacyStatus == enum_PlaylistItemStatusPrivacyStatus[_]
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlistItems.list

valid {
    input.Qs.id == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.Qs.playlistId == STRING
    input.Qs.videoId == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlistItems.update

enum_PlaylistItemStatusPrivacyStatus := [ "public", "unlisted", "private" ]

valid {
    input.Body.contentDetails.endAt == STRING
    input.Body.contentDetails.note == STRING
    input.Body.contentDetails.startAt == STRING
    input.Body.contentDetails.videoId == STRING
    input.Body.contentDetails.videoPublishedAt == STRING
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.channelTitle == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.playlistId == STRING
    input.Body.snippet.position == INTEGER
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.resourceId.channelId == STRING
    input.Body.snippet.resourceId.kind == STRING
    input.Body.snippet.resourceId.playlistId == STRING
    input.Body.snippet.resourceId.videoId == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.snippet.videoOwnerChannelId == STRING
    input.Body.snippet.videoOwnerChannelTitle == STRING
    input.Body.status.privacyStatus == enum_PlaylistItemStatusPrivacyStatus[_]
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlists.delete

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlists.insert

enum_PlaylistStatusPrivacyStatus := [ "public", "unlisted", "private" ]

valid {
    input.Body.contentDetails.itemCount == INTEGER
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.localizations.STRING.description == STRING
    input.Body.localizations.STRING.title == STRING
    input.Body.player.embedHtml == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.channelTitle == STRING
    input.Body.snippet.defaultLanguage == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.localized.description == STRING
    input.Body.snippet.localized.title == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.tags[_] == STRING
    input.Body.snippet.thumbnailVideoId == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.status.privacyStatus == enum_PlaylistStatusPrivacyStatus[_]
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlists.list

valid {
    input.Qs.channelId == STRING
    input.Qs.hl == STRING
    input.Qs.id == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.mine == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.playlists.update

enum_PlaylistStatusPrivacyStatus := [ "public", "unlisted", "private" ]

valid {
    input.Body.contentDetails.itemCount == INTEGER
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.localizations.STRING.description == STRING
    input.Body.localizations.STRING.title == STRING
    input.Body.player.embedHtml == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.channelTitle == STRING
    input.Body.snippet.defaultLanguage == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.localized.description == STRING
    input.Body.snippet.localized.title == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.tags[_] == STRING
    input.Body.snippet.thumbnailVideoId == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.status.privacyStatus == enum_PlaylistStatusPrivacyStatus[_]
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.search.list

enum_ChannelTypeParameter := [ "channelTypeUnspecified", "any", "show" ]
enum_EventTypeParameter := [ "none", "upcoming", "live", "completed" ]
enum_OrderParameter := [ "searchSortUnspecified", "date", "rating", "viewCount", "relevance", "title", "videoCount" ]
enum_SafeSearchParameter := [ "safeSearchSettingUnspecified", "none", "moderate", "strict" ]
enum_VideoCaptionParameter := [ "videoCaptionUnspecified", "any", "closedCaption", "none" ]
enum_VideoDefinitionParameter := [ "any", "standard", "high" ]
enum_VideoDimensionParameter := [ "any", "2d", "3d" ]
enum_VideoDurationParameter := [ "videoDurationUnspecified", "any", "short", "medium", "long" ]
enum_VideoEmbeddableParameter := [ "videoEmbeddableUnspecified", "any", "true" ]
enum_VideoLicenseParameter := [ "any", "youtube", "creativeCommon" ]
enum_VideoPaidProductPlacementParameter := [ "videoPaidProductPlacementUnspecified", "any", "true" ]
enum_VideoSyndicatedParameter := [ "videoSyndicatedUnspecified", "any", "true" ]
enum_VideoTypeParameter := [ "videoTypeUnspecified", "any", "movie", "episode" ]

valid {
    input.Qs.channelId == STRING
    input.Qs.channelType == enum_ChannelTypeParameter[_]
    input.Qs.eventType == enum_EventTypeParameter[_]
    input.Qs.forContentOwner == BOOLEAN
    input.Qs.forDeveloper == BOOLEAN
    input.Qs.forMine == BOOLEAN
    input.Qs.location == STRING
    input.Qs.locationRadius == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.order == enum_OrderParameter[_]
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.Qs.publishedAfter == STRING
    input.Qs.publishedBefore == STRING
    input.Qs.q == STRING
    input.Qs.regionCode == STRING
    input.Qs.relevanceLanguage == STRING
    input.Qs.safeSearch == enum_SafeSearchParameter[_]
    input.Qs.topicId == STRING
    input.Qs.type == STRING
    input.Qs.videoCaption == enum_VideoCaptionParameter[_]
    input.Qs.videoCategoryId == STRING
    input.Qs.videoDefinition == enum_VideoDefinitionParameter[_]
    input.Qs.videoDimension == enum_VideoDimensionParameter[_]
    input.Qs.videoDuration == enum_VideoDurationParameter[_]
    input.Qs.videoEmbeddable == enum_VideoEmbeddableParameter[_]
    input.Qs.videoLicense == enum_VideoLicenseParameter[_]
    input.Qs.videoPaidProductPlacement == enum_VideoPaidProductPlacementParameter[_]
    input.Qs.videoSyndicated == enum_VideoSyndicatedParameter[_]
    input.Qs.videoType == enum_VideoTypeParameter[_]
    input.ProviderMetadata.Region == STRING
}

youtube.subscriptions.delete

valid {
    input.Qs.id == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.subscriptions.insert

enum_SubscriptionContentDetailsActivityType := [ "subscriptionActivityTypeUnspecified", "all", "uploads" ]

valid {
    input.Body.contentDetails.activityType == enum_SubscriptionContentDetailsActivityType[_]
    input.Body.contentDetails.newItemCount == INTEGER
    input.Body.contentDetails.totalItemCount == INTEGER
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.channelTitle == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.resourceId.channelId == STRING
    input.Body.snippet.resourceId.kind == STRING
    input.Body.snippet.resourceId.playlistId == STRING
    input.Body.snippet.resourceId.videoId == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.subscriberSnippet.channelId == STRING
    input.Body.subscriberSnippet.description == STRING
    input.Body.subscriberSnippet.thumbnails.default.height == INTEGER
    input.Body.subscriberSnippet.thumbnails.default.url == STRING
    input.Body.subscriberSnippet.thumbnails.default.width == INTEGER
    input.Body.subscriberSnippet.thumbnails.high.height == INTEGER
    input.Body.subscriberSnippet.thumbnails.high.url == STRING
    input.Body.subscriberSnippet.thumbnails.high.width == INTEGER
    input.Body.subscriberSnippet.thumbnails.maxres.height == INTEGER
    input.Body.subscriberSnippet.thumbnails.maxres.url == STRING
    input.Body.subscriberSnippet.thumbnails.maxres.width == INTEGER
    input.Body.subscriberSnippet.thumbnails.medium.height == INTEGER
    input.Body.subscriberSnippet.thumbnails.medium.url == STRING
    input.Body.subscriberSnippet.thumbnails.medium.width == INTEGER
    input.Body.subscriberSnippet.thumbnails.standard.height == INTEGER
    input.Body.subscriberSnippet.thumbnails.standard.url == STRING
    input.Body.subscriberSnippet.thumbnails.standard.width == INTEGER
    input.Body.subscriberSnippet.title == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.subscriptions.list

enum_OrderParameter := [ "subscriptionOrderUnspecified", "relevance", "unread", "alphabetical" ]

valid {
    input.Qs.channelId == STRING
    input.Qs.forChannelId == STRING
    input.Qs.id == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.mine == BOOLEAN
    input.Qs.myRecentSubscribers == BOOLEAN
    input.Qs.mySubscribers == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.order == enum_OrderParameter[_]
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.superChatEvents.list

valid {
    input.Qs.hl == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.tests.insert

valid {
    input.Body.featuredPart == BOOLEAN
    input.Body.gaia == STRING
    input.Body.id == STRING
    input.Body.snippet.STRING == STRING
    input.Qs.externalChannelId == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.thirdPartyLinks.delete

enum_TypeParameter := [ "linkUnspecified", "channelToStoreLink" ]

valid {
    input.Qs.externalChannelId == STRING
    input.Qs.linkingToken == STRING
    input.Qs.part == STRING
    input.Qs.type == enum_TypeParameter[_]
    input.ProviderMetadata.Region == STRING
}

youtube.thirdPartyLinks.insert

enum_ChannelToStoreLinkDetailsBillingDetailsBillingStatus := [ "billingStatusUnspecified", "billingStatusPending", "billingStatusActive", "billingStatusInactive" ]
enum_ThirdPartyLinkSnippetType := [ "linkUnspecified", "channelToStoreLink" ]
enum_ThirdPartyLinkStatusLinkStatus := [ "unknown", "failed", "pending", "linked" ]

valid {
    input.Body.etag == STRING
    input.Body.kind == STRING
    input.Body.linkingToken == STRING
    input.Body.snippet.channelToStoreLink.billingDetails.billingStatus == enum_ChannelToStoreLinkDetailsBillingDetailsBillingStatus[_]
    input.Body.snippet.channelToStoreLink.merchantId == STRING
    input.Body.snippet.channelToStoreLink.storeName == STRING
    input.Body.snippet.channelToStoreLink.storeUrl == STRING
    input.Body.snippet.type == enum_ThirdPartyLinkSnippetType[_]
    input.Body.status.linkStatus == enum_ThirdPartyLinkStatusLinkStatus[_]
    input.Qs.externalChannelId == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.thirdPartyLinks.list

enum_TypeParameter := [ "linkUnspecified", "channelToStoreLink" ]

valid {
    input.Qs.externalChannelId == STRING
    input.Qs.linkingToken == STRING
    input.Qs.part == STRING
    input.Qs.type == enum_TypeParameter[_]
    input.ProviderMetadata.Region == STRING
}

youtube.thirdPartyLinks.update

enum_ChannelToStoreLinkDetailsBillingDetailsBillingStatus := [ "billingStatusUnspecified", "billingStatusPending", "billingStatusActive", "billingStatusInactive" ]
enum_ThirdPartyLinkSnippetType := [ "linkUnspecified", "channelToStoreLink" ]
enum_ThirdPartyLinkStatusLinkStatus := [ "unknown", "failed", "pending", "linked" ]

valid {
    input.Body.etag == STRING
    input.Body.kind == STRING
    input.Body.linkingToken == STRING
    input.Body.snippet.channelToStoreLink.billingDetails.billingStatus == enum_ChannelToStoreLinkDetailsBillingDetailsBillingStatus[_]
    input.Body.snippet.channelToStoreLink.merchantId == STRING
    input.Body.snippet.channelToStoreLink.storeName == STRING
    input.Body.snippet.channelToStoreLink.storeUrl == STRING
    input.Body.snippet.type == enum_ThirdPartyLinkSnippetType[_]
    input.Body.status.linkStatus == enum_ThirdPartyLinkStatusLinkStatus[_]
    input.Qs.externalChannelId == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.thumbnails.set

valid {
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.videoId == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.videoAbuseReportReasons.list

valid {
    input.Qs.hl == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.videoCategories.list

valid {
    input.Qs.hl == STRING
    input.Qs.id == STRING
    input.Qs.part == STRING
    input.Qs.regionCode == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.videos.delete

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.videos.getRating

valid {
    input.Qs.id == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.videos.insert

enum_ContentRatingAcbRating := [ "acbUnspecified", "acbE", "acbP", "acbC", "acbG", "acbPg", "acbM", "acbMa15plus", "acbR18plus", "acbUnrated" ]
enum_ContentRatingAgcomRating := [ "agcomUnspecified", "agcomT", "agcomVm14", "agcomVm18", "agcomUnrated" ]
enum_ContentRatingAnatelRating := [ "anatelUnspecified", "anatelF", "anatelI", "anatelI7", "anatelI10", "anatelI12", "anatelR", "anatelA", "anatelUnrated" ]
enum_ContentRatingBbfcRating := [ "bbfcUnspecified", "bbfcU", "bbfcPg", "bbfc12a", "bbfc12", "bbfc15", "bbfc18", "bbfcR18", "bbfcUnrated" ]
enum_ContentRatingBfvcRating := [ "bfvcUnspecified", "bfvcG", "bfvcE", "bfvc13", "bfvc15", "bfvc18", "bfvc20", "bfvcB", "bfvcUnrated" ]
enum_ContentRatingBmukkRating := [ "bmukkUnspecified", "bmukkAa", "bmukk6", "bmukk8", "bmukk10", "bmukk12", "bmukk14", "bmukk16", "bmukkUnrated" ]
enum_ContentRatingCatvRating := [ "catvUnspecified", "catvC", "catvC8", "catvG", "catvPg", "catv14plus", "catv18plus", "catvUnrated", "catvE" ]
enum_ContentRatingCatvfrRating := [ "catvfrUnspecified", "catvfrG", "catvfr8plus", "catvfr13plus", "catvfr16plus", "catvfr18plus", "catvfrUnrated", "catvfrE" ]
enum_ContentRatingCbfcRating := [ "cbfcUnspecified", "cbfcU", "cbfcUA", "cbfcUA7plus", "cbfcUA13plus", "cbfcUA16plus", "cbfcA", "cbfcS", "cbfcUnrated" ]
enum_ContentRatingCccRating := [ "cccUnspecified", "cccTe", "ccc6", "ccc14", "ccc18", "ccc18v", "ccc18s", "cccUnrated" ]
enum_ContentRatingCceRating := [ "cceUnspecified", "cceM4", "cceM6", "cceM12", "cceM16", "cceM18", "cceUnrated", "cceM14" ]
enum_ContentRatingChfilmRating := [ "chfilmUnspecified", "chfilm0", "chfilm6", "chfilm12", "chfilm16", "chfilm18", "chfilmUnrated" ]
enum_ContentRatingChvrsRating := [ "chvrsUnspecified", "chvrsG", "chvrsPg", "chvrs14a", "chvrs18a", "chvrsR", "chvrsE", "chvrsUnrated" ]
enum_ContentRatingCicfRating := [ "cicfUnspecified", "cicfE", "cicfKtEa", "cicfKntEna", "cicfUnrated" ]
enum_ContentRatingCnaRating := [ "cnaUnspecified", "cnaAp", "cna12", "cna15", "cna18", "cna18plus", "cnaUnrated" ]
enum_ContentRatingCncRating := [ "cncUnspecified", "cncT", "cnc10", "cnc12", "cnc16", "cnc18", "cncE", "cncInterdiction", "cncUnrated" ]
enum_ContentRatingCsaRating := [ "csaUnspecified", "csaT", "csa10", "csa12", "csa16", "csa18", "csaInterdiction", "csaUnrated" ]
enum_ContentRatingCscfRating := [ "cscfUnspecified", "cscfAl", "cscfA", "cscf6", "cscf9", "cscf12", "cscf16", "cscf18", "cscfUnrated" ]
enum_ContentRatingCzfilmRating := [ "czfilmUnspecified", "czfilmU", "czfilm12", "czfilm14", "czfilm18", "czfilmUnrated" ]
enum_ContentRatingDjctqRating := [ "djctqUnspecified", "djctqL", "djctq10", "djctq12", "djctq14", "djctq16", "djctq18", "djctqEr", "djctqL10", "djctqL12", "djctqL14", "djctqL16", "djctqL18", "djctq1012", "djctq1014", "djctq1016", "djctq1018", "djctq1214", "djctq1216", "djctq1218", "djctq1416", "djctq1418", "djctq1618", "djctqUnrated" ]
enum_ContentRatingDjctqRatingReasons := [ "djctqRatingReasonUnspecified", "djctqViolence", "djctqExtremeViolence", "djctqSexualContent", "djctqNudity", "djctqSex", "djctqExplicitSex", "djctqDrugs", "djctqLegalDrugs", "djctqIllegalDrugs", "djctqInappropriateLanguage", "djctqCriminalActs", "djctqImpactingContent" ]
enum_ContentRatingEcbmctRating := [ "ecbmctUnspecified", "ecbmctG", "ecbmct7a", "ecbmct7plus", "ecbmct13a", "ecbmct13plus", "ecbmct15a", "ecbmct15plus", "ecbmct18plus", "ecbmctUnrated" ]
enum_ContentRatingEefilmRating := [ "eefilmUnspecified", "eefilmPere", "eefilmL", "eefilmMs6", "eefilmK6", "eefilmMs12", "eefilmK12", "eefilmK14", "eefilmK16", "eefilmUnrated" ]
enum_ContentRatingEgfilmRating := [ "egfilmUnspecified", "egfilmGn", "egfilm18", "egfilmBn", "egfilmUnrated" ]
enum_ContentRatingEirinRating := [ "eirinUnspecified", "eirinG", "eirinPg12", "eirinR15plus", "eirinR18plus", "eirinUnrated" ]
enum_ContentRatingFcbmRating := [ "fcbmUnspecified", "fcbmU", "fcbmPg13", "fcbmP13", "fcbm18", "fcbm18sx", "fcbm18pa", "fcbm18sg", "fcbm18pl", "fcbmUnrated" ]
enum_ContentRatingFcoRating := [ "fcoUnspecified", "fcoI", "fcoIia", "fcoIib", "fcoIi", "fcoIii", "fcoUnrated" ]
enum_ContentRatingFmocRating := [ "fmocUnspecified", "fmocU", "fmoc10", "fmoc12", "fmoc16", "fmoc18", "fmocE", "fmocUnrated" ]
enum_ContentRatingFpbRating := [ "fpbUnspecified", "fpbA", "fpbPg", "fpb79Pg", "fpb1012Pg", "fpb13", "fpb16", "fpb18", "fpbX18", "fpbXx", "fpbUnrated", "fpb10" ]
enum_ContentRatingFpbRatingReasons := [ "fpbRatingReasonUnspecified", "fpbBlasphemy", "fpbLanguage", "fpbNudity", "fpbPrejudice", "fpbSex", "fpbViolence", "fpbDrugs", "fpbSexualViolence", "fpbHorror", "fpbCriminalTechniques", "fpbImitativeActsTechniques" ]
enum_ContentRatingFskRating := [ "fskUnspecified", "fsk0", "fsk6", "fsk12", "fsk16", "fsk18", "fskUnrated" ]
enum_ContentRatingGrfilmRating := [ "grfilmUnspecified", "grfilmK", "grfilmE", "grfilmK12", "grfilmK13", "grfilmK15", "grfilmK17", "grfilmK18", "grfilmUnrated" ]
enum_ContentRatingIcaaRating := [ "icaaUnspecified", "icaaApta", "icaa7", "icaa12", "icaa13", "icaa16", "icaa18", "icaaX", "icaaUnrated" ]
enum_ContentRatingIfcoRating := [ "ifcoUnspecified", "ifcoG", "ifcoPg", "ifco12", "ifco12a", "ifco15", "ifco15a", "ifco16", "ifco18", "ifcoUnrated" ]
enum_ContentRatingIlfilmRating := [ "ilfilmUnspecified", "ilfilmAa", "ilfilm12", "ilfilm14", "ilfilm16", "ilfilm18", "ilfilmUnrated" ]
enum_ContentRatingIncaaRating := [ "incaaUnspecified", "incaaAtp", "incaaSam13", "incaaSam16", "incaaSam18", "incaaC", "incaaUnrated" ]
enum_ContentRatingKfcbRating := [ "kfcbUnspecified", "kfcbG", "kfcbPg", "kfcb16plus", "kfcbR", "kfcbUnrated" ]
enum_ContentRatingKijkwijzerRating := [ "kijkwijzerUnspecified", "kijkwijzerAl", "kijkwijzer6", "kijkwijzer9", "kijkwijzer12", "kijkwijzer16", "kijkwijzer18", "kijkwijzerUnrated" ]
enum_ContentRatingKmrbRating := [ "kmrbUnspecified", "kmrbAll", "kmrb12plus", "kmrb15plus", "kmrbTeenr", "kmrbR", "kmrbUnrated" ]
enum_ContentRatingLsfRating := [ "lsfUnspecified", "lsfSu", "lsfA", "lsfBo", "lsf13", "lsfR", "lsf17", "lsfD", "lsf21", "lsfUnrated" ]
enum_ContentRatingMccaaRating := [ "mccaaUnspecified", "mccaaU", "mccaaPg", "mccaa12a", "mccaa12", "mccaa14", "mccaa15", "mccaa16", "mccaa18", "mccaaUnrated" ]
enum_ContentRatingMccypRating := [ "mccypUnspecified", "mccypA", "mccyp7", "mccyp11", "mccyp15", "mccypUnrated" ]
enum_ContentRatingMcstRating := [ "mcstUnspecified", "mcstP", "mcst0", "mcstC13", "mcstC16", "mcst16plus", "mcstC18", "mcstGPg", "mcstUnrated" ]
enum_ContentRatingMdaRating := [ "mdaUnspecified", "mdaG", "mdaPg", "mdaPg13", "mdaNc16", "mdaM18", "mdaR21", "mdaUnrated" ]
enum_ContentRatingMedietilsynetRating := [ "medietilsynetUnspecified", "medietilsynetA", "medietilsynet6", "medietilsynet7", "medietilsynet9", "medietilsynet11", "medietilsynet12", "medietilsynet15", "medietilsynet18", "medietilsynetUnrated" ]
enum_ContentRatingMekuRating := [ "mekuUnspecified", "mekuS", "meku7", "meku12", "meku16", "meku18", "mekuUnrated" ]
enum_ContentRatingMenaMpaaRating := [ "menaMpaaUnspecified", "menaMpaaG", "menaMpaaPg", "menaMpaaPg13", "menaMpaaR", "menaMpaaUnrated" ]
enum_ContentRatingMibacRating := [ "mibacUnspecified", "mibacT", "mibacVap", "mibacVm6", "mibacVm12", "mibacVm14", "mibacVm16", "mibacVm18", "mibacUnrated" ]
enum_ContentRatingMocRating := [ "mocUnspecified", "mocE", "mocT", "moc7", "moc12", "moc15", "moc18", "mocX", "mocBanned", "mocUnrated" ]
enum_ContentRatingMoctwRating := [ "moctwUnspecified", "moctwG", "moctwP", "moctwPg", "moctwR", "moctwUnrated", "moctwR12", "moctwR15" ]
enum_ContentRatingMpaaRating := [ "mpaaUnspecified", "mpaaG", "mpaaPg", "mpaaPg13", "mpaaR", "mpaaNc17", "mpaaX", "mpaaUnrated" ]
enum_ContentRatingMpaatRating := [ "mpaatUnspecified", "mpaatGb", "mpaatRb" ]
enum_ContentRatingMtrcbRating := [ "mtrcbUnspecified", "mtrcbG", "mtrcbPg", "mtrcbR13", "mtrcbR16", "mtrcbR18", "mtrcbX", "mtrcbUnrated" ]
enum_ContentRatingNbcRating := [ "nbcUnspecified", "nbcG", "nbcPg", "nbc12plus", "nbc15plus", "nbc18plus", "nbc18plusr", "nbcPu", "nbcUnrated" ]
enum_ContentRatingNbcplRating := [ "nbcplUnspecified", "nbcplI", "nbcplIi", "nbcplIii", "nbcplIv", "nbcpl18plus", "nbcplUnrated" ]
enum_ContentRatingNfrcRating := [ "nfrcUnspecified", "nfrcA", "nfrcB", "nfrcC", "nfrcD", "nfrcX", "nfrcUnrated" ]
enum_ContentRatingNfvcbRating := [ "nfvcbUnspecified", "nfvcbG", "nfvcbPg", "nfvcb12", "nfvcb12a", "nfvcb15", "nfvcb18", "nfvcbRe", "nfvcbUnrated" ]
enum_ContentRatingNkclvRating := [ "nkclvUnspecified", "nkclvU", "nkclv7plus", "nkclv12plus", "nkclv16plus", "nkclv18plus", "nkclvUnrated" ]
enum_ContentRatingNmcRating := [ "nmcUnspecified", "nmcG", "nmcPg", "nmcPg13", "nmcPg15", "nmc15plus", "nmc18plus", "nmc18tc", "nmcUnrated" ]
enum_ContentRatingOflcRating := [ "oflcUnspecified", "oflcG", "oflcPg", "oflcM", "oflcR13", "oflcR15", "oflcR16", "oflcR18", "oflcUnrated", "oflcRp13", "oflcRp16", "oflcRp18" ]
enum_ContentRatingPefilmRating := [ "pefilmUnspecified", "pefilmPt", "pefilmPg", "pefilm14", "pefilm18", "pefilmUnrated" ]
enum_ContentRatingRcnofRating := [ "rcnofUnspecified", "rcnofI", "rcnofIi", "rcnofIii", "rcnofIv", "rcnofV", "rcnofVi", "rcnofUnrated" ]
enum_ContentRatingResorteviolenciaRating := [ "resorteviolenciaUnspecified", "resorteviolenciaA", "resorteviolenciaB", "resorteviolenciaC", "resorteviolenciaD", "resorteviolenciaE", "resorteviolenciaUnrated" ]
enum_ContentRatingRtcRating := [ "rtcUnspecified", "rtcAa", "rtcA", "rtcB", "rtcB15", "rtcC", "rtcD", "rtcUnrated" ]
enum_ContentRatingRteRating := [ "rteUnspecified", "rteGa", "rteCh", "rtePs", "rteMa", "rteUnrated" ]
enum_ContentRatingRussiaRating := [ "russiaUnspecified", "russia0", "russia6", "russia12", "russia16", "russia18", "russiaUnrated" ]
enum_ContentRatingSkfilmRating := [ "skfilmUnspecified", "skfilmG", "skfilmP2", "skfilmP5", "skfilmP8", "skfilmUnrated" ]
enum_ContentRatingSmaisRating := [ "smaisUnspecified", "smaisL", "smais7", "smais12", "smais14", "smais16", "smais18", "smaisUnrated" ]
enum_ContentRatingSmsaRating := [ "smsaUnspecified", "smsaA", "smsa7", "smsa11", "smsa15", "smsaUnrated" ]
enum_ContentRatingTvpgRating := [ "tvpgUnspecified", "tvpgY", "tvpgY7", "tvpgY7Fv", "tvpgG", "tvpgPg", "pg14", "tvpgMa", "tvpgUnrated" ]
enum_ContentRatingYtRating := [ "ytUnspecified", "ytAgeRestricted" ]
enum_VideoAgeGatingVideoGameRating := [ "anyone", "m15Plus", "m16Plus", "m17Plus" ]
enum_VideoContentDetailsCaption := [ "true", "false" ]
enum_VideoContentDetailsDefinition := [ "sd", "hd" ]
enum_VideoContentDetailsProjection := [ "rectangular", "360" ]
enum_VideoFileDetailsFileType := [ "video", "audio", "image", "archive", "document", "project", "other" ]
enum_VideoFileDetailsVideoStreamRotation := [ "none", "clockwise", "upsideDown", "counterClockwise", "other" ]
enum_VideoProcessingDetailsProcessingFailureReason := [ "uploadFailed", "transcodeFailed", "streamingFailed", "other" ]
enum_VideoProcessingDetailsProcessingStatus := [ "processing", "succeeded", "failed", "terminated" ]
enum_VideoSnippetLiveBroadcastContent := [ "none", "upcoming", "live", "completed" ]
enum_VideoStatusFailureReason := [ "conversion", "invalidFile", "emptyFile", "tooSmall", "codec", "uploadAborted" ]
enum_VideoStatusLicense := [ "youtube", "creativeCommon" ]
enum_VideoStatusPrivacyStatus := [ "public", "unlisted", "private" ]
enum_VideoStatusRejectionReason := [ "copyright", "inappropriate", "duplicate", "termsOfUse", "uploaderAccountSuspended", "length", "claim", "uploaderAccountClosed", "trademark", "legal" ]
enum_VideoStatusUploadStatus := [ "uploaded", "processed", "failed", "rejected", "deleted" ]
enum_VideoSuggestionsEditorSuggestions := [ "videoAutoLevels", "videoStabilize", "videoCrop", "audioQuietAudioSwap" ]
enum_VideoSuggestionsProcessingErrors := [ "audioFile", "imageFile", "projectFile", "notAVideoFile", "docFile", "archiveFile", "unsupportedSpatialAudioLayout" ]
enum_VideoSuggestionsProcessingHints := [ "nonStreamableMov", "sendBestQualityVideo", "sphericalVideo", "spatialAudio", "vrVideo", "hdrVideo" ]
enum_VideoSuggestionsProcessingWarnings := [ "unknownContainer", "unknownVideoCodec", "unknownAudioCodec", "inconsistentResolution", "hasEditlist", "problematicVideoCodec", "problematicAudioCodec", "unsupportedVrStereoMode", "unsupportedSphericalProjectionType", "unsupportedHdrPixelFormat", "unsupportedHdrColorMetadata", "problematicHdrLookupTable" ]

valid {
    input.Body.ageGating.alcoholContent == BOOLEAN
    input.Body.ageGating.restricted == BOOLEAN
    input.Body.ageGating.videoGameRating == enum_VideoAgeGatingVideoGameRating[_]
    input.Body.contentDetails.caption == enum_VideoContentDetailsCaption[_]
    input.Body.contentDetails.contentRating.acbRating == enum_ContentRatingAcbRating[_]
    input.Body.contentDetails.contentRating.agcomRating == enum_ContentRatingAgcomRating[_]
    input.Body.contentDetails.contentRating.anatelRating == enum_ContentRatingAnatelRating[_]
    input.Body.contentDetails.contentRating.bbfcRating == enum_ContentRatingBbfcRating[_]
    input.Body.contentDetails.contentRating.bfvcRating == enum_ContentRatingBfvcRating[_]
    input.Body.contentDetails.contentRating.bmukkRating == enum_ContentRatingBmukkRating[_]
    input.Body.contentDetails.contentRating.catvRating == enum_ContentRatingCatvRating[_]
    input.Body.contentDetails.contentRating.catvfrRating == enum_ContentRatingCatvfrRating[_]
    input.Body.contentDetails.contentRating.cbfcRating == enum_ContentRatingCbfcRating[_]
    input.Body.contentDetails.contentRating.cccRating == enum_ContentRatingCccRating[_]
    input.Body.contentDetails.contentRating.cceRating == enum_ContentRatingCceRating[_]
    input.Body.contentDetails.contentRating.chfilmRating == enum_ContentRatingChfilmRating[_]
    input.Body.contentDetails.contentRating.chvrsRating == enum_ContentRatingChvrsRating[_]
    input.Body.contentDetails.contentRating.cicfRating == enum_ContentRatingCicfRating[_]
    input.Body.contentDetails.contentRating.cnaRating == enum_ContentRatingCnaRating[_]
    input.Body.contentDetails.contentRating.cncRating == enum_ContentRatingCncRating[_]
    input.Body.contentDetails.contentRating.csaRating == enum_ContentRatingCsaRating[_]
    input.Body.contentDetails.contentRating.cscfRating == enum_ContentRatingCscfRating[_]
    input.Body.contentDetails.contentRating.czfilmRating == enum_ContentRatingCzfilmRating[_]
    input.Body.contentDetails.contentRating.djctqRating == enum_ContentRatingDjctqRating[_]
    input.Body.contentDetails.contentRating.djctqRatingReasons[_] == enum_ContentRatingDjctqRatingReasons[_]
    input.Body.contentDetails.contentRating.ecbmctRating == enum_ContentRatingEcbmctRating[_]
    input.Body.contentDetails.contentRating.eefilmRating == enum_ContentRatingEefilmRating[_]
    input.Body.contentDetails.contentRating.egfilmRating == enum_ContentRatingEgfilmRating[_]
    input.Body.contentDetails.contentRating.eirinRating == enum_ContentRatingEirinRating[_]
    input.Body.contentDetails.contentRating.fcbmRating == enum_ContentRatingFcbmRating[_]
    input.Body.contentDetails.contentRating.fcoRating == enum_ContentRatingFcoRating[_]
    input.Body.contentDetails.contentRating.fmocRating == enum_ContentRatingFmocRating[_]
    input.Body.contentDetails.contentRating.fpbRating == enum_ContentRatingFpbRating[_]
    input.Body.contentDetails.contentRating.fpbRatingReasons[_] == enum_ContentRatingFpbRatingReasons[_]
    input.Body.contentDetails.contentRating.fskRating == enum_ContentRatingFskRating[_]
    input.Body.contentDetails.contentRating.grfilmRating == enum_ContentRatingGrfilmRating[_]
    input.Body.contentDetails.contentRating.icaaRating == enum_ContentRatingIcaaRating[_]
    input.Body.contentDetails.contentRating.ifcoRating == enum_ContentRatingIfcoRating[_]
    input.Body.contentDetails.contentRating.ilfilmRating == enum_ContentRatingIlfilmRating[_]
    input.Body.contentDetails.contentRating.incaaRating == enum_ContentRatingIncaaRating[_]
    input.Body.contentDetails.contentRating.kfcbRating == enum_ContentRatingKfcbRating[_]
    input.Body.contentDetails.contentRating.kijkwijzerRating == enum_ContentRatingKijkwijzerRating[_]
    input.Body.contentDetails.contentRating.kmrbRating == enum_ContentRatingKmrbRating[_]
    input.Body.contentDetails.contentRating.lsfRating == enum_ContentRatingLsfRating[_]
    input.Body.contentDetails.contentRating.mccaaRating == enum_ContentRatingMccaaRating[_]
    input.Body.contentDetails.contentRating.mccypRating == enum_ContentRatingMccypRating[_]
    input.Body.contentDetails.contentRating.mcstRating == enum_ContentRatingMcstRating[_]
    input.Body.contentDetails.contentRating.mdaRating == enum_ContentRatingMdaRating[_]
    input.Body.contentDetails.contentRating.medietilsynetRating == enum_ContentRatingMedietilsynetRating[_]
    input.Body.contentDetails.contentRating.mekuRating == enum_ContentRatingMekuRating[_]
    input.Body.contentDetails.contentRating.menaMpaaRating == enum_ContentRatingMenaMpaaRating[_]
    input.Body.contentDetails.contentRating.mibacRating == enum_ContentRatingMibacRating[_]
    input.Body.contentDetails.contentRating.mocRating == enum_ContentRatingMocRating[_]
    input.Body.contentDetails.contentRating.moctwRating == enum_ContentRatingMoctwRating[_]
    input.Body.contentDetails.contentRating.mpaaRating == enum_ContentRatingMpaaRating[_]
    input.Body.contentDetails.contentRating.mpaatRating == enum_ContentRatingMpaatRating[_]
    input.Body.contentDetails.contentRating.mtrcbRating == enum_ContentRatingMtrcbRating[_]
    input.Body.contentDetails.contentRating.nbcRating == enum_ContentRatingNbcRating[_]
    input.Body.contentDetails.contentRating.nbcplRating == enum_ContentRatingNbcplRating[_]
    input.Body.contentDetails.contentRating.nfrcRating == enum_ContentRatingNfrcRating[_]
    input.Body.contentDetails.contentRating.nfvcbRating == enum_ContentRatingNfvcbRating[_]
    input.Body.contentDetails.contentRating.nkclvRating == enum_ContentRatingNkclvRating[_]
    input.Body.contentDetails.contentRating.nmcRating == enum_ContentRatingNmcRating[_]
    input.Body.contentDetails.contentRating.oflcRating == enum_ContentRatingOflcRating[_]
    input.Body.contentDetails.contentRating.pefilmRating == enum_ContentRatingPefilmRating[_]
    input.Body.contentDetails.contentRating.rcnofRating == enum_ContentRatingRcnofRating[_]
    input.Body.contentDetails.contentRating.resorteviolenciaRating == enum_ContentRatingResorteviolenciaRating[_]
    input.Body.contentDetails.contentRating.rtcRating == enum_ContentRatingRtcRating[_]
    input.Body.contentDetails.contentRating.rteRating == enum_ContentRatingRteRating[_]
    input.Body.contentDetails.contentRating.russiaRating == enum_ContentRatingRussiaRating[_]
    input.Body.contentDetails.contentRating.skfilmRating == enum_ContentRatingSkfilmRating[_]
    input.Body.contentDetails.contentRating.smaisRating == enum_ContentRatingSmaisRating[_]
    input.Body.contentDetails.contentRating.smsaRating == enum_ContentRatingSmsaRating[_]
    input.Body.contentDetails.contentRating.tvpgRating == enum_ContentRatingTvpgRating[_]
    input.Body.contentDetails.contentRating.ytRating == enum_ContentRatingYtRating[_]
    input.Body.contentDetails.countryRestriction.allowed == BOOLEAN
    input.Body.contentDetails.countryRestriction.exception[_] == STRING
    input.Body.contentDetails.definition == enum_VideoContentDetailsDefinition[_]
    input.Body.contentDetails.dimension == STRING
    input.Body.contentDetails.duration == STRING
    input.Body.contentDetails.hasCustomThumbnail == BOOLEAN
    input.Body.contentDetails.licensedContent == BOOLEAN
    input.Body.contentDetails.projection == enum_VideoContentDetailsProjection[_]
    input.Body.contentDetails.regionRestriction.allowed[_] == STRING
    input.Body.contentDetails.regionRestriction.blocked[_] == STRING
    input.Body.etag == STRING
    input.Body.fileDetails.audioStreams[_].bitrateBps == STRING
    input.Body.fileDetails.audioStreams[_].channelCount == INTEGER
    input.Body.fileDetails.audioStreams[_].codec == STRING
    input.Body.fileDetails.audioStreams[_].vendor == STRING
    input.Body.fileDetails.bitrateBps == STRING
    input.Body.fileDetails.container == STRING
    input.Body.fileDetails.creationTime == STRING
    input.Body.fileDetails.durationMs == STRING
    input.Body.fileDetails.fileName == STRING
    input.Body.fileDetails.fileSize == STRING
    input.Body.fileDetails.fileType == enum_VideoFileDetailsFileType[_]
    input.Body.fileDetails.videoStreams[_].aspectRatio == NUMBER
    input.Body.fileDetails.videoStreams[_].bitrateBps == STRING
    input.Body.fileDetails.videoStreams[_].codec == STRING
    input.Body.fileDetails.videoStreams[_].frameRateFps == NUMBER
    input.Body.fileDetails.videoStreams[_].heightPixels == INTEGER
    input.Body.fileDetails.videoStreams[_].rotation == enum_VideoFileDetailsVideoStreamRotation[_]
    input.Body.fileDetails.videoStreams[_].vendor == STRING
    input.Body.fileDetails.videoStreams[_].widthPixels == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.liveStreamingDetails.activeLiveChatId == STRING
    input.Body.liveStreamingDetails.actualEndTime == STRING
    input.Body.liveStreamingDetails.actualStartTime == STRING
    input.Body.liveStreamingDetails.concurrentViewers == STRING
    input.Body.liveStreamingDetails.scheduledEndTime == STRING
    input.Body.liveStreamingDetails.scheduledStartTime == STRING
    input.Body.localizations.STRING.description == STRING
    input.Body.localizations.STRING.title == STRING
    input.Body.monetizationDetails.access.allowed == BOOLEAN
    input.Body.monetizationDetails.access.exception[_] == STRING
    input.Body.player.embedHeight == STRING
    input.Body.player.embedHtml == STRING
    input.Body.player.embedWidth == STRING
    input.Body.processingDetails.editorSuggestionsAvailability == STRING
    input.Body.processingDetails.fileDetailsAvailability == STRING
    input.Body.processingDetails.processingFailureReason == enum_VideoProcessingDetailsProcessingFailureReason[_]
    input.Body.processingDetails.processingIssuesAvailability == STRING
    input.Body.processingDetails.processingProgress.partsProcessed == STRING
    input.Body.processingDetails.processingProgress.partsTotal == STRING
    input.Body.processingDetails.processingProgress.timeLeftMs == STRING
    input.Body.processingDetails.processingStatus == enum_VideoProcessingDetailsProcessingStatus[_]
    input.Body.processingDetails.tagSuggestionsAvailability == STRING
    input.Body.processingDetails.thumbnailsAvailability == STRING
    input.Body.projectDetails.STRING == STRING
    input.Body.recordingDetails.location.altitude == NUMBER
    input.Body.recordingDetails.location.latitude == NUMBER
    input.Body.recordingDetails.location.longitude == NUMBER
    input.Body.recordingDetails.locationDescription == STRING
    input.Body.recordingDetails.recordingDate == STRING
    input.Body.snippet.categoryId == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.channelTitle == STRING
    input.Body.snippet.defaultAudioLanguage == STRING
    input.Body.snippet.defaultLanguage == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.liveBroadcastContent == enum_VideoSnippetLiveBroadcastContent[_]
    input.Body.snippet.localized.description == STRING
    input.Body.snippet.localized.title == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.tags[_] == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.statistics.commentCount == STRING
    input.Body.statistics.dislikeCount == STRING
    input.Body.statistics.favoriteCount == STRING
    input.Body.statistics.likeCount == STRING
    input.Body.statistics.viewCount == STRING
    input.Body.status.embeddable == BOOLEAN
    input.Body.status.failureReason == enum_VideoStatusFailureReason[_]
    input.Body.status.license == enum_VideoStatusLicense[_]
    input.Body.status.madeForKids == BOOLEAN
    input.Body.status.privacyStatus == enum_VideoStatusPrivacyStatus[_]
    input.Body.status.publicStatsViewable == BOOLEAN
    input.Body.status.publishAt == STRING
    input.Body.status.rejectionReason == enum_VideoStatusRejectionReason[_]
    input.Body.status.selfDeclaredMadeForKids == BOOLEAN
    input.Body.status.uploadStatus == enum_VideoStatusUploadStatus[_]
    input.Body.suggestions.editorSuggestions[_] == enum_VideoSuggestionsEditorSuggestions[_]
    input.Body.suggestions.processingErrors[_] == enum_VideoSuggestionsProcessingErrors[_]
    input.Body.suggestions.processingHints[_] == enum_VideoSuggestionsProcessingHints[_]
    input.Body.suggestions.processingWarnings[_] == enum_VideoSuggestionsProcessingWarnings[_]
    input.Body.suggestions.tagSuggestions[_].categoryRestricts[_] == STRING
    input.Body.suggestions.tagSuggestions[_].tag == STRING
    input.Body.topicDetails.relevantTopicIds[_] == STRING
    input.Body.topicDetails.topicCategories[_] == STRING
    input.Body.topicDetails.topicIds[_] == STRING
    input.Qs.autoLevels == BOOLEAN
    input.Qs.notifySubscribers == BOOLEAN
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.onBehalfOfContentOwnerChannel == STRING
    input.Qs.part == STRING
    input.Qs.stabilize == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

youtube.videos.list

enum_ChartParameter := [ "chartUnspecified", "mostPopular" ]
enum_MyRatingParameter := [ "none", "like", "dislike" ]

valid {
    input.Qs.chart == enum_ChartParameter[_]
    input.Qs.hl == STRING
    input.Qs.id == STRING
    input.Qs.locale == STRING
    input.Qs.maxHeight == INTEGER
    input.Qs.maxResults == INTEGER
    input.Qs.maxWidth == INTEGER
    input.Qs.myRating == enum_MyRatingParameter[_]
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.pageToken == STRING
    input.Qs.part == STRING
    input.Qs.regionCode == STRING
    input.Qs.videoCategoryId == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.videos.rate

enum_RatingParameter := [ "none", "like", "dislike" ]

valid {
    input.Qs.id == STRING
    input.Qs.rating == enum_RatingParameter[_]
    input.ProviderMetadata.Region == STRING
}

youtube.videos.reportAbuse

valid {
    input.Body.comments == STRING
    input.Body.language == STRING
    input.Body.reasonId == STRING
    input.Body.secondaryReasonId == STRING
    input.Body.videoId == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.videos.update

enum_ContentRatingAcbRating := [ "acbUnspecified", "acbE", "acbP", "acbC", "acbG", "acbPg", "acbM", "acbMa15plus", "acbR18plus", "acbUnrated" ]
enum_ContentRatingAgcomRating := [ "agcomUnspecified", "agcomT", "agcomVm14", "agcomVm18", "agcomUnrated" ]
enum_ContentRatingAnatelRating := [ "anatelUnspecified", "anatelF", "anatelI", "anatelI7", "anatelI10", "anatelI12", "anatelR", "anatelA", "anatelUnrated" ]
enum_ContentRatingBbfcRating := [ "bbfcUnspecified", "bbfcU", "bbfcPg", "bbfc12a", "bbfc12", "bbfc15", "bbfc18", "bbfcR18", "bbfcUnrated" ]
enum_ContentRatingBfvcRating := [ "bfvcUnspecified", "bfvcG", "bfvcE", "bfvc13", "bfvc15", "bfvc18", "bfvc20", "bfvcB", "bfvcUnrated" ]
enum_ContentRatingBmukkRating := [ "bmukkUnspecified", "bmukkAa", "bmukk6", "bmukk8", "bmukk10", "bmukk12", "bmukk14", "bmukk16", "bmukkUnrated" ]
enum_ContentRatingCatvRating := [ "catvUnspecified", "catvC", "catvC8", "catvG", "catvPg", "catv14plus", "catv18plus", "catvUnrated", "catvE" ]
enum_ContentRatingCatvfrRating := [ "catvfrUnspecified", "catvfrG", "catvfr8plus", "catvfr13plus", "catvfr16plus", "catvfr18plus", "catvfrUnrated", "catvfrE" ]
enum_ContentRatingCbfcRating := [ "cbfcUnspecified", "cbfcU", "cbfcUA", "cbfcUA7plus", "cbfcUA13plus", "cbfcUA16plus", "cbfcA", "cbfcS", "cbfcUnrated" ]
enum_ContentRatingCccRating := [ "cccUnspecified", "cccTe", "ccc6", "ccc14", "ccc18", "ccc18v", "ccc18s", "cccUnrated" ]
enum_ContentRatingCceRating := [ "cceUnspecified", "cceM4", "cceM6", "cceM12", "cceM16", "cceM18", "cceUnrated", "cceM14" ]
enum_ContentRatingChfilmRating := [ "chfilmUnspecified", "chfilm0", "chfilm6", "chfilm12", "chfilm16", "chfilm18", "chfilmUnrated" ]
enum_ContentRatingChvrsRating := [ "chvrsUnspecified", "chvrsG", "chvrsPg", "chvrs14a", "chvrs18a", "chvrsR", "chvrsE", "chvrsUnrated" ]
enum_ContentRatingCicfRating := [ "cicfUnspecified", "cicfE", "cicfKtEa", "cicfKntEna", "cicfUnrated" ]
enum_ContentRatingCnaRating := [ "cnaUnspecified", "cnaAp", "cna12", "cna15", "cna18", "cna18plus", "cnaUnrated" ]
enum_ContentRatingCncRating := [ "cncUnspecified", "cncT", "cnc10", "cnc12", "cnc16", "cnc18", "cncE", "cncInterdiction", "cncUnrated" ]
enum_ContentRatingCsaRating := [ "csaUnspecified", "csaT", "csa10", "csa12", "csa16", "csa18", "csaInterdiction", "csaUnrated" ]
enum_ContentRatingCscfRating := [ "cscfUnspecified", "cscfAl", "cscfA", "cscf6", "cscf9", "cscf12", "cscf16", "cscf18", "cscfUnrated" ]
enum_ContentRatingCzfilmRating := [ "czfilmUnspecified", "czfilmU", "czfilm12", "czfilm14", "czfilm18", "czfilmUnrated" ]
enum_ContentRatingDjctqRating := [ "djctqUnspecified", "djctqL", "djctq10", "djctq12", "djctq14", "djctq16", "djctq18", "djctqEr", "djctqL10", "djctqL12", "djctqL14", "djctqL16", "djctqL18", "djctq1012", "djctq1014", "djctq1016", "djctq1018", "djctq1214", "djctq1216", "djctq1218", "djctq1416", "djctq1418", "djctq1618", "djctqUnrated" ]
enum_ContentRatingDjctqRatingReasons := [ "djctqRatingReasonUnspecified", "djctqViolence", "djctqExtremeViolence", "djctqSexualContent", "djctqNudity", "djctqSex", "djctqExplicitSex", "djctqDrugs", "djctqLegalDrugs", "djctqIllegalDrugs", "djctqInappropriateLanguage", "djctqCriminalActs", "djctqImpactingContent" ]
enum_ContentRatingEcbmctRating := [ "ecbmctUnspecified", "ecbmctG", "ecbmct7a", "ecbmct7plus", "ecbmct13a", "ecbmct13plus", "ecbmct15a", "ecbmct15plus", "ecbmct18plus", "ecbmctUnrated" ]
enum_ContentRatingEefilmRating := [ "eefilmUnspecified", "eefilmPere", "eefilmL", "eefilmMs6", "eefilmK6", "eefilmMs12", "eefilmK12", "eefilmK14", "eefilmK16", "eefilmUnrated" ]
enum_ContentRatingEgfilmRating := [ "egfilmUnspecified", "egfilmGn", "egfilm18", "egfilmBn", "egfilmUnrated" ]
enum_ContentRatingEirinRating := [ "eirinUnspecified", "eirinG", "eirinPg12", "eirinR15plus", "eirinR18plus", "eirinUnrated" ]
enum_ContentRatingFcbmRating := [ "fcbmUnspecified", "fcbmU", "fcbmPg13", "fcbmP13", "fcbm18", "fcbm18sx", "fcbm18pa", "fcbm18sg", "fcbm18pl", "fcbmUnrated" ]
enum_ContentRatingFcoRating := [ "fcoUnspecified", "fcoI", "fcoIia", "fcoIib", "fcoIi", "fcoIii", "fcoUnrated" ]
enum_ContentRatingFmocRating := [ "fmocUnspecified", "fmocU", "fmoc10", "fmoc12", "fmoc16", "fmoc18", "fmocE", "fmocUnrated" ]
enum_ContentRatingFpbRating := [ "fpbUnspecified", "fpbA", "fpbPg", "fpb79Pg", "fpb1012Pg", "fpb13", "fpb16", "fpb18", "fpbX18", "fpbXx", "fpbUnrated", "fpb10" ]
enum_ContentRatingFpbRatingReasons := [ "fpbRatingReasonUnspecified", "fpbBlasphemy", "fpbLanguage", "fpbNudity", "fpbPrejudice", "fpbSex", "fpbViolence", "fpbDrugs", "fpbSexualViolence", "fpbHorror", "fpbCriminalTechniques", "fpbImitativeActsTechniques" ]
enum_ContentRatingFskRating := [ "fskUnspecified", "fsk0", "fsk6", "fsk12", "fsk16", "fsk18", "fskUnrated" ]
enum_ContentRatingGrfilmRating := [ "grfilmUnspecified", "grfilmK", "grfilmE", "grfilmK12", "grfilmK13", "grfilmK15", "grfilmK17", "grfilmK18", "grfilmUnrated" ]
enum_ContentRatingIcaaRating := [ "icaaUnspecified", "icaaApta", "icaa7", "icaa12", "icaa13", "icaa16", "icaa18", "icaaX", "icaaUnrated" ]
enum_ContentRatingIfcoRating := [ "ifcoUnspecified", "ifcoG", "ifcoPg", "ifco12", "ifco12a", "ifco15", "ifco15a", "ifco16", "ifco18", "ifcoUnrated" ]
enum_ContentRatingIlfilmRating := [ "ilfilmUnspecified", "ilfilmAa", "ilfilm12", "ilfilm14", "ilfilm16", "ilfilm18", "ilfilmUnrated" ]
enum_ContentRatingIncaaRating := [ "incaaUnspecified", "incaaAtp", "incaaSam13", "incaaSam16", "incaaSam18", "incaaC", "incaaUnrated" ]
enum_ContentRatingKfcbRating := [ "kfcbUnspecified", "kfcbG", "kfcbPg", "kfcb16plus", "kfcbR", "kfcbUnrated" ]
enum_ContentRatingKijkwijzerRating := [ "kijkwijzerUnspecified", "kijkwijzerAl", "kijkwijzer6", "kijkwijzer9", "kijkwijzer12", "kijkwijzer16", "kijkwijzer18", "kijkwijzerUnrated" ]
enum_ContentRatingKmrbRating := [ "kmrbUnspecified", "kmrbAll", "kmrb12plus", "kmrb15plus", "kmrbTeenr", "kmrbR", "kmrbUnrated" ]
enum_ContentRatingLsfRating := [ "lsfUnspecified", "lsfSu", "lsfA", "lsfBo", "lsf13", "lsfR", "lsf17", "lsfD", "lsf21", "lsfUnrated" ]
enum_ContentRatingMccaaRating := [ "mccaaUnspecified", "mccaaU", "mccaaPg", "mccaa12a", "mccaa12", "mccaa14", "mccaa15", "mccaa16", "mccaa18", "mccaaUnrated" ]
enum_ContentRatingMccypRating := [ "mccypUnspecified", "mccypA", "mccyp7", "mccyp11", "mccyp15", "mccypUnrated" ]
enum_ContentRatingMcstRating := [ "mcstUnspecified", "mcstP", "mcst0", "mcstC13", "mcstC16", "mcst16plus", "mcstC18", "mcstGPg", "mcstUnrated" ]
enum_ContentRatingMdaRating := [ "mdaUnspecified", "mdaG", "mdaPg", "mdaPg13", "mdaNc16", "mdaM18", "mdaR21", "mdaUnrated" ]
enum_ContentRatingMedietilsynetRating := [ "medietilsynetUnspecified", "medietilsynetA", "medietilsynet6", "medietilsynet7", "medietilsynet9", "medietilsynet11", "medietilsynet12", "medietilsynet15", "medietilsynet18", "medietilsynetUnrated" ]
enum_ContentRatingMekuRating := [ "mekuUnspecified", "mekuS", "meku7", "meku12", "meku16", "meku18", "mekuUnrated" ]
enum_ContentRatingMenaMpaaRating := [ "menaMpaaUnspecified", "menaMpaaG", "menaMpaaPg", "menaMpaaPg13", "menaMpaaR", "menaMpaaUnrated" ]
enum_ContentRatingMibacRating := [ "mibacUnspecified", "mibacT", "mibacVap", "mibacVm6", "mibacVm12", "mibacVm14", "mibacVm16", "mibacVm18", "mibacUnrated" ]
enum_ContentRatingMocRating := [ "mocUnspecified", "mocE", "mocT", "moc7", "moc12", "moc15", "moc18", "mocX", "mocBanned", "mocUnrated" ]
enum_ContentRatingMoctwRating := [ "moctwUnspecified", "moctwG", "moctwP", "moctwPg", "moctwR", "moctwUnrated", "moctwR12", "moctwR15" ]
enum_ContentRatingMpaaRating := [ "mpaaUnspecified", "mpaaG", "mpaaPg", "mpaaPg13", "mpaaR", "mpaaNc17", "mpaaX", "mpaaUnrated" ]
enum_ContentRatingMpaatRating := [ "mpaatUnspecified", "mpaatGb", "mpaatRb" ]
enum_ContentRatingMtrcbRating := [ "mtrcbUnspecified", "mtrcbG", "mtrcbPg", "mtrcbR13", "mtrcbR16", "mtrcbR18", "mtrcbX", "mtrcbUnrated" ]
enum_ContentRatingNbcRating := [ "nbcUnspecified", "nbcG", "nbcPg", "nbc12plus", "nbc15plus", "nbc18plus", "nbc18plusr", "nbcPu", "nbcUnrated" ]
enum_ContentRatingNbcplRating := [ "nbcplUnspecified", "nbcplI", "nbcplIi", "nbcplIii", "nbcplIv", "nbcpl18plus", "nbcplUnrated" ]
enum_ContentRatingNfrcRating := [ "nfrcUnspecified", "nfrcA", "nfrcB", "nfrcC", "nfrcD", "nfrcX", "nfrcUnrated" ]
enum_ContentRatingNfvcbRating := [ "nfvcbUnspecified", "nfvcbG", "nfvcbPg", "nfvcb12", "nfvcb12a", "nfvcb15", "nfvcb18", "nfvcbRe", "nfvcbUnrated" ]
enum_ContentRatingNkclvRating := [ "nkclvUnspecified", "nkclvU", "nkclv7plus", "nkclv12plus", "nkclv16plus", "nkclv18plus", "nkclvUnrated" ]
enum_ContentRatingNmcRating := [ "nmcUnspecified", "nmcG", "nmcPg", "nmcPg13", "nmcPg15", "nmc15plus", "nmc18plus", "nmc18tc", "nmcUnrated" ]
enum_ContentRatingOflcRating := [ "oflcUnspecified", "oflcG", "oflcPg", "oflcM", "oflcR13", "oflcR15", "oflcR16", "oflcR18", "oflcUnrated", "oflcRp13", "oflcRp16", "oflcRp18" ]
enum_ContentRatingPefilmRating := [ "pefilmUnspecified", "pefilmPt", "pefilmPg", "pefilm14", "pefilm18", "pefilmUnrated" ]
enum_ContentRatingRcnofRating := [ "rcnofUnspecified", "rcnofI", "rcnofIi", "rcnofIii", "rcnofIv", "rcnofV", "rcnofVi", "rcnofUnrated" ]
enum_ContentRatingResorteviolenciaRating := [ "resorteviolenciaUnspecified", "resorteviolenciaA", "resorteviolenciaB", "resorteviolenciaC", "resorteviolenciaD", "resorteviolenciaE", "resorteviolenciaUnrated" ]
enum_ContentRatingRtcRating := [ "rtcUnspecified", "rtcAa", "rtcA", "rtcB", "rtcB15", "rtcC", "rtcD", "rtcUnrated" ]
enum_ContentRatingRteRating := [ "rteUnspecified", "rteGa", "rteCh", "rtePs", "rteMa", "rteUnrated" ]
enum_ContentRatingRussiaRating := [ "russiaUnspecified", "russia0", "russia6", "russia12", "russia16", "russia18", "russiaUnrated" ]
enum_ContentRatingSkfilmRating := [ "skfilmUnspecified", "skfilmG", "skfilmP2", "skfilmP5", "skfilmP8", "skfilmUnrated" ]
enum_ContentRatingSmaisRating := [ "smaisUnspecified", "smaisL", "smais7", "smais12", "smais14", "smais16", "smais18", "smaisUnrated" ]
enum_ContentRatingSmsaRating := [ "smsaUnspecified", "smsaA", "smsa7", "smsa11", "smsa15", "smsaUnrated" ]
enum_ContentRatingTvpgRating := [ "tvpgUnspecified", "tvpgY", "tvpgY7", "tvpgY7Fv", "tvpgG", "tvpgPg", "pg14", "tvpgMa", "tvpgUnrated" ]
enum_ContentRatingYtRating := [ "ytUnspecified", "ytAgeRestricted" ]
enum_VideoAgeGatingVideoGameRating := [ "anyone", "m15Plus", "m16Plus", "m17Plus" ]
enum_VideoContentDetailsCaption := [ "true", "false" ]
enum_VideoContentDetailsDefinition := [ "sd", "hd" ]
enum_VideoContentDetailsProjection := [ "rectangular", "360" ]
enum_VideoFileDetailsFileType := [ "video", "audio", "image", "archive", "document", "project", "other" ]
enum_VideoFileDetailsVideoStreamRotation := [ "none", "clockwise", "upsideDown", "counterClockwise", "other" ]
enum_VideoProcessingDetailsProcessingFailureReason := [ "uploadFailed", "transcodeFailed", "streamingFailed", "other" ]
enum_VideoProcessingDetailsProcessingStatus := [ "processing", "succeeded", "failed", "terminated" ]
enum_VideoSnippetLiveBroadcastContent := [ "none", "upcoming", "live", "completed" ]
enum_VideoStatusFailureReason := [ "conversion", "invalidFile", "emptyFile", "tooSmall", "codec", "uploadAborted" ]
enum_VideoStatusLicense := [ "youtube", "creativeCommon" ]
enum_VideoStatusPrivacyStatus := [ "public", "unlisted", "private" ]
enum_VideoStatusRejectionReason := [ "copyright", "inappropriate", "duplicate", "termsOfUse", "uploaderAccountSuspended", "length", "claim", "uploaderAccountClosed", "trademark", "legal" ]
enum_VideoStatusUploadStatus := [ "uploaded", "processed", "failed", "rejected", "deleted" ]
enum_VideoSuggestionsEditorSuggestions := [ "videoAutoLevels", "videoStabilize", "videoCrop", "audioQuietAudioSwap" ]
enum_VideoSuggestionsProcessingErrors := [ "audioFile", "imageFile", "projectFile", "notAVideoFile", "docFile", "archiveFile", "unsupportedSpatialAudioLayout" ]
enum_VideoSuggestionsProcessingHints := [ "nonStreamableMov", "sendBestQualityVideo", "sphericalVideo", "spatialAudio", "vrVideo", "hdrVideo" ]
enum_VideoSuggestionsProcessingWarnings := [ "unknownContainer", "unknownVideoCodec", "unknownAudioCodec", "inconsistentResolution", "hasEditlist", "problematicVideoCodec", "problematicAudioCodec", "unsupportedVrStereoMode", "unsupportedSphericalProjectionType", "unsupportedHdrPixelFormat", "unsupportedHdrColorMetadata", "problematicHdrLookupTable" ]

valid {
    input.Body.ageGating.alcoholContent == BOOLEAN
    input.Body.ageGating.restricted == BOOLEAN
    input.Body.ageGating.videoGameRating == enum_VideoAgeGatingVideoGameRating[_]
    input.Body.contentDetails.caption == enum_VideoContentDetailsCaption[_]
    input.Body.contentDetails.contentRating.acbRating == enum_ContentRatingAcbRating[_]
    input.Body.contentDetails.contentRating.agcomRating == enum_ContentRatingAgcomRating[_]
    input.Body.contentDetails.contentRating.anatelRating == enum_ContentRatingAnatelRating[_]
    input.Body.contentDetails.contentRating.bbfcRating == enum_ContentRatingBbfcRating[_]
    input.Body.contentDetails.contentRating.bfvcRating == enum_ContentRatingBfvcRating[_]
    input.Body.contentDetails.contentRating.bmukkRating == enum_ContentRatingBmukkRating[_]
    input.Body.contentDetails.contentRating.catvRating == enum_ContentRatingCatvRating[_]
    input.Body.contentDetails.contentRating.catvfrRating == enum_ContentRatingCatvfrRating[_]
    input.Body.contentDetails.contentRating.cbfcRating == enum_ContentRatingCbfcRating[_]
    input.Body.contentDetails.contentRating.cccRating == enum_ContentRatingCccRating[_]
    input.Body.contentDetails.contentRating.cceRating == enum_ContentRatingCceRating[_]
    input.Body.contentDetails.contentRating.chfilmRating == enum_ContentRatingChfilmRating[_]
    input.Body.contentDetails.contentRating.chvrsRating == enum_ContentRatingChvrsRating[_]
    input.Body.contentDetails.contentRating.cicfRating == enum_ContentRatingCicfRating[_]
    input.Body.contentDetails.contentRating.cnaRating == enum_ContentRatingCnaRating[_]
    input.Body.contentDetails.contentRating.cncRating == enum_ContentRatingCncRating[_]
    input.Body.contentDetails.contentRating.csaRating == enum_ContentRatingCsaRating[_]
    input.Body.contentDetails.contentRating.cscfRating == enum_ContentRatingCscfRating[_]
    input.Body.contentDetails.contentRating.czfilmRating == enum_ContentRatingCzfilmRating[_]
    input.Body.contentDetails.contentRating.djctqRating == enum_ContentRatingDjctqRating[_]
    input.Body.contentDetails.contentRating.djctqRatingReasons[_] == enum_ContentRatingDjctqRatingReasons[_]
    input.Body.contentDetails.contentRating.ecbmctRating == enum_ContentRatingEcbmctRating[_]
    input.Body.contentDetails.contentRating.eefilmRating == enum_ContentRatingEefilmRating[_]
    input.Body.contentDetails.contentRating.egfilmRating == enum_ContentRatingEgfilmRating[_]
    input.Body.contentDetails.contentRating.eirinRating == enum_ContentRatingEirinRating[_]
    input.Body.contentDetails.contentRating.fcbmRating == enum_ContentRatingFcbmRating[_]
    input.Body.contentDetails.contentRating.fcoRating == enum_ContentRatingFcoRating[_]
    input.Body.contentDetails.contentRating.fmocRating == enum_ContentRatingFmocRating[_]
    input.Body.contentDetails.contentRating.fpbRating == enum_ContentRatingFpbRating[_]
    input.Body.contentDetails.contentRating.fpbRatingReasons[_] == enum_ContentRatingFpbRatingReasons[_]
    input.Body.contentDetails.contentRating.fskRating == enum_ContentRatingFskRating[_]
    input.Body.contentDetails.contentRating.grfilmRating == enum_ContentRatingGrfilmRating[_]
    input.Body.contentDetails.contentRating.icaaRating == enum_ContentRatingIcaaRating[_]
    input.Body.contentDetails.contentRating.ifcoRating == enum_ContentRatingIfcoRating[_]
    input.Body.contentDetails.contentRating.ilfilmRating == enum_ContentRatingIlfilmRating[_]
    input.Body.contentDetails.contentRating.incaaRating == enum_ContentRatingIncaaRating[_]
    input.Body.contentDetails.contentRating.kfcbRating == enum_ContentRatingKfcbRating[_]
    input.Body.contentDetails.contentRating.kijkwijzerRating == enum_ContentRatingKijkwijzerRating[_]
    input.Body.contentDetails.contentRating.kmrbRating == enum_ContentRatingKmrbRating[_]
    input.Body.contentDetails.contentRating.lsfRating == enum_ContentRatingLsfRating[_]
    input.Body.contentDetails.contentRating.mccaaRating == enum_ContentRatingMccaaRating[_]
    input.Body.contentDetails.contentRating.mccypRating == enum_ContentRatingMccypRating[_]
    input.Body.contentDetails.contentRating.mcstRating == enum_ContentRatingMcstRating[_]
    input.Body.contentDetails.contentRating.mdaRating == enum_ContentRatingMdaRating[_]
    input.Body.contentDetails.contentRating.medietilsynetRating == enum_ContentRatingMedietilsynetRating[_]
    input.Body.contentDetails.contentRating.mekuRating == enum_ContentRatingMekuRating[_]
    input.Body.contentDetails.contentRating.menaMpaaRating == enum_ContentRatingMenaMpaaRating[_]
    input.Body.contentDetails.contentRating.mibacRating == enum_ContentRatingMibacRating[_]
    input.Body.contentDetails.contentRating.mocRating == enum_ContentRatingMocRating[_]
    input.Body.contentDetails.contentRating.moctwRating == enum_ContentRatingMoctwRating[_]
    input.Body.contentDetails.contentRating.mpaaRating == enum_ContentRatingMpaaRating[_]
    input.Body.contentDetails.contentRating.mpaatRating == enum_ContentRatingMpaatRating[_]
    input.Body.contentDetails.contentRating.mtrcbRating == enum_ContentRatingMtrcbRating[_]
    input.Body.contentDetails.contentRating.nbcRating == enum_ContentRatingNbcRating[_]
    input.Body.contentDetails.contentRating.nbcplRating == enum_ContentRatingNbcplRating[_]
    input.Body.contentDetails.contentRating.nfrcRating == enum_ContentRatingNfrcRating[_]
    input.Body.contentDetails.contentRating.nfvcbRating == enum_ContentRatingNfvcbRating[_]
    input.Body.contentDetails.contentRating.nkclvRating == enum_ContentRatingNkclvRating[_]
    input.Body.contentDetails.contentRating.nmcRating == enum_ContentRatingNmcRating[_]
    input.Body.contentDetails.contentRating.oflcRating == enum_ContentRatingOflcRating[_]
    input.Body.contentDetails.contentRating.pefilmRating == enum_ContentRatingPefilmRating[_]
    input.Body.contentDetails.contentRating.rcnofRating == enum_ContentRatingRcnofRating[_]
    input.Body.contentDetails.contentRating.resorteviolenciaRating == enum_ContentRatingResorteviolenciaRating[_]
    input.Body.contentDetails.contentRating.rtcRating == enum_ContentRatingRtcRating[_]
    input.Body.contentDetails.contentRating.rteRating == enum_ContentRatingRteRating[_]
    input.Body.contentDetails.contentRating.russiaRating == enum_ContentRatingRussiaRating[_]
    input.Body.contentDetails.contentRating.skfilmRating == enum_ContentRatingSkfilmRating[_]
    input.Body.contentDetails.contentRating.smaisRating == enum_ContentRatingSmaisRating[_]
    input.Body.contentDetails.contentRating.smsaRating == enum_ContentRatingSmsaRating[_]
    input.Body.contentDetails.contentRating.tvpgRating == enum_ContentRatingTvpgRating[_]
    input.Body.contentDetails.contentRating.ytRating == enum_ContentRatingYtRating[_]
    input.Body.contentDetails.countryRestriction.allowed == BOOLEAN
    input.Body.contentDetails.countryRestriction.exception[_] == STRING
    input.Body.contentDetails.definition == enum_VideoContentDetailsDefinition[_]
    input.Body.contentDetails.dimension == STRING
    input.Body.contentDetails.duration == STRING
    input.Body.contentDetails.hasCustomThumbnail == BOOLEAN
    input.Body.contentDetails.licensedContent == BOOLEAN
    input.Body.contentDetails.projection == enum_VideoContentDetailsProjection[_]
    input.Body.contentDetails.regionRestriction.allowed[_] == STRING
    input.Body.contentDetails.regionRestriction.blocked[_] == STRING
    input.Body.etag == STRING
    input.Body.fileDetails.audioStreams[_].bitrateBps == STRING
    input.Body.fileDetails.audioStreams[_].channelCount == INTEGER
    input.Body.fileDetails.audioStreams[_].codec == STRING
    input.Body.fileDetails.audioStreams[_].vendor == STRING
    input.Body.fileDetails.bitrateBps == STRING
    input.Body.fileDetails.container == STRING
    input.Body.fileDetails.creationTime == STRING
    input.Body.fileDetails.durationMs == STRING
    input.Body.fileDetails.fileName == STRING
    input.Body.fileDetails.fileSize == STRING
    input.Body.fileDetails.fileType == enum_VideoFileDetailsFileType[_]
    input.Body.fileDetails.videoStreams[_].aspectRatio == NUMBER
    input.Body.fileDetails.videoStreams[_].bitrateBps == STRING
    input.Body.fileDetails.videoStreams[_].codec == STRING
    input.Body.fileDetails.videoStreams[_].frameRateFps == NUMBER
    input.Body.fileDetails.videoStreams[_].heightPixels == INTEGER
    input.Body.fileDetails.videoStreams[_].rotation == enum_VideoFileDetailsVideoStreamRotation[_]
    input.Body.fileDetails.videoStreams[_].vendor == STRING
    input.Body.fileDetails.videoStreams[_].widthPixels == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.liveStreamingDetails.activeLiveChatId == STRING
    input.Body.liveStreamingDetails.actualEndTime == STRING
    input.Body.liveStreamingDetails.actualStartTime == STRING
    input.Body.liveStreamingDetails.concurrentViewers == STRING
    input.Body.liveStreamingDetails.scheduledEndTime == STRING
    input.Body.liveStreamingDetails.scheduledStartTime == STRING
    input.Body.localizations.STRING.description == STRING
    input.Body.localizations.STRING.title == STRING
    input.Body.monetizationDetails.access.allowed == BOOLEAN
    input.Body.monetizationDetails.access.exception[_] == STRING
    input.Body.player.embedHeight == STRING
    input.Body.player.embedHtml == STRING
    input.Body.player.embedWidth == STRING
    input.Body.processingDetails.editorSuggestionsAvailability == STRING
    input.Body.processingDetails.fileDetailsAvailability == STRING
    input.Body.processingDetails.processingFailureReason == enum_VideoProcessingDetailsProcessingFailureReason[_]
    input.Body.processingDetails.processingIssuesAvailability == STRING
    input.Body.processingDetails.processingProgress.partsProcessed == STRING
    input.Body.processingDetails.processingProgress.partsTotal == STRING
    input.Body.processingDetails.processingProgress.timeLeftMs == STRING
    input.Body.processingDetails.processingStatus == enum_VideoProcessingDetailsProcessingStatus[_]
    input.Body.processingDetails.tagSuggestionsAvailability == STRING
    input.Body.processingDetails.thumbnailsAvailability == STRING
    input.Body.projectDetails.STRING == STRING
    input.Body.recordingDetails.location.altitude == NUMBER
    input.Body.recordingDetails.location.latitude == NUMBER
    input.Body.recordingDetails.location.longitude == NUMBER
    input.Body.recordingDetails.locationDescription == STRING
    input.Body.recordingDetails.recordingDate == STRING
    input.Body.snippet.categoryId == STRING
    input.Body.snippet.channelId == STRING
    input.Body.snippet.channelTitle == STRING
    input.Body.snippet.defaultAudioLanguage == STRING
    input.Body.snippet.defaultLanguage == STRING
    input.Body.snippet.description == STRING
    input.Body.snippet.liveBroadcastContent == enum_VideoSnippetLiveBroadcastContent[_]
    input.Body.snippet.localized.description == STRING
    input.Body.snippet.localized.title == STRING
    input.Body.snippet.publishedAt == STRING
    input.Body.snippet.tags[_] == STRING
    input.Body.snippet.thumbnails.default.height == INTEGER
    input.Body.snippet.thumbnails.default.url == STRING
    input.Body.snippet.thumbnails.default.width == INTEGER
    input.Body.snippet.thumbnails.high.height == INTEGER
    input.Body.snippet.thumbnails.high.url == STRING
    input.Body.snippet.thumbnails.high.width == INTEGER
    input.Body.snippet.thumbnails.maxres.height == INTEGER
    input.Body.snippet.thumbnails.maxres.url == STRING
    input.Body.snippet.thumbnails.maxres.width == INTEGER
    input.Body.snippet.thumbnails.medium.height == INTEGER
    input.Body.snippet.thumbnails.medium.url == STRING
    input.Body.snippet.thumbnails.medium.width == INTEGER
    input.Body.snippet.thumbnails.standard.height == INTEGER
    input.Body.snippet.thumbnails.standard.url == STRING
    input.Body.snippet.thumbnails.standard.width == INTEGER
    input.Body.snippet.title == STRING
    input.Body.statistics.commentCount == STRING
    input.Body.statistics.dislikeCount == STRING
    input.Body.statistics.favoriteCount == STRING
    input.Body.statistics.likeCount == STRING
    input.Body.statistics.viewCount == STRING
    input.Body.status.embeddable == BOOLEAN
    input.Body.status.failureReason == enum_VideoStatusFailureReason[_]
    input.Body.status.license == enum_VideoStatusLicense[_]
    input.Body.status.madeForKids == BOOLEAN
    input.Body.status.privacyStatus == enum_VideoStatusPrivacyStatus[_]
    input.Body.status.publicStatsViewable == BOOLEAN
    input.Body.status.publishAt == STRING
    input.Body.status.rejectionReason == enum_VideoStatusRejectionReason[_]
    input.Body.status.selfDeclaredMadeForKids == BOOLEAN
    input.Body.status.uploadStatus == enum_VideoStatusUploadStatus[_]
    input.Body.suggestions.editorSuggestions[_] == enum_VideoSuggestionsEditorSuggestions[_]
    input.Body.suggestions.processingErrors[_] == enum_VideoSuggestionsProcessingErrors[_]
    input.Body.suggestions.processingHints[_] == enum_VideoSuggestionsProcessingHints[_]
    input.Body.suggestions.processingWarnings[_] == enum_VideoSuggestionsProcessingWarnings[_]
    input.Body.suggestions.tagSuggestions[_].categoryRestricts[_] == STRING
    input.Body.suggestions.tagSuggestions[_].tag == STRING
    input.Body.topicDetails.relevantTopicIds[_] == STRING
    input.Body.topicDetails.topicCategories[_] == STRING
    input.Body.topicDetails.topicIds[_] == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.watermarks.set

enum_InvideoPositionCornerPosition := [ "topLeft", "topRight", "bottomLeft", "bottomRight" ]
enum_InvideoPositionType := [ "corner" ]
enum_InvideoTimingType := [ "offsetFromStart", "offsetFromEnd" ]

valid {
    input.Body.imageBytes == STRING
    input.Body.imageUrl == STRING
    input.Body.position.cornerPosition == enum_InvideoPositionCornerPosition[_]
    input.Body.position.type == enum_InvideoPositionType[_]
    input.Body.targetChannelId == STRING
    input.Body.timing.durationMs == STRING
    input.Body.timing.offsetMs == STRING
    input.Body.timing.type == enum_InvideoTimingType[_]
    input.Qs.channelId == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.watermarks.unset

valid {
    input.Qs.channelId == STRING
    input.Qs.onBehalfOfContentOwner == STRING
    input.ProviderMetadata.Region == STRING
}

youtube.youtube.v3.updateCommentThreads

enum_CommentSnippetModerationStatus := [ "published", "heldForReview", "likelySpam", "rejected" ]
enum_CommentSnippetViewerRating := [ "none", "like", "dislike" ]

valid {
    input.Body.etag == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.replies.comments[_].etag == STRING
    input.Body.replies.comments[_].id == STRING
    input.Body.replies.comments[_].kind == STRING
    input.Body.replies.comments[_].snippet.authorChannelId.value == STRING
    input.Body.replies.comments[_].snippet.authorChannelUrl == STRING
    input.Body.replies.comments[_].snippet.authorDisplayName == STRING
    input.Body.replies.comments[_].snippet.authorProfileImageUrl == STRING
    input.Body.replies.comments[_].snippet.canRate == BOOLEAN
    input.Body.replies.comments[_].snippet.channelId == STRING
    input.Body.replies.comments[_].snippet.likeCount == INTEGER
    input.Body.replies.comments[_].snippet.moderationStatus == enum_CommentSnippetModerationStatus[_]
    input.Body.replies.comments[_].snippet.parentId == STRING
    input.Body.replies.comments[_].snippet.publishedAt == STRING
    input.Body.replies.comments[_].snippet.textDisplay == STRING
    input.Body.replies.comments[_].snippet.textOriginal == STRING
    input.Body.replies.comments[_].snippet.updatedAt == STRING
    input.Body.replies.comments[_].snippet.videoId == STRING
    input.Body.replies.comments[_].snippet.viewerRating == enum_CommentSnippetViewerRating[_]
    input.Body.snippet.canReply == BOOLEAN
    input.Body.snippet.channelId == STRING
    input.Body.snippet.isPublic == BOOLEAN
    input.Body.snippet.topLevelComment.etag == STRING
    input.Body.snippet.topLevelComment.id == STRING
    input.Body.snippet.topLevelComment.kind == STRING
    input.Body.snippet.topLevelComment.snippet.authorChannelId.value == STRING
    input.Body.snippet.topLevelComment.snippet.authorChannelUrl == STRING
    input.Body.snippet.topLevelComment.snippet.authorDisplayName == STRING
    input.Body.snippet.topLevelComment.snippet.authorProfileImageUrl == STRING
    input.Body.snippet.topLevelComment.snippet.canRate == BOOLEAN
    input.Body.snippet.topLevelComment.snippet.channelId == STRING
    input.Body.snippet.topLevelComment.snippet.likeCount == INTEGER
    input.Body.snippet.topLevelComment.snippet.moderationStatus == enum_CommentSnippetModerationStatus[_]
    input.Body.snippet.topLevelComment.snippet.parentId == STRING
    input.Body.snippet.topLevelComment.snippet.publishedAt == STRING
    input.Body.snippet.topLevelComment.snippet.textDisplay == STRING
    input.Body.snippet.topLevelComment.snippet.textOriginal == STRING
    input.Body.snippet.topLevelComment.snippet.updatedAt == STRING
    input.Body.snippet.topLevelComment.snippet.videoId == STRING
    input.Body.snippet.topLevelComment.snippet.viewerRating == enum_CommentSnippetViewerRating[_]
    input.Body.snippet.totalReplyCount == INTEGER
    input.Body.snippet.videoId == STRING
    input.Qs.part == STRING
    input.ProviderMetadata.Region == STRING
}