openapi: 3.0.0
info:
title: PeerTube
- version: 1.2.1
+ version: 2.1.1
contact:
name: PeerTube Community
url: 'https://joinpeertube.org'
altText: PeerTube Project Homepage
description: |
# Introduction
+
The PeerTube API is built on HTTP(S). Our API is RESTful. It has predictable
resource URLs. It returns HTTP response codes to indicate errors. It also
accepts and returns JSON in the HTTP body. You can use your favorite
which generates a client SDK in the language of your choice.
# Authentication
+
When you sign up for an account, you are given the possibility to generate
sessions, and authenticate using this session token. One session token can
currently be used at a time.
# Errors
+
The API uses standard HTTP status codes to indicate the success or failure
of the API call. The body of the response will be JSON in the following
format.
}
```
externalDocs:
- url: https://docs.joinpeertube.org/api.html
+ url: https://docs.joinpeertube.org/api-rest-reference.html
tags:
- name: Accounts
description: >
description: >
Each server exposes public information regarding supported videos and
options.
- - name: Feeds
- description: |
- Feeds of videos and feeds of comments allow to see updates and get them in
- an aggregator or script of your choice.
- name: Job
description: >
Jobs are long-running tasks enqueued and processed by the instance
description: >
Operations dealing with comments to a video. Comments are organized in
threads.
+ - name: Video Playlist
+ description: >
+ Operations dealing with playlists of videos. Playlists are bound to users
+ and/or channels.
- name: Video Channel
description: >
Operations dealing with creation, modification and video listing of a
tags:
- Accounts
- User
+ - My User
- name: Videos
tags:
- Video
+ - Video Caption
- Video Channel
- Video Comment
- Video Following
tags:
- Config
- Server Following
- - name: Notifications
- tags:
- - Feeds
- name: Jobs
tags:
- Job
summary: Get the account by name
parameters:
- $ref: '#/components/parameters/name'
- - $ref: '#/components/parameters/start'
- - $ref: '#/components/parameters/count'
- - $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
- $ref: '#/components/schemas/Video'
+ $ref: '#/components/schemas/VideoListResponse'
x-code-samples:
- lang: JavaScript
source: |
http -b GET https://peertube2.cpy.re/api/v1/accounts/{name}/videos
- lang: Ruby
source: |
- require 'uri'
require 'net/http'
+ require 'json'
- url = URI("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
+ uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
- http = Net::HTTP.new(url.host, url.port)
+ http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- request = Net::HTTP::Post.new(url)
- request["content-type"] = 'application/json'
- response = http.request(request)
- puts response.read_body
+ response = http.get(uri.request_uri)
+
+ puts JSON.parse(response.read_body)
- lang: Python
source: |
- import http.client
-
- conn = http.client.HTTPSConnection("https://peertube2.cpy.re/api/v1")
-
- headers = {
- 'content-type': "application/json"
- }
+ import requests
- conn.request("POST", "/accounts/{name}/videos", None, headers)
+ r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
+ json = r.json()
- res = conn.getresponse()
- data = res.read()
-
- print(data.decode("utf-8"))
+ print(json)
/accounts:
get:
tags:
- Accounts
summary: Get all accounts
+ parameters:
+ - $ref: '#/components/parameters/start'
+ - $ref: '#/components/parameters/count'
+ - $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
responses:
'200':
description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ServerConfigAbout'
/config/custom:
get:
summary: Get the runtime configuration of the server
responses:
'200':
description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ServerConfigCustom'
put:
summary: Set the runtime configuration of the server
tags:
responses:
'200':
description: successful operation
- '/feeds/videos.{format}':
- get:
- summary: >-
- Get the feed of videos for the server, with optional filter by account
- name or id
- tags:
- - Feeds
- parameters:
- - name: format
- in: path
- required: true
- description: >-
- The format expected (xml defaults to RSS 2.0, atom to ATOM 1.0 and
- json to JSON FEED 1.0
- schema:
- type: string
- enum:
- - xml
- - atom
- - json
- default: xml
- - name: accountId
- in: query
- required: false
- description: >-
- The id of the local account to filter to (beware, users IDs and not
- actors IDs which will return empty feeds
- schema:
- type: number
- - name: accountName
- in: query
- required: false
- description: The name of the local account to filter to
- schema:
- type: string
- responses:
- '200':
- description: successful operation
/jobs/{state}:
get:
summary: Get list of jobs
schema:
$ref: '#/components/schemas/UpdateUser'
required: true
+ /users/register:
+ post:
+ summary: Register a user
+ tags:
+ - User
+ responses:
+ '204':
+ $ref: '#/paths/~1users~1me/put/responses/204'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RegisterUser'
+ required: true
/users/me:
get:
summary: Get current user information
- OAuth2:
- user
tags:
- - User
+ - My User
responses:
'200':
description: successful operation
- OAuth2:
- user
tags:
- - User
+ - My User
responses:
'204':
- description: Successful operation
+ description: successful operation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMe'
required: true
+ /users/me/videos/imports:
+ get:
+ summary: Get video imports of current user
+ security:
+ - OAuth2:
+ - user
+ tags:
+ - My User
+ parameters:
+ - $ref: '#/components/parameters/start'
+ - $ref: '#/components/parameters/count'
+ - $ref: '#/components/parameters/sort'
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/VideoImport'
/users/me/video-quota-used:
get:
summary: Get current user used quota
- OAuth2:
- user
tags:
- - User
+ - My User
responses:
'200':
description: successful operation
security:
- OAuth2: []
tags:
- - User
+ - My User
parameters:
- name: videoId
in: path
- OAuth2:
- user
tags:
- - User
+ - My User
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
content:
application/json:
schema:
- type: array
- items:
- $ref: '#/components/schemas/Video'
+ $ref: '#/components/schemas/VideoListResponse'
/users/me/subscriptions:
get:
summary: Get subscriptions of the current user
- OAuth2:
- user
tags:
- - User
+ - My User
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- OAuth2:
- user
tags:
- - User
+ - My User
responses:
'200':
description: successful operation
- OAuth2:
- user
tags:
- - User
+ - My User
parameters:
- $ref: '#/components/parameters/subscriptionsUris'
responses:
- OAuth2:
- user
tags:
- - User
+ - My User
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
content:
application/json:
schema:
- type: array
- items:
- $ref: '#/components/schemas/Video'
- '/users/me/subscriptions/{uri}':
+ $ref: '#/components/schemas/VideoListResponse'
+ '/users/me/subscriptions/{subscriptionHandle}':
get:
summary: Get subscription of the current user for a given uri
security:
- OAuth2:
- user
tags:
- - User
+ - My User
+ parameters:
+ - $ref: '#/components/parameters/subscriptionHandle'
responses:
'200':
description: successful operation
- OAuth2:
- user
tags:
- - User
+ - My User
+ parameters:
+ - $ref: '#/components/parameters/subscriptionHandle'
responses:
'200':
description: successful operation
- /users/register:
- post:
- summary: Register a user
- tags:
- - User
- responses:
- '204':
- $ref: '#/paths/~1users~1me/put/responses/204'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/RegisterUser'
- required: true
/users/me/avatar/pick:
post:
summary: Update current user avatar
security:
- OAuth2: []
tags:
- - User
+ - My User
responses:
'200':
description: successful operation
type: string
format: binary
encoding:
- profileImage:
- # only accept png/jpeg
+ avatarfile:
contentType: image/png, image/jpeg
/videos:
get:
content:
application/json:
schema:
- type: array
- items:
- $ref: '#/components/schemas/Video'
+ $ref: '#/components/schemas/VideoListResponse'
/videos/categories:
get:
- summary: Get list of video licences known by the server
+ summary: Get list of video categories known by the server
tags:
- Video
responses:
tags:
- Video
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
- '200':
+ '204':
description: successful operation
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Video'
requestBody:
content:
multipart/form-data:
thumbnailfile:
description: Video thumbnail file
type: string
+ format: binary
previewfile:
description: Video preview file
type: string
+ format: binary
category:
description: Video category
type: string
tags:
description: Video tags (maximum 5 tags each between 2 and 30 characters)
type: array
+ minItems: 1
+ maxItems: 5
items:
type: string
+ minLength: 2
+ maxLength: 30
commentsEnabled:
description: Enable or disable comments for this video
type: string
- scheduleUpdate: &ref_0
- type: object
- properties:
- privacy:
- type: string
- enum:
- - Public
- - Unlisted
- description: Video privacy target
- updateAt:
- type: string
- format: date
- description: When to update the video
- required:
- - updateAt
+ originallyPublishedAt:
+ description: Date when the content was originally published
+ type: string
+ format: date-time
+ scheduleUpdate:
+ $ref: '#/components/schemas/VideoScheduledUpdate'
+ encoding:
+ thumbnailfile:
+ contentType: image/jpeg
+ previewfile:
+ contentType: image/jpeg
get:
summary: Get a video by its id
tags:
- Video
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'200':
description: successful operation
content:
application/json:
schema:
- $ref: '#/components/schemas/Video'
+ $ref: '#/components/schemas/VideoDetails'
delete:
summary: Delete a video by its id
security:
tags:
- Video
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
tags:
- Video
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'200':
description: successful operation
tags:
- Video
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
security:
- OAuth2: []
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
requestBody:
content:
application/json:
- Video
security:
- OAuth2: []
- parameters:
- - $ref: '#/components/parameters/id2'
responses:
'200':
description: successful operation
security:
- OAuth2: []
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
security:
- OAuth2: []
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
security:
- OAuth2: []
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VideoUploadResponse'
+ '403':
+ description: 'The user video quota is exceeded with this video.'
+ '408':
+ description: 'Upload has timed out'
+ '422':
+ description: 'Invalid input file.'
requestBody:
content:
multipart/form-data:
thumbnailfile:
description: Video thumbnail file
type: string
+ format: binary
previewfile:
description: Video preview file
type: string
+ format: binary
privacy:
- $ref: '#/components/schemas/VideoPrivacy'
+ $ref: '#/components/schemas/VideoPrivacySet'
category:
description: Video category
type: string
description: Video name
type: string
tags:
- description: Video tags
+ description: Video tags (maximum 5 tags each between 2 and 30 characters)
type: array
+ minItems: 1
+ maxItems: 5
items:
type: string
+ minLength: 2
+ maxLength: 30
commentsEnabled:
description: Enable or disable comments for this video
type: string
- scheduleUpdate: *ref_0
+ originallyPublishedAt:
+ description: Date when the content was originally published
+ type: string
+ format: date-time
+ scheduleUpdate:
+ $ref: '#/components/schemas/VideoScheduledUpdate'
required:
- videofile
- channelId
- name
+ encoding:
+ videofile:
+ contentType: video/mp4, video/webm, video/ogg, video/avi, video/quicktime, video/x-msvideo, video/x-flv, video/x-matroska, application/octet-stream
+ thumbnailfile:
+ contentType: image/jpeg
+ previewfile:
+ contentType: image/jpeg
x-code-samples:
- lang: Shell
source: |
"Authorization:Bearer $token"
/videos/imports:
post:
- summary: Import a torrent or magnetURI or HTTP ressource (if enabled by the instance administrator)
+ summary: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator)
security:
- OAuth2: []
tags:
thumbnailfile:
description: Video thumbnail file
type: string
+ format: binary
previewfile:
description: Video preview file
type: string
+ format: binary
privacy:
- $ref: '#/components/schemas/VideoPrivacy'
+ $ref: '#/components/schemas/VideoPrivacySet'
category:
description: Video category
type: string
description: Video name
type: string
tags:
- description: Video tags
+ description: Video tags (maximum 5 tags each between 2 and 30 characters)
type: array
+ minItems: 1
+ maxItems: 5
items:
type: string
+ minLength: 2
+ maxLength: 30
commentsEnabled:
description: Enable or disable comments for this video
type: string
- scheduleUpdate: *ref_0
+ scheduleUpdate:
+ $ref: '#/components/schemas/VideoScheduledUpdate'
required:
- channelId
- name
+ encoding:
+ torrentfile:
+ contentType: application/x-bittorrent
+ thumbnailfile:
+ contentType: image/jpeg
+ previewfile:
+ contentType: image/jpeg
/videos/abuse:
get:
summary: Get list of reported video abuses
tags:
- Video Abuse
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
tags:
- Video Blacklist
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
tags:
- Video Blacklist
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
type: array
items:
$ref: '#/components/schemas/VideoBlacklist'
+ /videos/{id}/captions:
+ get:
+ summary: Get list of video's captions
+ tags:
+ - Video Caption
+ parameters:
+ - $ref: '#/components/parameters/idOrUUID'
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ total:
+ type: integer
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/VideoCaption'
+ /videos/{id}/captions/{captionLanguage}:
+ put:
+ summary: Add or replace a video caption
+ tags:
+ - Video Caption
+ parameters:
+ - $ref: '#/components/parameters/idOrUUID'
+ - $ref: '#/components/parameters/captionLanguage'
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ captionfile:
+ description: The file to upload.
+ type: string
+ format: binary
+ encoding:
+ captionfile:
+ contentType: text/vtt, application/x-subrip, text/plain
+ responses:
+ '204':
+ $ref: '#/paths/~1users~1me/put/responses/204'
+ delete:
+ summary: Delete a video caption
+ tags:
+ - Video Caption
+ parameters:
+ - $ref: '#/components/parameters/idOrUUID'
+ - $ref: '#/components/parameters/captionLanguage'
+ responses:
+ '204':
+ $ref: '#/paths/~1users~1me/put/responses/204'
/video-channels:
get:
summary: Get list of video channels
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
requestBody:
- $ref: '#/components/requestBodies/VideoChannelInput'
- '/video-channels/{id}':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/VideoChannelCreate'
+ '/video-channels/{channelHandle}':
get:
summary: Get a video channel by its id
tags:
- Video Channel
parameters:
- - $ref: '#/components/parameters/id3'
+ - $ref: '#/components/parameters/channelHandle'
responses:
'200':
description: successful operation
tags:
- Video Channel
parameters:
- - $ref: '#/components/parameters/id3'
+ - $ref: '#/components/parameters/channelHandle'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
requestBody:
- $ref: '#/components/requestBodies/VideoChannelInput'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/VideoChannelUpdate'
delete:
summary: Delete a video channel by its id
security:
tags:
- Video Channel
parameters:
- - $ref: '#/components/parameters/id3'
+ - $ref: '#/components/parameters/channelHandle'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
- '/video-channels/{id}/videos':
+ '/video-channels/{channelHandle}/videos':
get:
summary: Get videos of a video channel by its id
tags:
+ - Video
- Video Channel
parameters:
- - $ref: '#/components/parameters/id3'
+ - $ref: '#/components/parameters/channelHandle'
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/VideoListResponse'
+ /video-playlists:
+ get:
+ summary: Get list of video playlists
+ tags:
+ - Video Playlist
+ parameters:
+ - $ref: '#/components/parameters/start'
+ - $ref: '#/components/parameters/count'
+ - $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
- $ref: '#/components/schemas/Video'
+ type: array
+ items:
+ $ref: '#/components/schemas/VideoPlaylist'
'/accounts/{name}/video-channels':
get:
summary: Get video channels of an account by its name
type: array
items:
$ref: '#/components/schemas/VideoChannel'
+ '/accounts/{name}/ratings':
+ get:
+ summary: Get ratings of an account by its name
+ security:
+ - OAuth2: []
+ tags:
+ - User
+ parameters:
+ - $ref: '#/components/parameters/name'
+ - $ref: '#/components/parameters/start'
+ - $ref: '#/components/parameters/count'
+ - $ref: '#/components/parameters/sort'
+ - name: rating
+ in: query
+ required: false
+ description: Optionally filter which ratings to retrieve
+ schema:
+ type: string
+ enum:
+ - like
+ - dislike
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/VideoRating'
'/videos/{id}/comment-threads':
get:
summary: Get the comment threads of a video by its id
tags:
- Video Comment
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- - $ref: '#/components/parameters/sort'
+ - $ref: '#/components/parameters/commentsSort'
responses:
'200':
description: successful operation
tags:
- Video Comment
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'200':
description: successful operation
tags:
- Video Comment
parameters:
- - $ref: '#/components/parameters/id2'
- - name: threadId
- in: path
- required: true
- description: The thread id (root comment id)
- schema:
- type: number
+ - $ref: '#/components/parameters/idOrUUID'
+ - $ref: '#/components/parameters/threadId'
responses:
'200':
description: successful operation
tags:
- Video Comment
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/commentId'
responses:
'200':
schema:
$ref: '#/components/schemas/CommentThreadPostResponse'
delete:
- summary: 'Delete a comment in a comment therad by its id, of a video by its id'
+ summary: 'Delete a comment in a comment thread by its id, of a video by its id'
security:
- OAuth2: []
tags:
- Video Comment
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
- $ref: '#/components/parameters/commentId'
responses:
'204':
tags:
- Video Rate
parameters:
- - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/idOrUUID'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
content:
application/json:
schema:
- type: array
- items:
- $ref: '#/components/schemas/Video'
+ $ref: '#/components/schemas/VideoListResponse'
servers:
- url: 'https://peertube.cpy.re/api/v1'
description: Live Test Server (live data - stable version)
- -views
- -likes
- -match
+ commentsSort:
+ name: sort
+ in: query
+ required: false
+ description: Sort comments by criteria
+ schema:
+ type: string
+ enum:
+ - -createdAt
+ - -totalReplies
blacklistsSort:
name: sort
in: query
description: The user id
schema:
type: number
- id2:
+ idOrUUID:
name: id
in: path
required: true
description: The video id or uuid
schema:
type: string
- id3:
- name: id
+ captionLanguage:
+ name: captionLanguage
in: path
required: true
- description: The video channel id or uuid
+ description: The caption language
schema:
type: string
- commentId:
+ channelHandle:
+ name: channelHandle
+ in: path
+ required: true
+ description: "The video channel handle (example: 'my_username@example.com' or 'my_username')"
+ schema:
+ type: string
+ subscriptionHandle:
+ name: subscriptionHandle
+ in: path
+ required: true
+ description: "The subscription handle (example: 'my_username@example.com' or 'my_username')"
+ schema:
+ type: string
+ threadId:
name: threadId
in: path
required: true
+ description: The thread id (root comment id)
+ schema:
+ type: number
+ commentId:
+ name: commentId
+ in: path
+ required: true
description: The comment id
schema:
type: number
type: array
items:
type: string
- requestBodies:
- VideoChannelInput:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/VideoChannelInput'
securitySchemes:
OAuth2:
description: >
- Have an account with sufficient authorization levels
- - [Generate](https://docs.joinpeertube.org/lang/en/devdocs/rest.html) a
+ - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a
Bearer Token
- Make Authenticated Requests
type: string
label:
type: string
- VideoPrivacy:
- type: string
+ VideoPrivacySet:
+ type: integer
enum:
- - Public
- - Unlisted
- - Private
- Video:
+ - 1
+ - 2
+ - 3
+ description: 'The video privacy (Public = 1, Unlisted = 2, Private = 3)'
+ VideoPrivacyConstant:
properties:
id:
- type: number
- uuid:
- type: string
- createdAt:
- type: string
- publishedAt:
+ type: integer
+ enum:
+ - 1
+ - 2
+ - 3
+ label:
type: string
- updatedAt:
+ VideoStateConstant:
+ properties:
+ id:
+ type: integer
+ enum:
+ - 1
+ - 2
+ - 3
+ description: 'The video state (Published = 1, to transcode = 2, to import = 3)'
+ label:
+ type: string
+ VideoResolutionConstant:
+ properties:
+ id:
+ type: integer
+ description: 'Video resolution (240, 360, 720 ...)'
+ label:
+ type: string
+ VideoScheduledUpdate:
+ properties:
+ privacy:
+ $ref: '#/components/schemas/VideoPrivacySet'
+ description: Video privacy target
+ updateAt:
+ type: string
+ format: date
+ description: When to update the video
+ required:
+ - updateAt
+ VideoAccountSummary:
+ properties:
+ id:
+ type: number
+ name:
+ type: string
+ displayName:
+ type: string
+ url:
+ type: string
+ host:
+ type: string
+ avatar:
+ nullable: true
+ $ref: '#/components/schemas/Avatar'
+ VideoChannelSummary:
+ properties:
+ id:
+ type: number
+ name:
+ type: string
+ displayName:
+ type: string
+ url:
+ type: string
+ host:
+ type: string
+ avatar:
+ nullable: true
+ $ref: '#/components/schemas/Avatar'
+ PlaylistElement:
+ properties:
+ position:
+ type: number
+ startTimestamp:
+ type: number
+ stopTimestamp:
+ type: number
+ video:
+ nullable: true
+ $ref: '#/components/schemas/Video'
+ VideoFile:
+ properties:
+ magnetUri:
+ type: string
+ resolution:
+ $ref: '#/components/schemas/VideoResolutionConstant'
+ size:
+ type: number
+ description: 'Video file size in bytes'
+ torrentUrl:
+ type: string
+ torrentDownloadUrl:
+ type: string
+ fileUrl:
+ type: string
+ fileDownloadUrl:
+ type: string
+ fps:
+ type: number
+ VideoStreamingPlaylists:
+ properties:
+ id:
+ type: number
+ type:
+ type: number
+ enum:
+ - 1
+ description: 'Playlist type (HLS = 1)'
+ playlistUrl:
+ type: string
+ segmentsSha256Url:
+ type: string
+ redundancies:
+ type: array
+ items:
+ type: object
+ properties:
+ baseUrl:
+ type: string
+ Video:
+ properties:
+ id:
+ type: number
+ uuid:
+ type: string
+ createdAt:
+ type: string
+ publishedAt:
+ type: string
+ updatedAt:
+ type: string
+ originallyPublishedAt:
type: string
category:
$ref: '#/components/schemas/VideoConstantNumber'
language:
$ref: '#/components/schemas/VideoConstantString'
privacy:
- $ref: '#/components/schemas/VideoPrivacy'
+ $ref: '#/components/schemas/VideoPrivacyConstant'
description:
type: string
duration:
type: number
nsfw:
type: boolean
+ waitTranscoding:
+ type: boolean
+ nullable: true
+ state:
+ $ref: '#/components/schemas/VideoStateConstant'
+ scheduledUpdate:
+ nullable: true
+ $ref: '#/components/schemas/VideoScheduledUpdate'
+ blacklisted:
+ nullable: true
+ type: boolean
+ blacklistedReason:
+ nullable: true
+ type: string
account:
+ $ref: '#/components/schemas/VideoAccountSummary'
+ channel:
+ $ref: '#/components/schemas/VideoChannelSummary'
+ userHistory:
+ nullable: true
type: object
properties:
- name:
- type: string
- displayName:
+ currentTime:
+ type: number
+ VideoDetails:
+ allOf:
+ - $ref: '#/components/schemas/Video'
+ - type: object
+ properties:
+ descriptionPath:
type: string
- url:
+ support:
type: string
- host:
+ channel:
+ $ref: '#/components/schemas/VideoChannel'
+ account:
+ $ref: '#/components/schemas/Account'
+ tags:
+ type: array
+ items:
+ type: string
+ files:
+ type: array
+ items:
+ $ref: '#/components/schemas/VideoFile'
+ commentsEnabled:
+ type: boolean
+ downloadEnabled:
+ type: boolean
+ trackerUrls:
+ type: array
+ items:
+ type: string
+ streamingPlaylists:
+ type: array
+ items:
+ $ref: '#/components/schemas/VideoStreamingPlaylists'
+ VideoImportStateConstant:
+ properties:
+ id:
+ type: integer
+ enum:
+ - 1
+ - 2
+ - 3
+ description: 'The video import state (Pending = 1, Success = 2, Failed = 3)'
+ label:
+ type: string
+ VideoImport:
+ properties:
+ id:
+ type: number
+ targetUrl:
+ type: string
+ magnetUri:
+ type: string
+ torrentName:
+ type: string
+ state:
+ type: object
+ properties:
+ id:
+ $ref: '#/components/schemas/VideoImportStateConstant'
+ label:
type: string
- avatar:
- $ref: '#/components/schemas/Avatar'
+ error:
+ type: string
+ createdAt:
+ type: string
+ updatedAt:
+ type: string
+ video:
+ $ref: '#/components/schemas/Video'
VideoAbuse:
properties:
id:
type: number
uuid:
type: string
+ VideoPlaylist:
+ properties:
+ id:
+ type: number
+ createdAt:
+ type: string
+ updatedAt:
+ type: string
+ description:
+ type: string
+ uuid:
+ type: string
+ displayName:
+ type: string
+ isLocal:
+ type: boolean
+ videoLength:
+ type: number
+ thumbnailPath:
+ type: string
+ privacy:
+ type: object
+ properties:
+ id:
+ type: number
+ label:
+ type: string
+ type:
+ type: object
+ properties:
+ id:
+ type: number
+ label:
+ type: string
+ ownerAccount:
+ type: object
+ properties:
+ id:
+ type: number
+ name:
+ type: string
+ displayName:
+ type: string
+ url:
+ type: string
+ host:
+ type: string
VideoComment:
properties:
id:
type: string
updatedAt:
type: string
+ totalRepliesFromVideoAuthor:
+ type: number
totalReplies:
type: number
account:
type: array
items:
$ref: '#/components/schemas/VideoCommentThreadTree'
+ VideoCaption:
+ properties:
+ language:
+ $ref: '#/components/schemas/VideoConstantString'
+ captionPath:
+ type: string
Avatar:
properties:
path:
properties:
id:
type: number
- uuid:
- type: string
url:
type: string
name:
allOf:
- $ref: '#/components/schemas/Actor'
- properties:
+ userId:
+ type: string
displayName:
type: string
+ description:
+ type: string
User:
properties:
id:
autoPlayVideo:
type: boolean
role:
+ type: integer
+ enum:
+ - 0
+ - 1
+ - 2
+ description: 'The user role (Admin = 0, Moderator = 1, User = 2)'
+ roleLabel:
type: string
enum:
- User
- Administrator
videoQuota:
type: number
+ videoQuotaDaily:
+ type: number
createdAt:
type: string
account:
type: number
ServerConfig:
properties:
+ instance:
+ type: object
+ properties:
+ name:
+ type: string
+ shortDescription:
+ type: string
+ defaultClientRoute:
+ type: string
+ isNSFW:
+ type: boolean
+ defaultNSFWPolicy:
+ type: string
+ customizations:
+ type: object
+ properties:
+ javascript:
+ type: string
+ css:
+ type: string
+ search:
+ type: object
+ properties:
+ remoteUri:
+ type: object
+ properties:
+ users:
+ type: boolean
+ anonymous:
+ type: boolean
+ plugin:
+ type: object
+ properties:
+ registered:
+ type: array
+ items:
+ type: string
+ theme:
+ type: object
+ properties:
+ registered:
+ type: array
+ items:
+ type: string
+ email:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ contactForm:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ serverVersion:
+ type: string
+ serverCommit:
+ type: string
signup:
type: object
properties:
allowed:
type: boolean
+ allowedForCurrentIP:
+ type: boolean
+ requiresEmailVerification:
+ type: boolean
transcoding:
type: object
properties:
+ hls:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ webtorrent:
+ type: object
+ properties:
+ enabled:
+ type: boolean
enabledResolutions:
type: array
items:
type: number
+ import:
+ type: object
+ properties:
+ videos:
+ type: object
+ properties:
+ http:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ torrent:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ autoBlacklist:
+ type: object
+ properties:
+ videos:
+ type: object
+ properties:
+ ofUsers:
+ type: object
+ properties:
+ enabled:
+ type: boolean
avatar:
type: object
properties:
video:
type: object
properties:
+ image:
+ type: object
+ properties:
+ extensions:
+ type: array
+ items:
+ type: string
+ size:
+ type: object
+ properties:
+ max:
+ type: number
file:
type: object
properties:
type: array
items:
type: string
+ videoCaption:
+ type: object
+ properties:
+ file:
+ type: object
+ properties:
+ size:
+ type: object
+ properties:
+ max:
+ type: number
+ extensions:
+ type: array
+ items:
+ type: string
+ user:
+ type: object
+ properties:
+ videoQuota:
+ type: number
+ videoQuotaDaily:
+ type: number
+ trending:
+ type: object
+ properties:
+ videos:
+ type: object
+ properties:
+ intervalDays:
+ type: number
+ tracker:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ followings:
+ type: object
+ properties:
+ instance:
+ type: object
+ properties:
+ autoFollowIndex:
+ type: object
+ properties:
+ indexUrl:
+ type: string
+ ServerConfigAbout:
+ properties:
+ instance:
+ type: object
+ properties:
+ name:
+ type: string
+ shortDescription:
+ type: string
+ description:
+ type: string
+ terms:
+ type: string
+ ServerConfigCustom:
+ properties:
+ instance:
+ type: object
+ properties:
+ name:
+ type: string
+ shortDescription:
+ type: string
+ description:
+ type: string
+ terms:
+ type: string
+ defaultClientRoute:
+ type: string
+ isNSFW:
+ type: boolean
+ defaultNSFWPolicy:
+ type: string
+ customizations:
+ type: object
+ properties:
+ javascript:
+ type: string
+ css:
+ type: string
+ theme:
+ type: object
+ properties:
+ default:
+ type: string
+ services:
+ type: object
+ properties:
+ twitter:
+ type: object
+ properties:
+ username:
+ type: string
+ whitelisted:
+ type: boolean
+ cache:
+ type: object
+ properties:
+ previews:
+ type: object
+ properties:
+ size:
+ type: number
+ captions:
+ type: object
+ properties:
+ size:
+ type: number
+ signup:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ limit:
+ type: number
+ requiresEmailVerification:
+ type: boolean
+ admin:
+ type: object
+ properties:
+ email:
+ type: string
+ contactForm:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ user:
+ type: object
+ properties:
+ videoQuota:
+ type: number
+ videoQuotaDaily:
+ type: number
+ transcoding:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ allowAdditionalExtensions:
+ type: boolean
+ allowAudioFiles:
+ type: boolean
+ threads:
+ type: number
+ resolutions:
+ type: object
+ properties:
+ 240p:
+ type: boolean
+ 360p:
+ type: boolean
+ 480p:
+ type: boolean
+ 720p:
+ type: boolean
+ 1080p:
+ type: boolean
+ 2160p:
+ type: boolean
+ hls:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ import:
+ type: object
+ properties:
+ videos:
+ type: object
+ properties:
+ http:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ torrent:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ autoBlacklist:
+ type: object
+ properties:
+ videos:
+ type: object
+ properties:
+ ofUsers:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ followers:
+ type: object
+ properties:
+ instance:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ manualApproval:
+ type: boolean
Follow:
properties:
id:
properties:
comment:
$ref: '#/components/schemas/VideoComment'
+ VideoListResponse:
+ properties:
+ total:
+ type: number
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/Video'
AddUser:
properties:
username:
description: 'The user username '
password:
type: string
- description: 'The user password '
+ description: 'The user password. If the smtp server is configured, you can leave empty and an email will be sent '
email:
type: string
description: 'The user email '
videoQuota:
type: string
description: 'The user videoQuota '
+ videoQuotaDaily:
+ type: string
+ description: 'The user daily video quota '
role:
type: integer
- format: int32
enum:
- 0
- 1
- 2
- description: 'The user role '
+ description: 'The user role (Admin = 0, Moderator = 1, User = 2)'
required:
- username
- password
- email
- videoQuota
+ - videoQuotaDaily
- role
UpdateUser:
properties:
videoQuota:
type: string
description: 'The updated videoQuota of the user '
- role:
+ videoQuotaDaily:
type: string
- description: 'The updated role of the user '
+ description: 'The updated daily video quota of the user '
+ role:
+ type: integer
+ enum:
+ - 0
+ - 1
+ - 2
+ description: 'The user role (Admin = 0, Moderator = 1, User = 2)'
required:
- id
- email
- videoQuota
+ - videoQuotaDaily
- role
UpdateMe:
properties:
required:
- id
- rating
+ VideoRating:
+ properties:
+ video:
+ $ref: '#/components/schemas/Video'
+ rating:
+ type: number
+ description: 'Rating of the video'
+ required:
+ - video
+ - rating
RegisterUser:
properties:
username:
email:
type: string
description: 'The email of the user '
+ displayName:
+ type: string
+ description: 'The user display name'
+ channel:
+ type: object
+ properties:
+ name:
+ type: string
+ description: 'The default channel name'
+ displayName:
+ type: string
+ description: 'The default channel display name'
+
required:
- username
- password
- email
- VideoChannelInput:
+ VideoChannelCreate:
properties:
name:
type: string
+ displayName:
+ type: string
+ description:
+ type: string
+ support:
+ type: string
+ required:
+ - name
+ - displayName
+ VideoChannelUpdate:
+ properties:
+ displayName:
+ type: string
description:
type: string
+ support:
+ type: string
+ bulkVideosSupportUpdate:
+ type: boolean
+ description: 'Update all videos support field of this channel'