8
0
youtubekids-api-design/.insomnia/ApiSpec/spc_2b420b2bed1d4d868807303a581fb8c1.yml

608 lines
17 KiB
YAML
Raw Permalink Normal View History

2023-03-27 11:48:41 +00:00
_id: spc_2b420b2bed1d4d868807303a581fb8c1
type: ApiSpec
parentId: wrk_cd1160cf39f5497fa4711fe4fd6567de
2023-08-22 14:00:22 +00:00
modified: 1692712790774
2023-03-27 11:48:41 +00:00
created: 1679916396495
fileName: youtubekids.yaml
2023-08-22 14:00:22 +00:00
contents: >
2023-03-27 11:48:41 +00:00
openapi: 3.0.3
2023-03-27 12:15:51 +00:00
2023-03-27 11:48:41 +00:00
info:
title: YouTube Kids Public API
2023-03-27 11:51:54 +00:00
description: For generate API REST clients for Feelter UGC
2023-08-22 14:00:22 +00:00
contact:
2023-03-27 11:51:54 +00:00
email: garin1221@yandex.ru
2023-08-22 14:00:22 +00:00
version: 0.0.2
2023-03-27 12:15:51 +00:00
2023-03-27 11:48:41 +00:00
servers:
- url: https://www.youtubekids.com/youtubei/v1
2023-08-22 14:00:22 +00:00
description: Original YoutubeKids API Server V1
2023-03-27 12:15:51 +00:00
2023-03-27 11:48:41 +00:00
tags:
- name: browse
description: Browse resource content
2023-03-27 12:15:51 +00:00
2023-03-27 11:48:41 +00:00
paths:
2023-03-27 12:15:51 +00:00
# Получение контента определенного ресурса, {browseId}
2023-03-27 11:48:41 +00:00
/browse:
post:
tags:
- browse
2023-08-22 14:00:22 +00:00
summary: Browse resource content
2023-03-27 11:48:41 +00:00
description: Get content for resource
operationId: browse
requestBody:
2023-03-28 14:27:34 +00:00
required: true
2023-03-27 11:48:41 +00:00
content:
application/json:
schema:
2023-08-22 14:00:22 +00:00
$ref: '#/components/schemas/BrowseRequestPayload'
2023-03-27 11:48:41 +00:00
responses:
'200':
2023-03-28 14:27:34 +00:00
description: OK
2023-03-28 14:17:25 +00:00
content:
2023-08-22 14:00:22 +00:00
'application/json':
2023-03-28 14:17:25 +00:00
"schema":
2023-03-28 14:27:34 +00:00
$ref: '#/components/schemas/BrowseResponsePayload'
2023-08-22 14:00:22 +00:00
default:
description: Unexpected error
2023-03-28 14:27:34 +00:00
content:
2023-08-22 14:00:22 +00:00
'application/json':
2023-03-28 14:27:34 +00:00
"schema":
$ref: '#/components/schemas/ErrorResponsePayload'
2023-03-27 12:15:51 +00:00
# Компоненты
2023-03-27 11:48:41 +00:00
components:
2023-03-27 12:15:51 +00:00
# Схемы данных
2023-03-27 11:48:41 +00:00
schemas:
2023-08-22 14:00:22 +00:00
2023-03-28 14:27:34 +00:00
# Ошибка
Error:
type: object
2023-08-22 14:00:22 +00:00
required:
- message
- domain
- reason
2023-03-28 14:27:34 +00:00
properties:
message:
type: string
domain:
type: string
reason:
type: string
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# Доступность данных
AccessibilityData:
type: object
properties:
label:
type: string
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# Доступность
Accessibility:
type: object
properties:
accessibilityData:
$ref: '#/components/schemas/AccessibilityData'
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# WatchEndpoint
WatchEndpoint:
type: object
properties:
videoId:
type: string
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# BrowseEndpoint
BrowseEndpoint:
type: object
properties:
browseId:
type: string
canonicalBaseUrl:
2023-08-22 14:00:22 +00:00
type: string
2023-03-28 14:17:25 +00:00
# Конечная точка навигации
NavigationEndpoint:
type: object
properties:
2023-08-22 14:00:22 +00:00
clickTrackingParams:
2023-03-28 14:17:25 +00:00
type: string
watchEndpoint:
$ref: '#/components/schemas/WatchEndpoint'
browseEndpoint:
$ref: '#/components/schemas/BrowseEndpoint'
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# Текст -> Runs
TextRun:
type: object
2023-08-22 14:00:22 +00:00
required:
- text
2023-03-28 14:17:25 +00:00
properties:
text:
type: string
2023-08-22 14:00:22 +00:00
navigationEndpoint:
$ref: '#/components/schemas/NavigationEndpoint'
2023-03-28 14:17:25 +00:00
# Текст
Text:
type: object
2023-08-22 14:00:22 +00:00
required:
- runs
2023-03-28 14:17:25 +00:00
properties:
runs:
type: array
items:
2023-08-22 14:00:22 +00:00
$ref: '#/components/schemas/TextRun'
2023-03-28 14:17:25 +00:00
accessibility:
2023-08-22 14:00:22 +00:00
$ref: '#/components/schemas/Accessibility'
2023-03-28 14:17:25 +00:00
# Строковый параметр ключ-зачение
KeyStringValue:
type: object
2023-08-22 14:00:22 +00:00
required:
- key
- value
2023-03-28 14:17:25 +00:00
properties:
key:
type: string
value:
type: string
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# Ассеты категории
CategoryAssets:
type: object
2023-08-22 14:00:22 +00:00
required:
- assetKey
2023-03-28 14:17:25 +00:00
properties:
assetKey:
type: string
backgroundColor:
2023-08-22 14:00:22 +00:00
type: string
2023-03-28 14:17:25 +00:00
# Расширение для владельцев детских видео
KidsVideoOwnerExtension:
type: object
2023-08-22 14:00:22 +00:00
required:
- externalChannelId
2023-03-28 14:17:25 +00:00
properties:
externalChannelId:
type: string
2023-08-22 14:00:22 +00:00
2023-03-28 15:36:33 +00:00
# Thumbnail
Thumbnail:
type: object
2023-08-22 14:00:22 +00:00
required:
- url
- width
- height
2023-03-28 15:36:33 +00:00
properties:
url:
type: string
width:
2023-08-22 14:00:22 +00:00
type: integer
2023-03-28 15:36:33 +00:00
height:
2023-08-22 14:00:22 +00:00
type: integer
# Рендер карточки с видео
2023-03-28 14:17:25 +00:00
CompactVideoRenderer:
type: object
2023-08-22 14:00:22 +00:00
required:
- videoId
- thumbnail
- title
- viewCountText
- trackingParams
- kidsVideoOwnerExtension
2023-03-28 14:17:25 +00:00
properties:
videoId:
type: string
2023-03-28 15:36:33 +00:00
thumbnail:
type: object
properties:
thumbnails:
type: array
items:
$ref: '#/components/schemas/Thumbnail'
2023-03-28 14:17:25 +00:00
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'
2023-03-28 15:36:33 +00:00
channelThumbnail:
type: object
properties:
thumbnails:
type: array
items:
2023-08-22 14:00:22 +00:00
$ref: '#/components/schemas/Thumbnail'
2023-03-28 14:17:25 +00:00
trackingParams:
type: string
shortViewCountText:
$ref: '#/components/schemas/Text'
accessibility:
$ref: '#/components/schemas/Accessibility'
kidsVideoOwnerExtension:
2023-08-22 14:00:22 +00:00
$ref: '#/components/schemas/KidsVideoOwnerExtension'
# Рендер карточки с плейлистом
CompactPlaylistRenderer:
type: object
required:
- playlistId
- thumbnail
- 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
2023-03-28 14:17:25 +00:00
# Средство визуализации раздела элемента
ItemSectionRenderer:
type: object
2023-08-22 14:00:22 +00:00
required:
- contents
- trackingParams
2023-03-28 14:17:25 +00:00
properties:
contents:
type: array
items:
type: object
properties:
2023-08-22 14:00:22 +00:00
compactPlaylistRenderer:
$ref: '#/components/schemas/CompactPlaylistRenderer'
compactChannelRenderer:
$ref: '#/components/schemas/CompactChannelRenderer'
2023-03-28 14:17:25 +00:00
compactVideoRenderer:
2023-08-22 14:00:22 +00:00
$ref: '#/components/schemas/CompactVideoRenderer'
2023-03-28 14:17:25 +00:00
trackingParams:
type: string
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# Рендер списка разделов
SectionListRenderer:
type: object
properties:
contents:
type: array
items:
type: object
properties:
itemSectionRenderer:
2023-08-22 14:00:22 +00:00
$ref: '#/components/schemas/ItemSectionRenderer'
2023-03-28 14:17:25 +00:00
trackingParams:
2023-08-22 14:00:22 +00:00
type: string
2023-03-28 14:17:25 +00:00
# Визуализатор закрепленных сечений
AnchoredSectionRenderer:
type: object
properties:
title:
type: string
content:
type: object
properties:
sectionListRenderer:
$ref: '#/components/schemas/SectionListRenderer'
trackingParams:
type: string
2023-03-28 15:36:33 +00:00
navigationEndpoint:
$ref: '#/components/schemas/NavigationEndpoint'
2023-03-28 14:17:25 +00:00
categoryAssets:
2023-03-28 15:36:33 +00:00
$ref: '#/components/schemas/CategoryAssets'
2023-03-28 14:17:25 +00:00
categoryType:
2023-08-22 14:00:22 +00:00
type: string
2023-03-28 14:17:25 +00:00
# Якорь экрана
ScreenAnchor:
type: object
properties:
anchoredSectionRenderer:
$ref: '#/components/schemas/AnchoredSectionRenderer'
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# Рендерер экрана
ScreenRenderer:
type: object
properties:
anchors:
type: array
items:
$ref: '#/components/schemas/ScreenAnchor'
2023-08-22 14:00:22 +00:00
2023-03-28 15:36:33 +00:00
# Средство визуализации заголовка категории
CategoriesHeaderRenderer:
type: object
properties:
trackingParams:
type: string
# TODO
2023-08-22 14:00:22 +00:00
2023-03-27 12:15:51 +00:00
# Параметры контента
KidsAppContentSettings:
type: object
2023-08-22 14:00:22 +00:00
required:
- corpusPreference
- kidsNoSearchMode
properties:
corpusPreference:
type: string
2023-08-22 14:00:22 +00:00
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
kidsNoSearchMode:
type: string
2023-08-22 14:00:22 +00:00
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
2023-08-22 14:00:22 +00:00
default: YT_KIDS_NO_SEARCH_MODE_OFF
2023-03-27 12:15:51 +00:00
# Конфигурация категорий
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:
2023-08-22 14:00:22 +00:00
type: string
2023-03-27 12:15:51 +00:00
# Параметры приложения
KidsAppInfo:
type: object
description: Kids application configuration
properties:
contentSettings:
$ref: '#/components/schemas/KidsAppContentSettings'
categorySettings:
$ref: '#/components/schemas/KidsAppCategorySettings'
2023-08-22 14:00:22 +00:00
2023-03-27 12:15:51 +00:00
# Информация о клиенте в запросе
2023-03-27 11:48:41 +00:00
RequestClient:
type: object
description: Client information
2023-08-22 14:00:22 +00:00
required:
- hl
- gl
- osName
- platform
- osVersion
- clientName
- deviceMake
- kidsAppInfo
- browserName
- clientVersion
- browserVersion
properties:
clientName:
2023-08-22 14:00:22 +00:00
type: string
example: WEB_KIDS
2023-08-22 14:00:22 +00:00
default: WEB_KIDS
clientVersion:
type: string
2023-08-22 14:00:22 +00:00
example: 2.20230817.00.00
default: 2.20230817.00.00
hl:
type: string
example: ru
2023-08-22 14:00:22 +00:00
default: ru
gl:
type: string
example: RU
2023-08-22 14:00:22 +00:00
default: RU
experimentsToken:
type: string
2023-08-22 14:00:22 +00:00
browserName:
type: string
example: Safari
2023-08-22 14:00:22 +00:00
default: Safari
deviceMake:
type: string
example: apple
2023-08-22 14:00:22 +00:00
default: apple
browserVersion:
type: string
example: '16.2'
2023-08-22 14:00:22 +00:00
default: '16.2'
osName:
type: string
example: Macintosh
2023-08-22 14:00:22 +00:00
default: Macintosh
osVersion:
type: string
2023-08-22 14:00:22 +00:00
example: '10_15_7'
default: '10_15_7'
platform:
type: string
2023-08-22 14:00:22 +00:00
example: DESKTOP
default: DESKTOP
kidsAppInfo:
$ref: '#/components/schemas/KidsAppInfo'
2023-08-22 14:00:22 +00:00
2023-03-27 12:15:51 +00:00
# Контекст запроса
2023-03-27 11:48:41 +00:00
RequestContext:
type: object
description: Request context
2023-08-22 14:00:22 +00:00
required:
- client
2023-03-27 11:48:41 +00:00
properties:
client:
$ref: '#/components/schemas/RequestClient'
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# Контекст ответа
ResponseContext:
type: object
description: Response context
properties:
visitorData:
type: string
maxAgeSeconds:
2023-08-22 14:00:22 +00:00
type: integer
2023-03-28 14:17:25 +00:00
serviceTrackingParams:
type: array
items:
type: object
properties:
2023-08-22 14:00:22 +00:00
service:
type: string
2023-03-28 14:17:25 +00:00
params:
type: array
items:
$ref: '#/components/schemas/KeyStringValue'
2023-08-22 14:00:22 +00:00
2023-03-27 12:15:51 +00:00
# Данные для запроса на получение контента определенного ресурса
BrowseRequestPayload:
2023-03-27 11:48:41 +00:00
type: object
2023-08-22 14:00:22 +00:00
required:
- context
- browseId
2023-03-27 11:48:41 +00:00
properties:
context:
$ref: '#/components/schemas/RequestContext'
2023-08-22 14:00:22 +00:00
params:
type: string
2023-03-27 11:48:41 +00:00
browseId:
type: string
example: FEkids_home
2023-08-22 14:00:22 +00:00
2023-03-28 14:17:25 +00:00
# Ответ на запрос получения контента определенного ресурса
2023-08-22 14:00:22 +00:00
BrowseResponsePayload:
2023-03-28 14:17:25 +00:00
type: object
2023-08-22 14:00:22 +00:00
required:
- header
- contents
- responseContext
2023-03-28 14:17:25 +00:00
properties:
responseContext:
$ref: '#/components/schemas/ResponseContext'
2023-03-28 15:36:33 +00:00
header:
type: object
properties:
kidsCategoriesHeaderRenderer:
$ref: '#/components/schemas/CategoriesHeaderRenderer'
2023-03-28 14:17:25 +00:00
contents:
type: object
properties:
kidsHomeScreenRenderer:
2023-08-22 14:00:22 +00:00
$ref: '#/components/schemas/ScreenRenderer'
2023-03-28 14:17:25 +00:00
trackingParams:
2023-08-22 14:00:22 +00:00
type: string
2023-03-28 14:27:34 +00:00
# Ответ с ошибкой
ErrorResponsePayload:
type: object
2023-08-22 14:00:22 +00:00
required:
- error
2023-03-28 14:27:34 +00:00
properties:
error:
type: object
2023-08-22 14:00:22 +00:00
required:
- code
- errors
- status
- message
2023-03-28 14:27:34 +00:00
properties:
code:
2023-08-22 14:00:22 +00:00
type: integer
2023-03-28 14:27:34 +00:00
example: 400
message:
type: string
errors:
type: array
items:
$ref: '#/components/schemas/Error'
status:
type: string
example: FAILED_PRECONDITION
2023-03-27 11:48:41 +00:00
contentType: yaml