# Introduction
The PeerTube API is built on HTTP(S) and is RESTful. You can use your favorite
- HTTP/REST library for your programming language to use PeerTube. No official
- SDK is currently provided, but the spec API is fully compatible with
+ HTTP/REST library for your programming language to use PeerTube. The spec API is fully compatible with
[openapi-generator](https://github.com/OpenAPITools/openapi-generator/wiki/API-client-generator-HOWTO)
- which generates a client SDK in the language of your choice.
+ which generates a client SDK in the language of your choice - we generate some client SDKs automatically:
+
+ - [Python](https://framagit.org/framasoft/peertube/clients/python)
+ - [Go](https://framagit.org/framasoft/peertube/clients/go)
+ - [Kotlin](https://framagit.org/framasoft/peertube/clients/kotlin)
See the [Quick Start guide](https://docs.joinpeertube.org/#/api-rest-getting-started) so you can play with the PeerTube API.
description: >
Operations dealing with creation, modification and video listing of a
user's channels.
- - name: Video Blacklist
+ - name: Video Blocks
description: >
Operations dealing with blacklisting videos (removing them from view and
preventing interactions).
- name: Video Rates
description: >
Like/dislike a video.
+ - name: Feeds
+ description: >
+ Server syndication feeds
x-tagGroups:
- name: Accounts
tags:
- Video Rates
- Video Playlists
- Video Ownership Change
+ - Feeds
- name: Search
tags:
- Search
tags:
- Video Abuses
- Video Blocks
+ - Account Blocks
+ - Server Blocks
- name: Instance Configuration
tags:
- Config
application/json:
schema:
$ref: '#/components/schemas/Account'
+ '404':
+ description: account not found
'/accounts/{name}/videos':
get:
tags:
delete:
security:
- OAuth2:
- - admin
+ - admin
tags:
- Instance Follows
summary: Unfollow a server
responses:
'204':
description: successful operation
+ '403':
+ description: cannot terminate an ownership change of another user
+ '404':
+ description: video owneship change not found
'/videos/ownership/{id}/refuse':
post:
summary: Refuse ownership change request
responses:
'204':
description: successful operation
+ '403':
+ description: cannot terminate an ownership change of another user
+ '404':
+ description: video owneship change not found
'/videos/{id}/give-ownership':
post:
summary: Request ownership change
'204':
description: successful operation
'400':
- description: 'Changing video ownership to a remote account is not supported yet'
+ description: changing video ownership to a remote account is not supported yet
+ '404':
+ description: video not found
/videos:
get:
summary: List videos
format: binary
channelId:
description: Channel id that will contain this video
- type: number
+ type: integer
thumbnailfile:
description: Video thumbnail file
type: string
type: array
minItems: 1
maxItems: 5
+ uniqueItems: true
items:
type: string
minLength: 2
- OAuth2: []
tags:
- Video
- responses:
- '200':
- description: successful operation
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/VideoUploadResponse'
requestBody:
content:
multipart/form-data:
type: string
channelId:
description: Channel id that will contain this video
- type: number
+ type: integer
thumbnailfile:
description: Video thumbnail file
type: string
contentType: image/jpeg
previewfile:
contentType: image/jpeg
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/VideoUploadResponse'
+ '409':
+ description: HTTP or Torrent/magnetURI import not enabled
+ '400':
+ description: '`magnetUri` or `targetUrl` or a torrent file missing'
/videos/abuse:
get:
summary: List video abuses
security:
- OAuth2:
- - admin
- - moderator
+ - admin
+ - moderator
tags:
- Video Abuses
parameters:
- thumbnails
- captions
startAt:
- type: number
+ type: integer
description: Timestamp in the video that marks the beginning of the report
endAt:
- type: number
+ type: integer
description: Timestamp in the video that marks the ending of the report
required:
- reason
responses:
'204':
description: successful operation
+ '404':
+ description: video abuse not found
parameters:
- $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/abuseId'
responses:
'204':
description: successful operation
+ '404':
+ description: block not found
parameters:
- $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/abuseId'
'/videos/{id}/blacklist':
post:
- summary: Blacklist a video
+ summary: Block a video
security:
- OAuth2:
- admin
- moderator
tags:
- - Video Blacklist
+ - Video Blocks
parameters:
- $ref: '#/components/parameters/idOrUUID'
responses:
'204':
description: successful operation
delete:
- summary: Delete an entry of the blacklist of a video by its id
+ summary: Unblock a video by its id
security:
- OAuth2:
- admin
- moderator
tags:
- - Video Blacklist
+ - Video Blocks
parameters:
- $ref: '#/components/parameters/idOrUUID'
responses:
'204':
description: successful operation
+ '404':
+ description: block not found
/videos/blacklist:
get:
- summary: List blacklisted videos
+ tags:
+ - Video Blocks
+ summary: List blocked videos
security:
- OAuth2:
- admin
- moderator
- tags:
- - Video Blacklist
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
responses:
'204':
description: successful operation
+ '404':
+ description: video or language not found
delete:
summary: Delete a video caption
tags:
responses:
'204':
description: successful operation
+ '404':
+ description: video or language or caption for that language not found
/video-channels:
get:
summary: List video channels
type: object
properties:
id:
- type: number
+ type: integer
uuid:
type: string
requestBody:
type: string
videoChannelId:
description: Video channel in which the playlist will be published
- type: number
+ type: integer
required:
- displayName
type: string
videoChannelId:
description: Video channel in which the playlist will be published
- type: number
+ type: integer
delete:
summary: Delete a video playlist
security:
type: object
properties:
id:
- type: number
+ type: integer
requestBody:
content:
application/json:
type: object
properties:
videoId:
- type: number
+ type: integer
description: 'Video to add in the playlist'
startTimestamp:
- type: number
+ type: integer
description: 'Start the video at this specific timestamp (in seconds)'
stopTimestamp:
- type: number
+ type: integer
description: 'Stop the video at this specific timestamp (in seconds)'
required:
- videoId
type: object
properties:
startPosition:
- type: number
- description: 'Start position of the element to reorder (starts from 1)'
+ type: integer
+ description: 'Start position of the element to reorder'
+ minimum: 1
insertAfterPosition:
- type: number
- description: 'New position for the block to reorder (starts from 0, to add the block before the first element)'
+ type: integer
+ description: 'New position for the block to reorder, to add the block before the first element'
+ minimum: 0
reorderLength:
- type: number
- description: 'How many element from startPosition to reorder (minimum length is 1)'
+ type: integer
+ description: 'How many element from `startPosition` to reorder'
+ minimum: 1
required:
- startPosition
- insertAfterPosition
type: object
properties:
startTimestamp:
- type: number
+ type: integer
description: 'Start the video at this specific timestamp (in seconds)'
stopTimestamp:
- type: number
+ type: integer
description: 'Stop the video at this specific timestamp (in seconds)'
delete:
summary: 'Delete an element from a playlist'
schema:
type: array
items:
- type: number
+ type: integer
responses:
'200':
description: successful operation
type: object
properties:
playlistElementId:
- type: number
+ type: integer
playlistId:
- type: number
+ type: integer
startTimestamp:
- type: number
+ type: integer
stopTimestamp:
- type: number
+ type: integer
'/accounts/{name}/video-channels':
get:
required: true
description: Get videos that have this minimum duration
schema:
- type: number
+ type: integer
- name: durationMax
in: query
required: true
description: Get videos that have this maximum duration
schema:
- type: number
+ type: integer
responses:
'200':
description: successful operation
type: array
items:
$ref: '#/components/schemas/VideoChannel'
+ /blocklist/accounts:
+ get:
+ tags:
+ - Account Blocks
+ summary: List account blocks
+ security:
+ - OAuth2:
+ - admin
+ parameters:
+ - $ref: '#/components/parameters/start'
+ - $ref: '#/components/parameters/count'
+ - $ref: '#/components/parameters/sort'
+ responses:
+ '200':
+ description: successful operation
+ post:
+ tags:
+ - Account Blocks
+ summary: Block an account
+ security:
+ - OAuth2:
+ - admin
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ accountName:
+ type: string
+ description: account to block, in the form `username@domain`
+ required:
+ - accountName
+ responses:
+ '200':
+ description: successful operation
+ '409':
+ description: self-blocking forbidden
+ '/blocklist/accounts/{accountName}':
+ delete:
+ tags:
+ - Account Blocks
+ summary: Unblock an account by its handle
+ security:
+ - OAuth2:
+ - admin
+ parameters:
+ - name: accountName
+ in: path
+ required: true
+ description: account to unblock, in the form `username@domain`
+ schema:
+ type: string
+ responses:
+ '201':
+ description: successful operation
+ '404':
+ description: account or account block does not exist
+ /blocklist/servers:
+ get:
+ tags:
+ - Server Blocks
+ summary: List server blocks
+ security:
+ - OAuth2:
+ - admin
+ parameters:
+ - $ref: '#/components/parameters/start'
+ - $ref: '#/components/parameters/count'
+ - $ref: '#/components/parameters/sort'
+ responses:
+ '200':
+ description: successful operation
+ post:
+ tags:
+ - Server Blocks
+ summary: Block a server
+ security:
+ - OAuth2:
+ - admin
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ accountName:
+ type: string
+ description: server domain to block
+ required:
+ - accountName
+ responses:
+ '200':
+ description: successful operation
+ '409':
+ description: self-blocking forbidden
+ '/blocklist/servers/{host}':
+ delete:
+ tags:
+ - Server Blocks
+ summary: Unblock a server by its domain
+ security:
+ - OAuth2:
+ - admin
+ parameters:
+ - name: host
+ in: path
+ required: true
+ description: server domain to unblock
+ schema:
+ type: string
+ responses:
+ '201':
+ description: successful operation
+ '404':
+ description: account block does not exist
+ '/feeds/video-comments.{format}':
+ get:
+ tags:
+ - Feeds
+ summary: List comments on videos
+ parameters:
+ - name: format
+ in: path
+ required: true
+ description: 'format expected (we focus on making `rss` the most featureful ; it serves Media RSS)'
+ schema:
+ type: string
+ enum:
+ - xml
+ - rss
+ - rss2
+ - atom
+ - atom1
+ - json
+ - json1
+ - name: videoId
+ in: path
+ description: 'limit listing to a specific video'
+ schema:
+ type: string
+ responses:
+ '204':
+ description: successful operation
+ headers:
+ Cache-Control:
+ schema:
+ type: string
+ default: 'max-age=900' # 15 min cache
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/VideoCommentsForXML'
+ application/rss+xml:
+ schema:
+ $ref: '#/components/schemas/VideoCommentsForXML'
+ text/xml:
+ schema:
+ $ref: '#/components/schemas/VideoCommentsForXML'
+ application/atom+xml:
+ schema:
+ $ref: '#/components/schemas/VideoCommentsForXML'
+ application/json:
+ schema:
+ type: object
+ '406':
+ description: accept header unsupported
+ '/feeds/videos.{format}':
+ get:
+ tags:
+ - Feeds
+ summary: List videos
+ parameters:
+ - name: format
+ in: path
+ required: true
+ description: 'format expected (we focus on making `rss` the most featureful ; it serves Media RSS)'
+ schema:
+ type: string
+ enum:
+ - xml
+ - rss
+ - rss2
+ - atom
+ - atom1
+ - json
+ - json1
+ - name: accountId
+ in: path
+ description: 'limit listing to a specific account'
+ schema:
+ type: string
+ - name: accountName
+ in: path
+ description: 'limit listing to a specific account'
+ schema:
+ type: string
+ - name: videoChannelId
+ in: path
+ description: 'limit listing to a specific video channel'
+ schema:
+ type: string
+ - name: videoChannelName
+ in: path
+ description: 'limit listing to a specific video channel'
+ schema:
+ type: string
+ responses:
+ '204':
+ description: successful operation
+ headers:
+ Cache-Control:
+ schema:
+ type: string
+ default: 'max-age=900' # 15 min cache
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/VideosForXML'
+ application/rss+xml:
+ schema:
+ $ref: '#/components/schemas/VideosForXML'
+ text/xml:
+ schema:
+ $ref: '#/components/schemas/VideosForXML'
+ application/atom+xml:
+ schema:
+ $ref: '#/components/schemas/VideosForXML'
+ application/json:
+ schema:
+ type: object
+ '406':
+ description: accept header unsupported
servers:
- url: 'https://peertube.cpy.re/api/v1'
description: Live Test Server (live data - stable version)
name: start
in: query
required: false
- description: Offset
+ description: Offset used to paginate results
schema:
- type: number
+ type: integer
count:
name: count
in: query
required: false
- description: "Number of items (max: 100)"
+ description: "Number of items to return"
schema:
- type: number
+ type: integer
+ maximum: 100
+ minimum: 1
sort:
name: sort
in: query
required: false
- description: Sort column (-createdAt for example)
+ description: Sort column (`-createdAt` for example)
schema:
type: string
searchTarget:
in: path
required: true
description: >-
- The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for
+ The name of the account (`chocobozzz` or `chocobozzz@example.org` for
example)
schema:
type: string
required: true
description: The user id
schema:
- type: number
+ type: integer
idOrUUID:
name: id
in: path
required: true
description: Playlist element id
schema:
- type: number
+ type: integer
abuseId:
name: abuseId
in: path
required: true
description: Video abuse id
schema:
- type: number
+ type: integer
captionLanguage:
name: captionLanguage
in: path
required: true
description: The thread id (root comment id)
schema:
- type: number
+ type: integer
commentId:
name: commentId
in: path
required: true
description: The comment id
schema:
- type: number
+ type: integer
categoryOneOf:
name: categoryOneOf
in: query
description: category id of the video (see /videos/categories)
schema:
oneOf:
- - type: number
+ - type: integer
- type: array
items:
- type: number
+ type: integer
style: form
explode: false
tagsOneOf:
name: languageOneOf
in: query
required: false
- description: language id of the video (see /videos/languages). Use _unknown to filter on videos that don't have a video language
+ description: language id of the video (see /videos/languages). Use `_unknown` to filter on videos that don't have a video language
schema:
oneOf:
- type: string
description: licence id of the video (see /videos/licences)
schema:
oneOf:
- - type: number
+ - type: integer
- type: array
items:
- type: number
+ type: integer
style: form
explode: false
skipCount:
enum:
- 'true'
- 'false'
+ default: 'false'
nsfw:
name: nsfw
in: query
VideoConstantNumber:
properties:
id:
- type: number
+ type: integer
label:
type: string
VideoConstantString:
- 1
- 2
- 3
- description: 'The video playlist privacy (Public = 1, Unlisted = 2, Private = 3)'
+ description: 'The video playlist privacy (Public = `1`, Unlisted = `2`, Private = `3`)'
VideoPlaylistPrivacyConstant:
properties:
id:
enum:
- 1
- 2
- description: 'The video playlist type (Regular = 1, Watch Later = 2)'
+ description: 'The video playlist type (Regular = `1`, Watch Later = `2`)'
VideoPlaylistTypeConstant:
properties:
id:
- 2
- 3
- 4
- description: 'The video privacy (Public = 1, Unlisted = 2, Private = 3, Internal = 4)'
+ description: 'The video privacy (Public = `1`, Unlisted = `2`, Private = `3`, Internal = `4`)'
VideoPrivacyConstant:
properties:
id:
- do_not_list
UserRole:
- type: number
+ type: integer
enum:
- 0
- 1
- 2
- description: 'The user role (Admin = 0, Moderator = 1, User = 2)'
+ description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
VideoStateConstant:
properties:
- 1
- 2
- 3
- description: 'The video state (Published = 1, to transcode = 2, to import = 3)'
+ description: 'The video state (Published = `1`, to transcode = `2`, to import = `3`)'
label:
type: string
- 1
- 2
- 3
- description: 'The video playlist privacy (Pending = 1, Rejected = 2, Accepted = 3)'
+ description: 'The video playlist privacy (Pending = `1`, Rejected = `2`, Accepted = `3`)'
VideoAbuseStateConstant:
properties:
id:
AccountSummary:
properties:
id:
- type: number
+ type: integer
name:
type: string
displayName:
VideoChannelSummary:
properties:
id:
- type: number
+ type: integer
name:
type: string
displayName:
PlaylistElement:
properties:
position:
- type: number
+ type: integer
startTimestamp:
- type: number
+ type: integer
stopTimestamp:
- type: number
+ type: integer
video:
nullable: true
allOf:
resolution:
$ref: '#/components/schemas/VideoResolutionConstant'
size:
- type: number
+ type: integer
description: 'Video file size in bytes'
torrentUrl:
type: string
VideoStreamingPlaylists:
properties:
id:
- type: number
+ type: integer
type:
- type: number
+ type: integer
enum:
- 1
- description: 'Playlist type (HLS = 1)'
+ description: 'Playlist type (HLS = `1`)'
playlistUrl:
type: string
segmentsSha256Url:
Video:
properties:
id:
- type: number
+ type: integer
uuid:
type: string
createdAt:
description:
type: string
duration:
- type: number
+ type: integer
isLocal:
type: boolean
name:
embedPath:
type: string
views:
- type: number
+ type: integer
likes:
- type: number
+ type: integer
dislikes:
- type: number
+ type: integer
nsfw:
type: boolean
waitTranscoding:
type: object
properties:
currentTime:
- type: number
+ type: integer
VideoDetails:
allOf:
- $ref: '#/components/schemas/Video'
- 1
- 2
- 3
- description: 'The video import state (Pending = 1, Success = 2, Failed = 3)'
+ description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
label:
type: string
VideoImport:
properties:
id:
- type: number
+ type: integer
targetUrl:
type: string
magnetUri:
VideoAbuse:
properties:
id:
- type: number
+ type: integer
reason:
type: string
predefinedReasons:
type: object
properties:
id:
- type: number
+ type: integer
name:
type: string
uuid:
VideoBlacklist:
properties:
id:
- type: number
+ type: integer
videoId:
- type: number
+ type: integer
createdAt:
type: string
updatedAt:
description:
type: string
duration:
- type: number
+ type: integer
views:
- type: number
+ type: integer
likes:
- type: number
+ type: integer
dislikes:
- type: number
+ type: integer
nsfw:
type: boolean
VideoChannel:
type: object
properties:
id:
- type: number
+ type: integer
uuid:
type: string
VideoPlaylist:
properties:
id:
- type: number
+ type: integer
createdAt:
type: string
updatedAt:
isLocal:
type: boolean
videoLength:
- type: number
+ type: integer
thumbnailPath:
type: string
privacy:
VideoComment:
properties:
id:
- type: number
+ type: integer
url:
type: string
text:
type: string
threadId:
- type: number
+ type: integer
inReplyToCommentId:
- type: number
+ type: integer
videoId:
- type: number
+ type: integer
createdAt:
type: string
updatedAt:
type: string
totalRepliesFromVideoAuthor:
- type: number
+ type: integer
totalReplies:
- type: number
+ type: integer
account:
$ref: '#/components/schemas/Account'
VideoCommentThreadTree:
Actor:
properties:
id:
- type: number
+ type: integer
url:
type: string
name:
host:
type: string
followingCount:
- type: number
+ type: integer
followersCount:
- type: number
+ type: integer
createdAt:
type: string
updatedAt:
User:
properties:
id:
- type: number
+ type: integer
username:
type: string
email:
description: 'Theme enabled by this user'
emailVerified:
type: boolean
- description: 'Is email verified?'
+ description: 'Has the user confirmed their email address?'
nsfwPolicy:
$ref: '#/components/schemas/NSFWPolicy'
webtorrentEnabled:
type: boolean
autoPlayVideo:
type: boolean
+ description: 'Automatically start playing the video on the watch page'
role:
$ref: '#/components/schemas/UserRole'
roleLabel:
- Moderator
- Administrator
videoQuota:
- type: number
+ type: integer
videoQuotaDaily:
- type: number
+ type: integer
videosCount:
- type: number
+ type: integer
videoAbusesCount:
- type: number
+ type: integer
videoAbusesAcceptedCount:
- type: number
+ type: integer
videoAbusesCreatedCount:
- type: number
+ type: integer
videoCommentsCount:
- type: number
+ type: integer
noInstanceConfigWarningModal:
type: boolean
noWelcomeModal:
UserWatchingVideo:
properties:
currentTime:
- type: number
+ type: integer
ServerConfig:
properties:
instance:
enabledResolutions:
type: array
items:
- type: number
+ type: integer
import:
type: object
properties:
type: object
properties:
max:
- type: number
+ type: integer
extensions:
type: array
items:
type: object
properties:
max:
- type: number
+ type: integer
file:
type: object
properties:
type: object
properties:
max:
- type: number
+ type: integer
extensions:
type: array
items:
type: object
properties:
videoQuota:
- type: number
+ type: integer
videoQuotaDaily:
- type: number
+ type: integer
trending:
type: object
properties:
type: object
properties:
intervalDays:
- type: number
+ type: integer
tracker:
type: object
properties:
type: object
properties:
size:
- type: number
+ type: integer
captions:
type: object
properties:
size:
- type: number
+ type: integer
signup:
type: object
properties:
enabled:
type: boolean
limit:
- type: number
+ type: integer
requiresEmailVerification:
type: boolean
admin:
type: object
properties:
videoQuota:
- type: number
+ type: integer
videoQuotaDaily:
- type: number
+ type: integer
transcoding:
type: object
properties:
allowAudioFiles:
type: boolean
threads:
- type: number
+ type: integer
resolutions:
type: object
properties:
Follow:
properties:
id:
- type: number
+ type: integer
follower:
$ref: '#/components/schemas/Actor'
following:
Job:
properties:
id:
- type: number
+ type: integer
state:
type: string
enum:
AddUserResponse:
properties:
id:
- type: number
+ type: integer
uuid:
type: string
VideoUploadResponse:
type: object
properties:
id:
- type: number
+ type: integer
uuid:
type: string
CommentThreadResponse:
properties:
total:
- type: number
+ type: integer
data:
type: array
items:
VideoListResponse:
properties:
total:
- type: number
+ type: integer
data:
type: array
items:
properties:
username:
type: string
- description: 'The user username '
+ description: 'The user username'
+ minLength: 1
+ maxLength: 50
password:
type: string
- description: 'The user password. If the smtp server is configured, you can leave empty and an email will be sent '
+ description: 'The user password. If the smtp server is configured, you can leave empty and an email will be sent'
+ minLength: 6
+ maxLength: 255
email:
type: string
- description: 'The user email '
+ description: 'The user email. MUST be in the format of an email address.'
videoQuota:
type: string
- description: 'The user videoQuota '
+ description: 'The user video quota'
videoQuotaDaily:
type: string
- description: 'The user daily video quota '
+ description: 'The user daily video quota'
role:
$ref: '#/components/schemas/UserRole'
required:
properties:
id:
type: string
- description: 'The user id '
+ description: 'The user id'
email:
type: string
- description: 'The updated email of the user '
+ description: 'The updated email of the user'
videoQuota:
type: string
- description: 'The updated videoQuota of the user '
+ description: 'The updated video quota of the user'
videoQuotaDaily:
type: string
- description: 'The updated daily video quota of the user '
+ description: 'The updated daily video quota of the user'
role:
$ref: '#/components/schemas/UserRole'
required:
properties:
password:
type: string
- description: 'Your new password '
+ description: 'Your new password'
email:
type: string
- description: 'Your new email '
+ description: 'Your new email'
displayNSFW:
type: string
- description: 'Your new displayNSFW '
+ description: 'Your new displayNSFW'
autoPlayVideo:
type: string
- description: 'Your new autoPlayVideo '
+ description: 'Your new autoPlayVideo'
required:
- password
- email
properties:
id:
type: string
- description: 'Id of the video '
+ description: 'Id of the video'
rating:
type: number
- description: 'Rating of the video '
+ description: 'Rating of the video'
required:
- id
- rating
properties:
username:
type: string
- description: 'The username of the user '
+ description: 'The username of the user'
password:
type: string
- description: 'The password of the user '
+ description: 'The password of the user'
email:
type: string
- description: 'The email of the user '
+ description: 'The email of the user'
displayName:
type: string
description: 'The user display name'
properties:
name:
type: string
- description: 'The default channel name'
+ description: 'The name for the default channel'
displayName:
type: string
- description: 'The default channel display name'
+ description: 'The display name for the default channel'
required:
- username
type: string
support:
type: string
+ description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
required:
- name
- displayName
type: string
support:
type: string
+ description: 'A text shown by default on all videos of this channel, to tell the audience how to support it'
bulkVideosSupportUpdate:
type: boolean
- description: 'Update all videos support field of this channel'
+ description: 'Update the support field for all videos of this channel'
+ MRSSPeerLink:
+ type: object
+ xml:
+ name: 'media:peerLink'
+ properties:
+ href:
+ type: string
+ xml:
+ attribute: true
+ type:
+ type: string
+ enum:
+ - application/x-bittorrent
+ xml:
+ attribute: true
+ MRSSGroupContent:
+ type: object
+ xml:
+ name: 'media:content'
+ properties:
+ url:
+ type: string
+ xml:
+ attribute: true
+ fileSize:
+ type: integer
+ xml:
+ attribute: true
+ type:
+ type: string
+ xml:
+ attribute: true
+ framerate:
+ type: integer
+ xml:
+ attribute: true
+ duration:
+ type: integer
+ xml:
+ attribute: true
+ height:
+ type: integer
+ xml:
+ attribute: true
+ lang:
+ type: string
+ xml:
+ attribute: true
+ VideoCommentsForXML:
+ type: array
+ xml:
+ wrapped: true
+ name: 'channel'
+ items:
+ type: object
+ xml:
+ name: 'item'
+ properties:
+ link:
+ type: string
+ guid:
+ type: string
+ pubDate:
+ type: string
+ format: date-time
+ 'content:encoded':
+ type: string
+ 'dc:creator':
+ type: string
+ VideosForXML:
+ type: array
+ xml:
+ wrapped: true
+ name: 'channel'
+ items:
+ type: object
+ xml:
+ name: 'item'
+ properties:
+ link:
+ type: string
+ description: video watch page URL
+ guid:
+ type: string
+ description: video canonical URL
+ pubDate:
+ type: string
+ format: date-time
+ description: video publication date
+ description:
+ type: string
+ description: video description
+ 'content:encoded':
+ type: string
+ description: video description
+ 'dc:creator':
+ type: string
+ description: publisher user name
+ 'media:category':
+ type: integer
+ description: video category (MRSS)
+ 'media:community':
+ type: object
+ description: see [media:community](https://www.rssboard.org/media-rss#media-community) (MRSS)
+ properties:
+ 'media:statistics':
+ type: object
+ properties:
+ views:
+ type: integer
+ xml:
+ attribute: true
+ 'media:embed':
+ type: object
+ properties:
+ url:
+ type: string
+ description: video embed path, relative to the canonical URL domain (MRSS)
+ xml:
+ attribute: true
+ 'media:player':
+ type: object
+ properties:
+ url:
+ type: string
+ description: video watch path, relative to the canonical URL domain (MRSS)
+ xml:
+ attribute: true
+ 'media:thumbnail':
+ type: object
+ properties:
+ url:
+ type: string
+ xml:
+ attribute: true
+ height:
+ type: integer
+ xml:
+ attribute: true
+ width:
+ type: integer
+ xml:
+ attribute: true
+ 'media:title':
+ type: string
+ description: see [media:title](https://www.rssboard.org/media-rss#media-title) (MRSS). We only use `plain` titles.
+ 'media:description':
+ type: string
+ 'media:rating':
+ type: string
+ enum:
+ - nonadult
+ - adult
+ description: see [media:rating](https://www.rssboard.org/media-rss#media-rating) (MRSS)
+ 'enclosure':
+ type: object
+ description: main streamable file for the video
+ properties:
+ url:
+ type: string
+ xml:
+ attribute: true
+ type:
+ type: string
+ enum:
+ - application/x-bittorrent
+ xml:
+ attribute: true
+ length:
+ type: integer
+ xml:
+ attribute: true
+ 'media:group':
+ type: array
+ description: list of streamable files for the video. see [media:peerLink](https://www.rssboard.org/media-rss#media-peerlink) and [media:content](https://www.rssboard.org/media-rss#media-content) or (MRSS)
+ items:
+ anyOf:
+ - $ref: '#/components/schemas/MRSSPeerLink'
+ - $ref: '#/components/schemas/MRSSGroupContent'
\ No newline at end of file