go-youtubekids-client/api/swagger.yaml
Aleksander Garin fb9fd9880e - Upgrade schema
- Add constants
- Add default
- Add set default for request payload
- Fixes
2023-08-22 17:46:51 +03:00

584 lines
15 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

openapi: 3.0.3
info:
title: YouTube Kids Public API
description: For generate API REST clients for Feelter UGC
contact:
email: garin1221@yandex.ru
version: 0.0.2
servers:
- url: https://www.youtubekids.com/youtubei/v1
description: Original YoutubeKids API Server V1
tags:
- name: browse
description: Browse resource content
paths:
# Получение контента определенного ресурса, {browseId}
/browse:
post:
tags:
- browse
summary: Browse resource content
description: Get content for resource
operationId: browse
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BrowseRequestPayload'
responses:
'200':
description: OK
content:
'application/json':
"schema":
$ref: '#/components/schemas/BrowseResponsePayload'
default:
description: Unexpected error
content:
'application/json':
"schema":
$ref: '#/components/schemas/ErrorResponsePayload'
# Компоненты
components:
# Схемы данных
schemas:
# Ошибка
Error:
type: object
required:
- message
properties:
message:
type: string
domain:
type: string
reason:
type: string
# Доступность данных
AccessibilityData:
type: object
properties:
label:
type: string
# Доступность
Accessibility:
type: object
properties:
accessibilityData:
$ref: '#/components/schemas/AccessibilityData'
# WatchEndpoint
WatchEndpoint:
type: object
properties:
videoId:
type: string
# BrowseEndpoint
BrowseEndpoint:
type: object
properties:
browseId:
type: string
canonicalBaseUrl:
type: string
# Конечная точка навигации
NavigationEndpoint:
type: object
properties:
clickTrackingParams:
type: string
watchEndpoint:
$ref: '#/components/schemas/WatchEndpoint'
browseEndpoint:
$ref: '#/components/schemas/BrowseEndpoint'
# Текст -> Runs
TextRun:
type: object
required:
- text
properties:
text:
type: string
navigationEndpoint:
$ref: '#/components/schemas/NavigationEndpoint'
# Текст
Text:
type: object
required:
- runs
properties:
runs:
type: array
items:
$ref: '#/components/schemas/TextRun'
accessibility:
$ref: '#/components/schemas/Accessibility'
# Строковый параметр ключ-зачение
KeyStringValue:
type: object
required:
- key
- value
properties:
key:
type: string
value:
type: string
# Ассеты категории
CategoryAssets:
type: object
required:
- assetKey
properties:
assetKey:
type: string
backgroundColor:
type: string
# Расширение для владельцев детских видео
KidsVideoOwnerExtension:
type: object
required:
- externalChannelId
properties:
externalChannelId:
type: string
# Thumbnail
Thumbnail:
type: object
required:
- url
- width
- height
properties:
url:
type: string
width:
type: integer
height:
type: integer
# Рендер карточки с видео
CompactVideoRenderer:
type: object
required:
- videoId
- title
- viewCountText
- trackingParams
- kidsVideoOwnerExtension
properties:
videoId:
type: string
thumbnail:
type: object
properties:
thumbnails:
type: array
items:
$ref: '#/components/schemas/Thumbnail'
title:
$ref: '#/components/schemas/Text'
longBylineText:
$ref: '#/components/schemas/Text'
publishedTimeText:
$ref: '#/components/schemas/Text'
viewCountText:
$ref: '#/components/schemas/Text'
lengthText:
$ref: '#/components/schemas/Text'
navigationEndpoint:
$ref: '#/components/schemas/NavigationEndpoint'
shortBylineText:
$ref: '#/components/schemas/Text'
channelThumbnail:
type: object
properties:
thumbnails:
type: array
items:
$ref: '#/components/schemas/Thumbnail'
trackingParams:
type: string
shortViewCountText:
$ref: '#/components/schemas/Text'
accessibility:
$ref: '#/components/schemas/Accessibility'
kidsVideoOwnerExtension:
$ref: '#/components/schemas/KidsVideoOwnerExtension'
# Рендер карточки с плейлистом
CompactPlaylistRenderer:
type: object
required:
- playlistId
- title
- viewCountText
- trackingParams
properties:
playlistId:
type: string
thumbnail:
type: object
properties:
thumbnails:
type: array
items:
$ref: '#/components/schemas/Thumbnail'
title:
$ref: '#/components/schemas/Text'
shortBylineText:
$ref: '#/components/schemas/Text'
videoCountText:
$ref: '#/components/schemas/Text'
navigationEndpoint:
$ref: '#/components/schemas/NavigationEndpoint'
videoCountShortText:
$ref: '#/components/schemas/Text'
trackingParams:
type: string
sidebarThumbnails:
type: array
items:
type: object
properties:
thumbnails:
type: array
items:
$ref: '#/components/schemas/Thumbnail'
thumbnailText:
$ref: '#/components/schemas/Text'
shareUrl:
type: string
longBylineText:
$ref: '#/components/schemas/Text'
tvBanner:
type: object
properties:
thumbnails:
type: array
items:
$ref: '#/components/schemas/Thumbnail'
# Рендер карточки с каналом
CompactChannelRenderer:
type: object
required:
- channelId
- displayName
- videoCountText
- title
- trackingParams
properties:
channelId:
type: string
thumbnail:
type: object
properties:
thumbnails:
type: array
items:
$ref: '#/components/schemas/Thumbnail'
displayName:
$ref: '#/components/schemas/Text'
videoCountText:
$ref: '#/components/schemas/Text'
subscriberCountText:
$ref: '#/components/schemas/Text'
navigationEndpoint:
$ref: '#/components/schemas/NavigationEndpoint'
title:
$ref: '#/components/schemas/Text'
trackingParams:
type: string
# Средство визуализации раздела элемента
ItemSectionRenderer:
type: object
required:
- contents
- trackingParams
properties:
contents:
type: array
items:
type: object
properties:
compactPlaylistRenderer:
$ref: '#/components/schemas/CompactPlaylistRenderer'
compactChannelRenderer:
$ref: '#/components/schemas/CompactChannelRenderer'
compactVideoRenderer:
$ref: '#/components/schemas/CompactVideoRenderer'
trackingParams:
type: string
# Рендер списка разделов
SectionListRenderer:
type: object
properties:
contents:
type: array
items:
type: object
properties:
itemSectionRenderer:
$ref: '#/components/schemas/ItemSectionRenderer'
trackingParams:
type: string
# Визуализатор закрепленных сечений
AnchoredSectionRenderer:
type: object
properties:
title:
type: string
content:
type: object
properties:
sectionListRenderer:
$ref: '#/components/schemas/SectionListRenderer'
trackingParams:
type: string
navigationEndpoint:
$ref: '#/components/schemas/NavigationEndpoint'
categoryAssets:
$ref: '#/components/schemas/CategoryAssets'
categoryType:
type: string
# Якорь экрана
ScreenAnchor:
type: object
properties:
anchoredSectionRenderer:
$ref: '#/components/schemas/AnchoredSectionRenderer'
# Рендерер экрана
ScreenRenderer:
type: object
properties:
anchors:
type: array
items:
$ref: '#/components/schemas/ScreenAnchor'
# Средство визуализации заголовка категории
CategoriesHeaderRenderer:
type: object
properties:
trackingParams:
type: string
# TODO
# Параметры контента
KidsAppContentSettings:
type: object
required:
- corpusPreference
- kidsNoSearchMode
properties:
corpusPreference:
type: string
enum:
- KIDS_CORPUS_PREFERENCE_UNKNOWN # unknown
- KIDS_CORPUS_PREFERENCE_YOUNGER # (0-4 years)
- KIDS_CORPUS_PREFERENCE_TWEEN # (5-7)
- KIDS_CORPUS_PREFERENCE_PAM_YOUNGER
- KIDS_CORPUS_PREFERENCE_PAM_TWEEN
- KIDS_CORPUS_PREFERENCE_PRESCHOOL # (8-12)
example: KIDS_CORPUS_PREFERENCE_TWEEN
default: KIDS_CORPUS_PREFERENCE_TWEEN
kidsNoSearchMode:
type: string
enum:
- YT_KIDS_NO_SEARCH_MODE_UNKNOWN # unknown
- YT_KIDS_NO_SEARCH_MODE_ON
- YT_KIDS_NO_SEARCH_MODE_OFF
example: YT_KIDS_NO_SEARCH_MODE_OFF
default: YT_KIDS_NO_SEARCH_MODE_OFF
# Конфигурация категорий
KidsAppCategorySettings:
type: object
properties:
enabledCategories:
type: array
example: ["approved_for_you", "black_joy", "camp", "collections", "earth", "explore", "favorites", "gaming", "halloween", "hero", "learning", "making", "move", "music", "reading", "shared_by_parents", "shows", "soccer", "sports", "spotlight", "winter"]
items:
type: string
# Параметры приложения
KidsAppInfo:
type: object
description: Kids application configuration
properties:
contentSettings:
$ref: '#/components/schemas/KidsAppContentSettings'
categorySettings:
$ref: '#/components/schemas/KidsAppCategorySettings'
# Информация о клиенте в запросе
RequestClient:
type: object
description: Client information
required:
- kidsAppInfo
properties:
clientName:
type: string
example: WEB_KIDS
default: WEB_KIDS
clientVersion:
type: string
example: 2.20230817.00.00
default: 2.20230817.00.00
hl:
type: string
example: ru
default: ru
gl:
type: string
example: RU
default: RU
experimentsToken:
type: string
browserName:
type: string
example: Safari
default: Safari
deviceMake:
type: string
example: apple
default: apple
browserVersion:
type: string
example: '16.2'
default: '16.2'
osName:
type: string
example: Macintosh
default: Macintosh
osVersion:
type: string
example: '10_15_7'
default: '10_15_7'
platform:
type: string
example: DESKTOP
default: DESKTOP
kidsAppInfo:
$ref: '#/components/schemas/KidsAppInfo'
# Контекст запроса
RequestContext:
type: object
description: Request context
required:
- client
properties:
client:
$ref: '#/components/schemas/RequestClient'
# Контекст ответа
ResponseContext:
type: object
description: Response context
properties:
visitorData:
type: string
maxAgeSeconds:
type: integer
serviceTrackingParams:
type: array
items:
type: object
properties:
service:
type: string
params:
type: array
items:
$ref: '#/components/schemas/KeyStringValue'
# Данные для запроса на получение контента определенного ресурса
BrowseRequestPayload:
type: object
required:
- context
- browseId
properties:
context:
$ref: '#/components/schemas/RequestContext'
params:
type: string
browseId:
type: string
example: FEkids_home
# Ответ на запрос получения контента определенного ресурса
BrowseResponsePayload:
type: object
required:
- header
- contents
- responseContext
properties:
responseContext:
$ref: '#/components/schemas/ResponseContext'
header:
type: object
properties:
kidsCategoriesHeaderRenderer:
$ref: '#/components/schemas/CategoriesHeaderRenderer'
contents:
type: object
properties:
kidsHomeScreenRenderer:
$ref: '#/components/schemas/ScreenRenderer'
trackingParams:
type: string
# Ответ с ошибкой
ErrorResponsePayload:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- status
- message
properties:
code:
type: integer
example: 400
message:
type: string
errors:
type: array
items:
$ref: '#/components/schemas/Error'
status:
type: string
example: FAILED_PRECONDITION