1
0
Fork 0
peertube/support/doc/api/openapi.yaml

1587 lines
41 KiB
YAML
Raw Normal View History

openapi: 3.0.0
info:
2018-01-24 10:54:32 +00:00
title: PeerTube
version: 1.1.0-alpha.2
2018-11-13 22:27:58 +00:00
contact:
name: PeerTube Community
url: 'https://joinpeertube.org'
license:
name: AGPLv3.0
url: 'https://github.com/Chocobozzz/PeerTube/blob/master/LICENSE'
x-logo:
url: 'https://joinpeertube.org/img/brand.png'
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.
2018-11-13 22:27:58 +00:00
# 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.
tags:
- name: Accounts
description: >
2018-11-13 22:27:58 +00:00
Using some features of PeerTube require authentication, for which Accounts
provide different levels of permission as well as associated user
information.
2018-11-13 22:27:58 +00:00
Accounts also encompass remote accounts discovered across the federation.
- name: Config
description: >
Each server exposes public information regarding supported videos and
options.
2018-11-13 22:27:58 +00:00
- 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
itself.
2018-11-13 22:27:58 +00:00
No additional worker registration is currently available.
- name: ServerFollowing
description: >
Managing servers which the instance interacts with is crucial to the
concept
of federation in PeerTube and external video indexation. The PeerTube
server
2018-11-13 22:27:58 +00:00
then deals with inter-server ActivityPub operations and propagates
2018-11-13 22:27:58 +00:00
information across its social graph by posting activities to actors' inbox
2018-11-13 22:27:58 +00:00
endpoints.
- name: VideoAbuse
description: |
Video abuses deal with reports of local or remote videos alike.
- name: Video
description: |
Operations dealing with listing, uploading, fetching or modifying videos.
- name: Search
description: |
The search helps to find _videos_ from within the instance and beyond.
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
description: >
Operations dealing with comments to a video. Comments are organized in
threads.
2018-11-13 22:27:58 +00:00
- name: VideoChannel
description: >
Operations dealing with creation, modification and video listing of a
user's
2018-11-13 22:27:58 +00:00
channels.
paths:
2018-05-25 07:57:16 +00:00
'/accounts/{name}':
get:
tags:
- Accounts
2018-11-13 22:27:58 +00:00
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/Account'
2018-05-25 07:57:16 +00:00
'/accounts/{name}/videos':
2018-04-25 08:21:38 +00:00
get:
tags:
- Accounts
2018-11-13 22:27:58 +00:00
- Video
summary: 'Get videos for an account, provided the name of that account'
2018-04-25 08:21:38 +00:00
parameters:
- $ref: '#/components/parameters/name'
2018-04-25 08:21:38 +00:00
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Video'
2018-11-13 22:27:58 +00:00
x-code-samples:
- lang: JavaScript
source: |
fetch('https://peertube.cpy.re/api/v1/accounts/{name}/videos')
.then(function(response) {
return response.json()
}).then(function(data) {
console.log(data)
})
/accounts:
get:
tags:
- Accounts
2018-11-13 22:27:58 +00:00
summary: Get all accounts
responses:
'200':
description: successful operation
content:
'application/jsonhttps://peertube.cpy.re/api/v1':
schema:
type: array
items:
$ref: '#/components/schemas/Account'
/config:
get:
tags:
- Config
2018-11-13 22:27:58 +00:00
summary: Get the configuration of the server
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ServerConfig'
'/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:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of jobs
2018-04-16 08:48:17 +00:00
security:
- OAuth2:
- admin
tags:
- Job
parameters:
- name: state
in: path
required: true
description: The state of the job
schema:
type: string
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Job'
'/server/following/{host}':
delete:
2018-04-16 08:48:17 +00:00
security:
- OAuth2:
- admin
tags:
- ServerFollowing
2018-11-13 22:27:58 +00:00
summary: Unfollow a server by hostname
parameters:
- name: host
in: path
required: true
description: 'The host to unfollow '
schema:
type: string
responses:
'201':
description: successful operation
/server/followers:
get:
tags:
- ServerFollowing
2018-11-13 22:27:58 +00:00
summary: Get followers of the server
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Follow'
/server/following:
get:
tags:
- ServerFollowing
2018-11-13 22:27:58 +00:00
summary: Get servers followed by the server
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Follow'
post:
2018-04-16 08:48:17 +00:00
security:
- OAuth2:
- admin
tags:
- ServerFollowing
2018-11-13 22:27:58 +00:00
summary: Follow a server
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Follow'
/users:
post:
2018-11-13 22:27:58 +00:00
summary: Creates user
2018-04-16 08:48:17 +00:00
security:
- OAuth2:
- admin
tags:
- User
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/AddUserResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddUser'
description: User to create
required: true
get:
2018-11-13 22:27:58 +00:00
summary: Get a list of users
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
'/users/{id}':
delete:
2018-11-13 22:27:58 +00:00
summary: Delete a user by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2:
- admin
tags:
- User
parameters:
- $ref: '#/components/parameters/id'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
get:
2018-11-13 22:27:58 +00:00
summary: Get user by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/User'
put:
2018-11-13 22:27:58 +00:00
summary: Update user profile by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
parameters:
- $ref: '#/components/parameters/id'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUser'
required: true
/users/me:
get:
2018-11-13 22:27:58 +00:00
summary: Get current user information
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
put:
2018-11-13 22:27:58 +00:00
summary: Update current user information
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
responses:
'204':
description: Successful operation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMe'
required: true
/users/me/video-quota-used:
get:
2018-11-13 22:27:58 +00:00
summary: Get current user used quota
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: number
'/users/me/videos/{videoId}/rating':
get:
summary: 'Get rating of video by its id, among those of the current user'
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
parameters:
- name: videoId
in: path
required: true
description: 'The video id '
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/GetMeVideoRating'
/users/me/videos:
get:
2018-11-13 22:27:58 +00:00
summary: Get videos of the current user
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Video'
/users/register:
post:
2018-11-13 22:27:58 +00:00
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:
2018-11-13 22:27:58 +00:00
summary: Update current user avatar
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- User
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Avatar'
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
avatarfile:
description: The file to upload.
type: string
format: binary
encoding:
profileImage:
# only accept png/jpeg
contentType: image/png, image/jpeg
/videos:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of videos
tags:
- Video
parameters:
- name: category
in: query
required: false
description: category id of the video
schema:
type: number
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Video'
/videos/categories:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of video licences known by the server
tags:
- Video
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
type: string
/videos/licences:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of video licences known by the server
tags:
- Video
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
type: string
/videos/languages:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of languages known by the server
tags:
- Video
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
type: string
/videos/privacies:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of privacy policies supported by the server
tags:
- Video
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
type: string
'/videos/{id}':
put:
2018-11-13 22:27:58 +00:00
summary: Update metadata for a video by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- Video
parameters:
- $ref: '#/components/parameters/id2'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Video'
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
thumbnailfile:
description: Video thumbnail file
type: string
previewfile:
description: Video preview file
type: string
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: 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
get:
2018-11-13 22:27:58 +00:00
summary: Get a video by its id
tags:
- Video
parameters:
- $ref: '#/components/parameters/id2'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Video'
delete:
2018-11-13 22:27:58 +00:00
summary: Delete a video by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- Video
parameters:
- $ref: '#/components/parameters/id2'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
'/videos/{id}/description':
get:
2018-11-13 22:27:58 +00:00
summary: Get a video description by its id
tags:
- Video
parameters:
- $ref: '#/components/parameters/id2'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: string
'/videos/{id}/views':
post:
2018-11-13 22:27:58 +00:00
summary: Add a view to the video by its id
tags:
- Video
parameters:
- $ref: '#/components/parameters/id2'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
/videos/upload:
post:
2018-11-13 22:27:58 +00:00
summary: Upload a video file with its metadata
2018-04-16 08:48:17 +00:00
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:
videofile:
description: Video file
type: string
format: binary
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
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: string
commentsEnabled:
description: Enable or disable comments for this video
type: string
scheduleUpdate: *ref_0
required:
- videofile
- channelId
/videos/abuse:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of reported video abuses
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoAbuse
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/VideoAbuse'
'/videos/{id}/abuse':
post:
summary: 'Report an abuse, on a video by its id'
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoAbuse
parameters:
- $ref: '#/components/parameters/id2'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
'/videos/{id}/blacklist':
post:
2018-11-13 22:27:58 +00:00
summary: Put on blacklist a video by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2:
- admin
- moderator
tags:
- VideoBlacklist
parameters:
- $ref: '#/components/parameters/id2'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
delete:
2018-11-13 22:27:58 +00:00
summary: Delete an entry of the blacklist of a video by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2:
- admin
- moderator
tags:
- VideoBlacklist
parameters:
- $ref: '#/components/parameters/id2'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
/videos/blacklist:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of videos on blacklist
2018-04-16 08:48:17 +00:00
security:
- OAuth2:
- admin
- moderator
tags:
- VideoBlacklist
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/VideoBlacklist'
2018-04-24 15:05:32 +00:00
/video-channels:
get:
2018-11-13 22:27:58 +00:00
summary: Get list of video channels
tags:
- VideoChannel
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/VideoChannel'
post:
2018-11-13 22:27:58 +00:00
summary: Creates a video channel for the current user
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoChannel
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
requestBody:
$ref: '#/components/requestBodies/VideoChannelInput'
'/video-channels/{id}':
get:
2018-11-13 22:27:58 +00:00
summary: Get a video channel by its id
tags:
- VideoChannel
parameters:
- $ref: '#/components/parameters/id3'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/VideoChannel'
put:
2018-11-13 22:27:58 +00:00
summary: Update a video channel by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoChannel
parameters:
- $ref: '#/components/parameters/id3'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
requestBody:
$ref: '#/components/requestBodies/VideoChannelInput'
delete:
2018-11-13 22:27:58 +00:00
summary: Delete a video channel by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoChannel
parameters:
- $ref: '#/components/parameters/id3'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
'/video-channels/{id}/videos':
get:
2018-11-13 22:27:58 +00:00
summary: Get videos of a video channel by its id
tags:
- VideoChannel
parameters:
- $ref: '#/components/parameters/id3'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Video'
'/accounts/{name}/video-channels':
2018-04-25 08:21:38 +00:00
get:
2018-11-13 22:27:58 +00:00
summary: Get video channels of an account by its name
2018-04-25 08:21:38 +00:00
tags:
- VideoChannel
parameters:
- $ref: '#/components/parameters/name'
2018-04-25 08:21:38 +00:00
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/VideoChannel'
'/videos/{id}/comment-threads':
get:
2018-11-13 22:27:58 +00:00
summary: Get the comment threads of a video by its id
tags:
- VideoComment
parameters:
- $ref: '#/components/parameters/id2'
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/CommentThreadResponse'
post:
summary: 'Creates a comment thread, on a video by its id'
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoComment
parameters:
- $ref: '#/components/parameters/id2'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/CommentThreadPostResponse'
'/videos/{id}/comment-threads/{threadId}':
get:
summary: 'Get the comment thread by its id, of a video by its id'
tags:
- VideoComment
parameters:
- $ref: '#/components/parameters/id2'
- name: threadId
in: path
required: true
description: The thread id (root comment id)
schema:
type: number
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/VideoCommentThreadTree'
'/videos/{id}/comments/{commentId}':
post:
summary: 'Creates a comment in a comment thread by its id, of a video by its id'
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoComment
parameters:
- $ref: '#/components/parameters/id2'
- $ref: '#/components/parameters/commentId'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/CommentThreadPostResponse'
delete:
summary: 'Delete a comment in a comment therad by its id, of a video by its id'
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoComment
parameters:
- $ref: '#/components/parameters/id2'
- $ref: '#/components/parameters/commentId'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
'/videos/{id}/rate':
put:
2018-11-13 22:27:58 +00:00
summary: Vote for a video by its id
2018-04-16 08:48:17 +00:00
security:
- OAuth2: []
tags:
- VideoRate
parameters:
- $ref: '#/components/parameters/id2'
responses:
'204':
$ref: '#/paths/~1users~1me/put/responses/204'
/search/videos:
get:
tags:
- Search
2018-11-13 22:27:58 +00:00
summary: Get the videos corresponding to a given query
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/sort'
- name: search
in: query
required: true
description: String to search
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Video'
servers:
- url: 'https://peertube.cpy.re/api/v1'
description: Live Server
components:
parameters:
start:
name: start
in: query
required: false
description: Offset
schema:
type: number
count:
name: count
in: query
required: false
description: Number of items
schema:
type: number
sort:
name: sort
in: query
required: false
description: Sort column (-createdAt for example)
schema:
type: string
name:
name: name
in: path
required: true
description: >-
The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for
example)
schema:
type: string
id:
name: id
in: path
required: true
description: The user id
schema:
type: number
id2:
name: id
in: path
required: true
description: The video id or uuid
schema:
type: string
id3:
name: id
in: path
required: true
description: The video channel id or uuid
schema:
type: string
commentId:
name: threadId
in: path
required: true
description: The comment id
schema:
type: number
requestBodies:
VideoChannelInput:
content:
application/json:
schema:
$ref: '#/components/schemas/VideoChannelInput'
securitySchemes:
OAuth2:
description: >
In the header: *Authorization: Bearer <token\>*
Authenticating via OAuth requires the following steps:
- Have an account with sufficient authorization levels
- [Generate](https://docs.joinpeertube.org/lang/en/devdocs/rest.html) a
Bearer Token
- Make Authenticated Requests
type: oauth2
flows:
password:
tokenUrl: 'https://peertube.example.com/api/v1/users/token'
scopes:
admin: Admin scope
moderator: Moderator scope
user: User scope
schemas:
VideoConstantNumber:
properties:
id:
type: number
label:
type: string
VideoConstantString:
properties:
id:
type: string
label:
type: string
VideoPrivacy:
type: string
enum:
- Public
- Unlisted
- Private
Video:
properties:
id:
type: number
uuid:
type: string
createdAt:
type: string
publishedAt:
type: string
updatedAt:
type: string
category:
$ref: '#/components/schemas/VideoConstantNumber'
licence:
$ref: '#/components/schemas/VideoConstantNumber'
language:
$ref: '#/components/schemas/VideoConstantString'
privacy:
$ref: '#/components/schemas/VideoPrivacy'
description:
type: string
duration:
type: number
isLocal:
type: boolean
name:
type: string
thumbnailPath:
type: string
previewPath:
type: string
embedPath:
type: string
views:
type: number
likes:
type: number
dislikes:
type: number
nsfw:
type: boolean
account:
type: object
properties:
name:
type: string
displayName:
type: string
url:
type: string
host:
type: string
avatar:
$ref: '#/components/schemas/Avatar'
VideoAbuse:
properties:
id:
type: number
reason:
type: string
reporterAccount:
$ref: '#/components/schemas/Account'
video:
type: object
properties:
id:
type: number
name:
type: string
uuid:
type: string
url:
type: string
createdAt:
type: string
VideoBlacklist:
properties:
id:
type: number
videoId:
type: number
createdAt:
type: string
updatedAt:
type: string
name:
type: string
uuid:
type: string
description:
type: string
duration:
type: number
views:
type: number
likes:
type: number
dislikes:
type: number
nsfw:
type: boolean
VideoChannel:
properties:
displayName:
type: string
description:
type: string
isLocal:
type: boolean
ownerAccount:
type: object
properties:
id:
type: number
uuid:
type: string
VideoComment:
properties:
id:
type: number
url:
type: string
text:
type: string
threadId:
type: number
inReplyToCommentId:
type: number
videoId:
type: number
createdAt:
type: string
updatedAt:
type: string
totalReplies:
type: number
account:
$ref: '#/components/schemas/Account'
VideoCommentThreadTree:
properties:
comment:
$ref: '#/components/schemas/VideoComment'
children:
type: array
items:
$ref: '#/components/schemas/VideoCommentThreadTree'
Avatar:
properties:
path:
type: string
createdAt:
type: string
updatedAt:
type: string
Actor:
properties:
id:
type: number
uuid:
type: string
url:
type: string
name:
type: string
host:
type: string
followingCount:
type: number
followersCount:
type: number
createdAt:
type: string
updatedAt:
type: string
avatar:
$ref: '#/components/schemas/Avatar'
Account:
allOf:
- $ref: '#/components/schemas/Actor'
- properties:
displayName:
type: string
User:
properties:
id:
type: number
username:
type: string
email:
type: string
displayNSFW:
type: boolean
autoPlayVideo:
type: boolean
role:
type: string
enum:
- User
- Moderator
- Administrator
videoQuota:
type: number
createdAt:
type: string
account:
$ref: '#/components/schemas/Account'
videoChannels:
type: array
items:
$ref: '#/components/schemas/VideoChannel'
ServerConfig:
properties:
signup:
type: object
properties:
allowed:
type: boolean
transcoding:
type: object
properties:
enabledResolutions:
type: array
items:
type: number
avatar:
type: object
properties:
file:
type: object
properties:
size:
type: object
properties:
max:
type: number
extensions:
type: array
items:
type: string
video:
type: object
properties:
file:
type: object
properties:
extensions:
type: array
items:
type: string
Follow:
properties:
id:
type: number
follower:
$ref: '#/components/schemas/Actor'
following:
$ref: '#/components/schemas/Actor'
score:
type: number
state:
type: string
enum:
- pending
- accepted
createdAt:
type: string
updatedAt:
type: string
Job:
properties:
id:
type: number
state:
type: string
enum:
- pending
- processing
- error
- success
category:
type: string
enum:
- transcoding
- activitypub-http
handlerName:
type: string
handlerInputData:
type: string
createdAt:
type: string
updatedAt:
type: string
AddUserResponse:
properties:
id:
type: number
uuid:
type: string
VideoUploadResponse:
properties:
video:
type: object
properties:
id:
type: number
uuid:
type: string
CommentThreadResponse:
properties:
total:
type: number
data:
type: array
items:
$ref: '#/components/schemas/VideoComment'
CommentThreadPostResponse:
properties:
comment:
$ref: '#/components/schemas/VideoComment'
AddUser:
properties:
username:
type: string
description: 'The user username '
password:
type: string
description: 'The user password '
email:
type: string
description: 'The user email '
videoQuota:
type: string
description: 'The user videoQuota '
role:
type: string
description: 'The user role '
required:
- username
- password
- email
- videoQuota
- role
UpdateUser:
properties:
id:
type: string
description: 'The user id '
email:
type: string
description: 'The updated email of the user '
videoQuota:
type: string
description: 'The updated videoQuota of the user '
role:
type: string
description: 'The updated role of the user '
required:
- id
- email
- videoQuota
- role
UpdateMe:
properties:
password:
type: string
description: 'Your new password '
email:
type: string
description: 'Your new email '
displayNSFW:
type: string
description: 'Your new displayNSFW '
autoPlayVideo:
type: string
description: 'Your new autoPlayVideo '
required:
- password
- email
- displayNSFW
- autoPlayVideo
GetMeVideoRating:
properties:
id:
type: string
description: 'Id of the video '
rating:
type: number
description: 'Rating of the video '
required:
- id
- rating
RegisterUser:
properties:
username:
type: string
description: 'The username of the user '
password:
type: string
description: 'The password of the user '
email:
type: string
description: 'The email of the user '
required:
- username
- password
- email
VideoChannelInput:
properties:
name:
type: string
description:
type: string