mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			1704 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			YAML
		
	
	
			
		
		
	
	
			1704 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			YAML
		
	
	
| swagger: '2.0'
 | |
| info:
 | |
|   title: PeerTube
 | |
|   version: 1.0.0-beta
 | |
|   description: Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.
 | |
| host: peertube.example.com
 | |
| securityDefinitions:
 | |
|   OAuth2:
 | |
|     description: 'In the header: *Authorization: Bearer mytoken*'
 | |
|     type: oauth2
 | |
|     flow: password
 | |
|     # Not implemented yet
 | |
|     # authorizationUrl: https://example.com/oauth/authorize
 | |
|     tokenUrl: https://peertube.example.com/api/v1/users/token
 | |
| basePath: '/api/v1'
 | |
| schemes:
 | |
|   - https
 | |
| paths:
 | |
|   '/accounts/{name}':
 | |
|     get:
 | |
|       tags:
 | |
|         - Accounts
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: name
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for example)'
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/Account'
 | |
|   '/accounts/{name}/videos':
 | |
|     get:
 | |
|       tags:
 | |
|         - Accounts
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: name
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for example)'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/Video'
 | |
|   /accounts:
 | |
|     get:
 | |
|       tags:
 | |
|         - Accounts
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/Account'
 | |
|   /config:
 | |
|     get:
 | |
|       tags:
 | |
|         - Config
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/ServerConfig'
 | |
|   /feeds/videos.{format}:
 | |
|     get:
 | |
|       tags:
 | |
|         - Feeds
 | |
|       produces:
 | |
|         - application/atom+xml
 | |
|         - application/rss+xml
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: format
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           enum: [ 'xml', 'atom', 'json']
 | |
|           default: 'xml'
 | |
|           description: 'The format expected (xml defaults to RSS 2.0, atom to ATOM 1.0 and json to JSON FEED 1.0'
 | |
|         - name: accountId
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'The id of the local account to filter to (beware, users IDs and not actors IDs which will return empty feeds'
 | |
|         - name: accountName
 | |
|           in: query
 | |
|           required: false
 | |
|           type: string
 | |
|           description: 'The name of the local account to filter to'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|   /jobs:
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - Job
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: state
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The id of the account'
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: count
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: ''
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/Job'
 | |
|   '/server/following/{host}':
 | |
|     delete:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - ServerFollowing
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: host
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The host to unfollow '
 | |
|       responses:
 | |
|         '201':
 | |
|           description: successful operation
 | |
|   /server/followers:
 | |
|     get:
 | |
|       tags:
 | |
|         - ServerFollowing
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/Follow'
 | |
|   /server/following:
 | |
|     get:
 | |
|       tags:
 | |
|         - ServerFollowing
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/Follow'
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - ServerFollowing
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - in: body
 | |
|           name: body
 | |
|           schema:
 | |
|             $ref: '#/definitions/Follow'
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   /users:
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - in: body
 | |
|           name: body
 | |
|           required: true
 | |
|           description: 'User to create'
 | |
|           schema:
 | |
|             $ref: '#/definitions/AddUser'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/AddUserResponse'
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/User'
 | |
|   '/users/{id}':
 | |
|     delete:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The user id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The user id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/User'
 | |
|     put:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The user id '
 | |
|         - in: body
 | |
|           name: body
 | |
|           required: true
 | |
|           schema:
 | |
|             $ref: '#/definitions/UpdateUser'
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   /users/me:
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/User'
 | |
|     put:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - in: body
 | |
|           name: body
 | |
|           required: true
 | |
|           schema:
 | |
|             $ref: '#/definitions/UpdateMe'
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   /users/me/video-quota-used:
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters: []
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: number
 | |
|   '/users/me/videos/{videoId}/rating':
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videoId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/GetMeVideoRating'
 | |
|   /users/me/videos:
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/Video'
 | |
|   /users/register:
 | |
|     post:
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - in: body
 | |
|           name: body
 | |
|           required: true
 | |
|           schema:
 | |
|             $ref: '#/definitions/RegisterUser'
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   /users/me/avatar/pick:
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - User
 | |
|       consumes:
 | |
|         - multipart/form-data
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - in: formData
 | |
|           name: avatarfile
 | |
|           type: file
 | |
|           description: The file to upload.
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/Avatar'
 | |
|   /videos:
 | |
|     get:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/Video'
 | |
|   /videos/categories:
 | |
|     get:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               type: string
 | |
|   /videos/licences:
 | |
|     get:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               type: string
 | |
|   /videos/languages:
 | |
|     get:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               type: string
 | |
|   /videos/privacies:
 | |
|     get:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               type: string
 | |
|   /videos/search:
 | |
|     get:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/Video'
 | |
|   "/videos/{id}":
 | |
|     put:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - multipart/form-data
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id'
 | |
|         - name: thumbnailfile
 | |
|           in: formData
 | |
|           type: file
 | |
|           description: 'Video thumbnail file'
 | |
|         - name: previewfile
 | |
|           in: formData
 | |
|           type: file
 | |
|           description: 'Video preview file'
 | |
|         - name: category
 | |
|           in: formData
 | |
|           type: number
 | |
|           description: 'Video category'
 | |
|         - name: licence
 | |
|           in: formData
 | |
|           type: number
 | |
|           description: 'Video licence'
 | |
|         - name: language
 | |
|           in: formData
 | |
|           type: string
 | |
|           description: 'Video language'
 | |
|         - name: description
 | |
|           in: formData
 | |
|           type: string
 | |
|           description: 'Video description'
 | |
|         - name: support
 | |
|           in: formData
 | |
|           type: string
 | |
|           description: 'Text describing how to support the video uploader'
 | |
|         - name: nsfw
 | |
|           in: formData
 | |
|           type: boolean
 | |
|           description: 'Whether or not this video contains sensitive content'
 | |
|         - name: name
 | |
|           in: formData
 | |
|           type: string
 | |
|           description: 'Video name'
 | |
|         - name: tags
 | |
|           in: formData
 | |
|           type: string[]
 | |
|           description: 'Video tags'
 | |
|         - name: commentsEnabled
 | |
|           in: formData
 | |
|           type: boolean
 | |
|           description: 'Enable or disable comments for this video'
 | |
|         - name: privacy
 | |
|           in: formData
 | |
|           type: string
 | |
|           enum: [Public, Unlisted]
 | |
|           description: 'Video privacy'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/Video'
 | |
|     get:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/Video'
 | |
|     delete:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   "/videos/{id}/description":
 | |
|     get:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: string
 | |
|   "/videos/{id}/views":
 | |
|     post:
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   /videos/upload:
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - Video
 | |
|       consumes:
 | |
|         - multipart/form-data
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videofile
 | |
|           in: formData
 | |
|           type: file
 | |
|           required: true
 | |
|           description: 'Video file'
 | |
|         - name: thumbnailfile
 | |
|           in: formData
 | |
|           type: file
 | |
|           required: true
 | |
|           description: 'Video thumbnail file'
 | |
|         - name: previewfile
 | |
|           in: formData
 | |
|           type: file
 | |
|           required: true
 | |
|           description: 'Video preview file'
 | |
|         - name: category
 | |
|           in: formData
 | |
|           type: number
 | |
|           description: 'Video category'
 | |
|         - name: licence
 | |
|           in: formData
 | |
|           type: number
 | |
|           description: 'Video licence'
 | |
|         - name: language
 | |
|           in: formData
 | |
|           type: string
 | |
|           description: 'Video language'
 | |
|         - name: description
 | |
|           in: formData
 | |
|           type: string
 | |
|           description: 'Video description'
 | |
|         - name: support
 | |
|           in: formData
 | |
|           type: string
 | |
|           description: 'Text describing how to support the video uploader'
 | |
|         - name: channelId
 | |
|           in: formData
 | |
|           required: true
 | |
|           type: number
 | |
|           description: 'Channel id that will contain this video'
 | |
|         - name: nsfw
 | |
|           in: formData
 | |
|           required: true
 | |
|           type: boolean
 | |
|           description: 'Whether or not this video contains sensitive content'
 | |
|         - name: name
 | |
|           in: formData
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'Video name'
 | |
|         - name: tags
 | |
|           in: formData
 | |
|           type: string[]
 | |
|           description: 'Video tags'
 | |
|         - name: commentsEnabled
 | |
|           in: formData
 | |
|           type: boolean
 | |
|           description: 'Enable or disable comments for this video'
 | |
|         - name: privacy
 | |
|           in: formData
 | |
|           required: true
 | |
|           type: string
 | |
|           enum: [Public, Unlisted, Private]
 | |
|           description: 'Video privacy'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/VideoUploadResponse'
 | |
|   /videos/abuse:
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoAbuse
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/VideoAbuse'
 | |
|   "/videos/{id}/abuse":
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoAbuse
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   "/videos/{videoId}/blacklist":
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoBlacklist
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videoId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|     delete:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoBlacklist
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videoId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   /videos/blacklist:
 | |
|     get:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoBlacklist
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/VideoBlacklist'
 | |
|   /video-channels:
 | |
|     get:
 | |
|       tags:
 | |
|         - VideoChannel
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/VideoChannel'
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoChannel
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - in: body
 | |
|           name: body
 | |
|           schema:
 | |
|             $ref: '#/definitions/VideoChannelInput'
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   "/video-channels/{id}":
 | |
|     get:
 | |
|       tags:
 | |
|         - VideoChannel
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video channel id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/VideoChannel'
 | |
|     put:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoChannel
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video channel id '
 | |
|         - in: body
 | |
|           name: body
 | |
|           schema:
 | |
|             $ref: '#/definitions/VideoChannelInput'
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|     delete:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoChannel
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video channel id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   "/video-channels/{id}/videos":
 | |
|     get:
 | |
|       tags:
 | |
|         - VideoChannel
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video channel id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/Video'
 | |
|   /accounts/{name}/video-channels:
 | |
|     get:
 | |
|       tags:
 | |
|         - VideoChannel
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: name
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for example)'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             type: array
 | |
|             items:
 | |
|               $ref: '#/definitions/VideoChannel'
 | |
|   "/videos/{videoId}/comment-threads":
 | |
|     get:
 | |
|       tags:
 | |
|         - VideoComment
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videoId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|         - name: start
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'starting page'
 | |
|         - name: stop
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'stopping page'
 | |
|         - name: sort
 | |
|           in: query
 | |
|           required: false
 | |
|           type: number
 | |
|           description: 'sorting'
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/CommentThreadResponse'
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoComment
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videoId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/CommentThreadPostResponse'
 | |
|   "/videos/{videoId}/comment-threads/{threadId}":
 | |
|     get:
 | |
|       tags:
 | |
|         - VideoComment
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videoId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|         - name: threadId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The thread id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/VideoCommentThreadTree'
 | |
|   "/videos/{videoId}/comments/{commentId}":
 | |
|     post:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoComment
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videoId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|         - name: commentId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The comment id '
 | |
|       responses:
 | |
|         '200':
 | |
|           description: successful operation
 | |
|           schema:
 | |
|             $ref: '#/definitions/CommentThreadPostResponse'
 | |
|     delete:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoComment
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: videoId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|         - name: commentId
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The comment id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
|   "/videos/{id}/rate":
 | |
|     put:
 | |
|       security:
 | |
|         - OAuth2: [ ]
 | |
|       tags:
 | |
|         - VideoRate
 | |
|       consumes:
 | |
|         - application/json
 | |
|       produces:
 | |
|         - application/json
 | |
|       parameters:
 | |
|         - name: id
 | |
|           in: path
 | |
|           required: true
 | |
|           type: string
 | |
|           description: 'The video id '
 | |
|       responses:
 | |
|         '204':
 | |
|           description: successful operation
 | |
| definitions:
 | |
|   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: "#/definitions/VideoConstantNumber"
 | |
|       licence:
 | |
|         $ref: "#/definitions/VideoConstantNumber"
 | |
|       language:
 | |
|         $ref: "#/definitions/VideoConstantString"
 | |
|       privacy:
 | |
|         $ref: "#/definitions/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: "#/definitions/Avatar"
 | |
|   VideoAbuse:
 | |
|     properties:
 | |
|       id:
 | |
|         type: number
 | |
|       reason:
 | |
|         type: string
 | |
|       reporterAccount:
 | |
|         $ref: "#/definitions/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: "#/definitions/Account"
 | |
|   VideoCommentThreadTree:
 | |
|     properties:
 | |
|       comment:
 | |
|         $ref: "#/definitions/VideoComment"
 | |
|       children:
 | |
|         type: array
 | |
|         items:
 | |
|           $ref: "#/definitions/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: "#/definitions/Avatar"
 | |
|   Account:
 | |
|     allOf:
 | |
|       - $ref: "#/definitions/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: "#/definitions/Account"
 | |
|       videoChannels:
 | |
|         type:  array
 | |
|         items:
 | |
|           $ref: "#/definitions/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: "#/definitions/Actor"
 | |
|       following:
 | |
|         $ref: "#/definitions/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
 | |
| 
 | |
| # Api responses
 | |
|   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: "#/definitions/VideoComment"
 | |
|   CommentThreadPostResponse:
 | |
|     properties:
 | |
|       comment:
 | |
|         $ref: "#/definitions/VideoComment"
 | |
| 
 | |
| # Request bodies
 | |
|   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
 |