1
0
Fork 0

provide more schema examples in openapi spec

This commit is contained in:
Rigel Kent 2021-05-10 16:09:59 +02:00
parent bb8f371d37
commit b8375da931
No known key found for this signature in database
GPG key ID: 5E53E96A494E452F
2 changed files with 206 additions and 172 deletions

View file

@ -196,6 +196,7 @@ const deleteMeValidator = [
const usersUpdateValidator = [ const usersUpdateValidator = [
param('id').isInt().not().isEmpty().withMessage('Should have a valid id'), param('id').isInt().not().isEmpty().withMessage('Should have a valid id'),
body('password').optional().custom(isUserPasswordValid).withMessage('Should have a valid password'), body('password').optional().custom(isUserPasswordValid).withMessage('Should have a valid password'),
body('email').optional().isEmail().withMessage('Should have a valid email attribute'), body('email').optional().isEmail().withMessage('Should have a valid email attribute'),
body('emailVerified').optional().isBoolean().withMessage('Should have a valid email verified attribute'), body('emailVerified').optional().isBoolean().withMessage('Should have a valid email verified attribute'),

View file

@ -195,7 +195,7 @@ tags:
description: | description: |
PeerTube instances can mirror videos from one another, and help distribute some videos. PeerTube instances can mirror videos from one another, and help distribute some videos.
For importing videos as your own, refer to [video imports](#tag/Video-Upload/paths/~1videos~1imports/post). For importing videos as your own, refer to [video imports](#operation/importVideo).
x-tagGroups: x-tagGroups:
- name: Accounts - name: Accounts
tags: tags:
@ -579,7 +579,9 @@ paths:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/AddUser' $ref: '#/components/schemas/AddUser'
description: User to create description: |
If the smtp server is configured, you can leave the password empty and an email will be sent
asking the user to set it first.
required: true required: true
get: get:
summary: List users summary: List users
@ -743,9 +745,11 @@ paths:
properties: properties:
videoQuotaUsed: videoQuotaUsed:
type: number type: number
description: The user video quota used so far in bytes
example: 16810141515 example: 16810141515
videoQuotaUsedDaily: videoQuotaUsedDaily:
type: number type: number
description: The user video quota used today in bytes
example: 1681014151 example: 1681014151
'/users/me/videos/{videoId}/rating': '/users/me/videos/{videoId}/rating':
get: get:
@ -759,9 +763,9 @@ paths:
- name: videoId - name: videoId
in: path in: path
required: true required: true
description: 'The video id ' description: The video id
schema: schema:
type: string $ref: '#/components/schemas/Video/properties/id'
responses: responses:
'200': '200':
description: successful operation description: successful operation
@ -1075,7 +1079,7 @@ paths:
type: object type: object
properties: properties:
avatarfile: avatarfile:
description: The file to upload. description: The file to upload
type: string type: string
format: binary format: binary
encoding: encoding:
@ -1370,7 +1374,12 @@ paths:
content: content:
application/json: application/json:
schema: schema:
nullable: true
type: string type: string
minLength: 3
maxLength: 10000
example: |
**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**
'/videos/{id}/views': '/videos/{id}/views':
post: post:
summary: Add a view to a video summary: Add a view to a video
@ -1757,7 +1766,7 @@ paths:
schema: schema:
$ref: '#/components/schemas/VideoUploadResponse' $ref: '#/components/schemas/VideoUploadResponse'
'403': '403':
description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded description: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
requestBody: requestBody:
content: content:
multipart/form-data: multipart/form-data:
@ -1862,11 +1871,11 @@ paths:
$ref: '#/components/schemas/LiveVideoUpdate' $ref: '#/components/schemas/LiveVideoUpdate'
responses: responses:
'204': '204':
description: Successful operation description: successful operation
'400': '400':
description: Bad parameters or trying to update a live that has already started description: bad parameters or trying to update a live that has already started
'403': '403':
description: Trying to save replay of the live but saving replay is not enabled on the instance description: trying to save replay of the live but saving replay is not enabled on the instance
/users/me/abuses: /users/me/abuses:
get: get:
@ -2017,7 +2026,8 @@ paths:
properties: properties:
id: id:
description: Video id to report description: Video id to report
type: number allOf:
- $ref: '#/components/schemas/Video/properties/id'
startAt: startAt:
type: integer type: integer
description: Timestamp in the video that marks the beginning of the report description: Timestamp in the video that marks the beginning of the report
@ -2031,13 +2041,14 @@ paths:
properties: properties:
id: id:
description: Comment id to report description: Comment id to report
type: number allOf:
- $ref: '#/components/schemas/VideoComment/properties/id'
account: account:
type: object type: object
properties: properties:
id: id:
description: Account id to report description: Account id to report
type: number type: integer
required: required:
- reason - reason
responses: responses:
@ -2541,7 +2552,7 @@ paths:
$ref: '#/components/schemas/VideoPlaylist' $ref: '#/components/schemas/VideoPlaylist'
post: post:
summary: Create a video playlist summary: Create a video playlist
description: 'If the video playlist is set as public, the videoChannelId is mandatory.' description: If the video playlist is set as public, `videoChannelId` is mandatory.
operationId: createPlaylist operationId: createPlaylist
security: security:
- OAuth2: [] - OAuth2: []
@ -2559,9 +2570,9 @@ paths:
type: object type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/VideoPlaylist/properties/id'
uuid: uuid:
$ref: '#/components/schemas/UUIDv4' $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
requestBody: requestBody:
content: content:
multipart/form-data: multipart/form-data:
@ -2582,9 +2593,12 @@ paths:
description: description:
description: Video playlist description description: Video playlist description
type: string type: string
minLength: 3
maxLength: 1000
videoChannelId: videoChannelId:
allOf:
- $ref: '#/components/schemas/id'
description: Video channel in which the playlist will be published description: Video channel in which the playlist will be published
type: integer
required: required:
- displayName - displayName
encoding: encoding:
@ -2638,8 +2652,9 @@ paths:
description: Video playlist description description: Video playlist description
type: string type: string
videoChannelId: videoChannelId:
allOf:
- $ref: '#/components/schemas/id'
description: Video channel in which the playlist will be published description: Video channel in which the playlist will be published
type: integer
encoding: encoding:
thumbnailfile: thumbnailfile:
contentType: image/jpeg contentType: image/jpeg
@ -2699,14 +2714,15 @@ paths:
type: object type: object
properties: properties:
videoId: videoId:
type: integer allOf:
description: 'Video to add in the playlist' - $ref: '#/components/schemas/Video/properties/id'
description: Video to add in the playlist
startTimestamp: startTimestamp:
type: integer type: integer
description: 'Start the video at this specific timestamp (in seconds)' description: Start the video at this specific timestamp (in seconds)
stopTimestamp: stopTimestamp:
type: integer type: integer
description: 'Stop the video at this specific timestamp (in seconds)' description: Stop the video at this specific timestamp (in seconds)
required: required:
- videoId - videoId
@ -2797,7 +2813,7 @@ paths:
schema: schema:
type: array type: array
items: items:
type: integer $ref: '#/components/schemas/Video/properties/id'
responses: responses:
'200': '200':
description: successful operation description: successful operation
@ -2960,8 +2976,7 @@ paths:
type: object type: object
properties: properties:
text: text:
type: string $ref: '#/components/schemas/VideoComment/properties/text'
description: 'Text comment'
required: required:
- text - text
@ -3298,7 +3313,7 @@ paths:
type: object type: object
properties: properties:
videoId: videoId:
type: integer $ref: '#/components/schemas/Video/properties/id'
required: required:
- videoId - videoId
responses: responses:
@ -3982,9 +3997,7 @@ components:
required: true required: true
description: The user id description: The user id
schema: schema:
type: integer $ref: '#/components/schemas/id'
minimum: 0
example: 42
idOrUUID: idOrUUID:
name: id name: id
in: path in: path
@ -3992,9 +4005,7 @@ components:
description: The object id or uuid description: The object id or uuid
schema: schema:
oneOf: oneOf:
- type: integer - $ref: '#/components/schemas/id'
minimum: 0
example: 42
- $ref: '#/components/schemas/UUIDv4' - $ref: '#/components/schemas/UUIDv4'
playlistElementId: playlistElementId:
name: playlistElementId name: playlistElementId
@ -4002,28 +4013,28 @@ components:
required: true required: true
description: Playlist element id description: Playlist element id
schema: schema:
type: integer $ref: '#/components/schemas/id'
abuseId: abuseId:
name: abuseId name: abuseId
in: path in: path
required: true required: true
description: Abuse id description: Abuse id
schema: schema:
type: integer $ref: '#/components/schemas/Abuse/properties/id'
abuseMessageId: abuseMessageId:
name: abuseMessageId name: abuseMessageId
in: path in: path
required: true required: true
description: Abuse message id description: Abuse message id
schema: schema:
type: integer $ref: '#/components/schemas/AbuseMessage/properties/id'
captionLanguage: captionLanguage:
name: captionLanguage name: captionLanguage
in: path in: path
required: true required: true
description: The caption language description: The caption language
schema: schema:
type: string $ref: '#/components/schemas/VideoLanguageSet'
channelHandle: channelHandle:
name: channelHandle name: channelHandle
in: path in: path
@ -4046,14 +4057,14 @@ components:
required: true required: true
description: The thread id (root comment id) description: The thread id (root comment id)
schema: schema:
type: integer $ref: '#/components/schemas/VideoCommentThreadTree/properties/comment/properties/id'
commentId: commentId:
name: commentId name: commentId
in: path in: path
required: true required: true
description: The comment id description: The comment id
schema: schema:
type: integer $ref: '#/components/schemas/VideoComment/properties/id'
isLive: isLive:
name: isLive name: isLive
in: query in: query
@ -4068,10 +4079,10 @@ components:
description: category id of the video (see [/videos/categories](#operation/getCategories)) description: category id of the video (see [/videos/categories](#operation/getCategories))
schema: schema:
oneOf: oneOf:
- type: integer - $ref: '#/components/schemas/VideoCategorySet'
- type: array - type: array
items: items:
type: integer $ref: '#/components/schemas/VideoCategorySet'
style: form style: form
explode: false explode: false
tagsOneOf: tagsOneOf:
@ -4108,10 +4119,10 @@ components:
description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
schema: schema:
oneOf: oneOf:
- type: string - $ref: '#/components/schemas/VideoLanguageSet'
- type: array - type: array
items: items:
type: string $ref: '#/components/schemas/VideoLanguageSet'
style: form style: form
explode: false explode: false
licenceOneOf: licenceOneOf:
@ -4121,10 +4132,10 @@ components:
description: licence id of the video (see [/videos/licences](#operation/getLicences)) description: licence id of the video (see [/videos/licences](#operation/getLicences))
schema: schema:
oneOf: oneOf:
- type: integer - $ref: '#/components/schemas/VideoLicenceSet'
- type: array - type: array
items: items:
type: integer $ref: '#/components/schemas/VideoLicenceSet'
style: form style: form
explode: false explode: false
skipCount: skipCount:
@ -4221,45 +4232,72 @@ components:
moderator: Moderator scope moderator: Moderator scope
user: User scope user: User scope
schemas: schemas:
# Resuable core properties
id:
type: integer
minimum: 1
example: 42
UUIDv4: UUIDv4:
type: string type: string
format: uuid format: uuid
example: 9c9de5e8-0a1e-484a-b099-e80766180a6d example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$' pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
# the regex above limits the length;
# however, some tools might require explicit settings:
minLength: 36 minLength: 36
maxLength: 36 maxLength: 36
username:
type: string
description: The username of the user
example: chocobozzz
pattern: '/^[a-z0-9._]{1,50}$/'
minLength: 1
maxLength: 50
usernameChannel:
type: string
description: The username for the default channel
example: The Capybara Channel
pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
password:
type: string
format: password
description: The password of the user
minLength: 6
maxLength: 255
VideoCategorySet: VideoCategorySet:
type: integer type: integer
description: category id of the video (see [/videos/categories](#operation/getCategories)) description: category id of the video (see [/videos/categories](#operation/getCategories))
example: 15
VideoConstantNumber-Category: VideoConstantNumber-Category:
properties: properties:
id: id:
$ref: '#/components/schemas/VideoCategorySet' $ref: '#/components/schemas/VideoCategorySet'
label: label:
type: string type: string
example: Science & Technology
VideoLicenceSet: VideoLicenceSet:
type: integer type: integer
description: licence id of the video (see [/videos/licences](#operation/getLicences)) description: licence id of the video (see [/videos/licences](#operation/getLicences))
example: 2
VideoConstantNumber-Licence: VideoConstantNumber-Licence:
properties: properties:
id: id:
$ref: '#/components/schemas/VideoLicenceSet' $ref: '#/components/schemas/VideoLicenceSet'
label: label:
type: string type: string
example: Attribution - Share Alike
VideoLanguageSet: VideoLanguageSet:
type: string type: string
description: language id of the video (see [/videos/languages](#operation/getLanguages)) description: language id of the video (see [/videos/languages](#operation/getLanguages))
example: en
VideoConstantString-Language: VideoConstantString-Language:
properties: properties:
id: id:
$ref: '#/components/schemas/VideoLanguageSet' $ref: '#/components/schemas/VideoLanguageSet'
label: label:
type: string type: string
example: English
VideoPlaylistPrivacySet: VideoPlaylistPrivacySet:
type: integer type: integer
@ -4411,7 +4449,7 @@ components:
VideoChannelSummary: VideoChannelSummary:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
name: name:
type: string type: string
displayName: displayName:
@ -4473,7 +4511,7 @@ components:
- type: object - type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
type: type:
type: integer type: integer
enum: enum:
@ -4509,20 +4547,21 @@ components:
VideoInfo: VideoInfo:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/Video/properties/id'
uuid: uuid:
$ref: '#/components/schemas/UUIDv4' $ref: '#/components/schemas/Video/properties/uuid'
name: name:
type: string $ref: '#/components/schemas/Video/properties/name'
minLength: 3
maxLength: 120
Video: Video:
properties: properties:
id: id:
type: integer description: object id for the video
example: 8 allOf:
- $ref: '#/components/schemas/id'
uuid: uuid:
$ref: '#/components/schemas/UUIDv4' description: universal identifier for the video, that can be used across instances
allOf:
- $ref: '#/components/schemas/UUIDv4'
isLive: isLive:
type: boolean type: boolean
createdAt: createdAt:
@ -4546,13 +4585,21 @@ components:
example: 2010-10-01T10:52:46.396Z example: 2010-10-01T10:52:46.396Z
description: used to represent a date of first publication, prior to the practical publication date of `publishedAt` description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
category: category:
$ref: '#/components/schemas/VideoConstantNumber-Category' allOf:
- $ref: '#/components/schemas/VideoConstantNumber-Category'
description: category in which the video is classified
licence: licence:
$ref: '#/components/schemas/VideoConstantNumber-Licence' allOf:
- $ref: '#/components/schemas/VideoConstantNumber-Licence'
description: licence under which the video is distributed
language: language:
$ref: '#/components/schemas/VideoConstantString-Language' allOf:
- $ref: '#/components/schemas/VideoConstantString-Language'
description: main language used in the video
privacy: privacy:
$ref: '#/components/schemas/VideoPrivacyConstant' allOf:
- $ref: '#/components/schemas/VideoPrivacyConstant'
description: privacy policy used to distribute the video
description: description:
type: string type: string
example: | example: |
@ -4571,6 +4618,7 @@ components:
type: boolean type: boolean
name: name:
type: string type: string
description: title of the video
example: What is PeerTube? example: What is PeerTube?
minLength: 3 minLength: 3
maxLength: 120 maxLength: 120
@ -4598,7 +4646,9 @@ components:
type: boolean type: boolean
nullable: true nullable: true
state: state:
$ref: '#/components/schemas/VideoStateConstant' allOf:
- $ref: '#/components/schemas/VideoStateConstant'
description: represents the internal state of the video processing within the PeerTube instance
scheduledUpdate: scheduledUpdate:
nullable: true nullable: true
allOf: allOf:
@ -4677,7 +4727,7 @@ components:
FileRedundancyInformation: FileRedundancyInformation:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
fileUrl: fileUrl:
type: string type: string
format: url format: url
@ -4702,7 +4752,7 @@ components:
VideoRedundancy: VideoRedundancy:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
name: name:
type: string type: string
url: url:
@ -4736,8 +4786,7 @@ components:
VideoImport: VideoImport:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
example: 2
targetUrl: targetUrl:
type: string type: string
format: url format: url
@ -4773,8 +4822,7 @@ components:
Abuse: Abuse:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
example: 7
reason: reason:
type: string type: string
example: The video is a spam example: The video is a spam
@ -4799,7 +4847,7 @@ components:
AbuseMessage: AbuseMessage:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
message: message:
type: string type: string
minLength: 2 minLength: 2
@ -4814,9 +4862,9 @@ components:
VideoBlacklist: VideoBlacklist:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
videoId: videoId:
type: integer $ref: '#/components/schemas/Video/properties/id'
createdAt: createdAt:
type: string type: string
format: date-time format: date-time
@ -4843,29 +4891,12 @@ components:
type: integer type: integer
nsfw: nsfw:
type: boolean type: boolean
VideoChannel:
properties:
displayName:
type: string
minLength: 1
maxLength: 120
description:
type: string
minLength: 3
maxLength: 1000
isLocal:
type: boolean
ownerAccount:
type: object
properties:
id:
type: integer
uuid:
$ref: '#/components/schemas/UUIDv4'
VideoPlaylist: VideoPlaylist:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
uuid:
$ref: '#/components/schemas/UUIDv4'
createdAt: createdAt:
type: string type: string
format: date-time format: date-time
@ -4876,8 +4907,6 @@ components:
type: string type: string
minLength: 3 minLength: 3
maxLength: 1000 maxLength: 1000
uuid:
$ref: '#/components/schemas/UUIDv4'
displayName: displayName:
type: string type: string
minLength: 1 minLength: 1
@ -4886,6 +4915,7 @@ components:
type: boolean type: boolean
videoLength: videoLength:
type: integer type: integer
minimum: 0
thumbnailPath: thumbnailPath:
type: string type: string
privacy: privacy:
@ -4899,20 +4929,21 @@ components:
VideoComment: VideoComment:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
url: url:
type: string type: string
format: url format: url
text: text:
type: string type: string
description: Text of the comment in Markdown
minLength: 1 minLength: 1
maxLength: 10000 maxLength: 10000
threadId: threadId:
type: integer type: integer
inReplyToCommentId: inReplyToCommentId:
type: integer $ref: '#/components/schemas/id'
videoId: videoId:
type: integer $ref: '#/components/schemas/Video/properties/id'
createdAt: createdAt:
type: string type: string
format: date-time format: date-time
@ -4921,8 +4952,10 @@ components:
format: date-time format: date-time
totalRepliesFromVideoAuthor: totalRepliesFromVideoAuthor:
type: integer type: integer
minimum: 0
totalReplies: totalReplies:
type: integer type: integer
minimum: 0
account: account:
$ref: '#/components/schemas/Account' $ref: '#/components/schemas/Account'
VideoCommentThreadTree: VideoCommentThreadTree:
@ -4952,8 +4985,7 @@ components:
ActorInfo: ActorInfo:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
example: 11
name: name:
type: string type: string
displayName: displayName:
@ -4970,8 +5002,7 @@ components:
Actor: Actor:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
example: 11
url: url:
type: string type: string
format: url format: url
@ -4999,8 +5030,7 @@ components:
- $ref: '#/components/schemas/Actor' - $ref: '#/components/schemas/Actor'
- properties: - properties:
userId: userId:
type: string $ref: '#/components/schemas/id'
example: 2
displayName: displayName:
type: string type: string
description: description:
@ -5181,8 +5211,10 @@ components:
properties: properties:
videoQuota: videoQuota:
type: integer type: integer
example: 16810141515
videoQuotaDaily: videoQuotaDaily:
type: integer type: integer
example: 1681014151
trending: trending:
type: object type: object
properties: properties:
@ -5301,8 +5333,10 @@ components:
properties: properties:
videoQuota: videoQuota:
type: integer type: integer
example: 16810141515
videoQuotaDaily: videoQuotaDaily:
type: integer type: integer
example: 1681014151
transcoding: transcoding:
type: object type: object
description: Settings pertaining to transcoding jobs description: Settings pertaining to transcoding jobs
@ -5399,7 +5433,7 @@ components:
Follow: Follow:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
follower: follower:
$ref: '#/components/schemas/Actor' $ref: '#/components/schemas/Actor'
following: following:
@ -5438,9 +5472,7 @@ components:
Job: Job:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
minimum: 0
example: 42
state: state:
type: string type: string
enum: enum:
@ -5484,22 +5516,25 @@ components:
type: object type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
example: 8
account: account:
type: object type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
example: 37
VideoUploadRequestCommon: VideoUploadRequestCommon:
properties: properties:
name: name:
description: Video name description: Video name
type: string type: string
example: What is PeerTube?
minLength: 3
maxLength: 120
channelId: channelId:
description: Channel id that will contain this video description: Channel id that will contain this video
type: integer type: integer
example: 3
minimum: 1
privacy: privacy:
$ref: '#/components/schemas/VideoPrivacySet' $ref: '#/components/schemas/VideoPrivacySet'
category: category:
@ -5511,6 +5546,8 @@ components:
description: description:
description: Video description description: Video description
type: string type: string
example: |
**[Want to help to translate this video?](https://weblate.framasoft.org/projects/what-is-peertube-video/)**\r\n\r\n**Take back the control of your videos! [#JoinPeertube](https://joinpeertube.org)**
waitTranscoding: waitTranscoding:
description: Whether or not we wait transcoding before publish the video description: Whether or not we wait transcoding before publish the video
type: boolean type: boolean
@ -5527,6 +5564,9 @@ components:
minItems: 1 minItems: 1
maxItems: 5 maxItems: 5
uniqueItems: true uniqueItems: true
example:
- framasoft
- peertube
items: items:
type: string type: string
minLength: 2 minLength: 2
@ -5576,6 +5616,7 @@ components:
description: Video filename including extension description: Video filename including extension
type: string type: string
format: filename format: filename
example: what_is_peertube.mp4
thumbnailfile: thumbnailfile:
description: Video thumbnail file description: Video thumbnail file
type: string type: string
@ -5590,10 +5631,9 @@ components:
type: object type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/Video/properties/id'
example: 8
uuid: uuid:
$ref: '#/components/schemas/UUIDv4' $ref: '#/components/schemas/Video/properties/uuid'
CommentThreadResponse: CommentThreadResponse:
properties: properties:
total: total:
@ -5671,10 +5711,7 @@ components:
type: string type: string
description: Theme enabled by this user description: Theme enabled by this user
username: username:
type: string $ref: '#/components/schemas/username'
description: The user username
minLength: 1
maxLength: 50
videoChannels: videoChannels:
type: array type: array
items: items:
@ -5713,31 +5750,23 @@ components:
AddUser: AddUser:
properties: properties:
username: username:
type: string $ref: '#/components/schemas/username'
description: The user username
minLength: 1
maxLength: 50
pattern: '/^[a-z0-9._]{1,50}$/'
password: password:
type: string $ref: '#/components/schemas/password'
format: password
description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
minLength: 6
maxLength: 255
email: email:
type: string type: string
format: email format: email
description: The user email description: The user email
videoQuota: videoQuota:
type: integer type: integer
description: The user video quota description: The user video quota in bytes
example: -1
videoQuotaDaily: videoQuotaDaily:
type: integer type: integer
description: The user daily video quota description: The user daily video quota in bytes
example: -1
channelName: channelName:
type: string $ref: '#/components/schemas/usernameChannel'
description: The user default channel username
pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
role: role:
$ref: '#/components/schemas/UserRole' $ref: '#/components/schemas/UserRole'
adminFlags: adminFlags:
@ -5751,9 +5780,6 @@ components:
- role - role
UpdateUser: UpdateUser:
properties: properties:
id:
type: string
description: The user id
email: email:
type: string type: string
format: email format: email
@ -5763,10 +5789,10 @@ components:
description: Set the email as verified description: Set the email as verified
videoQuota: videoQuota:
type: integer type: integer
description: The updated video quota of the user description: The updated video quota of the user in bytes
videoQuotaDaily: videoQuotaDaily:
type: integer type: integer
description: The updated daily video quota of the user description: The updated daily video quota of the user in bytes
pluginAuth: pluginAuth:
type: string type: string
nullable: true nullable: true
@ -5776,16 +5802,10 @@ components:
$ref: '#/components/schemas/UserRole' $ref: '#/components/schemas/UserRole'
adminFlags: adminFlags:
$ref: '#/components/schemas/UserAdminFlags' $ref: '#/components/schemas/UserAdminFlags'
required:
- id
UpdateMe: UpdateMe:
properties: properties:
password: password:
type: string $ref: '#/components/schemas/password'
format: password
description: Your new password
minLength: 6
maxLength: 255
email: email:
type: string type: string
format: email format: email
@ -5808,8 +5828,7 @@ components:
GetMeVideoRating: GetMeVideoRating:
properties: properties:
id: id:
type: string $ref: '#/components/schemas/id'
description: Id of the video
rating: rating:
type: string type: string
enum: enum:
@ -5837,17 +5856,9 @@ components:
RegisterUser: RegisterUser:
properties: properties:
username: username:
type: string $ref: '#/components/schemas/username'
description: The username of the user
minLength: 1
maxLength: 50
pattern: '/^[a-z0-9._]{1,50}$/'
password: password:
type: string $ref: '#/components/schemas/password'
format: password
description: The password of the user
minLength: 6
maxLength: 255
email: email:
type: string type: string
format: email format: email
@ -5861,9 +5872,7 @@ components:
type: object type: object
properties: properties:
name: name:
type: string $ref: '#/components/schemas/usernameChannel'
description: The username for the default channel
pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
displayName: displayName:
type: string type: string
description: The display name for the default channel description: The display name for the default channel
@ -5874,40 +5883,64 @@ components:
- password - password
- email - email
VideoChannelCommon: VideoChannel:
properties: properties:
# GET/POST/PUT properties
displayName: displayName:
type: string type: string
example: Videos of Framasoft
minLength: 1 minLength: 1
maxLength: 120 maxLength: 120
description: description:
type: string type: string
example: Videos made with <3 by Framasoft
minLength: 3 minLength: 3
maxLength: 1000 maxLength: 1000
support: support:
type: string type: string
description: 'A text shown by default on all videos of this channel, to tell the audience how to support it' description: text shown by default on all videos of this channel, to tell the audience how to support it
example: Please support my work on <insert crowdfunding plateform>! <3 example: Please support my work on <insert crowdfunding plateform>! <3
minLength: 3 minLength: 3
maxLength: 1000 maxLength: 1000
# GET-only properties
id:
readOnly: true
allOf:
- $ref: '#/components/schemas/id'
isLocal:
readOnly: true
type: boolean
updatedAt:
readOnly: true
type: string
format: date-time
ownerAccount:
readOnly: true
nullable: true
type: object
properties:
id:
type: integer
uuid:
$ref: '#/components/schemas/UUIDv4'
VideoChannelCreate: VideoChannelCreate:
allOf: allOf:
- $ref: '#/components/schemas/VideoChannelCommon' - $ref: '#/components/schemas/VideoChannel'
- properties: - properties:
name: name:
type: string description: username of the channel to create
minLength: 1 allOf:
maxLength: 120 - $ref: '#/components/schemas/usernameChannel'
required: required:
- name - name
- displayName - displayName
VideoChannelUpdate: VideoChannelUpdate:
allOf: allOf:
- $ref: '#/components/schemas/VideoChannelCommon' - $ref: '#/components/schemas/VideoChannel'
- properties: - properties:
bulkVideosSupportUpdate: bulkVideosSupportUpdate:
type: boolean type: boolean
description: 'Update the support field for all videos of this channel' description: Update the support field for all videos of this channel
VideoChannelList: VideoChannelList:
properties: properties:
total: total:
@ -6123,7 +6156,7 @@ components:
Notification: Notification:
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
type: type:
type: integer type: integer
description: > description: >
@ -6171,7 +6204,7 @@ components:
type: object type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
video: video:
nullable: true nullable: true
$ref: '#/components/schemas/VideoInfo' $ref: '#/components/schemas/VideoInfo'
@ -6191,7 +6224,7 @@ components:
type: object type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
threadId: threadId:
type: integer type: integer
video: video:
@ -6203,7 +6236,7 @@ components:
type: object type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
video: video:
allOf: allOf:
- $ref: '#/components/schemas/VideoInfo' - $ref: '#/components/schemas/VideoInfo'
@ -6212,7 +6245,7 @@ components:
type: object type: object
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
video: video:
allOf: allOf:
- $ref: '#/components/schemas/VideoInfo' - $ref: '#/components/schemas/VideoInfo'
@ -6225,7 +6258,7 @@ components:
nullable: true nullable: true
properties: properties:
id: id:
type: integer $ref: '#/components/schemas/id'
follower: follower:
$ref: '#/components/schemas/ActorInfo' $ref: '#/components/schemas/ActorInfo'
state: state: