X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=support%2Fdoc%2Fapi%2Fopenapi.yaml;h=30a250c70be0805d24399d4d99462b24deced89d;hb=22af8aac79a8bcd8d0c576b0be000ba2233ba1c5;hp=cb6ba9af5e46a314ff054774e3622841dcf0693e;hpb=14d1b7b95a096b933ea353a715f4868a89dc5822;p=github%2FChocobozzz%2FPeerTube.git diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index cb6ba9af5..30a250c70 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: PeerTube - version: 1.1.0 + version: 1.4.1 contact: name: PeerTube Community url: 'https://joinpeertube.org' @@ -23,7 +23,7 @@ info: # 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 + sessions, and authenticate using this session token. One session token can currently be used at a time. # Errors @@ -38,7 +38,7 @@ info: } ``` externalDocs: - url: https://docs.joinpeertube.org/api.html + url: https://docs.joinpeertube.org/api-rest-reference.html tags: - name: Accounts description: > @@ -61,7 +61,7 @@ tags: 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 + server then deals with inter-server ActivityPub operations and propagates information across its social graph by posting activities to actors' inbox endpoints. - name: Video Abuse @@ -96,9 +96,11 @@ x-tagGroups: tags: - Accounts - User + - My User - name: Videos tags: - Video + - Video Caption - Video Channel - Video Comment - Video Following @@ -152,7 +154,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Video' + $ref: '#/components/schemas/VideoListResponse' x-code-samples: - lang: JavaScript source: | @@ -488,13 +490,28 @@ paths: schema: $ref: '#/components/schemas/UpdateUser' required: true + /users/register: + post: + summary: Register a user + tags: + - User + responses: + '204': + $ref: '#/paths/~1users~1me/put/responses/204' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RegisterUser' + required: true /users/me: get: summary: Get current user information security: - - OAuth2: [] + - OAuth2: + - user tags: - - User + - My User responses: '200': description: successful operation @@ -507,25 +524,46 @@ paths: put: summary: Update current user information security: - - OAuth2: [] + - OAuth2: + - user tags: - - User + - My User responses: '204': - description: Successful operation + description: successful operation requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateMe' required: true + /users/me/videos/imports: + get: + summary: Get video imports of current user + security: + - OAuth2: + - user + tags: + - My User + parameters: + - $ref: '#/components/parameters/start' + - $ref: '#/components/parameters/count' + - $ref: '#/components/parameters/sort' + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/VideoImport' /users/me/video-quota-used: get: summary: Get current user used quota security: - - OAuth2: [] + - OAuth2: + - user tags: - - User + - My User responses: '200': description: successful operation @@ -539,7 +577,7 @@ paths: security: - OAuth2: [] tags: - - User + - My User parameters: - name: videoId in: path @@ -558,9 +596,10 @@ paths: get: summary: Get videos of the current user security: - - OAuth2: [] + - OAuth2: + - user tags: - - User + - My User parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' @@ -571,30 +610,104 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/Video' - /users/register: + $ref: '#/components/schemas/VideoListResponse' + /users/me/subscriptions: + get: + summary: Get subscriptions of the current user + security: + - OAuth2: + - user + tags: + - My User + parameters: + - $ref: '#/components/parameters/start' + - $ref: '#/components/parameters/count' + - $ref: '#/components/parameters/sort' + responses: + '200': + description: successful operation post: - summary: Register a user + summary: Add subscription to the current user + security: + - OAuth2: + - user tags: - - User + - My User responses: - '204': - $ref: '#/paths/~1users~1me/put/responses/204' - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterUser' - required: true + '200': + description: successful operation + /users/me/subscriptions/exist: + get: + summary: Get if subscriptions exist for the current user + security: + - OAuth2: + - user + tags: + - My User + parameters: + - $ref: '#/components/parameters/subscriptionsUris' + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: object + /users/me/subscriptions/videos: + get: + summary: Get videos of subscriptions of the current user + security: + - OAuth2: + - user + tags: + - My User + parameters: + - $ref: '#/components/parameters/start' + - $ref: '#/components/parameters/count' + - $ref: '#/components/parameters/sort' + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/VideoListResponse' + '/users/me/subscriptions/{subscriptionHandle}': + get: + summary: Get subscription of the current user for a given uri + security: + - OAuth2: + - user + tags: + - My User + parameters: + - $ref: '#/components/parameters/subscriptionHandle' + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/VideoChannel' + delete: + summary: Delete subscription of the current user for a given uri + security: + - OAuth2: + - user + tags: + - My User + parameters: + - $ref: '#/components/parameters/subscriptionHandle' + responses: + '200': + description: successful operation /users/me/avatar/pick: post: summary: Update current user avatar security: - OAuth2: [] tags: - - User + - My User responses: '200': description: successful operation @@ -638,12 +751,10 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/Video' + $ref: '#/components/schemas/VideoListResponse' /videos/categories: get: - summary: Get list of video licences known by the server + summary: Get list of video categories known by the server tags: - Video responses: @@ -705,14 +816,10 @@ paths: tags: - Video parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: - '200': + '204': description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Video' requestBody: content: multipart/form-data: @@ -750,39 +857,36 @@ paths: description: Video name type: string tags: - description: Video tags - type: string + description: Video tags (maximum 5 tags each between 2 and 30 characters) + type: array + minItems: 1 + maxItems: 5 + items: + type: string + minLength: 2 + maxLength: 30 commentsEnabled: description: Enable or disable comments for this video type: string - scheduleUpdate: &ref_0 - type: object - properties: - privacy: - type: string - enum: - - Public - - Unlisted - description: Video privacy target - updateAt: - type: string - format: date - description: When to update the video - required: - - updateAt + originallyPublishedAt: + description: Date when the content was originally published + type: string + format: date-time + scheduleUpdate: + $ref: '#/components/schemas/VideoScheduledUpdate' get: summary: Get a video by its id tags: - Video parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '200': description: successful operation content: application/json: schema: - $ref: '#/components/schemas/Video' + $ref: '#/components/schemas/VideoDetails' delete: summary: Delete a video by its id security: @@ -790,7 +894,7 @@ paths: tags: - Video parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -800,7 +904,7 @@ paths: tags: - Video parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '200': description: successful operation @@ -814,19 +918,19 @@ paths: tags: - Video parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' '/videos/{id}/watching': put: - summary: Indicate progress of in watching the video by its id for a user + summary: Set watching progress of a video by its id for a user tags: - Video security: - OAuth2: [] parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' requestBody: content: application/json: @@ -843,8 +947,6 @@ paths: - Video security: - OAuth2: [] - parameters: - - $ref: '#/components/parameters/id2' responses: '200': description: successful operation @@ -856,7 +958,7 @@ paths: security: - OAuth2: [] parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -868,7 +970,7 @@ paths: security: - OAuth2: [] parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -880,7 +982,7 @@ paths: security: - OAuth2: [] parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' requestBody: required: true content: @@ -931,7 +1033,7 @@ paths: description: Video preview file type: string privacy: - $ref: '#/components/schemas/VideoPrivacy' + $ref: '#/components/schemas/VideoPrivacySet' category: description: Video category type: string @@ -957,12 +1059,23 @@ paths: description: Video name type: string tags: - description: Video tags - type: string + description: Video tags (maximum 5 tags each between 2 and 30 characters) + type: array + minItems: 1 + maxItems: 5 + items: + type: string + minLength: 2 + maxLength: 30 commentsEnabled: description: Enable or disable comments for this video type: string - scheduleUpdate: *ref_0 + originallyPublishedAt: + description: Date when the content was originally published + type: string + format: date-time + scheduleUpdate: + $ref: '#/components/schemas/VideoScheduledUpdate' required: - videofile - channelId @@ -993,6 +1106,88 @@ paths: channelId=$CHANNEL_ID \ name=$NAME \ "Authorization:Bearer $token" + /videos/imports: + post: + summary: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator) + security: + - OAuth2: [] + tags: + - Video + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/VideoUploadResponse' + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + torrentfile: + description: Torrent File + type: string + format: binary + targetUrl: + description: HTTP target URL + type: string + magnetUri: + description: Magnet URI + type: string + channelId: + description: Channel id that will contain this video + type: number + thumbnailfile: + description: Video thumbnail file + type: string + previewfile: + description: Video preview file + type: string + privacy: + $ref: '#/components/schemas/VideoPrivacySet' + category: + description: Video category + type: string + licence: + description: Video licence + type: string + language: + description: Video language + type: string + description: + description: Video description + type: string + waitTranscoding: + description: Whether or not we wait transcoding before publish the video + type: string + support: + description: Text describing how to support the video uploader + type: string + nsfw: + description: Whether or not this video contains sensitive content + type: string + name: + description: Video name + type: string + tags: + description: Video tags (maximum 5 tags each between 2 and 30 characters) + type: array + minItems: 1 + maxItems: 5 + items: + type: string + minLength: 2 + maxLength: 30 + commentsEnabled: + description: Enable or disable comments for this video + type: string + scheduleUpdate: + $ref: '#/components/schemas/VideoScheduledUpdate' + required: + - channelId + - name /videos/abuse: get: summary: Get list of reported video abuses @@ -1021,7 +1216,7 @@ paths: tags: - Video Abuse parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -1035,7 +1230,7 @@ paths: tags: - Video Blacklist parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -1048,7 +1243,7 @@ paths: tags: - Video Blacklist parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -1074,6 +1269,58 @@ paths: type: array items: $ref: '#/components/schemas/VideoBlacklist' + /videos/{id}/captions: + get: + summary: Get list of video's captions + tags: + - Video Caption + parameters: + - $ref: '#/components/parameters/idOrUUID' + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: object + properties: + total: + type: integer + data: + type: array + items: + $ref: '#/components/schemas/VideoCaption' + /videos/{id}/captions/{captionLanguage}: + put: + summary: Add or replace a video caption + tags: + - Video Caption + parameters: + - $ref: '#/components/parameters/idOrUUID' + - $ref: '#/components/parameters/captionLanguage' + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + captionfile: + description: The file to upload. + type: string + format: binary + responses: + '204': + $ref: '#/paths/~1users~1me/put/responses/204' + delete: + summary: Delete a video caption + tags: + - Video Caption + parameters: + - $ref: '#/components/parameters/idOrUUID' + - $ref: '#/components/parameters/captionLanguage' + responses: + '204': + $ref: '#/paths/~1users~1me/put/responses/204' /video-channels: get: summary: Get list of video channels @@ -1102,14 +1349,17 @@ paths: '204': $ref: '#/paths/~1users~1me/put/responses/204' requestBody: - $ref: '#/components/requestBodies/VideoChannelInput' - '/video-channels/{id}': + content: + application/json: + schema: + $ref: '#/components/schemas/VideoChannelCreate' + '/video-channels/{channelHandle}': get: summary: Get a video channel by its id tags: - Video Channel parameters: - - $ref: '#/components/parameters/id3' + - $ref: '#/components/parameters/channelHandle' responses: '200': description: successful operation @@ -1124,12 +1374,15 @@ paths: tags: - Video Channel parameters: - - $ref: '#/components/parameters/id3' + - $ref: '#/components/parameters/channelHandle' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' requestBody: - $ref: '#/components/requestBodies/VideoChannelInput' + content: + application/json: + schema: + $ref: '#/components/schemas/VideoChannelUpdate' delete: summary: Delete a video channel by its id security: @@ -1137,24 +1390,25 @@ paths: tags: - Video Channel parameters: - - $ref: '#/components/parameters/id3' + - $ref: '#/components/parameters/channelHandle' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' - '/video-channels/{id}/videos': + '/video-channels/{channelHandle}/videos': get: summary: Get videos of a video channel by its id tags: + - Video - Video Channel parameters: - - $ref: '#/components/parameters/id3' + - $ref: '#/components/parameters/channelHandle' responses: '200': description: successful operation content: application/json: schema: - $ref: '#/components/schemas/Video' + $ref: '#/components/schemas/VideoListResponse' '/accounts/{name}/video-channels': get: summary: Get video channels of an account by its name @@ -1171,13 +1425,43 @@ paths: type: array items: $ref: '#/components/schemas/VideoChannel' + '/accounts/{name}/ratings': + get: + summary: Get ratings of an account by its name + security: + - OAuth2: [] + tags: + - User + parameters: + - $ref: '#/components/parameters/name' + - $ref: '#/components/parameters/start' + - $ref: '#/components/parameters/count' + - $ref: '#/components/parameters/sort' + - name: rating + in: query + required: false + description: Optionally filter which ratings to retrieve + schema: + type: string + enum: + - like + - dislike + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/VideoRating' '/videos/{id}/comment-threads': get: summary: Get the comment threads of a video by its id tags: - Video Comment parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' - $ref: '#/components/parameters/sort' @@ -1195,7 +1479,7 @@ paths: tags: - Video Comment parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '200': description: successful operation @@ -1209,13 +1493,8 @@ paths: tags: - Video Comment parameters: - - $ref: '#/components/parameters/id2' - - name: threadId - in: path - required: true - description: The thread id (root comment id) - schema: - type: number + - $ref: '#/components/parameters/idOrUUID' + - $ref: '#/components/parameters/threadId' responses: '200': description: successful operation @@ -1231,7 +1510,7 @@ paths: tags: - Video Comment parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' - $ref: '#/components/parameters/commentId' responses: '200': @@ -1241,13 +1520,13 @@ paths: schema: $ref: '#/components/schemas/CommentThreadPostResponse' delete: - summary: 'Delete a comment in a comment therad by its id, of a video by its id' + summary: 'Delete a comment in a comment thread by its id, of a video by its id' security: - OAuth2: [] tags: - Video Comment parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' - $ref: '#/components/parameters/commentId' responses: '204': @@ -1260,7 +1539,7 @@ paths: tags: - Video Rate parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -1285,9 +1564,7 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/Video' + $ref: '#/components/schemas/VideoListResponse' servers: - url: 'https://peertube.cpy.re/api/v1' description: Live Test Server (live data - stable version) @@ -1402,24 +1679,45 @@ components: description: The user id schema: type: number - id2: + idOrUUID: name: id in: path required: true description: The video id or uuid schema: type: string - id3: - name: id + captionLanguage: + name: captionLanguage in: path required: true - description: The video channel id or uuid + description: The caption language schema: type: string - commentId: + channelHandle: + name: channelHandle + in: path + required: true + description: "The video channel handle (example: 'my_username@example.com' or 'my_username')" + schema: + type: string + subscriptionHandle: + name: subscriptionHandle + in: path + required: true + description: "The subscription handle (example: 'my_username@example.com' or 'my_username')" + schema: + type: string + threadId: name: threadId in: path required: true + description: The thread id (root comment id) + schema: + type: number + commentId: + name: commentId + in: path + required: true description: The comment id schema: type: number @@ -1511,12 +1809,15 @@ components: enum: - local - all-local - requestBodies: - VideoChannelInput: - content: - application/json: - schema: - $ref: '#/components/schemas/VideoChannelInput' + subscriptionsUris: + name: uris + in: query + required: true + description: list of uris to check if each is part of the user subscriptions + schema: + type: array + items: + type: string securitySchemes: OAuth2: description: > @@ -1528,7 +1829,7 @@ components: - Have an account with sufficient authorization levels - - [Generate](https://docs.joinpeertube.org/lang/en/devdocs/rest.html) a + - [Generate](https://docs.joinpeertube.org/#/api-rest-getting-started) a Bearer Token - Make Authenticated Requests @@ -1553,12 +1854,132 @@ components: type: string label: type: string - VideoPrivacy: - type: string + VideoPrivacySet: + type: integer enum: - - Public - - Unlisted - - Private + - 1 + - 2 + - 3 + description: 'The video privacy (Public = 1, Unlisted = 2, Private = 3)' + VideoPrivacyConstant: + properties: + id: + type: integer + enum: + - 1 + - 2 + - 3 + label: + type: string + VideoStateConstant: + properties: + id: + type: integer + enum: + - 1 + - 2 + - 3 + description: 'The video state (Published = 1, to transcode = 2, to import = 3)' + label: + type: string + VideoResolutionConstant: + properties: + id: + type: integer + description: 'Video resolution (240, 360, 720 ...)' + label: + type: string + VideoScheduledUpdate: + properties: + privacy: + $ref: '#/components/schemas/VideoPrivacySet' + description: Video privacy target + updateAt: + type: string + format: date + description: When to update the video + required: + - updateAt + VideoAccountSummary: + properties: + id: + type: number + name: + type: string + displayName: + type: string + url: + type: string + host: + type: string + avatar: + nullable: true + $ref: '#/components/schemas/Avatar' + VideoChannelSummary: + properties: + id: + type: number + name: + type: string + displayName: + type: string + url: + type: string + host: + type: string + avatar: + nullable: true + $ref: '#/components/schemas/Avatar' + PlaylistElement: + properties: + position: + type: number + startTimestamp: + type: number + stopTimestamp: + type: number + video: + nullable: true + $ref: '#/components/schemas/Video' + VideoFile: + properties: + magnetUri: + type: string + resolution: + $ref: '#/components/schemas/VideoResolutionConstant' + size: + type: number + description: 'Video file size in bytes' + torrentUrl: + type: string + torrentDownaloadUrl: + type: string + fileUrl: + type: string + fileDownloadUrl: + type: string + fps: + type: number + VideoStreamingPlaylists: + properties: + id: + type: number + type: + type: number + enum: + - 1 + description: 'Playlist type (HLS = 1)' + playlistUrl: + type: string + segmentsSha256Url: + type: string + redundancies: + type: array + items: + type: object + properties: + baseUrl: + type: string Video: properties: id: @@ -1571,6 +1992,8 @@ components: type: string updatedAt: type: string + originallyPublishedAt: + type: string category: $ref: '#/components/schemas/VideoConstantNumber' licence: @@ -1578,7 +2001,7 @@ components: language: $ref: '#/components/schemas/VideoConstantString' privacy: - $ref: '#/components/schemas/VideoPrivacy' + $ref: '#/components/schemas/VideoPrivacyConstant' description: type: string duration: @@ -1601,19 +2024,99 @@ components: type: number nsfw: type: boolean + waitTranscoding: + type: boolean + nullable: true + state: + $ref: '#/components/schemas/VideoStateConstant' + scheduledUpdate: + nullable: true + $ref: '#/components/schemas/VideoScheduledUpdate' + blacklisted: + nullable: true + type: boolean + blacklistedReason: + nullable: true + type: string account: + $ref: '#/components/schemas/VideoAccountSummary' + channel: + $ref: '#/components/schemas/VideoChannelSummary' + userHistory: + nullable: true type: object properties: - name: - type: string - displayName: + currentTime: + type: number + VideoDetails: + allOf: + - $ref: '#/components/schemas/Video' + - type: object + properties: + descriptionPath: type: string - url: + support: type: string - host: + channel: + $ref: '#/components/schemas/VideoChannel' + account: + $ref: '#/components/schemas/Account' + tags: + type: array + items: + type: string + files: + type: array + items: + $ref: '#/components/schemas/VideoFile' + commentsEnabled: + type: boolean + downloadEnabled: + type: boolean + trackerUrls: + type: array + items: + type: string + streamingPlaylists: + type: array + items: + $ref: '#/components/schemas/VideoStreamingPlaylists' + VideoImportStateConstant: + properties: + id: + type: integer + enum: + - 1 + - 2 + - 3 + description: 'The video import state (Pending = 1, Success = 2, Failed = 3)' + label: + type: string + VideoImport: + properties: + id: + type: number + targetUrl: + type: string + magnetUri: + type: string + torrentName: + type: string + state: + type: object + properties: + id: + $ref: '#/components/schemas/VideoImportStateConstant' + label: type: string - avatar: - $ref: '#/components/schemas/Avatar' + error: + type: string + createdAt: + type: string + updatedAt: + type: string + video: + $ref: '#/components/schemas/Video' VideoAbuse: properties: id: @@ -1706,6 +2209,12 @@ components: type: array items: $ref: '#/components/schemas/VideoCommentThreadTree' + VideoCaption: + properties: + language: + $ref: '#/components/schemas/VideoConstantString' + captionPath: + type: string Avatar: properties: path: @@ -1755,6 +2264,13 @@ components: autoPlayVideo: type: boolean role: + type: integer + enum: + - 0 + - 1 + - 2 + description: 'The user role (Admin = 0, Moderator = 1, User = 2)' + roleLabel: type: string enum: - User @@ -1762,6 +2278,8 @@ components: - Administrator videoQuota: type: number + videoQuotaDaily: + type: number createdAt: type: string account: @@ -1883,6 +2401,14 @@ components: properties: comment: $ref: '#/components/schemas/VideoComment' + VideoListResponse: + properties: + total: + type: number + data: + type: array + items: + $ref: '#/components/schemas/Video' AddUser: properties: username: @@ -1897,19 +2423,22 @@ components: videoQuota: type: string description: 'The user videoQuota ' + videoQuotaDaily: + type: string + description: 'The user daily video quota ' role: type: integer - format: int32 enum: - 0 - 1 - 2 - description: 'The user role ' + description: 'The user role (Admin = 0, Moderator = 1, User = 2)' required: - username - password - email - videoQuota + - videoQuotaDaily - role UpdateUser: properties: @@ -1922,13 +2451,21 @@ components: videoQuota: type: string description: 'The updated videoQuota of the user ' - role: + videoQuotaDaily: type: string - description: 'The updated role of the user ' + description: 'The updated daily video quota of the user ' + role: + type: integer + enum: + - 0 + - 1 + - 2 + description: 'The user role (Admin = 0, Moderator = 1, User = 2)' required: - id - email - videoQuota + - videoQuotaDaily - role UpdateMe: properties: @@ -1960,6 +2497,16 @@ components: required: - id - rating + VideoRating: + properties: + video: + $ref: '#/components/schemas/Video' + rating: + type: number + description: 'Rating of the video' + required: + - video + - rating RegisterUser: properties: username: @@ -1971,14 +2518,45 @@ components: email: type: string description: 'The email of the user ' + displayName: + type: string + description: 'The user display name' + channel: + type: object + properties: + name: + type: string + description: 'The default channel name' + displayName: + type: string + description: 'The default channel display name' + required: - username - password - email - VideoChannelInput: + VideoChannelCreate: properties: name: type: string + displayName: + type: string + description: + type: string + support: + type: string + required: + - name + - displayName + VideoChannelUpdate: + properties: + displayName: + type: string description: type: string + support: + type: string + bulkVideosSupportUpdate: + type: boolean + description: 'Update all videos support field of this channel'