go-youtubekids-client/api/swagger.yaml

423 lines
11 KiB
YAML
Raw Normal View History

2023-04-04 19:45:55 +00:00
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: 1.0.0
servers:
- url: https://www.youtubekids.com/youtubei/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'
'400':
description: Bad Request
content:
'application/json':
"schema":
$ref: '#/components/schemas/ErrorResponsePayload'
# Компоненты
components:
# Схемы данных
schemas:
# Ошибка
Error:
type: object
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
properties:
text:
type: string
navigationEndpoint:
$ref: '#/components/schemas/NavigationEndpoint'
# Текст
Text:
type: object
properties:
runs:
type: array
items:
$ref: '#/components/schemas/TextRun'
accessibility:
$ref: '#/components/schemas/Accessibility'
# Строковый параметр ключ-зачение
KeyStringValue:
type: object
properties:
key:
type: string
value:
type: string
# Ассеты категории
CategoryAssets:
type: object
properties:
assetKey:
type: string
backgroundColor:
type: string
# Расширение для владельцев детских видео
KidsVideoOwnerExtension:
type: object
properties:
externalChannelId:
type: string
# Thumbnail
Thumbnail:
type: object
properties:
url:
type: string
width:
type: number
height:
type: number
# Компактный видеорендерер
CompactVideoRenderer:
type: object
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'
# Средство визуализации раздела элемента
ItemSectionRenderer:
type: object
properties:
contents:
type: array
items:
type: object
properties:
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
properties:
corpusPreference:
type: string
example: KIDS_CORPUS_PREFERENCE_TWEEN
kidsNoSearchMode:
type: string
example: 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
properties:
clientName:
type: string
example: WEB_KIDS
clientVersion:
type: string
example: 2.20230202.00.00
hl:
type: string
example: ru
gl:
type: string
example: RU
experimentsToken:
type: string
browserName:
type: string
example: Safari
deviceMake:
type: string
example: apple
browserVersion:
type: string
example: '16.2'
osName:
type: string
example: Macintosh
osVersion:
type: string
example: 10_15_7
platform:
type: string
example: DESKTOP
kidsAppInfo:
$ref: '#/components/schemas/KidsAppInfo'
# Контекст запроса
RequestContext:
type: object
description: Request context
properties:
client:
$ref: '#/components/schemas/RequestClient'
# Контекст ответа
ResponseContext:
type: object
description: Response context
properties:
visitorData:
type: string
maxAgeSeconds:
type: number
serviceTrackingParams:
type: array
items:
type: object
properties:
service:
type: string
params:
type: array
items:
$ref: '#/components/schemas/KeyStringValue'
# Данные для запроса на получение контента определенного ресурса
BrowseRequestPayload:
type: object
properties:
context:
$ref: '#/components/schemas/RequestContext'
browseId:
type: string
example: FEkids_home
# Ответ на запрос получения контента определенного ресурса
BrowseResponsePayload:
type: object
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
properties:
error:
type: object
properties:
code:
type: number
example: 400
message:
type: string
errors:
type: array
items:
$ref: '#/components/schemas/Error'
status:
type: string
example: FAILED_PRECONDITION