openapi: 3.0.0
info:
title: PeerTube
- version: 1.1.0-alpha.2
+ version: 1.3.0
contact:
name: PeerTube Community
url: 'https://joinpeertube.org'
url: 'https://github.com/Chocobozzz/PeerTube/blob/master/LICENSE'
x-logo:
url: 'https://joinpeertube.org/img/brand.png'
+ 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
HTTP/REST library for your programming language to use PeerTube. No official
- SDK is currently provided.
+ SDK is currently provided, but 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.
# 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
+ 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.
+
+ ```
+ {
+ "code": "unauthorized_request", // example inner error code
+ "error": "Token is invalid." // example exposed error message
+ }
+ ```
externalDocs:
- url: https://docs.joinpeertube.org/api.html
+ url: https://docs.joinpeertube.org/#/api-rest-reference.html
tags:
- name: Accounts
description: >
Using some features of PeerTube require authentication, for which Accounts
-
provide different levels of permission as well as associated user
- information.
-
- Accounts also encompass remote accounts discovered across the federation.
+ information. Accounts also encompass remote accounts discovered across the federation.
- name: Config
description: >
Each server exposes public information regarding supported videos and
- name: Job
description: >
Jobs are long-running tasks enqueued and processed by the instance
- itself.
-
- No additional worker registration is currently available.
- - name: ServerFollowing
+ itself. No additional worker registration is currently available.
+ - name: Server Following
description: >
Managing servers which the instance interacts with is crucial to the
- concept
-
- of federation in PeerTube and external video indexation. The PeerTube
- server
-
- then deals with inter-server ActivityPub operations and propagates
-
+ concept of federation in PeerTube and external video indexation. The PeerTube
+ server then deals with inter-server ActivityPub operations and propagates
information across its social graph by posting activities to actors' inbox
-
endpoints.
- - name: VideoAbuse
+ - name: Video Abuse
description: |
Video abuses deal with reports of local or remote videos alike.
- name: Video
Videos from other instances federated by the instance (that is, instances
followed by the instance) can be found via keywords and other criteria of
the advanced search.
- - name: VideoComment
+ - name: Video Comment
description: >
Operations dealing with comments to a video. Comments are organized in
threads.
- - name: VideoChannel
+ - name: Video Channel
description: >
Operations dealing with creation, modification and video listing of a
- user's
-
- channels.
+ user's channels.
+ - name: Video Blacklist
+ description: >
+ Operations dealing with blacklisting videos (removing them from view and
+ preventing interactions).
+ - name: Video Rate
+ description: >
+ Voting for a video.
+x-tagGroups:
+ - name: Accounts
+ tags:
+ - Accounts
+ - User
+ - name: Videos
+ tags:
+ - Video
+ - Video Caption
+ - Video Channel
+ - Video Comment
+ - Video Following
+ - Video Rate
+ - name: Moderation
+ tags:
+ - Video Abuse
+ - Video Blacklist
+ - name: Instance Configuration
+ tags:
+ - Config
+ - Server Following
+ - name: Notifications
+ tags:
+ - Feeds
+ - name: Jobs
+ tags:
+ - Job
+ - name: Search
+ tags:
+ - Search
paths:
'/accounts/{name}':
get:
content:
application/json:
schema:
- $ref: '#/components/schemas/Video'
+ $ref: '#/components/schemas/VideoListResponse'
x-code-samples:
- lang: JavaScript
source: |
source: |
# pip install httpie
http -b GET https://peertube2.cpy.re/api/v1/accounts/{name}/videos
+ - lang: Ruby
+ source: |
+ require 'uri'
+ require 'net/http'
+
+ url = URI("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
+
+ http = Net::HTTP.new(url.host, url.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
+ - lang: Python
+ source: |
+ import http.client
+
+ conn = http.client.HTTPSConnection("https://peertube2.cpy.re/api/v1")
+
+ headers = {
+ 'content-type': "application/json"
+ }
+
+ conn.request("POST", "/accounts/{name}/videos", None, headers)
+
+ res = conn.getresponse()
+ data = res.read()
+
+ print(data.decode("utf-8"))
/accounts:
get:
tags:
responses:
'200':
description: successful operation
- /jobs:
+ /jobs/{state}:
get:
summary: Get list of jobs
security:
description: The state of the job
schema:
type: string
+ enum:
+ - active
+ - completed
+ - failed
+ - waiting
+ - delayed
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
- OAuth2:
- admin
tags:
- - ServerFollowing
+ - Server Following
summary: Unfollow a server by hostname
parameters:
- name: host
/server/followers:
get:
tags:
- - ServerFollowing
+ - Server Following
summary: Get followers of the server
parameters:
- $ref: '#/components/parameters/start'
/server/following:
get:
tags:
- - ServerFollowing
+ - Server Following
summary: Get servers followed by the server
parameters:
- $ref: '#/components/parameters/start'
- OAuth2:
- admin
tags:
- - ServerFollowing
+ - Server Following
summary: Follow a server
responses:
'204':
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- - $ref: '#/components/parameters/sort'
+ - $ref: '#/components/parameters/usersSort'
responses:
'200':
description: successful operation
get:
summary: Get current user information
security:
- - OAuth2: []
+ - OAuth2:
+ - user
tags:
- User
responses:
put:
summary: Update current user information
security:
- - OAuth2: []
+ - OAuth2:
+ - user
tags:
- User
responses:
get:
summary: Get current user used quota
security:
- - OAuth2: []
+ - OAuth2:
+ - user
tags:
- User
responses:
get:
summary: Get videos of the current user
security:
- - OAuth2: []
+ - OAuth2:
+ - user
tags:
- User
parameters:
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
+ security:
+ - OAuth2:
+ - user
+ tags:
+ - User
+ parameters:
+ - $ref: '#/components/parameters/start'
+ - $ref: '#/components/parameters/count'
+ - $ref: '#/components/parameters/sort'
+ responses:
+ '200':
+ description: successful operation
+ post:
+ summary: Add subscription to the current user
+ security:
+ - OAuth2:
+ - user
+ tags:
+ - User
+ responses:
+ '200':
+ description: successful operation
+ /users/me/subscriptions/exist:
+ get:
+ summary: Get if subscriptions exist for the current user
+ security:
+ - OAuth2:
+ - user
+ tags:
+ - User
+ parameters:
+ - $ref: '#/components/parameters/subscriptionsUris'
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ /users/me/subscriptions/videos:
+ get:
+ summary: Get videos of subscriptions of the current user
+ security:
+ - OAuth2:
+ - user
+ tags:
+ - 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/VideoListResponse'
+ '/users/me/subscriptions/{uri}':
+ get:
+ summary: Get subscription of the current user for a given uri
+ security:
+ - OAuth2:
+ - user
+ tags:
+ - User
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/VideoChannel'
+ delete:
+ summary: Delete subscription of the current user for a given uri
+ security:
+ - OAuth2:
+ - user
+ tags:
+ - User
+ responses:
+ '200':
+ description: successful operation
/users/register:
post:
summary: Register a user
tags:
- Video
parameters:
- - name: category
- in: query
- required: false
- description: category id of the video
- schema:
- type: number
+ - $ref: '#/components/parameters/categoryOneOf'
+ - $ref: '#/components/parameters/tagsOneOf'
+ - $ref: '#/components/parameters/tagsAllOf'
+ - $ref: '#/components/parameters/licenceOneOf'
+ - $ref: '#/components/parameters/languageOneOf'
+ - $ref: '#/components/parameters/nsfw'
+ - $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- - $ref: '#/components/parameters/sort'
+ - $ref: '#/components/parameters/videosSort'
responses:
'200':
description: successful operation
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
description: Video name
type: string
tags:
- description: Video tags
- type: string
+ description: Video tags (maximum 5 tags each between 2 and 30 characters)
+ type: array
+ items:
+ type: string
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
+ scheduleUpdate:
+ $ref: '#/components/schemas/VideoScheduledUpdate'
get:
summary: Get a video by its id
tags:
content:
application/json:
schema:
- $ref: '#/components/schemas/Video'
+ $ref: '#/components/schemas/VideoDetails'
delete:
summary: Delete a video by its id
security:
$ref: '#/paths/~1users~1me/put/responses/204'
'/videos/{id}/watching':
put:
- summary: Indicate progress of in watching the video by its id for a user
+ summary: Set watching progress of a video by its id for a user
tags:
- Video
security:
description: Video preview file
type: string
privacy:
- $ref: '#/components/schemas/VideoPrivacy'
+ $ref: '#/components/schemas/VideoPrivacySet'
category:
description: Video category
type: string
type: string
tags:
description: Video tags
- type: string
+ type: array
+ items:
+ type: string
commentsEnabled:
description: Enable or disable comments for this video
type: string
- scheduleUpdate: *ref_0
+ scheduleUpdate:
+ $ref: '#/components/schemas/VideoScheduledUpdate'
required:
- videofile
- channelId
channelId=$CHANNEL_ID \
name=$NAME \
"Authorization:Bearer $token"
+ /videos/imports:
+ post:
+ summary: Import a torrent or magnetURI or HTTP ressource (if enabled by the instance administrator)
+ security:
+ - OAuth2: []
+ tags:
+ - Video
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/VideoUploadResponse'
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ torrentfile:
+ description: Torrent File
+ type: string
+ format: binary
+ targetUrl:
+ description: HTTP target URL
+ type: string
+ magnetUri:
+ description: Magnet URI
+ type: string
+ channelId:
+ description: Channel id that will contain this video
+ type: number
+ thumbnailfile:
+ description: Video thumbnail file
+ type: string
+ previewfile:
+ description: Video preview file
+ type: string
+ privacy:
+ $ref: '#/components/schemas/VideoPrivacySet'
+ category:
+ description: Video category
+ type: string
+ licence:
+ description: Video licence
+ type: string
+ language:
+ description: Video language
+ type: string
+ description:
+ description: Video description
+ type: string
+ waitTranscoding:
+ description: Whether or not we wait transcoding before publish the video
+ type: string
+ support:
+ description: Text describing how to support the video uploader
+ type: string
+ nsfw:
+ description: Whether or not this video contains sensitive content
+ type: string
+ name:
+ description: Video name
+ type: string
+ tags:
+ description: Video tags
+ type: array
+ items:
+ type: string
+ commentsEnabled:
+ description: Enable or disable comments for this video
+ type: string
+ scheduleUpdate:
+ $ref: '#/components/schemas/VideoScheduledUpdate'
+ required:
+ - channelId
+ - name
/videos/abuse:
get:
summary: Get list of reported video abuses
security:
- OAuth2: []
tags:
- - VideoAbuse
+ - Video Abuse
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- - $ref: '#/components/parameters/sort'
+ - $ref: '#/components/parameters/abusesSort'
responses:
'200':
description: successful operation
security:
- OAuth2: []
tags:
- - VideoAbuse
+ - Video Abuse
parameters:
- $ref: '#/components/parameters/id2'
responses:
- admin
- moderator
tags:
- - VideoBlacklist
+ - Video Blacklist
parameters:
- $ref: '#/components/parameters/id2'
responses:
- admin
- moderator
tags:
- - VideoBlacklist
+ - Video Blacklist
parameters:
- $ref: '#/components/parameters/id2'
responses:
- admin
- moderator
tags:
- - VideoBlacklist
+ - Video Blacklist
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- - $ref: '#/components/parameters/sort'
+ - $ref: '#/components/parameters/blacklistsSort'
responses:
'200':
description: successful operation
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/id2'
+ 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/id2'
+ - $ref: '#/components/parameters/captionLanguage'
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ captionfile:
+ description: The file to upload.
+ type: string
+ format: binary
+ responses:
+ '204':
+ $ref: '#/paths/~1users~1me/put/responses/204'
+ delete:
+ summary: Delete a video caption
+ tags:
+ - Video Caption
+ parameters:
+ - $ref: '#/components/parameters/id2'
+ - $ref: '#/components/parameters/captionLanguage'
+ responses:
+ '204':
+ $ref: '#/paths/~1users~1me/put/responses/204'
/video-channels:
get:
summary: Get list of video channels
tags:
- - VideoChannel
+ - Video Channel
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
security:
- OAuth2: []
tags:
- - VideoChannel
+ - Video Channel
responses:
'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:
- - VideoChannel
+ - Video Channel
parameters:
- - $ref: '#/components/parameters/id3'
+ - $ref: '#/components/parameters/channelHandle'
responses:
'200':
description: successful operation
security:
- OAuth2: []
tags:
- - VideoChannel
+ - 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:
- OAuth2: []
tags:
- - VideoChannel
+ - 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:
- - VideoChannel
+ - Video
+ - Video Channel
parameters:
- - $ref: '#/components/parameters/id3'
+ - $ref: '#/components/parameters/channelHandle'
responses:
'200':
description: successful operation
content:
application/json:
schema:
- $ref: '#/components/schemas/Video'
+ $ref: '#/components/schemas/VideoListResponse'
'/accounts/{name}/video-channels':
get:
summary: Get video channels of an account by its name
tags:
- - VideoChannel
+ - Video Channel
parameters:
- $ref: '#/components/parameters/name'
responses:
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/start'
+ - $ref: '#/components/parameters/count'
+ - $ref: '#/components/parameters/sort'
+ - name: rating
+ in: query
+ required: false
+ description: Optionaly 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:
- - VideoComment
+ - Video Comment
parameters:
- $ref: '#/components/parameters/id2'
- $ref: '#/components/parameters/start'
security:
- OAuth2: []
tags:
- - VideoComment
+ - Video Comment
parameters:
- $ref: '#/components/parameters/id2'
responses:
get:
summary: 'Get the comment thread by its id, of a video by its id'
tags:
- - VideoComment
+ - Video Comment
parameters:
- $ref: '#/components/parameters/id2'
- name: threadId
security:
- OAuth2: []
tags:
- - VideoComment
+ - Video Comment
parameters:
- $ref: '#/components/parameters/id2'
- $ref: '#/components/parameters/commentId'
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:
- - VideoComment
+ - Video Comment
parameters:
- $ref: '#/components/parameters/id2'
- $ref: '#/components/parameters/commentId'
security:
- OAuth2: []
tags:
- - VideoRate
+ - Video Rate
parameters:
- $ref: '#/components/parameters/id2'
responses:
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- - $ref: '#/components/parameters/sort'
+ - $ref: '#/components/parameters/videosSearchSort'
- name: search
in: query
required: true
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)
description: Sort column (-createdAt for example)
schema:
type: string
+ videosSort:
+ name: sort
+ in: query
+ required: false
+ description: Sort videos by criteria
+ schema:
+ type: string
+ enum:
+ - -name
+ - -duration
+ - -createdAt
+ - -publishedAt
+ - -views
+ - -likes
+ - -trending
+ videosSearchSort:
+ name: sort
+ in: query
+ required: false
+ description: Sort videos by criteria
+ schema:
+ type: string
+ enum:
+ - -name
+ - -duration
+ - -createdAt
+ - -publishedAt
+ - -views
+ - -likes
+ - -match
+ blacklistsSort:
+ name: sort
+ in: query
+ required: false
+ description: Sort blacklists by criteria
+ schema:
+ type: string
+ enum:
+ - -id
+ - -name
+ - -duration
+ - -views
+ - -likes
+ - -dislikes
+ - -uuid
+ - -createdAt
+ usersSort:
+ name: sort
+ in: query
+ required: false
+ description: Sort users by criteria
+ schema:
+ type: string
+ enum:
+ - -id
+ - -username
+ - -createdAt
+ abusesSort:
+ name: sort
+ in: query
+ required: false
+ description: Sort abuses by criteria
+ schema:
+ type: string
+ enum:
+ - -id
+ - -createdAt
+ - -state
name:
name: name
in: path
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
+ channelHandle:
+ name: channelHandle
+ in: path
+ required: true
+ description: "The video channel handle (example: 'my_username@example.com' or 'my_username')"
schema:
type: string
commentId:
description: The comment id
schema:
type: number
- requestBodies:
- VideoChannelInput:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/VideoChannelInput'
+ categoryOneOf:
+ name: categoryOneOf
+ in: query
+ required: false
+ description: category id of the video
+ schema:
+ oneOf:
+ - type: number
+ - type: array
+ items:
+ type: number
+ style: form
+ explode: false
+ tagsOneOf:
+ name: tagsOneOf
+ in: query
+ required: false
+ description: tag(s) of the video
+ schema:
+ oneOf:
+ - type: string
+ - type: array
+ items:
+ type: string
+ style: form
+ explode: false
+ tagsAllOf:
+ name: tagsAllOf
+ in: query
+ required: false
+ description: tag(s) of the video, where all should be present in the video
+ schema:
+ oneOf:
+ - type: string
+ - type: array
+ items:
+ type: string
+ style: form
+ explode: false
+ languageOneOf:
+ name: languageOneOf
+ in: query
+ required: false
+ description: language id of the video
+ schema:
+ oneOf:
+ - type: string
+ - type: array
+ items:
+ type: string
+ style: form
+ explode: false
+ licenceOneOf:
+ name: licenceOneOf
+ in: query
+ required: false
+ description: licence id of the video
+ schema:
+ oneOf:
+ - type: number
+ - type: array
+ items:
+ type: number
+ style: form
+ explode: false
+ nsfw:
+ name: nsfw
+ in: query
+ required: false
+ description: whether to include nsfw videos, if any
+ schema:
+ type: string
+ enum:
+ - 'true'
+ - 'false'
+ filter:
+ name: filter
+ in: query
+ required: false
+ description: >
+ Special filters (local for instance) which might require special rights:
+ * `local` - only videos local to the instance
+ * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges)
+ schema:
+ type: string
+ enum:
+ - local
+ - all-local
+ subscriptionsUris:
+ name: uris
+ in: query
+ required: true
+ description: list of uris to check if each is part of the user subscriptions
+ schema:
+ type: array
+ items:
+ type: string
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
+ - 1
+ - 2
+ - 3
+ description: 'The video privacy (Public = 1, Unlisted = 2, Private = 3)'
+ VideoPrivacyConstant:
+ properties:
+ id:
+ type: integer
+ enum:
+ - 1
+ - 2
+ - 3
+ label:
+ type: string
+ 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
+ VideoFile:
+ properties:
+ magnetUri:
+ type: string
+ resolution:
+ $ref: '#/components/schemas/VideoResolutionConstant'
+ size:
+ type: number
+ description: 'Video file size in bytes'
+ torrentUrl:
+ type: string
+ torrentDownaloadUrl:
+ 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: string
updatedAt:
type: string
+ originallyPublishedAt:
+ type: string
category:
$ref: '#/components/schemas/VideoConstantNumber'
licence:
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:
- type: string
- url:
+ currentTime:
+ type: number
+ playlistElement:
+ nullable: true
+ $ref: '#/components/schemas/PlaylistElement'
+ VideoDetails:
+ allOf:
+ - $ref: '#/components/schemas/Video'
+ - type: object
+ properties:
+ descriptionPath:
type: string
- host:
+ support:
type: string
- avatar:
- $ref: '#/components/schemas/Avatar'
+ 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'
VideoAbuse:
properties:
id:
type: array
items:
$ref: '#/components/schemas/VideoCommentThreadTree'
+ VideoCaption:
+ properties:
+ language:
+ $ref: '#/components/schemas/VideoConstantString'
+ captionPath:
+ type: string
Avatar:
properties:
path:
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:
properties:
comment:
$ref: '#/components/schemas/VideoComment'
+ VideoListResponse:
+ properties:
+ total:
+ type: number
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/Video'
AddUser:
properties:
username:
videoQuota:
type: string
description: 'The user videoQuota '
- role:
+ videoQuotaDaily:
type: string
- description: 'The user role '
+ description: 'The user daily video quota '
+ role:
+ type: integer
+ enum:
+ - 0
+ - 1
+ - 2
+ 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'