X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=support%2Fdoc%2Fapi%2Fopenapi.yaml;h=30a250c70be0805d24399d4d99462b24deced89d;hb=22af8aac79a8bcd8d0c576b0be000ba2233ba1c5;hp=b9ca4cca26397ad13423caaf8aaaee3b31b3241f;hpb=048b69466168e5585b2f8d8a6d77da315202cabb;p=github%2FChocobozzz%2FPeerTube.git diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index b9ca4cca2..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.3.0-rc.2 + version: 1.4.1 contact: name: PeerTube Community url: 'https://joinpeertube.org' @@ -38,7 +38,7 @@ info: } ``` externalDocs: - url: https://docs.joinpeertube.org/#/api-rest-reference.html + url: https://docs.joinpeertube.org/api-rest-reference.html tags: - name: Accounts description: > @@ -96,6 +96,7 @@ x-tagGroups: tags: - Accounts - User + - My User - name: Videos tags: - Video @@ -489,6 +490,20 @@ 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 @@ -496,7 +511,7 @@ paths: - OAuth2: - user tags: - - User + - My User responses: '200': description: successful operation @@ -512,16 +527,35 @@ paths: - 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 @@ -529,7 +563,7 @@ paths: - OAuth2: - user tags: - - User + - My User responses: '200': description: successful operation @@ -543,7 +577,7 @@ paths: security: - OAuth2: [] tags: - - User + - My User parameters: - name: videoId in: path @@ -565,7 +599,7 @@ paths: - OAuth2: - user tags: - - User + - My User parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' @@ -584,7 +618,7 @@ paths: - OAuth2: - user tags: - - User + - My User parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' @@ -598,7 +632,7 @@ paths: - OAuth2: - user tags: - - User + - My User responses: '200': description: successful operation @@ -609,7 +643,7 @@ paths: - OAuth2: - user tags: - - User + - My User parameters: - $ref: '#/components/parameters/subscriptionsUris' responses: @@ -626,7 +660,7 @@ paths: - OAuth2: - user tags: - - User + - My User parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' @@ -638,14 +672,16 @@ paths: application/json: schema: $ref: '#/components/schemas/VideoListResponse' - '/users/me/subscriptions/{uri}': + '/users/me/subscriptions/{subscriptionHandle}': get: summary: Get subscription of the current user for a given uri security: - OAuth2: - user tags: - - User + - My User + parameters: + - $ref: '#/components/parameters/subscriptionHandle' responses: '200': description: successful operation @@ -659,31 +695,19 @@ paths: - OAuth2: - user tags: - - User + - My User + parameters: + - $ref: '#/components/parameters/subscriptionHandle' responses: '200': description: successful operation - /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/avatar/pick: post: summary: Update current user avatar security: - OAuth2: [] tags: - - User + - My User responses: '200': description: successful operation @@ -730,7 +754,7 @@ paths: $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: @@ -792,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: @@ -839,39 +859,34 @@ paths: 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_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: @@ -879,7 +894,7 @@ paths: tags: - Video parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -889,7 +904,7 @@ paths: tags: - Video parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '200': description: successful operation @@ -903,7 +918,7 @@ paths: tags: - Video parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -915,7 +930,7 @@ paths: security: - OAuth2: [] parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' requestBody: content: application/json: @@ -932,8 +947,6 @@ paths: - Video security: - OAuth2: [] - parameters: - - $ref: '#/components/parameters/id2' responses: '200': description: successful operation @@ -945,7 +958,7 @@ paths: security: - OAuth2: [] parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -957,7 +970,7 @@ paths: security: - OAuth2: [] parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -969,7 +982,7 @@ paths: security: - OAuth2: [] parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' requestBody: required: true content: @@ -1046,14 +1059,23 @@ paths: description: Video name type: string tags: - description: Video 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_0 + originallyPublishedAt: + description: Date when the content was originally published + type: string + format: date-time + scheduleUpdate: + $ref: '#/components/schemas/VideoScheduledUpdate' required: - videofile - channelId @@ -1086,7 +1108,7 @@ paths: "Authorization:Bearer $token" /videos/imports: post: - summary: Import a torrent or magnetURI or HTTP ressource (if enabled by the instance administrator) + summary: Import a torrent or magnetURI or HTTP resource (if enabled by the instance administrator) security: - OAuth2: [] tags: @@ -1150,14 +1172,19 @@ paths: description: Video name type: string tags: - description: Video 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_0 + scheduleUpdate: + $ref: '#/components/schemas/VideoScheduledUpdate' required: - channelId - name @@ -1189,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' @@ -1203,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' @@ -1216,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' @@ -1248,7 +1275,7 @@ paths: tags: - Video Caption parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '200': description: successful operation @@ -1269,7 +1296,7 @@ paths: tags: - Video Caption parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' - $ref: '#/components/parameters/captionLanguage' requestBody: content: @@ -1289,7 +1316,7 @@ paths: tags: - Video Caption parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' - $ref: '#/components/parameters/captionLanguage' responses: '204': @@ -1322,7 +1349,10 @@ paths: '204': $ref: '#/paths/~1users~1me/put/responses/204' requestBody: - $ref: '#/components/requestBodies/VideoChannelInput' + content: + application/json: + schema: + $ref: '#/components/schemas/VideoChannelCreate' '/video-channels/{channelHandle}': get: summary: Get a video channel by its id @@ -1349,7 +1379,10 @@ paths: '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: @@ -1400,13 +1433,14 @@ paths: 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: Optionaly filter which ratings to retrieve + description: Optionally filter which ratings to retrieve schema: type: string enum: @@ -1427,7 +1461,7 @@ paths: tags: - Video Comment parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' - $ref: '#/components/parameters/sort' @@ -1445,7 +1479,7 @@ paths: tags: - Video Comment parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' responses: '200': description: successful operation @@ -1459,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 @@ -1481,7 +1510,7 @@ paths: tags: - Video Comment parameters: - - $ref: '#/components/parameters/id2' + - $ref: '#/components/parameters/idOrUUID' - $ref: '#/components/parameters/commentId' responses: '200': @@ -1491,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': @@ -1510,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' @@ -1650,7 +1679,7 @@ components: description: The user id schema: type: number - id2: + idOrUUID: name: id in: path required: true @@ -1671,10 +1700,24 @@ components: description: "The video channel handle (example: 'my_username@example.com' or 'my_username')" schema: type: string - commentId: + 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 @@ -1775,12 +1818,6 @@ components: type: array items: type: string - requestBodies: - VideoChannelInput: - content: - application/json: - schema: - $ref: '#/components/schemas/VideoChannelInput' securitySchemes: OAuth2: description: > @@ -1834,6 +1871,115 @@ components: - 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: @@ -1846,6 +1992,8 @@ components: type: string updatedAt: type: string + originallyPublishedAt: + type: string category: $ref: '#/components/schemas/VideoConstantNumber' licence: @@ -1876,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: @@ -2290,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'