aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--server/middlewares/validators/users.ts1
-rw-r--r--support/doc/api/openapi.yaml377
2 files changed, 206 insertions, 172 deletions
diff --git a/server/middlewares/validators/users.ts b/server/middlewares/validators/users.ts
index 9cff51d45..37119e279 100644
--- a/server/middlewares/validators/users.ts
+++ b/server/middlewares/validators/users.ts
@@ -196,6 +196,7 @@ const deleteMeValidator = [
196 196
197const usersUpdateValidator = [ 197const usersUpdateValidator = [
198 param('id').isInt().not().isEmpty().withMessage('Should have a valid id'), 198 param('id').isInt().not().isEmpty().withMessage('Should have a valid id'),
199
199 body('password').optional().custom(isUserPasswordValid).withMessage('Should have a valid password'), 200 body('password').optional().custom(isUserPasswordValid).withMessage('Should have a valid password'),
200 body('email').optional().isEmail().withMessage('Should have a valid email attribute'), 201 body('email').optional().isEmail().withMessage('Should have a valid email attribute'),
201 body('emailVerified').optional().isBoolean().withMessage('Should have a valid email verified attribute'), 202 body('emailVerified').optional().isBoolean().withMessage('Should have a valid email verified attribute'),
diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml
index 4fbf5b055..7316b0b58 100644
--- a/support/doc/api/openapi.yaml
+++ b/support/doc/api/openapi.yaml
@@ -195,7 +195,7 @@ tags:
195 description: | 195 description: |
196 PeerTube instances can mirror videos from one another, and help distribute some videos. 196 PeerTube instances can mirror videos from one another, and help distribute some videos.
197 197
198 For importing videos as your own, refer to [video imports](#tag/Video-Upload/paths/~1videos~1imports/post). 198 For importing videos as your own, refer to [video imports](#operation/importVideo).
199x-tagGroups: 199x-tagGroups:
200 - name: Accounts 200 - name: Accounts
201 tags: 201 tags:
@@ -579,7 +579,9 @@ paths:
579 application/json: 579 application/json:
580 schema: 580 schema:
581 $ref: '#/components/schemas/AddUser' 581 $ref: '#/components/schemas/AddUser'
582 description: User to create 582 description: |
583 If the smtp server is configured, you can leave the password empty and an email will be sent
584 asking the user to set it first.
583 required: true 585 required: true
584 get: 586 get:
585 summary: List users 587 summary: List users
@@ -743,9 +745,11 @@ paths:
743 properties: 745 properties:
744 videoQuotaUsed: 746 videoQuotaUsed:
745 type: number 747 type: number
748 description: The user video quota used so far in bytes
746 example: 16810141515 749 example: 16810141515
747 videoQuotaUsedDaily: 750 videoQuotaUsedDaily:
748 type: number 751 type: number
752 description: The user video quota used today in bytes
749 example: 1681014151 753 example: 1681014151
750 '/users/me/videos/{videoId}/rating': 754 '/users/me/videos/{videoId}/rating':
751 get: 755 get:
@@ -759,9 +763,9 @@ paths:
759 - name: videoId 763 - name: videoId
760 in: path 764 in: path
761 required: true 765 required: true
762 description: 'The video id ' 766 description: The video id
763 schema: 767 schema:
764 type: string 768 $ref: '#/components/schemas/Video/properties/id'
765 responses: 769 responses:
766 '200': 770 '200':
767 description: successful operation 771 description: successful operation
@@ -1075,7 +1079,7 @@ paths:
1075 type: object 1079 type: object
1076 properties: 1080 properties:
1077 avatarfile: 1081 avatarfile:
1078 description: The file to upload. 1082 description: The file to upload
1079 type: string 1083 type: string
1080 format: binary 1084 format: binary
1081 encoding: 1085 encoding:
@@ -1370,7 +1374,12 @@ paths:
1370 content: 1374 content:
1371 application/json: 1375 application/json:
1372 schema: 1376 schema:
1377 nullable: true
1373 type: string 1378 type: string
1379 minLength: 3
1380 maxLength: 10000
1381 example: |
1382 **[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)**
1374 '/videos/{id}/views': 1383 '/videos/{id}/views':
1375 post: 1384 post:
1376 summary: Add a view to a video 1385 summary: Add a view to a video
@@ -1757,7 +1766,7 @@ paths:
1757 schema: 1766 schema:
1758 $ref: '#/components/schemas/VideoUploadResponse' 1767 $ref: '#/components/schemas/VideoUploadResponse'
1759 '403': 1768 '403':
1760 description: Live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded 1769 description: live is not enabled, allow replay is not enabled, or max instance/user live videos limit is exceeded
1761 requestBody: 1770 requestBody:
1762 content: 1771 content:
1763 multipart/form-data: 1772 multipart/form-data:
@@ -1862,11 +1871,11 @@ paths:
1862 $ref: '#/components/schemas/LiveVideoUpdate' 1871 $ref: '#/components/schemas/LiveVideoUpdate'
1863 responses: 1872 responses:
1864 '204': 1873 '204':
1865 description: Successful operation 1874 description: successful operation
1866 '400': 1875 '400':
1867 description: Bad parameters or trying to update a live that has already started 1876 description: bad parameters or trying to update a live that has already started
1868 '403': 1877 '403':
1869 description: Trying to save replay of the live but saving replay is not enabled on the instance 1878 description: trying to save replay of the live but saving replay is not enabled on the instance
1870 1879
1871 /users/me/abuses: 1880 /users/me/abuses:
1872 get: 1881 get:
@@ -2017,7 +2026,8 @@ paths:
2017 properties: 2026 properties:
2018 id: 2027 id:
2019 description: Video id to report 2028 description: Video id to report
2020 type: number 2029 allOf:
2030 - $ref: '#/components/schemas/Video/properties/id'
2021 startAt: 2031 startAt:
2022 type: integer 2032 type: integer
2023 description: Timestamp in the video that marks the beginning of the report 2033 description: Timestamp in the video that marks the beginning of the report
@@ -2031,13 +2041,14 @@ paths:
2031 properties: 2041 properties:
2032 id: 2042 id:
2033 description: Comment id to report 2043 description: Comment id to report
2034 type: number 2044 allOf:
2045 - $ref: '#/components/schemas/VideoComment/properties/id'
2035 account: 2046 account:
2036 type: object 2047 type: object
2037 properties: 2048 properties:
2038 id: 2049 id:
2039 description: Account id to report 2050 description: Account id to report
2040 type: number 2051 type: integer
2041 required: 2052 required:
2042 - reason 2053 - reason
2043 responses: 2054 responses:
@@ -2541,7 +2552,7 @@ paths:
2541 $ref: '#/components/schemas/VideoPlaylist' 2552 $ref: '#/components/schemas/VideoPlaylist'
2542 post: 2553 post:
2543 summary: Create a video playlist 2554 summary: Create a video playlist
2544 description: 'If the video playlist is set as public, the videoChannelId is mandatory.' 2555 description: If the video playlist is set as public, `videoChannelId` is mandatory.
2545 operationId: createPlaylist 2556 operationId: createPlaylist
2546 security: 2557 security:
2547 - OAuth2: [] 2558 - OAuth2: []
@@ -2559,9 +2570,9 @@ paths:
2559 type: object 2570 type: object
2560 properties: 2571 properties:
2561 id: 2572 id:
2562 type: integer 2573 $ref: '#/components/schemas/VideoPlaylist/properties/id'
2563 uuid: 2574 uuid:
2564 $ref: '#/components/schemas/UUIDv4' 2575 $ref: '#/components/schemas/VideoPlaylist/properties/uuid'
2565 requestBody: 2576 requestBody:
2566 content: 2577 content:
2567 multipart/form-data: 2578 multipart/form-data:
@@ -2582,9 +2593,12 @@ paths:
2582 description: 2593 description:
2583 description: Video playlist description 2594 description: Video playlist description
2584 type: string 2595 type: string
2596 minLength: 3
2597 maxLength: 1000
2585 videoChannelId: 2598 videoChannelId:
2599 allOf:
2600 - $ref: '#/components/schemas/id'
2586 description: Video channel in which the playlist will be published 2601 description: Video channel in which the playlist will be published
2587 type: integer
2588 required: 2602 required:
2589 - displayName 2603 - displayName
2590 encoding: 2604 encoding:
@@ -2638,8 +2652,9 @@ paths:
2638 description: Video playlist description 2652 description: Video playlist description
2639 type: string 2653 type: string
2640 videoChannelId: 2654 videoChannelId:
2655 allOf:
2656 - $ref: '#/components/schemas/id'
2641 description: Video channel in which the playlist will be published 2657 description: Video channel in which the playlist will be published
2642 type: integer
2643 encoding: 2658 encoding:
2644 thumbnailfile: 2659 thumbnailfile:
2645 contentType: image/jpeg 2660 contentType: image/jpeg
@@ -2699,14 +2714,15 @@ paths:
2699 type: object 2714 type: object
2700 properties: 2715 properties:
2701 videoId: 2716 videoId:
2702 type: integer 2717 allOf:
2703 description: 'Video to add in the playlist' 2718 - $ref: '#/components/schemas/Video/properties/id'
2719 description: Video to add in the playlist
2704 startTimestamp: 2720 startTimestamp:
2705 type: integer 2721 type: integer
2706 description: 'Start the video at this specific timestamp (in seconds)' 2722 description: Start the video at this specific timestamp (in seconds)
2707 stopTimestamp: 2723 stopTimestamp:
2708 type: integer 2724 type: integer
2709 description: 'Stop the video at this specific timestamp (in seconds)' 2725 description: Stop the video at this specific timestamp (in seconds)
2710 required: 2726 required:
2711 - videoId 2727 - videoId
2712 2728
@@ -2797,7 +2813,7 @@ paths:
2797 schema: 2813 schema:
2798 type: array 2814 type: array
2799 items: 2815 items:
2800 type: integer 2816 $ref: '#/components/schemas/Video/properties/id'
2801 responses: 2817 responses:
2802 '200': 2818 '200':
2803 description: successful operation 2819 description: successful operation
@@ -2960,8 +2976,7 @@ paths:
2960 type: object 2976 type: object
2961 properties: 2977 properties:
2962 text: 2978 text:
2963 type: string 2979 $ref: '#/components/schemas/VideoComment/properties/text'
2964 description: 'Text comment'
2965 required: 2980 required:
2966 - text 2981 - text
2967 2982
@@ -3298,7 +3313,7 @@ paths:
3298 type: object 3313 type: object
3299 properties: 3314 properties:
3300 videoId: 3315 videoId:
3301 type: integer 3316 $ref: '#/components/schemas/Video/properties/id'
3302 required: 3317 required:
3303 - videoId 3318 - videoId
3304 responses: 3319 responses:
@@ -3982,9 +3997,7 @@ components:
3982 required: true 3997 required: true
3983 description: The user id 3998 description: The user id
3984 schema: 3999 schema:
3985 type: integer 4000 $ref: '#/components/schemas/id'
3986 minimum: 0
3987 example: 42
3988 idOrUUID: 4001 idOrUUID:
3989 name: id 4002 name: id
3990 in: path 4003 in: path
@@ -3992,9 +4005,7 @@ components:
3992 description: The object id or uuid 4005 description: The object id or uuid
3993 schema: 4006 schema:
3994 oneOf: 4007 oneOf:
3995 - type: integer 4008 - $ref: '#/components/schemas/id'
3996 minimum: 0
3997 example: 42
3998 - $ref: '#/components/schemas/UUIDv4' 4009 - $ref: '#/components/schemas/UUIDv4'
3999 playlistElementId: 4010 playlistElementId:
4000 name: playlistElementId 4011 name: playlistElementId
@@ -4002,28 +4013,28 @@ components:
4002 required: true 4013 required: true
4003 description: Playlist element id 4014 description: Playlist element id
4004 schema: 4015 schema:
4005 type: integer 4016 $ref: '#/components/schemas/id'
4006 abuseId: 4017 abuseId:
4007 name: abuseId 4018 name: abuseId
4008 in: path 4019 in: path
4009 required: true 4020 required: true
4010 description: Abuse id 4021 description: Abuse id
4011 schema: 4022 schema:
4012 type: integer 4023 $ref: '#/components/schemas/Abuse/properties/id'
4013 abuseMessageId: 4024 abuseMessageId:
4014 name: abuseMessageId 4025 name: abuseMessageId
4015 in: path 4026 in: path
4016 required: true 4027 required: true
4017 description: Abuse message id 4028 description: Abuse message id
4018 schema: 4029 schema:
4019 type: integer 4030 $ref: '#/components/schemas/AbuseMessage/properties/id'
4020 captionLanguage: 4031 captionLanguage:
4021 name: captionLanguage 4032 name: captionLanguage
4022 in: path 4033 in: path
4023 required: true 4034 required: true
4024 description: The caption language 4035 description: The caption language
4025 schema: 4036 schema:
4026 type: string 4037 $ref: '#/components/schemas/VideoLanguageSet'
4027 channelHandle: 4038 channelHandle:
4028 name: channelHandle 4039 name: channelHandle
4029 in: path 4040 in: path
@@ -4046,14 +4057,14 @@ components:
4046 required: true 4057 required: true
4047 description: The thread id (root comment id) 4058 description: The thread id (root comment id)
4048 schema: 4059 schema:
4049 type: integer 4060 $ref: '#/components/schemas/VideoCommentThreadTree/properties/comment/properties/id'
4050 commentId: 4061 commentId:
4051 name: commentId 4062 name: commentId
4052 in: path 4063 in: path
4053 required: true 4064 required: true
4054 description: The comment id 4065 description: The comment id
4055 schema: 4066 schema:
4056 type: integer 4067 $ref: '#/components/schemas/VideoComment/properties/id'
4057 isLive: 4068 isLive:
4058 name: isLive 4069 name: isLive
4059 in: query 4070 in: query
@@ -4068,10 +4079,10 @@ components:
4068 description: category id of the video (see [/videos/categories](#operation/getCategories)) 4079 description: category id of the video (see [/videos/categories](#operation/getCategories))
4069 schema: 4080 schema:
4070 oneOf: 4081 oneOf:
4071 - type: integer 4082 - $ref: '#/components/schemas/VideoCategorySet'
4072 - type: array 4083 - type: array
4073 items: 4084 items:
4074 type: integer 4085 $ref: '#/components/schemas/VideoCategorySet'
4075 style: form 4086 style: form
4076 explode: false 4087 explode: false
4077 tagsOneOf: 4088 tagsOneOf:
@@ -4108,10 +4119,10 @@ components:
4108 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language 4119 description: language id of the video (see [/videos/languages](#operation/getLanguages)). Use `_unknown` to filter on videos that don't have a video language
4109 schema: 4120 schema:
4110 oneOf: 4121 oneOf:
4111 - type: string 4122 - $ref: '#/components/schemas/VideoLanguageSet'
4112 - type: array 4123 - type: array
4113 items: 4124 items:
4114 type: string 4125 $ref: '#/components/schemas/VideoLanguageSet'
4115 style: form 4126 style: form
4116 explode: false 4127 explode: false
4117 licenceOneOf: 4128 licenceOneOf:
@@ -4121,10 +4132,10 @@ components:
4121 description: licence id of the video (see [/videos/licences](#operation/getLicences)) 4132 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4122 schema: 4133 schema:
4123 oneOf: 4134 oneOf:
4124 - type: integer 4135 - $ref: '#/components/schemas/VideoLicenceSet'
4125 - type: array 4136 - type: array
4126 items: 4137 items:
4127 type: integer 4138 $ref: '#/components/schemas/VideoLicenceSet'
4128 style: form 4139 style: form
4129 explode: false 4140 explode: false
4130 skipCount: 4141 skipCount:
@@ -4221,45 +4232,72 @@ components:
4221 moderator: Moderator scope 4232 moderator: Moderator scope
4222 user: User scope 4233 user: User scope
4223 schemas: 4234 schemas:
4235 # Resuable core properties
4236 id:
4237 type: integer
4238 minimum: 1
4239 example: 42
4224 UUIDv4: 4240 UUIDv4:
4225 type: string 4241 type: string
4226 format: uuid 4242 format: uuid
4227 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d 4243 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4228 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$' 4244 pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
4229 # the regex above limits the length;
4230 # however, some tools might require explicit settings:
4231 minLength: 36 4245 minLength: 36
4232 maxLength: 36 4246 maxLength: 36
4247 username:
4248 type: string
4249 description: The username of the user
4250 example: chocobozzz
4251 pattern: '/^[a-z0-9._]{1,50}$/'
4252 minLength: 1
4253 maxLength: 50
4254 usernameChannel:
4255 type: string
4256 description: The username for the default channel
4257 example: The Capybara Channel
4258 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4259 password:
4260 type: string
4261 format: password
4262 description: The password of the user
4263 minLength: 6
4264 maxLength: 255
4233 4265
4234 VideoCategorySet: 4266 VideoCategorySet:
4235 type: integer 4267 type: integer
4236 description: category id of the video (see [/videos/categories](#operation/getCategories)) 4268 description: category id of the video (see [/videos/categories](#operation/getCategories))
4269 example: 15
4237 VideoConstantNumber-Category: 4270 VideoConstantNumber-Category:
4238 properties: 4271 properties:
4239 id: 4272 id:
4240 $ref: '#/components/schemas/VideoCategorySet' 4273 $ref: '#/components/schemas/VideoCategorySet'
4241 label: 4274 label:
4242 type: string 4275 type: string
4276 example: Science & Technology
4243 4277
4244 VideoLicenceSet: 4278 VideoLicenceSet:
4245 type: integer 4279 type: integer
4246 description: licence id of the video (see [/videos/licences](#operation/getLicences)) 4280 description: licence id of the video (see [/videos/licences](#operation/getLicences))
4281 example: 2
4247 VideoConstantNumber-Licence: 4282 VideoConstantNumber-Licence:
4248 properties: 4283 properties:
4249 id: 4284 id:
4250 $ref: '#/components/schemas/VideoLicenceSet' 4285 $ref: '#/components/schemas/VideoLicenceSet'
4251 label: 4286 label:
4252 type: string 4287 type: string
4253 4288 example: Attribution - Share Alike
4289
4254 VideoLanguageSet: 4290 VideoLanguageSet:
4255 type: string 4291 type: string
4256 description: language id of the video (see [/videos/languages](#operation/getLanguages)) 4292 description: language id of the video (see [/videos/languages](#operation/getLanguages))
4293 example: en
4257 VideoConstantString-Language: 4294 VideoConstantString-Language:
4258 properties: 4295 properties:
4259 id: 4296 id:
4260 $ref: '#/components/schemas/VideoLanguageSet' 4297 $ref: '#/components/schemas/VideoLanguageSet'
4261 label: 4298 label:
4262 type: string 4299 type: string
4300 example: English
4263 4301
4264 VideoPlaylistPrivacySet: 4302 VideoPlaylistPrivacySet:
4265 type: integer 4303 type: integer
@@ -4411,7 +4449,7 @@ components:
4411 VideoChannelSummary: 4449 VideoChannelSummary:
4412 properties: 4450 properties:
4413 id: 4451 id:
4414 type: integer 4452 $ref: '#/components/schemas/id'
4415 name: 4453 name:
4416 type: string 4454 type: string
4417 displayName: 4455 displayName:
@@ -4473,7 +4511,7 @@ components:
4473 - type: object 4511 - type: object
4474 properties: 4512 properties:
4475 id: 4513 id:
4476 type: integer 4514 $ref: '#/components/schemas/id'
4477 type: 4515 type:
4478 type: integer 4516 type: integer
4479 enum: 4517 enum:
@@ -4509,20 +4547,21 @@ components:
4509 VideoInfo: 4547 VideoInfo:
4510 properties: 4548 properties:
4511 id: 4549 id:
4512 type: integer 4550 $ref: '#/components/schemas/Video/properties/id'
4513 uuid: 4551 uuid:
4514 $ref: '#/components/schemas/UUIDv4' 4552 $ref: '#/components/schemas/Video/properties/uuid'
4515 name: 4553 name:
4516 type: string 4554 $ref: '#/components/schemas/Video/properties/name'
4517 minLength: 3
4518 maxLength: 120
4519 Video: 4555 Video:
4520 properties: 4556 properties:
4521 id: 4557 id:
4522 type: integer 4558 description: object id for the video
4523 example: 8 4559 allOf:
4560 - $ref: '#/components/schemas/id'
4524 uuid: 4561 uuid:
4525 $ref: '#/components/schemas/UUIDv4' 4562 description: universal identifier for the video, that can be used across instances
4563 allOf:
4564 - $ref: '#/components/schemas/UUIDv4'
4526 isLive: 4565 isLive:
4527 type: boolean 4566 type: boolean
4528 createdAt: 4567 createdAt:
@@ -4546,13 +4585,21 @@ components:
4546 example: 2010-10-01T10:52:46.396Z 4585 example: 2010-10-01T10:52:46.396Z
4547 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt` 4586 description: used to represent a date of first publication, prior to the practical publication date of `publishedAt`
4548 category: 4587 category:
4549 $ref: '#/components/schemas/VideoConstantNumber-Category' 4588 allOf:
4589 - $ref: '#/components/schemas/VideoConstantNumber-Category'
4590 description: category in which the video is classified
4550 licence: 4591 licence:
4551 $ref: '#/components/schemas/VideoConstantNumber-Licence' 4592 allOf:
4593 - $ref: '#/components/schemas/VideoConstantNumber-Licence'
4594 description: licence under which the video is distributed
4552 language: 4595 language:
4553 $ref: '#/components/schemas/VideoConstantString-Language' 4596 allOf:
4597 - $ref: '#/components/schemas/VideoConstantString-Language'
4598 description: main language used in the video
4554 privacy: 4599 privacy:
4555 $ref: '#/components/schemas/VideoPrivacyConstant' 4600 allOf:
4601 - $ref: '#/components/schemas/VideoPrivacyConstant'
4602 description: privacy policy used to distribute the video
4556 description: 4603 description:
4557 type: string 4604 type: string
4558 example: | 4605 example: |
@@ -4571,6 +4618,7 @@ components:
4571 type: boolean 4618 type: boolean
4572 name: 4619 name:
4573 type: string 4620 type: string
4621 description: title of the video
4574 example: What is PeerTube? 4622 example: What is PeerTube?
4575 minLength: 3 4623 minLength: 3
4576 maxLength: 120 4624 maxLength: 120
@@ -4598,7 +4646,9 @@ components:
4598 type: boolean 4646 type: boolean
4599 nullable: true 4647 nullable: true
4600 state: 4648 state:
4601 $ref: '#/components/schemas/VideoStateConstant' 4649 allOf:
4650 - $ref: '#/components/schemas/VideoStateConstant'
4651 description: represents the internal state of the video processing within the PeerTube instance
4602 scheduledUpdate: 4652 scheduledUpdate:
4603 nullable: true 4653 nullable: true
4604 allOf: 4654 allOf:
@@ -4677,7 +4727,7 @@ components:
4677 FileRedundancyInformation: 4727 FileRedundancyInformation:
4678 properties: 4728 properties:
4679 id: 4729 id:
4680 type: integer 4730 $ref: '#/components/schemas/id'
4681 fileUrl: 4731 fileUrl:
4682 type: string 4732 type: string
4683 format: url 4733 format: url
@@ -4702,7 +4752,7 @@ components:
4702 VideoRedundancy: 4752 VideoRedundancy:
4703 properties: 4753 properties:
4704 id: 4754 id:
4705 type: integer 4755 $ref: '#/components/schemas/id'
4706 name: 4756 name:
4707 type: string 4757 type: string
4708 url: 4758 url:
@@ -4736,8 +4786,7 @@ components:
4736 VideoImport: 4786 VideoImport:
4737 properties: 4787 properties:
4738 id: 4788 id:
4739 type: integer 4789 $ref: '#/components/schemas/id'
4740 example: 2
4741 targetUrl: 4790 targetUrl:
4742 type: string 4791 type: string
4743 format: url 4792 format: url
@@ -4773,8 +4822,7 @@ components:
4773 Abuse: 4822 Abuse:
4774 properties: 4823 properties:
4775 id: 4824 id:
4776 type: integer 4825 $ref: '#/components/schemas/id'
4777 example: 7
4778 reason: 4826 reason:
4779 type: string 4827 type: string
4780 example: The video is a spam 4828 example: The video is a spam
@@ -4799,7 +4847,7 @@ components:
4799 AbuseMessage: 4847 AbuseMessage:
4800 properties: 4848 properties:
4801 id: 4849 id:
4802 type: integer 4850 $ref: '#/components/schemas/id'
4803 message: 4851 message:
4804 type: string 4852 type: string
4805 minLength: 2 4853 minLength: 2
@@ -4814,9 +4862,9 @@ components:
4814 VideoBlacklist: 4862 VideoBlacklist:
4815 properties: 4863 properties:
4816 id: 4864 id:
4817 type: integer 4865 $ref: '#/components/schemas/id'
4818 videoId: 4866 videoId:
4819 type: integer 4867 $ref: '#/components/schemas/Video/properties/id'
4820 createdAt: 4868 createdAt:
4821 type: string 4869 type: string
4822 format: date-time 4870 format: date-time
@@ -4843,29 +4891,12 @@ components:
4843 type: integer 4891 type: integer
4844 nsfw: 4892 nsfw:
4845 type: boolean 4893 type: boolean
4846 VideoChannel:
4847 properties:
4848 displayName:
4849 type: string
4850 minLength: 1
4851 maxLength: 120
4852 description:
4853 type: string
4854 minLength: 3
4855 maxLength: 1000
4856 isLocal:
4857 type: boolean
4858 ownerAccount:
4859 type: object
4860 properties:
4861 id:
4862 type: integer
4863 uuid:
4864 $ref: '#/components/schemas/UUIDv4'
4865 VideoPlaylist: 4894 VideoPlaylist:
4866 properties: 4895 properties:
4867 id: 4896 id:
4868 type: integer 4897 $ref: '#/components/schemas/id'
4898 uuid:
4899 $ref: '#/components/schemas/UUIDv4'
4869 createdAt: 4900 createdAt:
4870 type: string 4901 type: string
4871 format: date-time 4902 format: date-time
@@ -4876,8 +4907,6 @@ components:
4876 type: string 4907 type: string
4877 minLength: 3 4908 minLength: 3
4878 maxLength: 1000 4909 maxLength: 1000
4879 uuid:
4880 $ref: '#/components/schemas/UUIDv4'
4881 displayName: 4910 displayName:
4882 type: string 4911 type: string
4883 minLength: 1 4912 minLength: 1
@@ -4886,6 +4915,7 @@ components:
4886 type: boolean 4915 type: boolean
4887 videoLength: 4916 videoLength:
4888 type: integer 4917 type: integer
4918 minimum: 0
4889 thumbnailPath: 4919 thumbnailPath:
4890 type: string 4920 type: string
4891 privacy: 4921 privacy:
@@ -4899,20 +4929,21 @@ components:
4899 VideoComment: 4929 VideoComment:
4900 properties: 4930 properties:
4901 id: 4931 id:
4902 type: integer 4932 $ref: '#/components/schemas/id'
4903 url: 4933 url:
4904 type: string 4934 type: string
4905 format: url 4935 format: url
4906 text: 4936 text:
4907 type: string 4937 type: string
4938 description: Text of the comment in Markdown
4908 minLength: 1 4939 minLength: 1
4909 maxLength: 10000 4940 maxLength: 10000
4910 threadId: 4941 threadId:
4911 type: integer 4942 type: integer
4912 inReplyToCommentId: 4943 inReplyToCommentId:
4913 type: integer 4944 $ref: '#/components/schemas/id'
4914 videoId: 4945 videoId:
4915 type: integer 4946 $ref: '#/components/schemas/Video/properties/id'
4916 createdAt: 4947 createdAt:
4917 type: string 4948 type: string
4918 format: date-time 4949 format: date-time
@@ -4921,8 +4952,10 @@ components:
4921 format: date-time 4952 format: date-time
4922 totalRepliesFromVideoAuthor: 4953 totalRepliesFromVideoAuthor:
4923 type: integer 4954 type: integer
4955 minimum: 0
4924 totalReplies: 4956 totalReplies:
4925 type: integer 4957 type: integer
4958 minimum: 0
4926 account: 4959 account:
4927 $ref: '#/components/schemas/Account' 4960 $ref: '#/components/schemas/Account'
4928 VideoCommentThreadTree: 4961 VideoCommentThreadTree:
@@ -4952,8 +4985,7 @@ components:
4952 ActorInfo: 4985 ActorInfo:
4953 properties: 4986 properties:
4954 id: 4987 id:
4955 type: integer 4988 $ref: '#/components/schemas/id'
4956 example: 11
4957 name: 4989 name:
4958 type: string 4990 type: string
4959 displayName: 4991 displayName:
@@ -4970,8 +5002,7 @@ components:
4970 Actor: 5002 Actor:
4971 properties: 5003 properties:
4972 id: 5004 id:
4973 type: integer 5005 $ref: '#/components/schemas/id'
4974 example: 11
4975 url: 5006 url:
4976 type: string 5007 type: string
4977 format: url 5008 format: url
@@ -4999,8 +5030,7 @@ components:
4999 - $ref: '#/components/schemas/Actor' 5030 - $ref: '#/components/schemas/Actor'
5000 - properties: 5031 - properties:
5001 userId: 5032 userId:
5002 type: string 5033 $ref: '#/components/schemas/id'
5003 example: 2
5004 displayName: 5034 displayName:
5005 type: string 5035 type: string
5006 description: 5036 description:
@@ -5181,8 +5211,10 @@ components:
5181 properties: 5211 properties:
5182 videoQuota: 5212 videoQuota:
5183 type: integer 5213 type: integer
5214 example: 16810141515
5184 videoQuotaDaily: 5215 videoQuotaDaily:
5185 type: integer 5216 type: integer
5217 example: 1681014151
5186 trending: 5218 trending:
5187 type: object 5219 type: object
5188 properties: 5220 properties:
@@ -5301,8 +5333,10 @@ components:
5301 properties: 5333 properties:
5302 videoQuota: 5334 videoQuota:
5303 type: integer 5335 type: integer
5336 example: 16810141515
5304 videoQuotaDaily: 5337 videoQuotaDaily:
5305 type: integer 5338 type: integer
5339 example: 1681014151
5306 transcoding: 5340 transcoding:
5307 type: object 5341 type: object
5308 description: Settings pertaining to transcoding jobs 5342 description: Settings pertaining to transcoding jobs
@@ -5399,7 +5433,7 @@ components:
5399 Follow: 5433 Follow:
5400 properties: 5434 properties:
5401 id: 5435 id:
5402 type: integer 5436 $ref: '#/components/schemas/id'
5403 follower: 5437 follower:
5404 $ref: '#/components/schemas/Actor' 5438 $ref: '#/components/schemas/Actor'
5405 following: 5439 following:
@@ -5438,9 +5472,7 @@ components:
5438 Job: 5472 Job:
5439 properties: 5473 properties:
5440 id: 5474 id:
5441 type: integer 5475 $ref: '#/components/schemas/id'
5442 minimum: 0
5443 example: 42
5444 state: 5476 state:
5445 type: string 5477 type: string
5446 enum: 5478 enum:
@@ -5484,22 +5516,25 @@ components:
5484 type: object 5516 type: object
5485 properties: 5517 properties:
5486 id: 5518 id:
5487 type: integer 5519 $ref: '#/components/schemas/id'
5488 example: 8
5489 account: 5520 account:
5490 type: object 5521 type: object
5491 properties: 5522 properties:
5492 id: 5523 id:
5493 type: integer 5524 $ref: '#/components/schemas/id'
5494 example: 37
5495 VideoUploadRequestCommon: 5525 VideoUploadRequestCommon:
5496 properties: 5526 properties:
5497 name: 5527 name:
5498 description: Video name 5528 description: Video name
5499 type: string 5529 type: string
5530 example: What is PeerTube?
5531 minLength: 3
5532 maxLength: 120
5500 channelId: 5533 channelId:
5501 description: Channel id that will contain this video 5534 description: Channel id that will contain this video
5502 type: integer 5535 type: integer
5536 example: 3
5537 minimum: 1
5503 privacy: 5538 privacy:
5504 $ref: '#/components/schemas/VideoPrivacySet' 5539 $ref: '#/components/schemas/VideoPrivacySet'
5505 category: 5540 category:
@@ -5511,6 +5546,8 @@ components:
5511 description: 5546 description:
5512 description: Video description 5547 description: Video description
5513 type: string 5548 type: string
5549 example: |
5550 **[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)**
5514 waitTranscoding: 5551 waitTranscoding:
5515 description: Whether or not we wait transcoding before publish the video 5552 description: Whether or not we wait transcoding before publish the video
5516 type: boolean 5553 type: boolean
@@ -5527,6 +5564,9 @@ components:
5527 minItems: 1 5564 minItems: 1
5528 maxItems: 5 5565 maxItems: 5
5529 uniqueItems: true 5566 uniqueItems: true
5567 example:
5568 - framasoft
5569 - peertube
5530 items: 5570 items:
5531 type: string 5571 type: string
5532 minLength: 2 5572 minLength: 2
@@ -5576,6 +5616,7 @@ components:
5576 description: Video filename including extension 5616 description: Video filename including extension
5577 type: string 5617 type: string
5578 format: filename 5618 format: filename
5619 example: what_is_peertube.mp4
5579 thumbnailfile: 5620 thumbnailfile:
5580 description: Video thumbnail file 5621 description: Video thumbnail file
5581 type: string 5622 type: string
@@ -5590,10 +5631,9 @@ components:
5590 type: object 5631 type: object
5591 properties: 5632 properties:
5592 id: 5633 id:
5593 type: integer 5634 $ref: '#/components/schemas/Video/properties/id'
5594 example: 8
5595 uuid: 5635 uuid:
5596 $ref: '#/components/schemas/UUIDv4' 5636 $ref: '#/components/schemas/Video/properties/uuid'
5597 CommentThreadResponse: 5637 CommentThreadResponse:
5598 properties: 5638 properties:
5599 total: 5639 total:
@@ -5671,10 +5711,7 @@ components:
5671 type: string 5711 type: string
5672 description: Theme enabled by this user 5712 description: Theme enabled by this user
5673 username: 5713 username:
5674 type: string 5714 $ref: '#/components/schemas/username'
5675 description: The user username
5676 minLength: 1
5677 maxLength: 50
5678 videoChannels: 5715 videoChannels:
5679 type: array 5716 type: array
5680 items: 5717 items:
@@ -5713,31 +5750,23 @@ components:
5713 AddUser: 5750 AddUser:
5714 properties: 5751 properties:
5715 username: 5752 username:
5716 type: string 5753 $ref: '#/components/schemas/username'
5717 description: The user username
5718 minLength: 1
5719 maxLength: 50
5720 pattern: '/^[a-z0-9._]{1,50}$/'
5721 password: 5754 password:
5722 type: string 5755 $ref: '#/components/schemas/password'
5723 format: password
5724 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
5725 minLength: 6
5726 maxLength: 255
5727 email: 5756 email:
5728 type: string 5757 type: string
5729 format: email 5758 format: email
5730 description: The user email 5759 description: The user email
5731 videoQuota: 5760 videoQuota:
5732 type: integer 5761 type: integer
5733 description: The user video quota 5762 description: The user video quota in bytes
5763 example: -1
5734 videoQuotaDaily: 5764 videoQuotaDaily:
5735 type: integer 5765 type: integer
5736 description: The user daily video quota 5766 description: The user daily video quota in bytes
5767 example: -1
5737 channelName: 5768 channelName:
5738 type: string 5769 $ref: '#/components/schemas/usernameChannel'
5739 description: The user default channel username
5740 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5741 role: 5770 role:
5742 $ref: '#/components/schemas/UserRole' 5771 $ref: '#/components/schemas/UserRole'
5743 adminFlags: 5772 adminFlags:
@@ -5751,9 +5780,6 @@ components:
5751 - role 5780 - role
5752 UpdateUser: 5781 UpdateUser:
5753 properties: 5782 properties:
5754 id:
5755 type: string
5756 description: The user id
5757 email: 5783 email:
5758 type: string 5784 type: string
5759 format: email 5785 format: email
@@ -5763,10 +5789,10 @@ components:
5763 description: Set the email as verified 5789 description: Set the email as verified
5764 videoQuota: 5790 videoQuota:
5765 type: integer 5791 type: integer
5766 description: The updated video quota of the user 5792 description: The updated video quota of the user in bytes
5767 videoQuotaDaily: 5793 videoQuotaDaily:
5768 type: integer 5794 type: integer
5769 description: The updated daily video quota of the user 5795 description: The updated daily video quota of the user in bytes
5770 pluginAuth: 5796 pluginAuth:
5771 type: string 5797 type: string
5772 nullable: true 5798 nullable: true
@@ -5776,16 +5802,10 @@ components:
5776 $ref: '#/components/schemas/UserRole' 5802 $ref: '#/components/schemas/UserRole'
5777 adminFlags: 5803 adminFlags:
5778 $ref: '#/components/schemas/UserAdminFlags' 5804 $ref: '#/components/schemas/UserAdminFlags'
5779 required:
5780 - id
5781 UpdateMe: 5805 UpdateMe:
5782 properties: 5806 properties:
5783 password: 5807 password:
5784 type: string 5808 $ref: '#/components/schemas/password'
5785 format: password
5786 description: Your new password
5787 minLength: 6
5788 maxLength: 255
5789 email: 5809 email:
5790 type: string 5810 type: string
5791 format: email 5811 format: email
@@ -5808,8 +5828,7 @@ components:
5808 GetMeVideoRating: 5828 GetMeVideoRating:
5809 properties: 5829 properties:
5810 id: 5830 id:
5811 type: string 5831 $ref: '#/components/schemas/id'
5812 description: Id of the video
5813 rating: 5832 rating:
5814 type: string 5833 type: string
5815 enum: 5834 enum:
@@ -5837,17 +5856,9 @@ components:
5837 RegisterUser: 5856 RegisterUser:
5838 properties: 5857 properties:
5839 username: 5858 username:
5840 type: string 5859 $ref: '#/components/schemas/username'
5841 description: The username of the user
5842 minLength: 1
5843 maxLength: 50
5844 pattern: '/^[a-z0-9._]{1,50}$/'
5845 password: 5860 password:
5846 type: string 5861 $ref: '#/components/schemas/password'
5847 format: password
5848 description: The password of the user
5849 minLength: 6
5850 maxLength: 255
5851 email: 5862 email:
5852 type: string 5863 type: string
5853 format: email 5864 format: email
@@ -5861,9 +5872,7 @@ components:
5861 type: object 5872 type: object
5862 properties: 5873 properties:
5863 name: 5874 name:
5864 type: string 5875 $ref: '#/components/schemas/usernameChannel'
5865 description: The username for the default channel
5866 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
5867 displayName: 5876 displayName:
5868 type: string 5877 type: string
5869 description: The display name for the default channel 5878 description: The display name for the default channel
@@ -5874,40 +5883,64 @@ components:
5874 - password 5883 - password
5875 - email 5884 - email
5876 5885
5877 VideoChannelCommon: 5886 VideoChannel:
5878 properties: 5887 properties:
5888 # GET/POST/PUT properties
5879 displayName: 5889 displayName:
5880 type: string 5890 type: string
5891 example: Videos of Framasoft
5881 minLength: 1 5892 minLength: 1
5882 maxLength: 120 5893 maxLength: 120
5883 description: 5894 description:
5884 type: string 5895 type: string
5896 example: Videos made with <3 by Framasoft
5885 minLength: 3 5897 minLength: 3
5886 maxLength: 1000 5898 maxLength: 1000
5887 support: 5899 support:
5888 type: string 5900 type: string
5889 description: 'A text shown by default on all videos of this channel, to tell the audience how to support it' 5901 description: text shown by default on all videos of this channel, to tell the audience how to support it
5890 example: Please support my work on <insert crowdfunding plateform>! <3 5902 example: Please support my work on <insert crowdfunding plateform>! <3
5891 minLength: 3 5903 minLength: 3
5892 maxLength: 1000 5904 maxLength: 1000
5905 # GET-only properties
5906 id:
5907 readOnly: true
5908 allOf:
5909 - $ref: '#/components/schemas/id'
5910 isLocal:
5911 readOnly: true
5912 type: boolean
5913 updatedAt:
5914 readOnly: true
5915 type: string
5916 format: date-time
5917 ownerAccount:
5918 readOnly: true
5919 nullable: true
5920 type: object
5921 properties:
5922 id:
5923 type: integer
5924 uuid:
5925 $ref: '#/components/schemas/UUIDv4'
5893 VideoChannelCreate: 5926 VideoChannelCreate:
5894 allOf: 5927 allOf:
5895 - $ref: '#/components/schemas/VideoChannelCommon' 5928 - $ref: '#/components/schemas/VideoChannel'
5896 - properties: 5929 - properties:
5897 name: 5930 name:
5898 type: string 5931 description: username of the channel to create
5899 minLength: 1 5932 allOf:
5900 maxLength: 120 5933 - $ref: '#/components/schemas/usernameChannel'
5901 required: 5934 required:
5902 - name 5935 - name
5903 - displayName 5936 - displayName
5904 VideoChannelUpdate: 5937 VideoChannelUpdate:
5905 allOf: 5938 allOf:
5906 - $ref: '#/components/schemas/VideoChannelCommon' 5939 - $ref: '#/components/schemas/VideoChannel'
5907 - properties: 5940 - properties:
5908 bulkVideosSupportUpdate: 5941 bulkVideosSupportUpdate:
5909 type: boolean 5942 type: boolean
5910 description: 'Update the support field for all videos of this channel' 5943 description: Update the support field for all videos of this channel
5911 VideoChannelList: 5944 VideoChannelList:
5912 properties: 5945 properties:
5913 total: 5946 total:
@@ -6123,7 +6156,7 @@ components:
6123 Notification: 6156 Notification:
6124 properties: 6157 properties:
6125 id: 6158 id:
6126 type: integer 6159 $ref: '#/components/schemas/id'
6127 type: 6160 type:
6128 type: integer 6161 type: integer
6129 description: > 6162 description: >
@@ -6171,7 +6204,7 @@ components:
6171 type: object 6204 type: object
6172 properties: 6205 properties:
6173 id: 6206 id:
6174 type: integer 6207 $ref: '#/components/schemas/id'
6175 video: 6208 video:
6176 nullable: true 6209 nullable: true
6177 $ref: '#/components/schemas/VideoInfo' 6210 $ref: '#/components/schemas/VideoInfo'
@@ -6191,7 +6224,7 @@ components:
6191 type: object 6224 type: object
6192 properties: 6225 properties:
6193 id: 6226 id:
6194 type: integer 6227 $ref: '#/components/schemas/id'
6195 threadId: 6228 threadId:
6196 type: integer 6229 type: integer
6197 video: 6230 video:
@@ -6203,7 +6236,7 @@ components:
6203 type: object 6236 type: object
6204 properties: 6237 properties:
6205 id: 6238 id:
6206 type: integer 6239 $ref: '#/components/schemas/id'
6207 video: 6240 video:
6208 allOf: 6241 allOf:
6209 - $ref: '#/components/schemas/VideoInfo' 6242 - $ref: '#/components/schemas/VideoInfo'
@@ -6212,7 +6245,7 @@ components:
6212 type: object 6245 type: object
6213 properties: 6246 properties:
6214 id: 6247 id:
6215 type: integer 6248 $ref: '#/components/schemas/id'
6216 video: 6249 video:
6217 allOf: 6250 allOf:
6218 - $ref: '#/components/schemas/VideoInfo' 6251 - $ref: '#/components/schemas/VideoInfo'
@@ -6225,7 +6258,7 @@ components:
6225 nullable: true 6258 nullable: true
6226 properties: 6259 properties:
6227 id: 6260 id:
6228 type: integer 6261 $ref: '#/components/schemas/id'
6229 follower: 6262 follower:
6230 $ref: '#/components/schemas/ActorInfo' 6263 $ref: '#/components/schemas/ActorInfo'
6231 state: 6264 state: