PeerTube/support/doc/api/openapi.yaml

1529 lines
38 KiB
YAML
Raw Normal View History

swagger: '2.0'
info:
2018-01-24 11:54:32 +01:00
title: PeerTube
version: 1.1.0-alpha.2
2018-11-13 23:27:58 +01:00
contact:
name: PeerTube Community
url: 'https://joinpeertube.org'
license:
name: AGPLv3.0
url: 'https://github.com/Chocobozzz/PeerTube/blob/master/LICENSE'
x-logo:
url: 'https://joinpeertube.org/img/brand.png'
description: |
# Introduction
The PeerTube API is built on HTTP(S). Our API is RESTful. It has predictable
resource URLs. It returns HTTP response codes to indicate errors. It also
accepts and returns JSON in the HTTP body. You can use your favorite
HTTP/REST library for your programming language to use PeerTube. No official
SDK is currently provided.
# 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.
2018-04-16 10:48:17 +02:00
securityDefinitions:
OAuth2:
2018-11-13 23:27:58 +01:00
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
2018-04-16 10:48:17 +02:00
type: oauth2
flow: password
# Not implemented yet
# authorizationUrl: https://example.com/oauth/authorize
tokenUrl: https://peertube.example.com/api/v1/users/token
2018-11-13 23:27:58 +01:00
scopes:
admin: Admin scope
moderator: Moderator scope
user: User scope
2018-03-07 13:13:40 +01:00
basePath: '/api/v1'
schemes:
- https
2018-11-13 23:27:58 +01:00
host: peertube.example.com
x-servers:
- url: 'https://peertube.cpy.re/api/v1'
description: Live Server
produces:
- application/json; charset=utf-8
consumes:
- application/json
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: ServerFollowing
description: |
Managing servers which the instance interacts with is crucial to the concept
of federation in PeerTube and external video indexation. The PeerTube server
then deals with inter-server ActivityPub operations and propagates
information across its social graph by posting activities to actors' inbox
endpoints.
- name: VideoAbuse
description: |
Video abuses deal with reports of local or remote videos alike.
- name: Video
description: |
Operations dealing with listing, uploading, fetching or modifying videos.
- name: Search
description: |
The search helps to find _videos_ from within the instance and beyond.
Videos from other instances federated by the instance (that is, instances
followed by the instance) can be found via keywords and other criteria of
the advanced search.
- name: VideoComment
description: |
Operations dealing with comments to a video. Comments are organized in threads.
- name: VideoChannel
description: |
Operations dealing with creation, modification and video listing of a user's
channels.
paths:
2018-05-25 09:57:16 +02:00
'/accounts/{name}':
get:
tags:
- Accounts
2018-11-13 23:27:58 +01:00
summary: Get the account by name
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "accounts.yaml#/parameters/name"
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Account'
2018-05-25 09:57:16 +02:00
'/accounts/{name}/videos':
2018-04-25 10:21:38 +02:00
get:
tags:
- Accounts
2018-11-13 23:27:58 +01:00
- Video
summary: Get videos for an account, provided the name of that account
2018-04-25 10:21:38 +02:00
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "accounts.yaml#/parameters/name"
2018-04-25 10:21:38 +02:00
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Video'
2018-11-13 23:27:58 +01:00
x-code-samples:
- lang: JavaScript
source: |
fetch('https://peertube.cpy.re/api/v1/accounts/{name}/videos')
.then(function(response) {
return response.json()
}).then(function(data) {
console.log(data)
})
/accounts:
get:
tags:
- Accounts
2018-11-13 23:27:58 +01:00
summary: Get all accounts
consumes:
- application/json
produces:
2018-11-13 23:27:58 +01:00
- application/jsonhttps://peertube.cpy.re/api/v1
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Account'
/config:
get:
tags:
- Config
2018-11-13 23:27:58 +01:00
summary: Get the configuration of the server
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: successful operation
schema:
2018-03-19 12:36:41 +01:00
$ref: '#/definitions/ServerConfig'
/feeds/videos.{format}:
get:
2018-11-13 23:27:58 +01:00
summary: Get the feed of videos for the server, with optional filter by account name or id
tags:
- Feeds
produces:
2018-04-23 14:39:52 +02:00
- application/atom+xml
- application/rss+xml
- application/json
parameters:
- name: format
in: path
required: true
type: string
2018-04-24 17:05:32 +02:00
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:
2018-11-13 23:27:58 +01:00
summary: Get list of jobs
2018-04-16 10:48:17 +02:00
security:
2018-11-13 23:27:58 +01:00
- OAuth2: [ admin ]
tags:
- Job
consumes:
- application/json
produces:
- application/json
parameters:
- name: state
in: path
required: true
type: string
description: 'The state of the job'
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
2018-03-19 12:36:41 +01:00
$ref: '#/definitions/Job'
'/server/following/{host}':
delete:
2018-04-16 10:48:17 +02:00
security:
2018-11-13 23:27:58 +01:00
- OAuth2: [ admin ]
tags:
- ServerFollowing
2018-11-13 23:27:58 +01:00
summary: Unfollow a server by hostname
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
2018-11-13 23:27:58 +01:00
summary: Get followers of the server
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Follow'
/server/following:
get:
tags:
- ServerFollowing
2018-11-13 23:27:58 +01:00
summary: Get servers followed by the server
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Follow'
post:
2018-04-16 10:48:17 +02:00
security:
2018-11-13 23:27:58 +01:00
- OAuth2: [ admin ]
tags:
- ServerFollowing
2018-11-13 23:27:58 +01:00
summary: Follow a server
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: body
schema:
$ref: '#/definitions/Follow'
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
/users:
post:
2018-11-13 23:27:58 +01:00
summary: Creates user
2018-04-16 10:48:17 +02:00
security:
2018-11-13 23:27:58 +01:00
- OAuth2: [ admin ]
tags:
- User
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: body
required: true
2018-04-06 10:17:06 +02:00
description: 'User to create'
schema:
$ref: '#/definitions/AddUser'
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/AddUserResponse'
get:
2018-11-13 23:27:58 +01:00
summary: Get a list of users
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- User
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/User'
'/users/{id}':
delete:
2018-11-13 23:27:58 +01:00
summary: Delete a user by its id
2018-04-16 10:48:17 +02:00
security:
2018-11-13 23:27:58 +01:00
- OAuth2: [ admin ]
tags:
- User
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "users.yaml#/parameters/id"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
get:
2018-11-13 23:27:58 +01:00
summary: Get user by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- User
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "users.yaml#/parameters/id"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/User'
put:
2018-11-13 23:27:58 +01:00
summary: Update user profile by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- User
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "users.yaml#/parameters/id"
- in: body
name: body
required: true
schema:
$ref: '#/definitions/UpdateUser'
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
/users/me:
get:
2018-11-13 23:27:58 +01:00
summary: Get current user information
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- User
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/User'
put:
2018-11-13 23:27:58 +01:00
summary: Update current user information
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- User
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: body
required: true
schema:
$ref: '#/definitions/UpdateMe'
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
/users/me/video-quota-used:
get:
2018-11-13 23:27:58 +01:00
summary: Get current user used quota
2018-04-16 10:48:17 +02:00
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:
2018-11-13 23:27:58 +01:00
summary: Get rating of video by its id, among those of the current user
2018-04-16 10:48:17 +02:00
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:
2018-11-13 23:27:58 +01:00
summary: Get videos of the current user
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- User
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Video'
/users/register:
post:
2018-11-13 23:27:58 +01:00
summary: Register a user
tags:
- User
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: body
required: true
schema:
$ref: '#/definitions/RegisterUser'
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
/users/me/avatar/pick:
post:
2018-11-13 23:27:58 +01:00
summary: Update current user avatar
2018-04-16 10:48:17 +02:00
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:
2018-11-13 23:27:58 +01:00
summary: Get list of videos
tags:
- Video
consumes:
- application/json
produces:
- application/json
parameters:
- name: category
in: query
required: false
type: number
description: category id of the video
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Video'
/videos/categories:
get:
2018-11-13 23:27:58 +01:00
summary: Get list of video licences known by the server
tags:
- Video
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: successful operation
schema:
type: array
items:
type: string
/videos/licences:
get:
2018-11-13 23:27:58 +01:00
summary: Get list of video licences known by the server
tags:
- Video
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: successful operation
schema:
type: array
items:
type: string
/videos/languages:
get:
2018-11-13 23:27:58 +01:00
summary: Get list of languages known by the server
tags:
- Video
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: successful operation
schema:
type: array
items:
type: string
/videos/privacies:
get:
2018-11-13 23:27:58 +01:00
summary: Get list of privacy policies supported by the server
tags:
- Video
consumes:
- application/json
produces:
- application/json
responses:
'200':
description: successful operation
schema:
type: array
items:
type: string
"/videos/{id}":
put:
2018-11-13 23:27:58 +01:00
summary: Update metadata for a video by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- Video
consumes:
2018-04-06 10:17:06 +02:00
- multipart/form-data
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
- $ref: "videos.yaml#/parameters/thumbnailfile"
- $ref: "videos.yaml#/parameters/previewfile"
- $ref: "videos.yaml#/parameters/category"
- $ref: "videos.yaml#/parameters/licence"
- $ref: "videos.yaml#/parameters/language"
- $ref: "videos.yaml#/parameters/description"
- $ref: "videos.yaml#/parameters/waitTranscoding"
- $ref: "videos.yaml#/parameters/support"
- $ref: "videos.yaml#/parameters/nsfw"
- $ref: "videos.yaml#/parameters/name"
- $ref: "videos.yaml#/parameters/tags"
- $ref: "videos.yaml#/parameters/commentsEnabled"
- $ref: "videos.yaml#/parameters/privacy"
- $ref: "videos.yaml#/parameters/scheduleUpdate"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Video'
get:
2018-11-13 23:27:58 +01:00
summary: Get a video by its id
tags:
- Video
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Video'
delete:
2018-11-13 23:27:58 +01:00
summary: Delete a video by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- Video
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
"/videos/{id}/description":
get:
2018-11-13 23:27:58 +01:00
summary: Get a video description by its id
tags:
- Video
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'200':
description: successful operation
schema:
type: string
"/videos/{id}/views":
post:
2018-11-13 23:27:58 +01:00
summary: Add a view to the video by its id
tags:
- Video
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
/videos/upload:
post:
2018-11-13 23:27:58 +01:00
summary: Upload a video file with its metadata
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- Video
consumes:
- multipart/form-data
produces:
- application/json
parameters:
2018-04-06 10:17:06 +02:00
- name: videofile
in: formData
type: file
2018-04-06 10:17:06 +02:00
required: true
description: 'Video file'
- name: channelId
in: formData
required: true
type: number
description: 'Channel id that will contain this video'
- $ref: "videos.yaml#/parameters/thumbnailfile"
- $ref: "videos.yaml#/parameters/previewfile"
- $ref: "videos.yaml#/parameters/category"
- $ref: "videos.yaml#/parameters/licence"
- $ref: "videos.yaml#/parameters/language"
- $ref: "videos.yaml#/parameters/description"
- $ref: "videos.yaml#/parameters/waitTranscoding"
- $ref: "videos.yaml#/parameters/support"
- $ref: "videos.yaml#/parameters/nsfw"
- $ref: "videos.yaml#/parameters/name"
- $ref: "videos.yaml#/parameters/tags"
- $ref: "videos.yaml#/parameters/commentsEnabled"
- $ref: "videos.yaml#/parameters/privacy"
- $ref: "videos.yaml#/parameters/scheduleUpdate"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/VideoUploadResponse'
/videos/abuse:
get:
2018-11-13 23:27:58 +01:00
summary: Get list of reported video abuses
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoAbuse
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/VideoAbuse'
"/videos/{id}/abuse":
post:
2018-11-13 23:27:58 +01:00
summary: Report an abuse, on a video by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoAbuse
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
"/videos/{id}/blacklist":
post:
2018-11-13 23:27:58 +01:00
summary: Put on blacklist a video by its id
2018-04-16 10:48:17 +02:00
security:
2018-11-13 23:27:58 +01:00
- OAuth2: [ admin, moderator ]
tags:
- VideoBlacklist
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
delete:
2018-11-13 23:27:58 +01:00
summary: Delete an entry of the blacklist of a video by its id
2018-04-16 10:48:17 +02:00
security:
2018-11-13 23:27:58 +01:00
- OAuth2: [ admin, moderator ]
tags:
- VideoBlacklist
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
/videos/blacklist:
get:
2018-11-13 23:27:58 +01:00
summary: Get list of videos on blacklist
2018-04-16 10:48:17 +02:00
security:
2018-11-13 23:27:58 +01:00
- OAuth2: [ admin, moderator ]
tags:
- VideoBlacklist
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/VideoBlacklist'
2018-04-24 17:05:32 +02:00
/video-channels:
get:
2018-11-13 23:27:58 +01:00
summary: Get list of video channels
tags:
- VideoChannel
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/VideoChannel'
post:
2018-11-13 23:27:58 +01:00
summary: Creates a video channel for the current user
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoChannel
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: body
schema:
$ref: '#/definitions/VideoChannelInput'
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
"/video-channels/{id}":
get:
2018-11-13 23:27:58 +01:00
summary: Get a video channel by its id
tags:
- VideoChannel
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "video-channels.yaml#/parameters/id"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/VideoChannel'
put:
2018-11-13 23:27:58 +01:00
summary: Update a video channel by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoChannel
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "video-channels.yaml#/parameters/id"
- in: body
name: body
schema:
$ref: '#/definitions/VideoChannelInput'
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
delete:
2018-11-13 23:27:58 +01:00
summary: Delete a video channel by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoChannel
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "video-channels.yaml#/parameters/id"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
"/video-channels/{id}/videos":
get:
2018-11-13 23:27:58 +01:00
summary: Get videos of a video channel by its id
tags:
- VideoChannel
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "video-channels.yaml#/parameters/id"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Video'
2018-05-25 09:57:16 +02:00
/accounts/{name}/video-channels:
2018-04-25 10:21:38 +02:00
get:
2018-11-13 23:27:58 +01:00
summary: Get video channels of an account by its name
2018-04-25 10:21:38 +02:00
tags:
- VideoChannel
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "accounts.yaml#/parameters/name"
2018-04-25 10:21:38 +02:00
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/VideoChannel'
"/videos/{id}/comment-threads":
get:
2018-11-13 23:27:58 +01:00
summary: Get the comment threads of a video by its id
tags:
- VideoComment
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
responses:
'200':
description: successful operation
2018-01-24 11:54:32 +01:00
schema:
$ref: '#/definitions/CommentThreadResponse'
post:
2018-11-13 23:27:58 +01:00
summary: Creates a comment thread, on a video by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoComment
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/CommentThreadPostResponse'
"/videos/{id}/comment-threads/{threadId}":
get:
2018-11-13 23:27:58 +01:00
summary: Get the comment thread by its id, of a video by its id
tags:
- VideoComment
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
- $ref: "video-comments.yaml#/parameters/threadId"
responses:
'200':
description: successful operation
2018-01-24 11:54:32 +01:00
schema:
$ref: '#/definitions/VideoCommentThreadTree'
"/videos/{id}/comments/{commentId}":
post:
2018-11-13 23:27:58 +01:00
summary: Creates a comment in a comment thread by its id, of a video by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoComment
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
- $ref: "video-comments.yaml#/parameters/commentId"
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/CommentThreadPostResponse'
delete:
2018-11-13 23:27:58 +01:00
summary: Delete a comment in a comment therad by its id, of a video by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoComment
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
- $ref: "video-comments.yaml#/parameters/commentId"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
"/videos/{id}/rate":
put:
2018-11-13 23:27:58 +01:00
summary: Vote for a video by its id
2018-04-16 10:48:17 +02:00
security:
- OAuth2: [ ]
tags:
- VideoRate
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "videos.yaml#/parameters/id"
responses:
'204':
$ref: "commons.yaml#/responses/emptySuccess"
/search/videos:
get:
tags:
- Search
2018-11-13 23:27:58 +01:00
summary: Get the videos corresponding to a given query
consumes:
- application/json
produces:
- application/json
parameters:
- $ref: "commons.yaml#/parameters/start"
- $ref: "commons.yaml#/parameters/count"
- $ref: "commons.yaml#/parameters/sort"
- name: search
in: query
required: true
type: string
description: 'String to search'
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Video'
definitions:
2018-04-23 14:39:52 +02:00
VideoConstantNumber:
2018-03-19 12:36:41 +01:00
properties:
id:
type: number
label:
type: string
2018-04-23 14:39:52 +02:00
VideoConstantString:
properties:
id:
type: string
label:
type: string
2018-04-06 10:17:06 +02:00
VideoPrivacy:
type: string
enum: [Public, Unlisted, Private]
Video:
properties:
id:
type: number
uuid:
type: string
createdAt:
type: string
2018-04-06 10:17:06 +02:00
publishedAt:
type: string
updatedAt:
type: string
category:
2018-04-23 14:39:52 +02:00
$ref: "#/definitions/VideoConstantNumber"
licence:
2018-04-23 14:39:52 +02:00
$ref: "#/definitions/VideoConstantNumber"
language:
2018-04-23 14:39:52 +02:00
$ref: "#/definitions/VideoConstantString"
2018-04-06 10:17:06 +02:00
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
2018-03-12 11:06:15 +01:00
account:
2018-04-06 10:17:06 +02:00
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
2018-03-12 11:29:46 +01:00
reporterAccount:
$ref: "#/definitions/Account"
video:
2018-04-06 10:17:06 +02:00
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
2018-04-25 10:21:38 +02:00
ownerAccount:
type: object
2018-03-19 12:36:41 +01:00
properties:
2018-04-25 10:21:38 +02:00
id:
type: number
2018-03-19 12:36:41 +01:00
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"
2018-01-24 11:54:32 +01:00
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
2018-03-19 12:36:41 +01:00
enum: [User, Moderator, Administrator]
videoQuota:
type: number
createdAt:
type: string
account:
$ref: "#/definitions/Account"
videoChannels:
type: array
items:
$ref: "#/definitions/VideoChannel"
ServerConfig:
properties:
2018-03-19 12:36:41 +01:00
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
2018-03-19 12:36:41 +01:00
extensions:
type: array
items:
type: string
video:
type: object
properties:
file:
type: object
2018-03-19 12:36:41 +01:00
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
2018-04-06 10:17:06 +02:00
# Api responses
AddUserResponse:
properties:
id:
type: number
uuid:
type: string
VideoUploadResponse:
properties:
2018-04-06 10:17:06 +02:00
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"
2018-04-06 10:17:06 +02:00
# 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:
2018-11-13 23:27:58 +01:00
type: string