mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			1828 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			YAML
		
	
	
			
		
		
	
	
			1828 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			YAML
		
	
	
| openapi: 3.0.0
 | |
| info:
 | |
|   title: PeerTube
 | |
|   version: 1.1.0-alpha.2
 | |
|   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'
 | |
|     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, 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 
 | |
|     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
 | |
| 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.      
 | |
|   - name: Config
 | |
|     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
 | |
|       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 
 | |
|       information across its social graph by posting activities to actors' inbox
 | |
|       endpoints.      
 | |
|   - name: Video Abuse
 | |
|     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: Video Comment
 | |
|     description: >
 | |
|       Operations dealing with comments to a video. Comments are organized in
 | |
|       threads.      
 | |
|   - name: Video Channel
 | |
|     description: >
 | |
|       Operations dealing with creation, modification and video listing of a
 | |
|       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 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:
 | |
|       tags:
 | |
|         - Accounts
 | |
|       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'
 | |
|   '/accounts/{name}/videos':
 | |
|     get:
 | |
|       tags:
 | |
|         - Accounts
 | |
|         - Video
 | |
|       summary: 'Get videos for an account, provided the name of that account'
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/name'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/Video'
 | |
|       x-code-samples:
 | |
|         - lang: JavaScript
 | |
|           source: |
 | |
|             fetch('https://peertube2.cpy.re/api/v1/accounts/{name}/videos')
 | |
|             .then(function(response) {
 | |
|               return response.json()
 | |
|             }).then(function(data) {
 | |
|               console.log(data)
 | |
|             })            
 | |
|         - lang: Shell
 | |
|           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:
 | |
|         - Accounts
 | |
|       summary: Get all accounts
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             'application/json':
 | |
|               schema:
 | |
|                 type: array
 | |
|                 items:
 | |
|                   $ref: '#/components/schemas/Account'
 | |
|   /config:
 | |
|     get:
 | |
|       tags:
 | |
|         - Config
 | |
|       summary: Get the public configuration of the server
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/ServerConfig'
 | |
|   /config/about:
 | |
|     get:
 | |
|       summary: Get the instance about page content
 | |
|       tags:
 | |
|         - Config
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|   /config/custom:
 | |
|     get:
 | |
|       summary: Get the runtime configuration of the server
 | |
|       tags:
 | |
|         - Config
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|     put:
 | |
|       summary: Set the runtime configuration of the server
 | |
|       tags:
 | |
|         - Config
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|     delete:
 | |
|       summary: Delete the runtime configuration of the server
 | |
|       tags:
 | |
|         - Config
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|       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
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|       tags:
 | |
|         - Job
 | |
|       parameters:
 | |
|         - name: state
 | |
|           in: path
 | |
|           required: true
 | |
|           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'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array
 | |
|                 items:
 | |
|                   $ref: '#/components/schemas/Job'
 | |
|   '/server/following/{host}':
 | |
|     delete:
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|       tags:
 | |
|         - Server Following
 | |
|       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:
 | |
|         - Server Following
 | |
|       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:
 | |
|         - Server Following
 | |
|       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:
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|       tags:
 | |
|         - Server Following
 | |
|       summary: Follow a server
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|       requestBody:
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               $ref: '#/components/schemas/Follow'
 | |
|   /users:
 | |
|     post:
 | |
|       summary: Creates user
 | |
|       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:
 | |
|       summary: Get a list of users
 | |
|       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:
 | |
|       summary: Delete a user by its id
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|       tags:
 | |
|         - User
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|     get:
 | |
|       summary: Get user by its id
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - User
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/User'
 | |
|     put:
 | |
|       summary: Update user profile by its id
 | |
|       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:
 | |
|       summary: Get current user information
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - User
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array
 | |
|                 items:
 | |
|                   $ref: '#/components/schemas/User'
 | |
|     put:
 | |
|       summary: Update current user information
 | |
|       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:
 | |
|       summary: Get current user used quota
 | |
|       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'
 | |
|       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:
 | |
|       summary: Get videos of the current user
 | |
|       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:
 | |
|       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
 | |
|       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:
 | |
|       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:
 | |
|       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:
 | |
|       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:
 | |
|       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:
 | |
|       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:
 | |
|       summary: Update metadata for a video by its id
 | |
|       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:
 | |
|       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:
 | |
|       summary: Delete a video by its id
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   '/videos/{id}/description':
 | |
|     get:
 | |
|       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:
 | |
|       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/{id}/watching':
 | |
|     put:
 | |
|       summary: Indicate progress of in watching the video by its id for a user
 | |
|       tags:
 | |
|         - Video
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       requestBody:
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               $ref: '#/components/schemas/UserWatchingVideo'
 | |
|         required: true
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   /videos/ownership:
 | |
|     get:
 | |
|       summary: Get list of video ownership changes requests
 | |
|       tags:
 | |
|         - Video
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|   '/videos/ownership/{id}/accept':
 | |
|     post:
 | |
|       summary: Refuse ownership change request for video by its id
 | |
|       tags:
 | |
|         - Video
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   '/videos/ownership/{id}/refuse':
 | |
|     post:
 | |
|       summary: Accept ownership change request for video by its id
 | |
|       tags:
 | |
|         - Video
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   '/videos/{id}/give-ownership':
 | |
|     post:
 | |
|       summary: Request change of ownership for a video you own, by its id
 | |
|       tags:
 | |
|         - Video
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       requestBody:
 | |
|         required: true
 | |
|         content:
 | |
|           application/x-www-form-urlencoded:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 username:
 | |
|                   type: string
 | |
|               required:
 | |
|                 - username
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|         '400':
 | |
|           description: 'Changing video ownership to a remote account is not supported yet'
 | |
|   /videos/upload:
 | |
|     post:
 | |
|       summary: Upload a video file with its metadata
 | |
|       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
 | |
|                 privacy:
 | |
|                   $ref: '#/components/schemas/VideoPrivacy'
 | |
|                 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
 | |
|                 - name
 | |
|       x-code-samples:
 | |
|         - lang: Shell
 | |
|           source: |
 | |
|             ## DEPENDENCIES: httpie, jq
 | |
|             # pip install httpie
 | |
|             USERNAME="<your_username>"
 | |
|             PASSWORD="<your_password>"
 | |
|             FILE_PATH="<your_file_path>"
 | |
|             CHANNEL_ID="<your_channel_id>"
 | |
|             NAME="<video_name>"
 | |
| 
 | |
|             API_PATH="https://peertube2.cpy.re/api/v1"
 | |
|             ## AUTH
 | |
|             client_id=$(http -b GET "$API_PATH/oauth-clients/local" | jq -r ".client_id")
 | |
|             client_secret=$(http -b GET "$API_PATH/oauth-clients/local" | jq -r ".client_secret")
 | |
|             token=$(http -b --form POST "$API_PATH/users/token" \
 | |
|               client_id="$client_id" client_secret="$client_secret" grant_type=password response_type=code \
 | |
|               username=$USERNAME \
 | |
|               password=$PASSWORD \
 | |
|               | jq -r ".access_token")
 | |
|             ## VIDEO UPLOAD
 | |
|             http -b --form POST "$API_PATH/videos/upload" \
 | |
|               videofile@$FILE_PATH \
 | |
|               channelId=$CHANNEL_ID \
 | |
|               name=$NAME \
 | |
|               "Authorization:Bearer $token"            
 | |
|   /videos/abuse:
 | |
|     get:
 | |
|       summary: Get list of reported video abuses
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Abuse
 | |
|       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'
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Abuse
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   '/videos/{id}/blacklist':
 | |
|     post:
 | |
|       summary: Put on blacklist a video by its id
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|             - moderator
 | |
|       tags:
 | |
|         - Video Blacklist
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|     delete:
 | |
|       summary: Delete an entry of the blacklist of a video by its id
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|             - moderator
 | |
|       tags:
 | |
|         - Video Blacklist
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   /videos/blacklist:
 | |
|     get:
 | |
|       summary: Get list of videos on blacklist
 | |
|       security:
 | |
|         - OAuth2:
 | |
|             - admin
 | |
|             - moderator
 | |
|       tags:
 | |
|         - Video Blacklist
 | |
|       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'
 | |
|   /video-channels:
 | |
|     get:
 | |
|       summary: Get list of video channels
 | |
|       tags:
 | |
|         - Video Channel
 | |
|       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:
 | |
|       summary: Creates a video channel for the current user
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Channel
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|       requestBody:
 | |
|         $ref: '#/components/requestBodies/VideoChannelInput'
 | |
|   '/video-channels/{id}':
 | |
|     get:
 | |
|       summary: Get a video channel by its id
 | |
|       tags:
 | |
|         - Video Channel
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id3'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/VideoChannel'
 | |
|     put:
 | |
|       summary: Update a video channel by its id
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Channel
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id3'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|       requestBody:
 | |
|         $ref: '#/components/requestBodies/VideoChannelInput'
 | |
|     delete:
 | |
|       summary: Delete a video channel by its id
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Channel
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id3'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   '/video-channels/{id}/videos':
 | |
|     get:
 | |
|       summary: Get videos of a video channel by its id
 | |
|       tags:
 | |
|         - Video Channel
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id3'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: '#/components/schemas/Video'
 | |
|   '/accounts/{name}/video-channels':
 | |
|     get:
 | |
|       summary: Get video channels of an account by its name
 | |
|       tags:
 | |
|         - Video Channel
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/name'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: array
 | |
|                 items:
 | |
|                   $ref: '#/components/schemas/VideoChannel'
 | |
|   '/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/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'
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Comment
 | |
|       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:
 | |
|         - Video Comment
 | |
|       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'
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Comment
 | |
|       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'
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Comment
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|         - $ref: '#/components/parameters/commentId'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   '/videos/{id}/rate':
 | |
|     put:
 | |
|       summary: Vote for a video by its id
 | |
|       security:
 | |
|         - OAuth2: []
 | |
|       tags:
 | |
|         - Video Rate
 | |
|       parameters:
 | |
|         - $ref: '#/components/parameters/id2'
 | |
|       responses:
 | |
|         '204':
 | |
|           $ref: '#/paths/~1users~1me/put/responses/204'
 | |
|   /search/videos:
 | |
|     get:
 | |
|       tags:
 | |
|         - Search
 | |
|       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 Test Server (live data - stable version)
 | |
|   - url: 'https://peertube2.cpy.re/api/v1'
 | |
|     description: Live Test Server (live data - bleeding edge version)
 | |
|   - url: 'https://peertube3.cpy.re/api/v1'
 | |
|     description: Live Test Server (live data - bleeding edge version)
 | |
| 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'
 | |
|     UserWatchingVideo:
 | |
|       properties:
 | |
|         currentTime:
 | |
|           type: number
 | |
|     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: integer
 | |
|           format: int32
 | |
|           enum:
 | |
|             - 0
 | |
|             - 1
 | |
|             - 2
 | |
|           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
 | |
| 
 |